MATLAB算法实战应用案例精讲-【数模应用】生存曲线(补充篇)

news2024/11/19 8:51:36

目录

 

前言

几个相关概念

生存概率与死亡概率

生存率

生存曲线

事件、生存时间

中位生存时间

生存率的比较

生存数据

 风险集

如何读懂KM曲线

应用案例

新药对患者总生存时间的影响-KM曲线

软件操作及结果解读

应用GraphPad Prism制作生存曲线

SPSS绘制生存曲线图 

问题描述

思路解析

 图形绘制

 结果解读


前言

 在日常科研中,我们经常见到生存分析(Survival Analysis)与生存曲线分析,二者常用于研究患者预后的临床试验与生物标志物模型分析。

生存分析(Survival Analysis)是一种探索生存结局和时间数据关系以及规律的统计方法,这里的生存既可以指存活,也可以指研究者所关心的阳性事件。

生存曲线则是生存分析数据的可视化体现,在各个研究领域的应用也十分广泛,接下来我们一起学习如何使用Graphpad Prism绘制生存曲线

几个相关概念

生存概率与死亡概率

生存概率:即条件生存率,表示某单位时段开始存活的个体,到该时段结束时仍存活的可能性,p。如年生存概率P = 活满一年例数/年初观察例数

死亡概率:即条件死亡率,表示某单位时段开始时存活的个体死于该时段内的可能性大小,qq = 1-p

生存率

生存率:观察对象经历t个单位时段后仍存活的可能,即生存时间大于等于t的概率。

生存率随时间而变化,是关于时间t的函数,用S(t)表示,S(t)=P(T≥t)。某时间点生存函数的值就是该时间点的生存率。

估计生存率:

①若观察时段内没有删失n年生存率 = 活满n年例数/期初观察例数

②若观察时段存在删失:须分时段计算生存概率,假定观察对象在各个时段的生存时间独立,按概率相乘原理计算,n年的生存率 = P1×P2×P3×……×Pn,其中P1、P2、P3……Pn分别为第1、2、3……n年的生存概率。

具体方法:

①Kaplan-Meier法(乘积极限法):适用于小样本。②寿命表法:适用于大样本资料。

生存曲线

以观察(随访)时间为横轴,以生存率为纵轴,将各个时间点所对应的生存率连接在一起的绘阶梯状曲线图(图1)。

生存曲线时一条下降的曲线,分析时应注意曲线的高度和坡度。平缓的生存曲线表示高生存率或较长生存期陡峭的生存曲线表示低生存率或较短生存期

图 1 25例HIV-1 CRF01_AE 感染者进展至艾滋病期的生存曲线

事件、生存时间


生存分析是一种时间事件分析(time to event analysis),关注的是“事件”对于“主体”所发生的“时间点”。生存时间(survival time)是指主体从进入“风险”(risk)期直至“死亡”(death)的持续时间。在这里,“死亡”只是一个具体化的描述,可以泛指一切研究事件(event)的结果,事件发生即表示主体“死亡”。由于一些事件可以重复发生,如住院等,因此主体是可以多次“死亡”的。
 

中位生存时间

即生存时间的中位数,表示恰好有50%的个体尚存活的时间,又称半数生存期,所需研究时间短且受极端值影响较小,是生存分析中最常用的概括性统计量。

计算方法:

①图解法:利用生存曲线图在纵轴生存率为0.5处画一条与横轴平行的线,与生存曲线的交点所对应的时间即为中位生存时间(图2)。

图 2 25例HIV-1 CRF01_AE 感染者进展至艾滋病期的中位生存时间(图解法)

②线性内插法:找到相邻的两个时间段,使得S(ti-1)>0.5,S(ti)<0.5,中位生存时间计算如下S(42)=0.51,S(48)=0.36,其中位生存时间为(42-48)/(42-t)=(0.51-0.36)/(0.51-0.5),t=42.2(月)。

表1 25例HIV-1 CRF01_AE 感染者进展至艾滋病期的寿命表

