微生物常见统计检验方法比较及选择

谷禾健康

在这里插入图片描述

微生物组经由二代测序分析得到庞大数据结果,其中包括OTU/ASV表物种丰度表,alpha多样性、beta多样性指数,代谢功能预测丰度表等,这些数据构成了微生物组的变量,大量数据构成了高纬度数据信息

针对不同的微生物数据,和研究目的的不同,数据分析时需要用到不同的统计分析方法,例如降维、聚类、机器学习等。

本文将介绍和比较微生物测序数据统计方法和分析工具,以及微生物组数据分析结果展示原则。旨在帮助谷禾合作方或客户更好地理解和解读微生物组数据分析结果

✦ 假设检验

假设检验是根据一定的假设条件,由样本推断总体的一种方法。

假设检验的基本思想是小概率反证法思想,小概率思想认为小概率事件在一次试验中基本上不可能发生,在这个方法下,我们首先对总体作出一个假设,这个假设大概率会成立,如果在一次试验中,试验结果和原假设相背离,也就是小概率事件竟然发生了,那我们就有理由怀疑原假设的真实性,从而拒绝这一假设。

根据微生物组研究目的的不同,可以将数据检验方法分为:

1)组间差异检验

2)微生物组与临床或实验数据之间的相关性检验

✦ 组间差异分析

组间差异分析或者叫组间差异显著性检验,差异显著性检验是微生物数据分析时用到的最多的统计学方法。

通常我们需要比较两组或多组数据之间是否有显著差异性,同时还要根据显著性检验识别出不同分组之间的差异变量。这需要用到统计学上的假设检验方法,检验分组之间是否有差异性,并且计算其差异程度

注:所有的差异检验都基于一个假设:组间没有差异,及变量之间没有关系(即原假设,H0)。

假设检验方法

在统计学上,假设检验方法可分为两大类,参数检验非参数检验

➦ 参数检验

参数检验(Parameter test)是基于样本的观测数据对总体参数(比如总体均值、方差)及总体参数差异性的检验

•参数检验需要具备一定的条件

参数检验要求总体具备一定条件才能适用,例如总体需呈正态分布、涉及两个总体时两总体必须满足方差同质性(即方差相等)。t检验、F检验(方差分析),都属于参数检验方法。

➦ 非参数检验

在实际分析过程中,数据会经常遇到不满足参数检验前提条件的情况,比如总体不服从正态分布,或者总体分布未知,这时就不能使用参数检验方法,不然得到的检验结果会不准确。在参数检验方法不适用的情况,就需要采用非参数检验方法进行统计检验。

•总体分布情况未知可使用非参数检验

非参数检验(Non-parametric test)是在总体分布未知或者知之甚少的情况下,通过样本数据对总体分布形态等特征进行推断的统计检验方法。

由于此种检验方法在由样本数据推断总体的过程中不涉及总体分布的参数,不要求总体分布满足某些条件,使用条件较为宽松,因此被称为非参数检验。

参数检验与非参数检验的一些区别

在这里插入图片描述

★ 微生物组数据的特点

微生物组数据具有以下特点:

1.多样性高:微生物组数据通常包含大量的微生物种类,且种类之间的相对丰度差异较大。

2.维度高:微生物组数据通常包含大量的特征,例如16S rRNA基因序列或基因组序列,每个特征都可以看作是一个维度。

3.数据稀疏:微生物组数据通常是稀疏的,即大部分微生物种类的相对丰度很低,只有少数微生物种类的相对丰度较高。

4.非正态分布:微生物组数据通常不满足正态分布假设,且方差通常与均值相关。

5.数据复杂性高:微生物组数据中存在许多复杂的相互作用和关系,例如共生、拮抗和协同作用等。

考虑到微生物数据的以上特点,我们更推荐采用非参数假设检验的算法,在报告中我们大部分也采用的是非参数检验方法对组间差异进行检验。

差异显著性检验的方法有很多种,需要根据不同的情况,选择适合自身实验情况的方法进行分析。接下来对几种常见的统计检验方法进行介绍。

参数检验

1

T 检验

Student t检验(Student’s t test),亦称T检验,是用t分布理论来推论差异发生的概率,从而比较小样本量两组间的差异是否显著,主要用于样本含量较小(例如n<30),总体标准差σ未知的正态分布数据

注:Welch T检验(Welch’s t test)在两组数目方差不相等时可选择该检验。

