单细胞系列教程:数据整合(九)

导读

本文将学习跨条件执行单细胞整合,以识别彼此相似的细胞。

1. 目标

  • 跨条件对齐相同的细胞类型。

2. 挑战

对齐相似细胞类型的细胞,这样就不会因为样本、条件、模式或批次之间的差异而在后续分析中进行聚类。

3. 推荐

建议先不整合分析,再决定是否进行整合。

4. 整合与否

通常,在决定是否需要执行任何对齐之前,我们总是在没有整合的情况下查看聚类。不要仅仅认为可能存在差异而总是先执行整合,探索数据。如果在 Seurat 对象中同时对两种条件进行归一化并可视化细胞之间的相似性,会看到特定条件的聚类情况:

细胞在特定条件下聚类表明需要跨条件整合细胞以确保相同类型的细胞聚集在一起。

  • 为什么相同细胞类型的细胞聚集在一起很重要?

想要识别存在于数据集中所有的细胞类型,因此希望观察每个簇中两个样本/条件/模态中的细胞表示。这将使下游的结果更具可解释性(即 DE 分析、配体-受体分析)。在本课中,将介绍跨条件的样本整合,该教程改编自 Seurat v3 Guided Integration Tutorial。

注意:Seurat有一个关于如何在不整合的情况下运行工作流程的小插图。工作流程与此工作流程非常相似,但样本不一定在一开始就被拆分,也不会执行整合。

如果不确定在条件(例如肿瘤和对照样本)之间会出现什么簇或预期某些不同的细胞类型,则首先单独运行会有所帮助,然后将它们一起运行以查看两种条件下是否存在针对细胞类型的特定条件簇。通常,当对来自多个条件的细胞进行聚类时,会有特定于条件的聚类,而整合有助于确保相同的细胞类型聚类在一起。

5. 整合

利用共享的高可变基因跨条件整合或对齐样本。

如果细胞按样本、条件、批次、数据集、模态进行聚类,则整合步骤可以极大地改善聚类和下游分析。

为了整合,将使用来自每个组的高可变基因(使用 SCTransform 识别),然后,将“整合”或“协调”这些组以覆盖相似或具有“共同生物特征集”的细胞团体。例如,可以整合:

  • 不同条件(例如对照和处理):

  • 不同数据集(例如,来自在相同样本上使用不同文库制备方法生成的scRNA-seq数据集):

  • 不同的组学数据(例如 scRNA-seqscATAC-seq):

  • 不同批次(例如,当实验条件需要对样品进行批量处理时)

整合是一种强大的方法,它使用这些最大变异的共享源,来识别跨条件或数据集的共享亚群。整合的目标是确保一个条件/数据集的细胞类型与其他条件/数据集的相同细胞类型对齐(例如,控制巨噬细胞与受刺激的巨噬细胞对齐)。

具体来说,这种整合方法期望组中至少一个单细胞子集之间存在“对应”或共享的生物状态。整合分析的步骤如下图所示:

  • 应用的不同步骤如下:
  1. 典型相关分析 (CCA):

CCA 识别条件/组之间的共享变异源。它是PCA 的一种形式,因为它可以识别数据中最大的变异来源,但前提是它在条件/组之间共享或保存(使用来自每个样本的 3000 个变异最多的基因)。

此步骤使用最大的共享变异源大致对齐细胞。

注意:使用共享的高度可变基因是因为它们最有可能代表那些区分存在的不同细胞类型的基因。

  1. 跨数据集识别anchorsmutual nearest neighbors (MNN)(有时会识别出不正确的anchors):

MNN 可以被认为是best buddies。对于一个条件下的每个细胞:

  • 在另一种情况下,细胞最近的邻居是根据基因表达值确定的。
  • 执行相互分析,如果两个细胞在两个方向上都是best buddies,那么这些细胞将被标记为anchors,以将两个数据集“锚定”在一起。