生存率的比较

对于多组或多组生存率的比较,检验的无效假设是两组或多组总体生存时间分布(即整条生存曲线)相同,而不对其具体的分布形式做要求,属于非参数统计方法。常见的方法有log-rank检验和Breslow检验。

Log-rank检验对不同生存时间点取相同的权重进行计算,而Breslow检验按各时间点存活的观察单位数(随着生存时间增大而逐渐减小)加权。所以Breslow检验给观察早期差别更大权重,即对观察早期差别敏感;而log-rank检验对观察后期差别给相同权重,即对观察后期差别敏感

生存数据


生存数据(survival data)拥有特定的格式,因事件类型和事件发生次数而异,如单类型单事件、单类型多事件、多类型单事件、多类型多事件。其中,单类型单事件是最“古典”(classic)的生存分析,它对应的生存数据常用(, )对表示,其中表示主体标识,表示时间点,为0/1变量,其中0表示主体删失,1表示主体“死亡”。

survival工具包中的ovarian是一个示例数据:

head(ovarian)
 
##   futime fustat     age resid.ds rx ecog.ps
## 1     59      1 72.3315        2  1       1
## 2    115      1 74.4932        2  1       1
## 3    156      1 66.4658        2  1       2
## 4    421      0 53.3644        2  2       1
## 5    431      1 50.3397        2  1       1
## 6    448      0 56.4301        1  1       2
 
data <- ovarian

其中,futime对应,fustat对应,其余为协变量。数据的第一行表示主体#1在时“死亡”;第四行表示主体#4在时删失。

 风险集


风险集(risk set)是计算生存率(survival probability)的关键指标。使用表示主体在时间时仍处于受访状态,也称处于“风险”状态;当主体在时“死亡”或删失时,则为该主体受访的最后时间点(endpoint),即而。那么时处于风险状态的人数,即风险集就是,包括在时仍然存活的主体和刚好“死亡”或删失的主体。

如何读懂KM曲线

在临床研究中,我们常常强调要找客观可评价的终点指标来进行疾病疗效或者预后评价的指标。也越来越多人提出临床outcome的重要性。因此在大量的临床研究尤其是肿瘤预后研究中,我们往往选择死亡作为我们的outcome。说到死亡,我们看临床研究的论文时常常看到一类曲曲折折单调向下的曲线,也叫做生存曲线,可是这个生存曲线怎么看呢?

在有随访资料的研究中才能绘制生存曲线,生存曲线构成有两个重要的要素,就是终点事件是否发生以及终点事件发生的时间。生存曲线其实就是通过绘制一个单调向下的折线来展示一群患者随着时间的推移,终点事件发生的情况。在肿瘤临床研究里,这个事件常常是死亡、转移或复发。我们的随访时间或者说发生终点事件的时间,其实是从观察开始到发生了终点事件的时间。也就是说在生存曲线中除了终点事件还隐含了一个起始事件,临床研究中这个起始事件往往是某种干预,比如:服药、手术、化疗等;或者是某个特征时间点,比如:发病、疾病稳定、疾病缓解等。

了解完以上这些生存曲线构成的要素以后我们来看一条生存曲线。

这是用SPSS示例数据库绘制的一条生存曲线。可以看出来,这个生存曲线不是一个单一折线,显得比较粗。为什么呢?因为SPSS中用“+”来表示删失数据,这个研究删失病例多因此曲线中出现大量“+”使得曲线变得较粗。什么是删失(censor)呢?所谓删失病例就是失访、死于其它疾病或者观察结束时患者尚存活;也常叫做“截尾数据”。从这个图我们能看到:首先,这个疾病预后不差,在随访了120个月后仍有85%以上患者存活,也就是10年生存率在85%以上。其次,就是从这个曲线里,我们无法得到中位生存期,因为直到研究结束,我们也没观察到一半的患者死亡。但是我们可以获得这个人群的平均生存时间是122.7(120.1,125.3)月。从这个生存曲线我们还能看出这个疾病人群死亡速度是比较平缓、稳定的,这个曲线的下降斜率在不同点还是比较相似。不会有特别陡峭的下降,如果生存曲线陡峭往往说明这群患者的生存期会较短,预后不好。