•T检验的步骤:

第一步:建立虚无假设H0:μ1=μ2,即先假定两个总体平均数之间没有显著差异

第二步:计算统计量T值,对于不同类型的问题选用不同的统计量计算方法。

2

U 检验

U检验又称Z检验,一般用于大样本(即样本容量大于30)平均值差异性检验的方法(总体的方差已知)。

它是用标准正态分布的理论来推断差异发生的概率,从而比较打样板量两组间的差异是否显著

•U检验的步骤:

第一步:建立虚无假设H0:μ1=μ2,即先假定两个平均数之间没有显著差异;

第二步:计算统计量Z值,对于不同类型的问题选用不同的统计量计算方法。

3

方差检验

方差分析(ANOVA)又称“变异数分析”或“F检验”。用于正态分布方差齐性的多组间(两个及两个以上样本均数)差别的显著性检验。

当自变项的因子中包含等于或超过三个类别情况下,检定其各类别间平均数是否相等的统计模式。方差分析首先是比较的多组间整体是否有差异再进行组间两两比较

•方差检验的步骤:

第一步:建立检验假设;

H0:多个样本总体均值相等;

H1:多个样本总体均值不相等或不全等。

注:检验水准为0.05。

第二步:计算检验统计量F值;

第三步:确定P值并作出推断结果。

4

Tukey检验

Tukey检验也称为Tukey HSD(Honestly Significant Difference)检验,用于比较多个样本均值的两组之间的差异性

Tukey检验的假设条件是各组数据的方差相等且服从正态分布。Tukey检验的原理是计算每两组之间的平均差异,然后根据方差和样本量的大小来计算显著性水平。Tukey检验通常用于方差分析的后续多重比较

非参数检验

1

Wilcoxon秩和检验

Wilcoxon秩和检验又叫Mann-Whitney U 检验,Wilcoxon秩和检验,是两组独立样本非参数检验的一种方法。

其原假设为两组独立样本来自的两总体分布无显著差异,通过对两组样本平均秩的研究来实现判断两总体的分布是否存在差异,该分析可以对两组样品的物种进行显著性差异分析,并对p值计算假发现率(FDR)q值。

2

Kruskal-Wallis H检验

K-W检验的全称为,Kruskal-Wallis检验,它是用于正态分布条件不满足情况下,多组独立样本方差分析的替代。我们可以把它理解为“非参数检验的方差分析”。

基于矩阵的检验方法

微生物高纬度数据的多个变量根据不同的距离算法求取距离矩阵,然后根据距离矩阵进行相应的检验。所谓基于距离也就是检验的是群落差异而不是具体的某个物种。

以上这些检验方法,可以得到分组之间是否有显著差异(即简单的理解为差异的有无),如果想进一步知道这些差异的程度(可以理解为多少),就需要用到Anosim检验Adonis检验

这些方法不但可以输出检验显著性结果(p值),还有程度结果(R值),R值可以用来判断分组贡献度大小。Anosim、Adonis这些可用于多元统计检验的模型就非常适合了。

例如肠道微生物受到A、B等多种因素影响,如果一个项目里有3个分组分别是A处理、B处理和对照组,如果A处理和B处理相对于对照组都显著差异(P<0.05),想知道A处理、B处理哪个更为重要,就需要比较R值的大小了。

1

Anosim检验

Anosim(Analysis of similarities)是一种非参数检验方法。它首先通过变量计算样本间关系(或者说相似性),然后计算关系排名,最后通过排名进行置换检验判断组间差异是否显著不同于组内差异

相似性分析ANOSIM检验用来检验组间(两组或多组)的差异是否显著大于组内差异,从而判断分组是否有意义

这个检验有两个重要的数值,一个是p值,可以判断这种组间与组内的比较是否显著;一个是R值,可以得出组间与组内比较的差异程度

R值范围实际范围是(-1,1),但一般介于(0,1)之间,R>0,说明组间存在差异,一般R>0.75:大差异;R>0.5:中等差异,R>0.25:小差异。R等于0或在0附近,说明组间没有差异。R偶尔也会<0,这种情况是组内差异显著大于组间差异,这就说明我们的采样或者分组出现大问题,可以认为是无效数据

2

Adonis检验

Adonis,其实就是PERMANOVA。它与Anosim的用途其实差不多,也能够给出不同分组因素对样品差异的解释度(R值)与分组显著性(P值)。