MNN 对细胞之间表达值的差异提供了对批次效应的估计,通过对许多这样的对进行平均可以更加精确。获得一个校正向量并将其应用于表达式值以执行批量校正。”

  1. 过滤anchors以删除不正确的anchors

通过本地邻域中的重叠来评估anchors对之间的相似性(不正确的anchors得分会很低)

  1. 整合条件/数据集:

使用anchors和相应的分数来转换细胞表达式值,允许整合条件/数据集(不同的样本、条件、数据集、模态)。

注意:每个细胞的转换使用跨数据集anchors的每个anchors的两个细胞的加权平均值。权重由细胞相似度得分(细胞与 k 个最近anchors之间的距离)和anchors得分确定,因此同一邻域中的细胞应该具有相似的校正值。

如果细胞类型存在于一个数据集中,但不存在于另一个数据集中,则细胞仍将显示为单独的样本特定簇。

现在,使用SCTransform 对象作为输入,执行跨条件的整合。

首先,需要指定使用 SCTransform 识别的所有 3000 个可变基因进行整合。默认情况下,此函数仅选择前 2000 个基因。

# 选择用于整合的可变性最大的特征,
integ_features <- SelectIntegrationFeatures(object.list = split_seurat, 
                                            nfeatures = 3000) 

现在,需要为整合准备SCTransform对象。

# 准备 SCT 列表对象以进行整合
split_seurat <- PrepSCTIntegration(object.list = split_seurat, 
                                   anchor.features = integ_features)

现在,将执行 CCA,找到best buddiesanchors并过滤不正确的anchors。请注意控制台中的进度条将保持在 0%,但它实际上正在运行。

# 寻找`best buddies` - 可能需要一段时间才能运行完毕
integ_anchors <- FindIntegrationAnchors(object.list = split_seurat, 
                                        normalization.method = "SCT", 
                                        anchor.features = integ_features)

最后,跨条件整合。

# 跨条件整合
seurat_integrated <- IntegrateData(anchorset = integ_anchors, 
                                   normalization.method = "SCT")

6. UMAP 可视化

整合后,为了可视化整合数据,可以使用降维技术,例如 PCAUMAP。虽然 PCA 将确定所有 PC,但一次只能绘制两个。相比之下,UMAP 将从任意数量的顶级 PC 获取信息,以在这个多维空间中排列细胞。它将在多维空间中获取这些距离,并将它们绘制成二维,以保持局部和全局结构。这样,细胞之间的距离代表了表达的相似性。如果想更详细地探索 UMAP,这篇文章是对 UMAP 理论的一个很好的介绍。

生成这些可视化,首先运行 PCAUMAP 方法。从 PCA 开始。

# 运行 PCA
seurat_integrated <- RunPCA(object = seurat_integrated)

# 画图 
PCAPlot(seurat_integrated,
        split.by = "sample")  

通过PCA 映射,可以看到 PCA 很好地覆盖了这两个条件。

现在,使用 UMAP 进行可视化。

# 运行 UMAP
seurat_integrated <- RunUMAP(seurat_integrated, 
                             dims = 1:40,
			     reduction = "pca")

# 画图                              
DimPlot(seurat_integrated)     

当将上图中的 ctrl 和 stim 细胞类群之间的相似性与未整合数据集(下图)进行比较时,很明显整合有益于分析!

  • 细胞类群的并排比较

有时,如果在条件之间拆分绘图,则更容易查看所有细胞是否对齐良好,可以通过将 split.by 参数添加到DimPlot()函数来做到这一点:

# 通过样本分割 UMAP
DimPlot(seurat_integrated,
        split.by = "sample")  

7. 保存

由于整合可能需要一段时间,因此保存整合的 seurat 对象通常是一个好主意。

saveRDS(seurat_integrated, "results/integrated_seurat.rds")
本文转载于网络 如有侵权请联系删除