大多数研究不是进行疾病自然史的研究,而是比较具有不同特征的患者或者是进行了不同干预措施的患者的生存情况,来判断预后。因此,我们在文献中看到的生存曲线往往是在一个坐标系里有两条或者两条以上的曲线。

比如这个生存曲线图就是比较Sorafenib和安慰剂组患者的死亡发生情况的,可以看出来,安慰剂组在最初几个月会有个陡峭下降,在3个月的时候就有一半的患者死亡,而Sorafenib组患者的情况则好一些,下降的趋势不像安慰剂组那么陡,在将近6个月的时候才发生一半患者死亡。也就是,两组的中位生存期时间分别是2.8和5.5个月;经计算,Sorafenib的HR是0.51,差异有统计学意义。也就是说,Sorafenib组的患者预后更好。

生存曲线中是可以直观看到不同组别的患者死亡的发生情况的,不同组别的生存曲线分得越开,也就是组间生存曲线下降趋势的差别越大,组与组之间预后的差别越大。

从生存曲线中还能直观看到50%,或者25%、75%、90%患者死亡发生在观察开始后多长的时间段里,这个对于临床医生向患者解释预后非常有意义。很多临床医生在阅读文献后,虽然“心领神会”HR的意义,但是往往很难向病人和家属介绍HR的意义。结合上面的例子,如果从HR的角度出发,医生会说,用Sorafenib比不用将使患者的死亡概率减少一半。可是要是结合生存曲线,我们可以说,用Sorafenib能延长一倍的生存时间。显然从生存曲线的角度出发来解释病情和解释治疗效果更容易让患者和家属理解和接受。

应用案例

新药对患者总生存时间的影响-KM曲线

医院需要研究一种新药的疗效情况,使用 Kaplan-Meier 曲线得到是否使用新药对患者总生存时间的影响。

患者状态:0代表存活或失访,1代表死亡。

软件操作及结果解读

软件操作

结果解读

1)模型数据摘要

上表展示了样本的事件数(状态=1)/删失数(状态=0)以及事件数占比的情况。

2)生存情况的均值和中位数

使用新药的中位生存时间是 58 周,而不使用新药是 26 周。可以认为新药的使用明显带来好处,使得生存时间有较大延长。

3)生存状态差异检验

  • Log-Rank 检验,每个时点有相同的权重,对后期的差异更为敏感,最为常用。
  • Breslow 检验,各时间点的观察例数为权重,例数越多权重越高,对前期的差异更为敏感。
  • Tarone-Ware 检验,结合以上两种方法,适合生存曲线有交叉的情况使用。

三种方法的 P 值均小于 0.05,可以认为水平呈现显著性,拒绝原假设,因此认为这两组的生存率存在差异(原假设为生存率无差异)。

4)Kaplan-Meier 曲线

上图展示了 Kaplan-Meier 曲线,横轴为时间,纵轴为生存率,该曲线展示了随着时间变化生存率的变化情况,每一个“台阶”都对应着一个发生终点(死亡)事件的时间点。

X轴为0时,随访刚刚开始,还没有患者死亡,所以两组患者的生存率都是100%,随着时间的推移,有患者发生死亡,终点事件发生,生存率从1开始下降。在随后的随访过程中,我们发现未使用新药的死亡率在任何一个时间均高于使用新药,从图可见使用新药相比未使用新药,能明显增加生存率。

注意:

  • 状态变量只能是二分类 0、1 变量,并且 1 代表是事件发生(如死亡/阳性等);
  • Kaplan-Meier 生存曲线在于研究某 1 个因素对于 Y 的影响,COX 回归研究多个因素对于 Y 的影响