Adonis又称置换多因素方差分析(permutationalMANOSVA)或非参数多因素方差分析(nonparametricMANOVA)。它利用半度量(如Bray-Curtis)或度量距离矩阵(如Euclidean)对总方差进行分解,分析不同分组因素对样品差异的解释度,并使用置换检验对划分的统计学意义进行显著性分析。

不同点是应用的检验模型不同,ADONIS本质是基于F统计量的方差分析,所以很多细节与上述方差分析类似。

图表解释

在这里插入图片描述

Group:表示分组;

Df:表示自由度;

SumsOfSqs:总方差,又称离差平方和;

MeanSqs:平均方差,即SumsOfSqs/Df;

F.Model:F检验值;

R2:表示不同分组对样品差异的解释度,即分组方差与总方差的比值,即分组所能解释的原始数据中差异的比例,R2越大表示分组对差异的解释度越高

Pr(>F):通过置换检验获得的P值,P值越小,表明组间差异显著性越强

Lefse分析——筛选组间差异标记物

LEfSe(LDA EffectSize)是用于发现生物标识和揭示基因组特征的软件。以上分析我们找出了分组的差异显著性。

而Lefse的作用就是找出各分组的微生物标记物,即biomarker的筛选,以及这些特征对组间差异的影响程度,用于发现不同分组样本中最能解释组间差异的特征

√ 分析步骤

A)软件首先使用Kruskal-Wallis (KW) (非参数因子克鲁斯卡尔—沃利斯秩和验检)检测多分组间具有显著丰度差异特征

B)找出与丰度有显著性差异的物种后进一步使用Wilcoxon 秩和检验进行组间差异分析

C)最后Lefse采用线性判别分析(LDA)估计每个分组的差异特征对差异效果的影响大小(即LDA score值)。

在这里插入图片描述

LEfSe结果包含两张图一张表,即(LDA值分布柱状图、 进化分支图特征表)。

✦ LDA值分布柱状图

LDA值分布柱状图中展示了LDA Score大于设定值(默认设置为2)的差异物种,即组间具有统计学差异的Biomarker。

展示了不同组中丰度差异显著的物种,柱状图的颜色代表各自的组别,柱状图的长度代表差异物种的影响大小(即为 LDA Score),即不同组间显著差异物种的影响程度。

在这里插入图片描述

✦ 进化分支图

进化分支图中,由内至外辐射的圆圈代表了由门至属的分类级别。在不同分类级别上的每一个小圆圈代表该水平下的一个分类,小圆圈直径大小与相对丰度大小呈正比

着色原则:无显著差异的物种统一着色为黄色,差异物种Biomarker跟随组进行着色,红色节点表示在红色组别中起到重要作用的微生物类群,绿色节点表示在绿色组别中起到重要作用的微生物类群。

注:图中英文字母表示的物种名称在右侧图例中进行展示。(为了美观,右侧默认只显示门到科的差异物种)。

在这里插入图片描述

✦ 特征表解读:

第一列:Biomarker名称;

第二列:各组分丰度平均值中最大值的log10,如果平均丰度小于10的按照10来计算;

第三列:差异基因或物种富集的组名;

第四列:LDA值;

第五列:P值,若不是Biomarker用“-”表示。

在这里插入图片描述

机器学习应用于微生物组数据的分类和预测

基于微生物组数据的高维度、稀疏性,传统的统计方法不一定能很好的适用于微生物数据统计分析,机器学习面对复杂的数据结构逐渐成为更优的选择。

机器学习(machine learning,ML)就是计算机能够自主“学习” (拟合训练数据),通过神经网络、决策树等算法,从数据中自动分析寻找规律,从而生成经验模型,用于新数据的预测或分类

➤ 随机森林

随机森林(Random Forest)是一种基于决策树(Decisiontree)的机器学习算法。属于非线性分类器

通过对对象和变量进行抽样构建预测模型,即生成多个决策树,并依次对对象进行分类。最后将各决策树的分类结果汇总,得出随机森林最终预测的分类结果。

•随机森林可以对样本进行分类和预测

随机森林可以对样本进行分类和预测。16S测序数据通过RandomForest随机森林可以找出与分组有关的关键物种/功能

在这里插入图片描述

微生物数据通过RandomForest随机森林可以找出与分组有关的关键物种/功能