相关文章

  • 有具体问题,才会有好答案

    以下文章来源于挺婷Tina,作者挺婷Tina今天文章的主题是,有好问题,才会有好答案。为什么会有这个想法,其实灵感来源于上周日和飞巴连麦时,一位开发小姐姐的提问。当时这位小姐姐连麦提问,说自己是一个业务模块的bug对接人,整体业务也比较庞杂,自己进入业务时间短,所以对业务不熟。而作为对接,别人推过来的事情很多,自己感觉事情快超负荷了,做不完,想问问这种问题,应该从何入手。当时,十二画上来澄清了下场景,提供了一些很实用的建议,解答了问题。但再进一步想想,其实提问这个动作,其实是可以再优化的,当然,这里不是在说那位小姐姐的提问不好,而是说,如果提供的信息再丰富、具体点,这样,她所收获建议的落地性、完整度会更强。毕竟,工作任务的完成,是靠完成每一环节的小事,而只有了解、解决你具体环节中遇到的卡点,才可能更全面地解决问题。回到当时那个提问案例,例如要提问一个工作内容相关的问题,不妨先从这么几点介绍信息:1、我现在的工作岗位和内容、要求是什么例如小姐姐的案例中,她的角色是业务模块的bug对接人,那么就可以介绍,这个bug对接是干什么的,工作的输入是什么,需要交付什么;你的汇报对象,合作对象,下属

  • 旧版博客上配置的一些小功能汇总原创

    很多时候在使用博客的过程中,遇到不少实用而且给力的小工具,这里统一进行记录整理。#1,鼠标指尖贯彻社会主义核心价值观。之前在浏览某些站点的时候,就看到过人家的站点里鼠标点击之后会显示诸如“富强”,“民主”,“自由”之类的词汇,感觉很高大上额,今天心血来潮也给博客添加了这个功能,网上一找,原来竟是如此简单。效果展示:这里可以看到点击之后的核心主机价值观各字的颜色是不停变幻的,这个颜色随机的功能,也是许多介绍这个功能的博客里的代码所不具备的,我找到这个代码也是非常巧合的缘分,其间丢过,后来又费了大劲儿找回来,现在下边保存的就是了,再也不怕丢失了。接下来就介绍一下这个用代码实现的鼠标点击特效的功能。文章整理自https://www.itfensi.net/article/1417.html去到主题的根目录下找到footer.php,打开并添加下边的代码。添加位置如图所示:添加的代码内容如下:<!--eryajf鼠标单击特效--> <scripttype="text/javascript">/*鼠标特效*/ functiongetColorRando

  • 元宇宙的本质是融合,“铸魂”是关键 | 专访AI大牛田奇

    金磊丰色发自凹非寺 量子位|公众号QbitAI元宇宙的本质是物理和数字两个世界的融合,“铸魂”是关键。这,便是AI科学家对于元宇宙所持的最新观点。他叫田奇,是计算机视觉、多媒体信息检索专家,国际欧亚科学院院士,IEEEFellow。 而他更为大众所熟知的身份,是华为云人工智能领域首席科学家。在田奇看来,元宇宙已经实现了“盘古开天”。下一阶段,数字人将成为元宇宙的核心要素。 而且在这位AI大牛眼中,元宇宙已然不再是独立的一片天地,而是物理世界和数字世界的融合体——融合,是元宇宙的关键词。更进一步的,田奇认为,预训练大模型是帮助元宇宙更好地实现“融合”的关键技术。如何用大模型给数字人“铸魂”?近两年,像BERT、GPT-3等大规模预训练模型逐渐走进大众的视野,其“大力出奇迹”的优异效果为AI技术的发展应用带来了极大的想象空间。与此同时,随着Facebook正式更名为Meta,元宇宙的热潮也被推向了前所未有的高度。那么当最潮的AI技术遇上最In的热门领域,又会擦出怎样的火花?在田奇看来,二者的相遇会让元宇宙的核心要素——数字人,能够在形象上“以假乱真”,甚至可以具备与人类媲美的智慧。首先,田

  • Linux项目实战系列之:一个bug的解决

    之前写过一篇《Linux项目实战系列之:GPS数据解析》的文章,最近调试过程中遇到了一个问题,现象是在没有GPS信号的情况下,程序每次跑几分钟后就会出现以下错误提示信息,导致程序中断退出:doublefreeorcorruption(out)Aborted(coredumped)此问题折腾了我大概两小时,在此做个总结。刚开始我检查代码,是否有doublefree的地方,发现并没有。后来,我在代码里加了malloc是否成功的判断以及free后指针赋NULL的语句,依然是同样的问题。再后来我把log打开看,看的过程中突然发现一个现象,就是每次程序挂掉时,串口读到的数据长度都是450字节,再仔细看,其实是读了两串数据,即两条GNRMC及其他语句。bufflen:450;$GNRMC,,V,,,,,,,,,,N*4D$GNVTG,,,,,,,,,N*2E$GNGGA,,,,,,0,00,99.99,,,,,,*56$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E$GNGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*2E$GPGS

  • 软件安装目录

    软件安装声明最开始是在公众号【软件安装管家】中来安装一系列的软件。后来估计是被人举报了,一直显示‘后台系统升级维护中,暂停服务’,最近刚好在网上查到了公众号中软件链接,顺便摘抄下来,方便日后使用。我只是一个搬运工,所有功劳归功于【软件安装管家】公众号。软件安装链接该资源引用公众号软件安装目录,下图是原文档链接。①电脑办公电脑系统(U盘安装)PE系统Win7Win8Win10XP电脑系统(直接安装)Win7Win8Win10Officeoffice2003office2007office2010office2013office2016office2019③平面设计Photoshoppscs2pscs5pscs6pscc2015pscc2017pscc2018pscc2019ps2020⑨开发编程VB6.0VC++6.0eclipseAndroidStudioMyEclipse10MyEclipse2017SublimeText3VisualStudioVS2008VS2010VS2012VS2013VS2015VS2017VS2019KeilKeil2Keil3Keil4Keil4MDK

  • 5个相见恨晚的Linux命令 - 终端之美

    本文转自|iCourt技术作者|李火清编辑|唐佳编者按:说到Linux命令相信大家都不陌生,就连前端现在也要经常在terminal敲一些node,gulp等命令,本文详细介绍了五个相见恨晚,能极大提高工作效率的命令。tldr(命令手册)作为一个开发人员,经常要用到终端命令,最让人头疼的是记不住繁琐的参数。用谷哥度娘检索效率低下,通过man命令显示的结果又不易阅读。tldr命令正是解决这一痛点。tldr是什么?它的GitHub页翻译是“一个简洁的社区驱动的帮助手册”,这是对它最好的解释,根据二八原则给出命令的常用场景示例,简单易读,来自五湖四海的朋友都可以向Github上这个命令库提交内容,它完全是由社区驱动的。man命令有更详细的说明,单从实用角度讲,tldr才是王者。小提示:支持在近20种语言环境下运行,通过tldr--update更新本地命令库。tree(树形目录)当我们编写项目文档时,如果想更直观的表达项目结构及内容,这个小小的命令就可以派上用场了,它以类似于图像的树状图排列目录和文件。小提示:支持定制层级,过滤内容等各种个性化设置。通过tldrtree查看具体使用示例。添加-N

  • 理解OAuth 2.0 转

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。本文对OAuth2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC6749。一、应用场景为了理解OAuth的适用场合,让我举一个假设的例子。有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"读取自己储存在Google上的照片。问题是只有得到用户的授权,Google才会同意"云冲印"读取这些照片。那么,"云冲印"怎样获得用户的授权呢?传统方法是,用户将自己的Google用户名和密码,告诉"云冲印",后者就可以读取用户的照片了。这样的做法有以下几个严重的缺点。(1)"云冲印"为了后续的服务,会保存用户的密码,这样很不安全。 (2)Google不得不部署密码登录,而我们知道,单纯的密码登录并不安全。 (3)"云冲印"拥有了获取用户储存在Google所有资料的权力,用户

  • Spring IOC 容器源码分析 - 填充属性到 bean 原始对象

    1.简介本篇文章,我们来一起了解一下Spring是如何将配置文件中的属性值填充到bean对象中的。我在前面几篇文章中介绍过Spring创建bean的流程,即Spring先通过反射创建一个原始的bean对象,然后再向这个原始的bean对象中填充属性。对于填充属性这个过程,简单点来说,JavaBean的每个属性通常都有getter/setter方法,我们可以直接调用setter方法将属性值设置进去。当然,这样做还是太简单了,填充属性的过程中还有许多事情要做。比如在Spring配置中,所有属性值都是以字符串的形式进行配置的,我们在将这些属性值赋值给对象的成员变量时,要根据变量类型进行相应的类型转换。对于一些集合类的配置,比如关于属性填充的一些知识,本章先介绍这里。接下来,我们深入到源码中,从源码中了解属性填充的整个过程。2.源码分析2.1populateBean源码一览本节,我们先来看一下填充属性的方法,即populateBean。该方法并不复杂,但它所调用的一些方法比较复杂。不过好在我们这里只需要知道这些方法都有什么用就行了,暂时不用纠结细节。好了,下面看源码吧。protectedvoid

  • C++操作mysql方法总结(2)

    C++通过ODBC和通过MFCODBC操作mysql的两种方式使用vs2013和64位的msql5.6.16进行操作项目中使用的数据库名和表数据请参考C++操作mysql方法总结(1)中的介绍既然使用到了ODBC那么就要需要添加数据源了控制面板->管理工具->数据源->用户DSN->添加填写相关的数据库连接配置和使用的数据库,可点击Test进行测试,查看是否成功连接,设置完成后点击OK其中DataSourceName即MySqlODBC我们会在连接数据库时用到至此,数据源添加完毕一、通过ODBC进行操作开放数据库互连(OpenDatabaseConnectivity,ODBC)是微软提供的一组用于数据库访问的规范接口,多数数据库都提供了ODBC驱动1、新建一个空项目2、如果使用的mysql是64位的,需要将项目的解决方案平台由win32改成x64至此,相关配置全部完成程序代码main.cpp#include<Windows.h> #include<iostream> #include<iomanip> #include<

  • zookeeper监控告警

    一、ZooKeeper简介ZooKeeper作为分布式系统中重要的组件,目前在业界使用越来越广泛,ZooKeeper的使用场景非常多,以下是几种典型的应用场景:l数据发布与订阅(配置中心)l负载均衡l命名服务(NamingService)l分布式通知/协调l集群管理与Master选举l分布式锁zk环境搭建这里不详细说明,提供详细blog说明。Zookeeper集群搭建:https://cloud.tencent.com/developer/article/1021111Zookeeper配置文件详解:https://cloud.tencent.com/developer/article/1021117Zookeeper常用四字命令:https://cloud.tencent.com/developer/article/1021119二、ZooKeeper监控在部门内部,有不少应用已经强依赖ZooKeeper,ZooKeeper的工作状态直接影响它们的正常工作。先来看一看哪些因素对ZooKeeper正常工作有比较大的影响:影响ZooKeeper工作的主要因素l用于zookeeper写事务

  • 自动阈值法.m_自动阈值夺获功能

    %自动阈值法:Otsu法用MATLAB实现Otsu算法: clc;clear;close; I=imread('e:\role0%自动阈值法:Otsu法用MATLAB实现Otsu算法: clc;clear;close; I=imread('e:\role0\003i.bmp'); subplot(1,2,1),imshow(I); title('原始图像') gridon;%显示网格线 axison;%显示坐标系 level=graythresh(I);%确定灰度阈值 BW=im2bw(I,level); subplot(1,2,2),imshow(BW); title('Otsu法阈值分割图像') gridon;%显示网格线 axison;%显示坐标系 3i.bmp'); subplot(1,2,1),imshow(I); title('原始图像') gridon;%显示网格线 axison;%显示坐标系 level=graythresh(I);%确定灰度阈值 BW=im2bw(I,l

  • 分享flink-connector-mysql-cdc-2.2.0.jar 包

      flink版本:1.15.0   编译了一个基于flink1.15.0的flink-cdc 2.2.0  flink-connector-mysql-cdc-2.2.0.jar       欢迎关注Flink菜鸟公众号,会不定期更新Flink(开发技术)相关的推文

  • Redis主从复制架构和Sentinel哨兵机制

    Redis专题地址:https://www.cnblogs.com/hello-shf/category/1615909.html SpringBoot读源码系列:https://www.cnblogs.com/hello-shf/category/1456313.html Elasticsearch系列:https://www.cnblogs.com/hello-shf/category/1550315.html 数据结构系列:https://www.cnblogs.com/hello-shf/category/1519192.html 一、redis主从复制原理 redis主从同步策略:slave刚加入集群会触发一次全量同步(全量复制)。全量同步之后,进行增量复制。slave优先是增量同步,如果增量同步失败会尝试从master节点进行全量复制。全量复制:slave初始化阶段 如上图 slave服务器首先连接master节点,发送SYNC命令。 master节点收到SYNC命令开始指令BGSAVE(延迟写,读正常)命令生成RDB(快照)文件,在此期间master的写请求会被缓存。

  • 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等

    一、校验数字的表达式 1数字:^[0-9]*$ 2n位的数字:^\d{n}$ 3至少n位的数字:^\d{n,}$ 4m-n位的数字:^\d{m,n}$ 5零和非零开头的数字:^(0|[1-9][0-9]*)$ 6非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 8正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 9有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 10有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 11非零的正整数:^[1-9]\d*$或^([1-9][0-9]*){1,3}$或^\+?[1-9][0-9]*$ 12非零的负整数:^\-[1-9][]0-9"*$或^-[1-9]\d*$ 13非负整数:^\d+$或^[1-9]\d*|0$ 14非正整数:^-[1-9]\d*|0$或^((-\d+)|(0+))$ 15非负浮点数:^\d+(\.\d+)?$或^[1-9]\d*\.\d*|0\.\d*[1-9

  • 获取相加等于某个值的集合

    importtime,dis importrandom importtracemalloc nums=[random.randint(-109,109)foriinrange(2,1000)] target=random.randint(-109,109) answer1=[] answer2=[] time0=time.time() defa(): b=[] fork1,val1inenumerate(nums): a=target-val1 fork2,val2inenumerate(b): ifa==val2: answer1.append([(val1,k1),(val2,k2)]) else: b.append(val1) #tracemalloc.start() a() #current,peak=tracemalloc.get_traced_memory() #print(f"Currentmemoryusageis{current/10**6}MB;Peakwas{peak/10**6}MB") #tracemalloc.stop() time1=time.tim

  • nginx

    Nginx虽然小,但是对开发来说开发起来并不简单,是通过epoll模型实现的异步WebNginx特点:方便,简单灵活,占用系统资源少,对静态小文件处理好的Web服务软件Nginx特性:1.支持高并发(能支持几万台并发连接,特别是静态小文件业务环境)2.资源消耗少(在3万台并发连接下,开启10个Nginx线程消耗的内存不到200MB) 编译安装(除了安装包名称,剩下的得背)1.先安装支持包yum-yinstallpcre-developenssl-devel2.解压编译包到/usr/srctarxf安装包-C/usr/src3.创建程序用户useradd-s/sbin/nologin-Mwww4.进行编译安装cd/usr/src/nginx./configure--user=用户名--group=组--prefix=指定目录(如:/usr/local/nginx)--with-http_stub_status_module--with-http_ssl_module&&make&&makeinstall修改环境变量(做软连接)ln-s/usr/local/

  • 【科普】Scrum——从橄榄球争球到敏捷开发

    对敏捷开发Scrum稍有了解的都知道Scrum来源于橄榄球,但你知道为何要以这项球类运动的术语来命名这个敏捷开发方法论吗? Scrum与橄榄球对应关系 Scrum一词源于英式橄榄球运动,是指双方球员对阵争球。双方前锋肩靠肩站成一横排,面对面躬身,肩膀互相抵在一起,形成一个通道。犯规队的球员低手将球抛入通道,此时通道两边的球员们互相抗挤,争取踢球给本方前锋。比赛分为两支队伍,每个队伍上场的球员为11名。整个队伍中的球员分为进攻、防守和特别三种职能,三者各有优势又互相配合。进攻队员身手敏捷,凭借速度变化和身形穿透对方防线;防守队员身形强壮,阻挡对方球员的进攻;特别队员较为灵活,进可攻退可守,随时可充当前面二者的替补。与橄榄球比赛对应,在Scrum组织中没有传统组织所强调的岗位、上下级关系、汇报等元素,每个人只有“一起赢得比赛”的目标,而且每个人的工作会有较大的重合覆盖度,角色可因势而变,提高效率的同时,有效避免传统组织可能存在的推诿和不作为。英式橄榄球比赛中,球是被禁止向前传的:规则并不限制球员将球往前踢,但当踢球员踢球时,他的队友必须在球的后方。那么为了让球有方向地运动起来,球员必须将球

  • npm 相关问题合集

    1. Error:Cannotfindmodule'inquirer': 常见于安装nodejs之后,进入工程界面,安装npm@vue/cli的时候。靠npminstallinquirer解决该问题。   2.npm脚手架安装过程中报错: sudonpmuninstall-gvue-cli sudocnpminstall-g@vue/cli   3. 创建vue项目报错:ERRORcommandfailed:yarn 解决方案一:重新安装yarn,npminstall-gyarn 解决方案二: 删除/users/username/.vuerc文件,在初次创建vue项目会提示选择配置

  • 【Python】实验二 正则表达式

    作者:康慎吾 工作地点:北华航天工业学院 一、实验目的 1、掌握元字符的使用方法。 2、理解正则表达式re模块。 二、实验环境 计算机及Python3.X和Pycharm软件。 三、实验内容与要求 1、匹配网址 有一批网址: http://www.interoem.com/messageinfo.asp?id=35http://3995503.com/class/class09/news_show.asp?id=14http://lib.wzmc.edu.cn/news/onews.asp?id=769http://www.zy-ls.com/alfx.asp?newsid=377&id=6http://www.fincm.com/newslist.asp?id=415复制 需要正则后为: http://www.interoem.com/ http://3995503.com/ http://lib.wzmc.edu.cn/ http://www.zy-ls.com/ http://www.fincm.com/复制 源代码: importre print('第一题:') p

  • selenium-各种定位方法

    selenium各种定位方法。 https://www.red-gate.com/simple-talk/wp-content/uploads/imported/1269-Locators_table_1_0_2.pdf?file=4937

  • 最新RocketMq与SpringBoot整合

    最新版的RocketMq与SpringBoot2.X进行整合可以利用rocketmq-spring-boot-starter来简化配置,本文采用了最新版的jar包来整合,并且略微做了封装,以便于其他模块引用,适合于多生产者多消费者的情况。 项目依赖 主要用到了rocketmq的包和lombok的包,具体的依赖如下所示: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</versi

相关推荐

推荐阅读