应用GraphPad Prism制作生存曲线

 1. 打开Prism→选择survival→选择第1或第4个图

  Show result as中选择“Fractions”那么纵坐标是从0-1,选择“Percents”那么纵坐标是从0-100。

  2. 点create。这时需要录入生存数据了。数据的排列格式如下:

  2.1第一列(X轴):是研究中患者的随访时间。单位可以是月、年等。

  2.2第二列(A):是第一组患者对应的生存或死亡的情况,这里0代表生存,1代表死亡。第一行在表中是1,0,说明该患者随访了1个月,1个月随访时状态是生存,这一组第一个死亡的病例在表中是:10,1,说明该患者在10个月的时候死亡。

  2.3第三列(B):是第二组患者对应的生存或死亡的情况。解释同上

  3. 数据都录入好了我们就可以直接点左侧Graphs的Data1

  4.这样我们可以得到最初的生存曲线

  但这曲线不能直接用,因为它不符合我们的统计要求,生存曲线需要Y轴的最高点是1或100%,这个图明显不合适。下面我们来改改这个图让它更符合我们的要求。

  5. 把鼠标点向Y轴,双击;会出现以下对话框

  5.1 点击去掉Automatically determine the range and interval

  5.2 把range中的maximum改成1.0

  5.3 点击”OK“

  就可以获得我们常常看到的生存曲线了。

  6. 最后就是曲线的美化了。

  6.1 双击任一生存曲线可以改变曲线的颜色,线型。改的同时图示中的颜色和线型也会同步改过来。

  6.2 双击Y轴可以添加参考线。大多数研究会讨论中位生存时间,只要我们在图中双击Y轴,在”Additional ticks and grid lines“中写入0.5(如果开始作图时选择”Percents“这里应写入50)点选Tick Line在Details按钮中选择参考线的颜色和线型即可。

  这样我们就可以得到以下这条符合要求的生存曲线了。

  这个例子里,A组的中位生存时间大概是18个月,B组的中位生存时间大概是23个月。当然,要是愿意增加25%或75%都是可以的。只要在”Additional ticks and grid lines“中根据需要添加即可。

  同样的,我们可以添加X轴的参考线,比如肿瘤预后研究中很关心5年生存率,这时我们只要双击X轴,在”Additional ticks and grid lines“中写入60(月)或5(年),点选上line即可。在这个栗子里,两组的5年生存率都是0,所以我先以1年生存率的参考线画出来示意一下:

  可见在这个例子中,A组1年生存率是100%,B组是80%。

SPSS绘制生存曲线图 

死亡速度、生存率、生存时间三者一事三表,高度相关(见下图)。

生存曲线图可集中形象反映三者的特征与关系。

生存曲线图最常见的莫过于Kaplan-Meier生存曲线图。1958年,Edward L. Kaplan和 Paul Meier合作发表了一篇关于如何处理不完整的生存时间资料文章后,利用Kaplan-Meier方法描绘生存过程、绘制生存曲线已经成为处理不同生存时间(time-to-event)的最熟悉的方式。

问题描述

我们以下数据为例,采用SPSS软件绘制出最朴素的生存曲线图。

3种疗法治疗66例白血病患者缓解时间(天),数据(kaplanm.sav)如下:

A疗法:4,5,9,10,11,12,13,20+,28,28,28,29,31,32,37,41,41,57,62,74,109,100,139,158+

B疗法:8,10,10,12,14,20,48,70,75,99,103,161+,162,169,195,199+,220,217+,245+

C疗法:8,10,11,12+,23,25,28,28,31,31,40,48,89,124,143,159+,190+,196+,197+,205+,219+

本案例中总共有3种疗法,每种疗法的终点阳性事件是疾病进展,生存时间即术后到疾病进展之间的缓解期时间。时间带+号意味着它是不完全生存时间,研究对象删失了。

随着时间的流逝,同一疗法的患者逐渐出现疾病进展的现象,且大部分出现在早期,所以早期生存率下降地较快(风险函数值即死亡速度较大)。不同人群的同一时期的死亡速度可能不一致,导致不同对象死亡率、中位生存时间都不一致。