图中展示了分类器中对分类效果起主要作用的特征,按重要性从大到小排列。Error rate :表示使用下方的特征进行随机森林方法预测分类的错误率,数值越高表示基于特征分类准确度不高,可能分组之间特征不明显。分值越低证明分组效果比较好

➤ ROC曲线

根据随机森林方法筛选出的最佳模型,绘制ROC曲线,ROC是一种常用的统计学分析方法,在医学研究中主要用于评价诊断试验的效能用来评判分类、检测结果的好坏

在这里插入图片描述

根据曲线位置,把整个图划分成了两部分,曲线下方部分的面积被称为AUC,用来表示预测准确性

AUC值越高,也就是曲线下方面积越大,说明预测准确率越高。曲线越接近左上角(X越小,Y越大),预测准确率越高。

ROC曲线下的面积值在1.0和0.5之间。在 AUC>0.5 的情况下,AUC越接近于1,说明诊断效果越好

•AUC值不同时的准确性:

AUC在0.5~0.7时有较低准确性,AUC在0.7~0.9时有一定准确性,AUC 在0.9以上时有较高准确性。AUC=0.5 时,说明诊断方法完全不起作用,无诊断价值。AUC<0.5 不符合真实情况,在实际中极少出现。

组间差异分析的图像化展示

微生物高维度数据信息进过统计检验得到庞大的检验结果。如何将这些结果进行可视化展示,也是微生物数据分析过程中的重要组成部分,常见的可视化方法有箱型图柱状图散点图等。接下来是对这些图的详细介绍。

▷箱型图

箱型图(boxplot)又叫盒图,箱型图由5点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)。

•便于多组间形态比较

箱型图可以直观的识别出异常数据,判断数据的侧重方法,方便多组间比较形态比较。其他类似变形的还有柱状图,小提琴图等就不做详细赘述。

在这里插入图片描述

▷散点图

散点图(Scatter plot)是数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。比如PCA、PCoA、NMDS、回归分析、火山图等。

在这里插入图片描述

➤ 相关性分析

相关性是两个变量之间统计学相关关系的度量,可以预测变量间的相关关系。相关性的原始之间存在一定的联系或者相关性。

用相关系数来描述两个变量之间的相关程度。相关性分析常用的分析方法:

(1)pearson相关系数

(2)spearman相关系数

• pearson相关系数

皮尔逊相关系数(r),是衡量两个变量之间线性相关性的统计量。皮尔逊相关性只能评估两个连续变量之间的线性相关(仅当一个变量的变化与另一个变量的比例变化相关时,关系才是线性的)。

当两个变量都是正态连续变量,且两者之间呈线性关系时,则可以用Pearson来计算相关系数。取值范围[-1,1]

• spearman相关系数

Spearman相关系数是排序相关性(ranked values)的非参数度量

使用单调函数描述两个变量之间的关系的程度。Spearman相关性可以评估两个变量之间的单调关系

在这里插入图片描述

问答环节

接下来是对微生物统计检验分析中经常会遇到的一些问题进行汇总和解答

➤ 参数检验和非参数检验有什么区别?

参数检验是对参数做假设检验,非参数检验是对总体分布情况做的假设。

•是否利于总体的信息

参数检验利用总体的信息(总体分布、总体的参数特征如方差等),以总体分布和样本信息对总体参数作出推断;非参数检验不需要利用总体的信息(总体分布、总体的一些参数特征如方差),以样本信息对总体分布作出推断。

➤ T检验和U检验有什么区别?

T检验和U检验都是常用的参数检验方法,都是用于检验两个样本的均值是否存在显著差异。

•样本量的大小不同

它们的区别在于,T检验主要用于小样本量(例如n<30)的正态分布数据,而U检验主要用于大样本量(即样本容量大于30)平均值差异性检验的方法。T检验的检验统计量是t值,U检验的检验统计量是U值。

➤ 什么是T值,什么是F值?为什么在报告中没有找到?

T值和F值都是统计学中常用的指标,用于检验假设是否成立。T值是T检验的统计量,用于检验两个样本均值是否有显著差异的指标

•T值的计算公式

它的计算公式为:T = (x1 - x2) / (s * sqrt(1/n1 + 1/n2)),其中x1和x2分别是两个样本的均值,s是两个样本的标准差的合并估计值,n1和n2分别是两个样本的样本量。

T值越大,说明两个样本的均值差异越显著

•F值的计算公式

F值F检验,即方差分析的检验量。是用于检验多个样本均值是否有显著差异的指标。