思路解析

下图即Kaplan-Meier 生存曲线图,我们可以从中得到更多的信息。该图X轴为生存时间,Y轴为生存率,不同曲线代表不同治疗随着时间变化,生存率发生的变化。

很明显,三者死亡率均呈下降趋势,早期下降较快,后期趋于平稳;三者死亡率下降速度不一致,A疗法(代表蓝色曲线)生存率下降较快,死亡速度较快,因此生存时间也相对较短。B、C两种疗法伯仲之间。

曲线图折线的发生意味着此时此刻研究对象发生阳性事件(本例是患者出现了进展);带加号意味着,在此时此刻,患者出现了失访现象。

该时刻出现阳性事件

该时刻患者删失了

Y轴50%生存率对应的X轴时间为各条曲线的中位生存时间。可以看出来,时间长短上,A疗法<B疗法<C疗法,这是由于三种方法死亡速度不一致造成。

怎么看死亡速度(风险函数值)呢?某一时刻的死亡速度即该时刻的曲线的切线斜率(紫色虚线)。可以看出,在第40天前后,三者切线斜率是A疗法>B疗法>C疗法,意味着A疗法出现疾病进展的速度最快。同时,不同时刻同一人群死亡速度不同。

因此,通过K-M生存曲线图就可大致描述不同组人群的生存率、死亡速度、中位生存时间。同时,生存曲线图也显示出3组人群生存率变化趋势不尽相同,或者说3条生存曲线不一致,反映出3组人群不同的生存状态。

当然,若要更加细致地描述和比较生存状态,则要通过统计软件开展统计描述和统计分析。

利用SPSS描述与比较生存过程

研究利用SPSS方法,分析本文的案例“3种疗法治疗66例白血病患者缓解时间(天)”。该案例在SPSS数据库中,主要包括三个变量“分组变量”,“时间变量”,“是否删失(即是否出现阳性终点)”

描述生存过程的方法,包括寿命表法和Kaplan-Meier法。Kaplan-Meier法最常见,本文以该法为例开展分析。比较生存过程过程主要比较生存曲线是否一致,即比较生存率变化趋势总体上有无统计学差异,常见的方法包括LogRank检验和Bloslew方法。

 图形绘制

1、  SPSS分析入口

SPSS分析入口:分析-生存分析-Kaplan-Meier法

2、  Kaplan-Meier法主界面及操作

①时间:放入生存时间;因子:放入分组变量;状态:放入结局变量,并定义事件。在定义事件中,软件要求作者指标,本研究阳性事件赋值。一般情况下,数据库构建针对生存结局变量,一般设定阳性事件赋值为1,因为删失而未观察到阳性结局者赋值为0。因此“定义事件”一般设定“单值”为1 。

②因子:放入分组变量,也就是处理因素或者暴露因素

③比较因子:即开展多条生存曲线的统计学比较,常见的方法包括秩的对数(LogRank)和布雷斯洛(Breslow)检验

③选项:一般选择计算生存分析表①(计算生存率)、平均值和中位数生存函数②(计算生存时间)、生存分析函数③(绘制生存曲线)

3、  分析结果

(1)生存率计算

SPSS软件基于Kaplan-Meier法,针对不同分组,比如A、B、C疗法,计算随访期间不同时点的生存率。Kaplan-Meier法根据每一个时间段的生存概率相乘得到累计生存率。因此在生存率表中,我们可以看到,当研究对象出现重点结局后,在对该时刻生存率的造成的改变;若研究对象删失,则生存率不发生改变(SPSS分析结果缺省)。

比如,我们想知道第20天A组人群的生存率。通过下表可以发现,第20天患者结局是删失,生存率缺省,那么可以观察前一时间段(13天)的生存率,它与第20天一致,即72.7%。

(2)中位生存时间计算

SPSS 同时给出生存时间的均数和中位数。不过生存分析一般只关注中位生存时间即可,所以可忽略下表的平均值。SPSS给出不同组和总人群的中位生存时间及其95%置信区间。

(3)生存过程总体比较

比较A、B、C生存过程的差异,比较的是生存曲线是否相同,实际比较的是生存率变化趋势是否相同,也近似地比较生存时间分布位置是否相同。

生存曲线是否相同一般有两种方式,基本统计学和高级统计学,基础统计学是差异性比较方法(类似于t检验、卡方检验);高级统计学是Cox回归。此处介绍基础统计学方法。

SPSS给出两种基础统计学方法,LogRank 和Breslow方法,两种均属于非参数检验。一般情况下结果相似。但是和Breslow对比较生存率是否相同时,对各时间点进行了根据样本量不同程度的加权,因此结果稍有不同。一般情况下,若需要突出早期随访生存率差异性,则采用Breslow,否则采用LogRank法。比如本例生存曲线图中,A、B、C 3种疗法早期效果差异不明显,所以Breslow检验无统计学差异(P=0.164),而LogRank则从全局考虑,得到了阳性结果(P=0.038)。

3种疗法生存时间的直方图

(4)最后给出生存分析图。上午已有详细的介绍,此处不再赘述。

结果表达

规范文字:结果表明,A疗法(中位生存时间32.0天 95%CI 20.3-43.7)、B疗法(中位生存时间99.0天 95%CI 52.1-145.9)、C疗法(中位生存时间48.0天 95%CI 0.0-131.6)存在着统计学差异(LogRank P=0.038)。

统计图:一般生存分析将结合生存曲线图来进行说明,且生存曲线图最好标注中位生存时间、P值甚至是HR值。如此一以来,作者阅读生存曲线图即可以得到关于生存率、时间和速度的所有信息。

 结果解读

1.生存差异性的比较方法

生存分析核心任务是描述和比较差异性。研究者可通过生存曲线图大致了解组间的差异性,细致的数据需要借助统计分析方法。

统计分析方法论证生存曲线是否相同一般包括有两种方式,基本统计学和高级统计学。基础统计学是差异性比较方法(类似于t检验、卡方检验);高级统计学常用Cox回归。

基础统计学方法常用LogRank 和Breslow方法,主要是开展生存率分析比较,而Cox回归则比较的是风险函数,即“死亡”速度,的差异性。不仅如此,它还提供非常重要的指标:风险比(HR)。该指标不仅反映差异性,还反映研究因素(治疗措施、暴露因素)与生存风险的关联性程度。Cox回归一般用来同时探讨多种研究因素对生存风险的影响。我们将在后文详细介绍。

2.LogRank法是实验性研究研究评价疗效的首选方法

目前,越来越多的实验性研究注重对患者中长期的随访,因此生存分析逐渐成为评价疗效的主流方法。疗效评价主要开展疗效差异性研究,LogRank 、Breslow、Cox回归均可实现研究目的。

但由于Breslow注重短期效果,而Cox分析虽然能够计算HR值,但是它的使用受到诸多条件的限制,特别是等比例风险假设条件的限制。因此,实验性研究一般更注重LogRank检验,以该方法的P值作为衡量实验措施疗效的主要循证依据。

3. LogRank不能直接提供观察性研究病因学的证据

由于LogRank方法属于基础统计学,与t检验和F检验一样,在观察性研究中,只能探讨组间是否统计学差异。它无法克服组间不均衡带来的潜在干扰因素的影响。一般情况下,观察性研究探讨暴露因素与生存情况的因果关联性,往往需要借助Cox回归方法来进行,该方法同logistic回归一样,可以控制干扰因素的混杂偏倚。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gRPC-go参数功能介绍1->WithBlock参数介绍

在gRPC-go框架中&#xff0c;当客户端使用 Dial() 方法连接到gRPC服务器时&#xff0c;可以使用 WithBlock() 选项来阻塞客户端&#xff0c;直到与服务器建立连接成功。 通常情况下&#xff0c;当客户端调用 Dial() 方法时&#xff0c;该方法会立即返回&#xff0c;并在后台异…