它的计算公式为:F = (SSB / (k - 1)) / (SSE / (n - k)),其中SSB是组间平方和,SSE是组内平方和,k是组数,n是总样本量。F值越大,说明组间差异越显著,即均值之间的差异不是由于随机误差造成的。在方差分析中,F值用于检验多组间平均数是否相等。

这两个指标均来自参数检验的统计量,由于微生物数据具有高纬度,多样性高,数据稀释复杂等特点,而参数检验对数据分布要求比较严格,微生物数据一般都呈现非正态分布,报告中大部分都采用非参数的检验方法进行检验计算。所以报告中没有直接给出T值和F值。

➤ Pearson相关系数和Spearman 相关系数有什么区别?

Pearson适用于两个变量之间呈线性关系,而Spearman适用于单调关系

Pearson分析要求数据符合正态分布;线性相关;并且数据为连续值。如果不满足,则使用Spearman相关系数。

Pearson 处理变量的数据原始值,而Spearman处理数据排序值(需要先做变换,transform)。

➤ 报告中给出了几种检验方法得出的差异结果,该如何选择?

报告中分别使用了非参数检验、Tukey检验、Lefse分析、metagenomeSeq 差异分析。

•不同统计方法的结果略有不同

不同的统计方法对数据的处理方式和假设条件不同,所以不同的统计方法可能给出的差异结果略有不同

•统计方法可能存在一定的偏差和误差

此外,不同的统计方法还可能存在偏差和误差,例如样本量不足、数据分布不符合假设条件、测量误差等因素都可能影响统计结果的准确性。

因此,在进行统计分析时,需要根据实际情况选择合适的统计方法,并结合实际情况进行综合分析和判断。这里建议选择其他一种方法的检验结果就可以。或者用到不同的检验方法的时候,在文章中加以说明。

➤ 报告中给出的多组间差异的P值只有一个吗?是哪两组之间的P值呢?

非参数检验多组间差异分析时就用到的是Kruskal-Wallis H检验,检验多组间是否有差异,所以只有1个P值

例如该图是属水平多组间非参数检验的差异结果:

在这里插入图片描述

路径:

Groups\diff_analysis\UnivarTestGenus\figure\barplot

对应P值:

Groups\diff_analysis\UnivarTestGenus\ UnivarTest_sign.txt

如果想看在多个分组的统计检验过程中,具体哪两组间之间有差异,可以看:

Groups\diff_analysis\UnivarTestGenus\figure\single_plot

图上方的P值0.006是多组间非参数检验的P值,图中展示的是任意两组间差异显著的结果,例如P=0.017是M组和CA组之间的结果。P=0.017是CA组和N组之间的P值。如果任意两组间有差异,则在图中显示对应P值

在这里插入图片描述

PCoa基于Bray距离的Adonis检验得到的P值=0.001右下角,也是多组间统计检验的结果

在这里插入图片描述

想看任意两组间Adonis检验是否差异显著,可以看下表:

Groups\betadiv\pcoa_bray_analysis\ PERMANOVA_paired_result.csv

表中展示了任意两组间Adonis检验的P值和R值

在这里插入图片描述

编辑​

附 录

1

热 图

热图是一种常用的展示方法,可以将微生物组数据转化为颜色矩阵,从而直观地显示不同样本或物种之间的相似性和差异性。可以使用热图来展示微生物组数据的OTU/ASV表、物种丰度表等。

2

柱 状 图

柱状图是一种常用的展示方法,可以将微生物组数据转化为柱状图,从而直观地显示不同样本或物种的相对丰度。可以使用柱状图来展示微生物组数据的物种丰度表等。

3

散 点 图

散点图是一种常用的展示方法,可以将微生物组数据转化为散点图,从而直观地显示不同样本或OTU/ASV之间的关系。可以使用散点图来展示微生物组数据的beta多样性、代谢功能预测丰度表等。

4

网 络 图

网络图是一种常用的展示方法,可以将微生物组数据转化为网络图,从而直观地显示不同微生物组物种之间的相互作用关系。可以使用网络图来展示微生物组数据的共生关系、代谢通路等。

5

生 态 图

生态图是一种常用的展示方法,可以将微生物组数据转化为生态图,从而直观地显示不同微生物组物种之间的生态关系和生态功能。可以使用生态图来展示微生物组数据的生态功能、物种丰度表等。

6

积 柱 状 图