使用MinIO文件存储系统【完成图片上传保存】业务逻辑

目录 1&#xff1a;业务流程 2&#xff1a;接口实现 controller层 service层 1&#xff1a;业务流程 步骤一&#xff1a;前端进入上传图片的界面 步骤二&#xff1a;上传图片&#xff0c;请求到后端的媒资管理服务模块 步骤三&#xff1a;媒资管理服务将图片文件存储到m…

STM32---编写呼吸灯串口发送ON开LED,发送OFF关LED或者0X550X440XFF表示开灯,0X550X660XFF表示关灯

编写呼吸灯串口发送ON开LED&#xff0c;发送OFF关LED或者&#xff08;0X550X440XFF表示开灯&#xff0c;0X550X660XFF表示关灯&#xff09;注&#xff1a;包头 0X55 包尾&#xff1a;0XFF 数据&#xff1a;0X44表示开灯 0X66表示关灯 用到了重定向 //printf的重定向 int fpu…

使用SSD会提高游戏性能或FPS吗?

​“我在考虑要不要给电脑换个SSD&#xff0c;现在旧电脑上的HDD快满了&#xff0c;正好我也喜欢打游戏&#xff0c;听说换SSD可以提高电脑性能以及游戏FPS&#xff0c;这是真的吗&#xff1f;如果是真的&#xff0c;那我怎么样可以把旧硬盘上的数据迁移到新硬盘呢&#xff1f;…

【Web3.0大势所趋】下一代互联网的未来

前言 Web3.0 是一个越来越受到关注的话题&#xff0c;它被认为将会带来天翻地覆的变化。本文我们一起来谈谈 Web3.0 的概念、特点和优势&#xff0c;并探讨它为什么如此重要和具有革命性的。 文章目录 前言Web3.0是什么区块链技术智能合约总结 Web3.0是什么 Web3.0: 是下一代互…

达梦数据库的安装DM8

文章目录 一、达梦数据库的安装1、环境需求2、达梦的官方安装文档3、达梦数据库的安装包下载3.1、DM8的下载3.2、DM7的下载 4、开始操作4.1、使用xftp传dm8到虚拟机里4.2、下载依赖包4.3、拷贝dm8的iso文件到指定目录&#xff0c;并挂载4.4、创建DM安装用户和安装用户组并初始化…

提前熟知领英被限制被封因素,避免踩坑

领英在什么情况下容易被封 01.同一个人注册使用多个领英帐号。 02.多个人共同使用同一个领英帐号。 03.虚假资料注册领英账号&#xff0c;常见于注册领英账号的时候初始姓名随便填写或胡编乱造&#xff0c;注册时使用了网络虚拟的手机号码或邮箱等。 04.领英帐号的个人档案资料…

unity多线程Burst+Job System

Unity自己本身UnityEngine所使用的API是不能被多线程调用的&#xff0c;它没有向用户开放线程接口&#xff0c;所以Unity是不能使用多线程的&#xff0c;但是C#中可以使用多线程&#xff0c;Unity使用C#进行脚本编辑&#xff0c;故而Unity也可以通过C#来调用多线程。 JobSyste…

如何在新能源行业运用IPD?

新能源又称非常规能源&#xff0c;一般指在新技术基础上&#xff0c;可系统地开发利用的可再生能源。是指传统能源之外的各种能源形式&#xff0c;也是指刚开始开发利用或正在积极研究、有待推广的能源&#xff0c;如太阳能、地热能、风能、海洋能、生物质能和核聚变能等。目前…

HTTP与HTTPS的区别

1 HTTP与HTTPS有哪些区别 HTTP 是超文本传输协议&#xff0c;信息是明文传输&#xff0c;存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷&#xff0c;在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议&#xff0c;使得报文能够加密传输。HTTP 连接建立相对简单&#x…

你的私人编程老师,ChatGPT帮你快速掌握Python编程

ChatGPT为我们提供了一种全新的学习方式&#xff0c;让你可以更轻松&#xff0c;更快速地学习编程知识。 以下是ChatGPT帮助用户学习编程的优势&#xff1a; 推荐资源和课程ChatGPT可以根据您的编程经验和学习目标&#xff0c;推荐适合您的在线学习资源和课程。例如&#xff0c…

Go类型断言

在Go语言中类型断言的语法格式如下&#xff1a; value, ok : x.(T) 类型断言失败&#xff0c;不会发生panic。根据ok判断是否成功 或者 value: x.(T) 类型断言失败&#xff0c;会发生panic 其中&#xff0c;x 表示一个接口的类型&#xff0c;T 表示一个具体的类型&#xff08;也…

希望所有计算机专业同学都知道这些老师

C语言教程——翁凯老师、赫斌 翁恺老师是土生土长的浙大码农&#xff0c;从本科到博士都毕业于浙大计算机系&#xff0c;后来留校教书&#xff0c;一教就是20多年。 翁恺老师的c语言课程非常好&#xff0c;讲解特别有趣&#xff0c;很适合初学者学习。 郝斌老师的思路是以初学…

进口常用除氟树脂品牌

随着经济的发展&#xff0c;半导体、表面处理、采矿等行业产生了大量的高氟废水&#xff0c;由于高氟水对人体健康具有较大危害&#xff0c;含氟污水治理己经引起了广泛的关注。 多年以前&#xff0c;含氟废水的处理&#xff0c;一般下游污水处理厂通过合并多股废水&#xff0…

html监听界面被隐藏或显示

vue相比于小程序和uni-app 显然少了两个有点用的生命周期 onShow 应用被展示 onHide 应用被隐藏 但其实这个 要做其实也很简单 JavaScript中 有对应的visibilitychange事件可以监听 我们Html参考代码如下 <!DOCTYPE html> <html lang"en"> <head>…

在GB28181项目中,调用eXosip_register_send_register函数并且返回值为-2或者-3的含义是什么

一、eXosip_register_send_register返回-2的原因&#xff1a; 在GB28181项目中&#xff0c;调用eXosip_register_send_register函数并且返回值为-2通常表示注册发送失败。该返回值的含义是注册请求被拒绝&#xff0c;可能是由于身份验证失败或其他原因导致的。 以下是可能导致…

人车混合机器人实现身体平衡功能

1. 功能说明 在R035c样机上安装一个六轴陀螺仪传感器&#xff0c;本文示例将实现机器人身体平衡功能。当用手把机器人人形部分摆动到左侧时&#xff0c;人形部分会自动恢复到中间&#xff1b;当用手把机器人人形部分摆动到右侧时&#xff0c;人形部分也会自动恢复到中间。 ​ 2…

简历照片底色要求是什么?怎么修改证件照底色?

准备一份完美的简历是找到工作的关键之一。其中一个重要的组成部分是照片。照片可以让我们的简历更加生动活泼&#xff0c;同时也可以为面试官在面试时提供更好的印象。但是&#xff0c;如果在照片中使用了错误的背景色&#xff0c;那么简历可能会被忽略或被视为不专业。因此&a…

数据结构与算法——求二叉树叶子数量求二叉树高度

递归特性求树的高度流程图 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> //二叉树的节点结构体 struct BinaryNode {char ch;//显示的字母struct BinaryNode * lChild;//左孩子struct BinaryNode * rChil…

代码随想录训练营Day45| 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

目录 学习目标 学习内容 70. 爬楼梯 &#xff08;进阶&#xff09; 322. 零钱兑换 279.完全平方数 学习目标 70. 爬楼梯 &#xff08;进阶&#xff09; 322. 零钱兑换 279.完全平方数 学习内容 70. 爬楼梯 &#xff08;进阶&#xff09; problems/0070.爬楼梯完全背包版本…