积柱状图是一种常用的展示方法,可以将微生物组数据转化为堆积柱状图,从而直观地显示不同样本或物种的相对丰度,并且可以分别显示不同分类水平的物种。可以使用堆积柱状图来展示微生物组数据的物种丰度表等。

7

饼 图

饼图是一种常用的展示方法,可以将微生物组数据转化为饼图,从而直观地显示不同物种的相对丰度。可以使用饼图来展示微生物组数据的物种丰度表等。

8

箱 线 图

箱线图是一种常用的展示方法,可以将微生物组数据转化为箱线图,从而直观地显示不同样本或物种的分布情况。可以使用箱线图来展示微生物组数据的alpha多样性、代谢物浓度等。

9

简 单 线 图

简单线图是一种常用的展示方法,可以将微生物组数据转化为简单线图,从而直观地显示不同样本或物种的变化趋势。可以使用简单线图来展示微生物组数据的时间序列数据、代谢物浓度等。

总的来说,展示微生物组数据分析结果需要选择合适的展示方法,并且需要根据研究目的和数据类型进行选择。以上展示方法是常见的方法,并不是唯一的方法,实际应用中需要根据具体情况选择合适的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/20109.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我的『1024』创作纪念日

目录 ◐机缘 ◑收获 ◐日常 ◑成就 ◐憧憬 记得&#xff0c;2020年07月22日我撰写了第1篇技术博客&#xff1a;《遗传算法实例解析》在这平凡的一天&#xff0c;我赋予了它不平凡的意义也许是立志成为一名专业T作者、也许是记录一段刚实践的经验但在那一刻&#xff0c;我已…

傅里叶分析的历史背景

目录 1. Fourier级数(三角级数)的历史背景 2. 圆和复平面 3. Fourier的大胆猜想 1. Fourier级数(三角级数)的历史背景 自古以来&#xff0c;圆形一直是(现在仍然是&#xff09;最简单的抽象理解形状。您只需要一个中心点和一个半径就可以了。圆上的所有点与圆心的距离都是固定…

Java Web开发:Spring Boot和Spring Cloud的应用和实践

一、介绍 Java Web开发是当今互联网时代中的一项重要技术&#xff0c;随着互联网的发展和应用场景的不断扩大&#xff0c;Java Web开发技术也得到了广泛的应用。而Spring Boot和Spring Cloud作为Java Web开发中最常用的技术之一&#xff0c;已经成为了很多开发者必备的技能。本…

Python常用的开发工具合集

​ Python是一种功能强大且易于学习的编程语言&#xff0c;被广泛应用于数据科学、机器学习、Web开发等领域。随着Python在各个领域的应用越来越广泛&#xff0c;越来越多的Python开发工具也涌现出来。但是&#xff0c;对于新手来说&#xff0c;选择一款合适的Python开发工具可…

Git的安装与版本控制

这里写目录标题 原理安装基本使用gitee-IDEA协同开发成员邀请开发组成员指定仓库权限给当前仓库设定分支提交代码时必须向自己的分支提交合并分支 - 无冲突 原理 Git本地有四个工作区域&#xff1a; 工作目录&#xff08;Working Directory&#xff09;、暂存区(Stage/Index)、…

【LeetCode】209.长度最小的子数组

209. 长度最小的子数组 思路一&#xff1a;暴力解法 通过两个for循环&#xff0c;从头开始找符合条件的子序列。暴力解法无法通过本题&#xff0c;超出时间限制&#xff0c;所以仅供参考。 代码如下&#xff1a; 暴力解法1&#xff1a;下面的代码是通过申请一个新的数组&#x…

error: LNK2001: 无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl

Qt系列文章目录 文章目录 Qt系列文章目录前言一、QtCreator中qmake命令是什么&#xff1f;2.解决 前言 我在代码中加入了对应的信号和槽&#xff0c;但编译仍然报错&#xff1a; #ifndef PROJECTWIN_H #define PROJECTWIN_Hnamespace Ui { class ProjectWin; }ProjectWin类声…

杂记——24.HTML中空格的写法

前几天写项目时&#xff0c;突然对HTML中空格的写法感兴趣&#xff0c;于是搜了一下&#xff0c;现在对其进行总结 HTML不是一种编程语言&#xff0c;而是一种超文本标记语言 (markup language)&#xff0c;是网页制作所必备的。超文本”就是指页面内可以包含图片、链接&#…

创建基于oracle jdk8的自定义docker镜像

创建基于oracle jdk8的自定义docker镜像 1:查看服务器java版本&#xff1a; 如果服务器的版本是open-jdk&#xff0c;则进行如下操作 拷贝相关jdk压缩包&#xff08;.tar.gz后缀&#xff09;到服务器目录&#xff08;例&#xff1a;/usr/local&#xff09; 解压&#xff1a;…

【18】SCI易中期刊推荐——计算机科学(中科院2区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

你真的会跟 ChatGPT 聊天吗?(下)

接《你真的会跟 ChatGPT 聊天吗&#xff1f;&#xff08;上&#xff09;》&#xff0c;本文下半部分没有无毛猫那么搞笑的内容啦&#xff01;即使如此&#xff0c;哪怕你对文中提及的技术不大了解&#xff0c;也可以毫无压力地看完这篇&#xff0c;描述如何更好地获得 ChatGPT …

Redis数据结构——动态字符串、Dict、ZipList

一、Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串&#xff0c;value往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构。 不过Redis没有直接使用C语言中的字符串&#xff0c;因为C语言字符串存在很多问题&#xff1a; 获取字符串长度…

基于Python的学生成绩管理系统

末尾获取源码 开发语言&#xff1a;python 后端框架&#xff1a;django 数据库&#xff1a;MySQL5.7 开发软件&#xff1a;Pycharm 是否Maven项目&#xff1a;是 目录 一、项目简介 二、系统功能 三、系统项目截图 四、核心代码 4.1登录相关 4.2文件上传 4.3封装 一、项…

《程序员面试金典(第6版)》面试题 16.19. 水域大小(深度优先搜索,类似棋盘类问题,八皇后的简化版本,C++)

题目描述 你有一个用于表示一片土地的整数矩阵land&#xff0c;该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小&#xff0c;返回值需要从小到…

【下载】【you-get】用电脑下载网页视频

分享一下&#xff0c;此方法是在网络上看到的&#xff0c;但忘了出处。 一、前提 电脑安装了python软件&#xff0c;版本无要求。建议上官网下载软件。记得配置好环境&#xff08;将pyhton的scripts文件夹的路径加到用户变量里&#xff09;。 二、方法 1、安装you-get库 &am…

Java8之Stream操作

Java8之Stream操作 stream干啥用的&#xff1f;创建流中间操作终结操作好文推荐----接口优化思想 stream干啥用的&#xff1f; Stream 就是操作数据用的。使用起来很方便 创建流 → 中间操作 → 终结操作 Stream的操作可以分为两大类&#xff1a;中间操作、终结操作 中间操作可…

前端自学好还是培训好?女生有多适合学前端,我来告诉你!

2023年了&#xff0c;你是否还在迷茫或者每个月拿着5/6k做着卷死的工作&#xff0c;不但存不下钱还不能好好享受生活&#xff0c;如果是&#xff0c;那你真该考虑一下转行了。 好程序员先说说前端到底怎么开始学&#xff1a; 有的伙伴说今年28岁了&#xff0c;学的会计&#xf…

Java --- redis7之布隆过滤器BloomFilter

目录 一、布隆过滤器BloomFilter 1.1、面试题 1.2、 布隆过滤器简介 1.2.1、设计思想 1.3、特点 1.4、布隆过滤器原理 1.4.1、实现原理与数据结构 1.4.2、添加key、查询key 1.4.3、hash冲突导致数据不精准 1.4.4、三步骤 1.4.5、布隆过滤器误判&#xff0c;为什么不…

xormplus是xorm的增强版,为xorm提供类似ibatis的配置文件及动态SQL支持

简介 xorm是一个简单而强大的Go语言ORM库&#xff0c;通过它可以使数据库操作非常简便。本库是基于原版xorm的定制增强版本&#xff0c;为xorm提供类似ibatis的配置文件及动态SQL支持&#xff0c;支持AcitveRecord操作。 github地址:https://github.com/armingli/xorm //安装…

FE_Vue学习笔记 条件渲染[v-show v-if] 列表渲染[v-for] 列表过滤 列表排序

1 条件渲染 v-show v-if 使用template可以使其里面的内容在html的结构中不变。条件渲染&#xff1a; v-if 1&#xff09;v-if“表达式” 2&#xff09;v-else-if“表达式” 3&#xff09;v-else {} 适用于&#xff1a;切换频率较低的场景。特点&#xff1a;不展示的DOM元素直…