当前位置: 首页 > news >正文

论文学习:《EVlncRNA-net:一种双通道深度学习方法,用于对实验验证的lncRNA进行准确预测》

原文标题:EVlncRNA-net: A dual-channel deep learning approach for accurate prediction of experimentally validated lncRNAs

原文链接:https://www.sciencedirect.com/science/article/pii/S0141813025020896


长链非编码RNA( long non-coding RNAs,lncRNAs )指的是长于200核苷酸的不编码蛋白质的转录物。lncRNA在许多生物学过程中发挥重要作用,包括基因调控、发育和免疫应答。此外,lncRNAs还与多种人类疾病有关,如癌症、肌肉疾病和遗传性疾病。

高通量测序技术(High-throughput sequencing)又称“下一代”测序技术(Next-generation sequencing technology),能够一次并行对大量核酸分子进行平行序列测定的技术。

低通量测序技术(Low-throughput sequencing)指的是较小规模的DNA测序技术。

本文提出了一种新的基于序列语言处理的深度学习框架实验验证lncRNAs网络( EVlncRNAs-net )。该框架包含两个表示学习模块:EVlncRNA-net ( GCN )和EVlncRNA-net ( CNN )。GCN 引入了一种新颖的图构造方法和专门的节点编码技术,该模块将lncRNA序列转化为图形格式,并使用图卷积进行处理。CNN 通过卷积神经网络从one-hot编码序列中提取特征。

面对的问题:高通量测序中鉴定出的lncRNA数量与实验验证的lncRNA数量之间的差距。

LncADeep使用深度信念网络整合内在和同源特征进行lncRNA识别,同时通过基于序列和结构的深度神经网络预测lncRNA-蛋白质相互作用。

LncRNA _ Mdeep是一种非比对、多模态深度学习方法来区分lncRNA和蛋白质编码转录本,将多模态输出连接到一个深度神经网络进行最终分类。

EVlncRNA-pred,一种基于SVM的方法,旨在区分实验验证的lncRNAs ( EVlncRNAs )和高通量测序RNAs ( HTlncRNAs )。

EVlncRNA-Dpred将k-mer特征融入深度神经网络( DNN ),one-hot编码融入卷积神经网络( CNN )。但较大的k-mer值会导致编码向量稀疏且质量较低。

为了克服这些局限性,本文开发了一种新型的双模块EVlncRNA-net用于EVlncRNA的预测。EVlncRNA-net结合了图卷积网络( GCN )和卷积神经网络(CNN )进行综合表示提取。

1.GCN提出了一种新颖的图构建方法和专门的节点编码技术,该模块将lncRNA序列转换为图结构,基于3-mer多尺度区间信息和编码构建节点,然后利用GCN从这些图中提取表示。有效解决了传统kmer编码忽略序列细节的局限性,避免了与传统编码方法相关的稀疏性和质量损失。

2.CNN模块将序列转化为one-hot编码数据,并使用CNN和线性层提取深层特征。

3.模型整合两个模块的特征,并通过全连接层产生最终的预测。

EvlncRNA-Net概述

EVlncRNA-net的基本架构如图1所示。输入为lncRNA或ncRNA序列,输出为该序列被预测为EVLncRNA的概率。该过程的核心在于表示学习,它包括两个主要模块:GCN和CNN。在GCN模块中,lncRNA使用k-mer序列片段来描述,称为" k-mer单元"。每个k-mer单元由4的k次个初级特征节点和单个k-mer特征节点组成。为了平衡节点维度和生物相关性,我们为我们的k-mer单元选择一个k值为3。主要原因是3-mers由于其在保持维度可管理的同时有效地表示序列而被广泛应用于生物信息学中。此外,3-mers提供了最优的特征维度。较大的k-mer规模会导致主要特征节点的数量呈指数增长,显著提高复杂度。

对于每个3-mer单元,64个主要节点分别代表当前3-mer和64种3-mer之间的连接。这些节点的特征值来自于多尺度区间连接。k-mer特征节点表示特定3-mer单位在序列中出现的频率。

在将lncRNA序列转换为图结构后,GCN模块使用三个SAGEConv图卷积层来细化节点特征。在每一层中,主特征节点根据其连接的k-mer特征节点的信息进行更新,进而增强k-mer特征节点。在此优化之后,模型使用带有线性层的全局图池化方法聚合了所有节点的主要特征,产生了捕获整个图的特征表示,进而准确地表示了原始序列。这种设计使得模型可以有效地处理非欧几里得数据。通过将不同长度的lncRNA转化为图结构,该模型克服了通常与传统序列比对和分析方法相关的挑战。通过利用图卷积的灵活性和抽象性,GCN展示了其捕获复杂序列模式的能力,提高了信息集成,并保持了自适应性。

在CNN模块中,首先将lncRNA序列转换为one-hot编码。这些编码后的特征再经过两个连续的卷积层。随后,批量归一化层和ReLU激活函数进一步细化了特征。然后,该模型应用自适应最大池化层和线性层来降低池化输出的维度。该序列操作使CNN模块能够从lncRNA中提取深层特征表示,这对于识别序列内的局部模式和提高分类精度至关重要。

在得到两个模块的特征后,将它们进行组合,并通过一个线性层产生最终的分类概率

GCN特征提取

图构建

图2:由序列构造图。
(A)将序列转换为图形形式的一般过程。
(B)将序列划分为3-mer片段,每个3-mer构成一个3-mer单位,它是图的一个基本单位。每个3-mer单元由64个初级特征节点和1个k-mer特征节点组成,代表两种不同类型的节点。
(C) 3-mer单元内的特征提取步骤。
(D)完全图中两类节点之间的最终连接关系。每个3-mer单元的节点通过特定的关系连接起来,形成lncRNA序列的最终图表示

将序列划分为3-mer单元后,下一步的工作是在每个单元之间建立节点连接。3-mer单元之间的连接是通过连接整个图中的k-mer特征节点和主要特征节点来实现的。每个3-mer单元中的k-mer特征节点连接其64个主要特征节点。这些连接的方向是从k-mer特征节点到主要特征节点,代表从该特定3-mer开始的所有3-mer对。同样,初级特征节点在其对应的对中也连接到后续3-mer的k-mer特征节点。

这个过程导致了序列的图形表示,如图2(D)所示,用实线表示从k-mer节点到主节点的连接,虚线表示从主节点到k-mer节点的连接。这些节点连接关系影响着后续连接节点之间的相互更新。

对k-mer特征节点进行k-mer编码

k-mer是由核苷酸序列中的K个连续核苷酸组成的子串。在一个RNA序列中,核苷酸由A、U、C和G表示,产生4^k个不同的k-mers单位。对于K = 3,有64个不同的3-mer单位,包括AAA,AAC,AAU,AAG,..,GGG,共64个不同的3-mer单位。在GCN模块中,3-mer单元构成了lncRNA的基本组成部分。每个3-mer单元包括64个主节点和1个k-mer特征节点将3-mer的频率作为k-mer特征节点的特征值

对主要特征节点进行编码

主特征节点是每个3-mer单元的重要组成部分。每个3-mer单元包含64个初级特征节点。图对主要特征节点进行编码,用邻接矩阵表示,邻接矩阵捕捉3-mers之间在指定间隔d的连接。该邻接矩阵被用于编码基于多尺度间隔d的3-mer单元中的主要特征节点。在GCN模块中,邻接矩阵的大小为64×64,代表了从AAA到TTT的64种可能的3-mer组合。在这个邻接矩阵中,两个3-mer被特定的间隔距离d隔开,称为在间隔d处的3-mer对。矩阵的纵轴表示该对的第一个3-mer,横轴表示第二个3-mer。邻接矩阵中的每个项(i , j)记录了3-mer ' i '在间隔d时先于3-mer ' j '出现的次数

下面举一个简单的例子:如图2(C)所示,在d=0矩阵中,所有以AAA开头的3-mer对都放在第一行。例如,第一列(对应于对( AAA , AAA) )中的值为1,第二列(对( AAA , AAC) )中的值为2。同样,在矩阵d=1中,第二列( AAA、AAC)和第五列( AAA、ACA)中的值均为1,表明这些对在这个区间内发生一次。

每个3-mer单元包含64个初级特征节点。主要特征节点捕获了不同间隔距离d下3-mers之间的连通性,反映了在指定距离下两个3-mers出现的频率。对于每个3-mer节点,我们考虑在区间距离d=0,d=1和d=2下的连通性。区间距离的选择是基于既要捕获lncRNA序列的结构复杂性,又要捕获其功能元件的多样性。在本研究中,3-mer单元被用作最小的图构建块,序列最初被划分为3-mer片段,如图2(C)所示。当d=0时,相邻3-mer对之间的关系被捕获。类似地,d=1和d=2捕获间隔分别为1和2的3-mer对之间的关系。如果选择d=4,两个3-mer块之间的距离将超过原始的k=3分割,从而产生间隙,破坏特征的连续性和紧密性。

数字64是指以当前3-mer开头的所有64对可能的3-mer对。例如,对于图2(C)中的AAA单元,第二个主要特征节点的值,记为(V_0、V_1、V_2),对应于邻接矩阵中3-mer对( AAA、AAC)在距离d=0,d=1和d=2处的值,其值为[ 2、1、0 ]。该编码用于为每个3-mer单元内的每个主要特征节点分配值。由邻接矩阵衍生的多尺度编码提供了lncRNA序列的鲁棒性表示,具有若干优点。首先,它捕获了跨不同区间距离的序列结构的全面视图,使模型能够理解局部和远程的3-mer关系,这在不同距离的模式都很重要的生物背景中至关重要。这种编码通过关注特定的区间,降低了维度,过滤掉了不相关的细节,突出了最相关的信息。这不仅增强了模型对细微序列模式的识别能力,而且使其对微小的序列变化不敏感,从而提高了模型的泛化能力。此外,该方法具有很高的可解释性,使研究人员能够识别哪些3-mer对和距离对预测至关重要。总体而言,这种编码方式将详细的信息表示与有效的模型性能和可解释性相结合,使其成为lncRNA序列分析的有力工具。

SAGEConv

SAGEConv (采样和聚合卷积) 是一种特殊的图卷积操作,旨在通过聚合关于其邻居的信息来学习每个节点的表示。GraphSAGE的核心思想是使用不同的聚合函数,如平均、最大池化或长短期记忆网络(LSTM)来收集周围节点的特征信息,并更新当前节点的特征表示。

在SAGEConv中,计算图(V、E)中每个节点ν的新特征表示如下:

其中hv为节点v的当前特征表示,N(v)为节点v的邻居集合,AGGREGATE为聚合函数(例如平均,最大池化,或LSTM),W为可学习的权重矩阵,σ为非线性激活函数。

在SAGEConv在EVlncRNA-net中的实现中,我们特别使用了平均聚合。其原因在于,平均聚合有效地捕获了节点邻居的平均信息,有利于学习鲁棒、平滑的节点表示。这种方法特别适合于构造由lncRNA序列衍生的图数据。平均集合公式表示为:

其中hu表示邻居节点hu的特征向量,N(v)表示节点v的邻居节点集合,表示节点v的邻居个数。

该聚合过程计算所有邻居节点的特征向量的均值,使得模型能够有效地捕获邻域信息

在本文的方法中,使用了PyTorch Geometric (PyG )库中的SAGEConv层,该层扩展了公式( 1 ),转化为一种实用的基于图的数据工作格式。该层特别有利于处理有向或异构图,因为它允许对源节点和目标节点使用不同的节点特征。这一特性使我们能够有效地处理特征维度变化的节点。PYG的实现方式如下:

其中x_src和x_dst分别表示源节点和目标节点的特征矩阵。
边索引(edge_index)的大小为[2 , E],其中E表示边的数量,编码节点的连接关系。

SAGEConv模块通过执行式(3)中的实际步骤,在操作上实现了式(1)中定义的计算过程。当调用SAGEConv(x_src,x)dst,edge_index)时,内部计算经历了四个不同的阶段,每个阶段都与数学表达式紧密相关。

(1)邻域识别与特征检索:维度为[2 , E]的边索引张量有利于高效地识别每个目标节点v的邻域节点N(v)。同时,该模块从源节点特征矩阵x_src中检索出所有u∈N(v)对应的特征向量hu。

(2)邻域特征聚合:聚合算子AGGREGATE(⋅)对提取的邻域特征{hu|∀u∈N(v)}进行处理,实现式(1)中规定的关键信息蒸馏步骤。

(3)特征整合:根据式(3)的公式,从目标特征矩阵x_dst直接获得的聚合邻域表示与目标节点v的内在特征hv进行级联。

(4)非线性变换:集成后的特征经过线性变换后再经过激活函数σ,最终生成更新后的节点表示hʹv,构成模块的输出。

该方法允许在我们的图的每个3-mer单元中有效地更新主特征节点和k-mer特征节点。在GCN模块中,我们使用三层SAGEConv进行节点更新。如图3所示,在每个SAGEConv层中,我们首先利用k-mer特征节点和k-mer特征节点到主特征节点的边来更新主特征节点。然后,利用更新后的主特征节点及其指向k-mer特征节点的边,更新k-mer特征节点

图3 . k-mer节点与主节点之间的相互影响和更新过程。

经过3层SAGEConv并进行双向更新后,将所有主要特征节点的特征进行串联。这种级联形成了由GCN衍生的最终特征表达。通过使用这种双向信息传递和特征互补的策略,我们增强了模型的表示学习能力。这种方法在捕捉序列之间错综复杂的关系和特征方面尤为有效。

GCN概述

GCN模块中,首先统计每个序列中不同的3-mers,并构建3个不同间隔距离d的邻接矩阵。每个3-mer由一个k-mer特征节点和64个主要特征节点表示。k-mer特征节点由k-mer编码得到的频率特征表征,而每个主特征节点具有由多尺度区间连接信息得到的三维特征。这些主节点捕获当前3-mer与其他所有3-mer在指定距离上的连通性。

根据建立的连接模式,将主要特征节点链接到k-mer特征节点,将序列转换为图形格式。该方法将来自k-mer特征节点的局部信息与邻接矩阵中多尺度区间连接信息提供的全局上下文信息相融合。这种综合的图构建捕获了序列内部的复杂性和相互关系,便于通过后续的GCN处理进行有效的表示学习。在这项研究中,使用SAGEConv作为图卷积算法。

CNN特征提取

one-hot编码

在生物信息学中,独热编码是一种广泛使用的特征提取方法,将生物序列转换为适合机器学习算法的格式。在此背景下,A,C,G和U这4个核苷酸碱基通常分别被编码为 [1,0,0,0],[0,1,0,0,[0,0,1,0]和 [0,0,0,1]。这种编码策略提供了一个独特的优势:它为每个核苷酸碱基或氨基酸提供了一个公平且统一的加权表示,增强了机器学习模型对生物序列数据的处理能力。

CNN概述

在CNN特征提取模块中,每个lncRNA序列都会经历一个系统的过程,以生成准确的特征表示。首先,将序列转换为一维独热编码格式

接着,通过两个卷积层对one-hot编码序列进行处理。这些层使用多个卷积滤波器来提取序列中的重要特征,并揭示序列中的复杂模式。为了提高模型的稳定性和加速收敛,采用批归一化对跨批数据分布进行标准化处理。

随后,使用自适应最大池化在保留关键序列信息的同时降低特征的维度。最后,将处理后的特征通过一个线性层,将其细化为紧凑的表示,为后续的集成和分类任务进行优化。这种方法确保了有效地捕获和增强lncRNA序列的本质特征,以便进行进一步的分析。

模块融合

在EVlncRNA-net模型中,特征融合是必不可少的。该过程从降低从GCN模块提取的特征的维度开始,以匹配从CNN模块提取的特征的维度。如附表S1所示,我们对该步骤中的特征提取模块进行了降维实验,最终选定128维作为两个特征提取模块提出的特征的维数

表S1:EVlncRNA - net中特征提取模块的特征维度消融研究

Dimension

ACC

MCC

Sensitivity

Specificity

F1_score

32

0.750

0.401

0.503

0.852

0.581

64

0.765

0.422

0.528

0.861

0.593

128

0.786

0.480

0.576

0.880

0.626

256

0.781

0.472

0.572

0.876

0.617

512

0.773

0.463

0.562

0.871

0.601

1024

0.761

0.445

0.544

0.866

0.591

然后将来自两个模块的精简特征拼接成一个统一的特征向量。该方法使得模型能够将来自图结构的全局信息与来自一维序列特征的局部细节信息进行融合,从而得到丰富而全面的特征表示。

融合过程从将GCN模块中的多维特征扁平化为一维向量开始。这些向量随后通过一个线性层,降低其维度以匹配类别数2,用于预测序列是否为EVlncRNA的二分类

评估指标

评估模型的性能使用了准确率(ACC),马修斯相关系数(MCC),敏感性,特异性和F1_score:

其中,TP(True Positives)和TN(True Negatives)分别表示正确分类的正负样本。
FP(False Positives)和FN(False Negatives)表示被错误分类的正负样本。
ROC曲线下面积(AUROC)和精确回忆曲线下面积(AUPRC)也被用来评估性能。

与最先进的方法进行比较

如前所述,早期对lncRNA的研究主要集中在其鉴定上。关于预测EVlncRNAs的工作非常有限。值得注意的研究包括使用SVM算法的EVlncRNA-pred和基于深度学习的EVlncRNA-Dpred。如表8~10所示,与现有技术相比,EVlncRNA-pred表现较差。因此,本研究的重点是比较EVlncRNA-Dpred,这是一种利用深度学习的先进方法。

通过三个独立的测试比较了EVlncRNA-net和EVlncRNA-Dpred。如表8-10和图6所示,在每个数据集上,EVlncRNA-net在几乎所有指标上都优于EVlncRNA-Dpred。

图6:EVlncRNA-net与EVlncRNA-Dpred在三个测试集上的准确率和F1得分比较。

在人类数据集上,EVlncRNA-net(h)比EVlncRNA-Dpred(h)的ACC提高了0.06 %,F1分数提高了7.7 %,分别达到了0.858和0.770。

在小鼠数据集上,EVlncRNA-net(m)比EVlncRNA-Dpred(m)的准确率提高了2.3 %,F1分数提高了2.8 %,分别达到了0.831和0.678。

在植物数据集上,EVlncRNA-net(p)比EVlncRNA-Dpred(p)的准确率和F1值分别提高了11.4 %和10.0 %,达到0.854和0.767。

混合表示融合了CNN和GCN两个模块的表示,通过在有限的数据中有效地捕获细微的模式和关系,证明了混合表示在这些环境中的优势。这种组合策略有助于解决在较小数据集下经常出现的过拟合和特征表示不足等常见问题。通过同时利用局部序列信息和全局图结构,EVlncRNA-net即使从有限的数据中也能很好地提取有意义的特征。这些结果强调了该模型在识别EVlncRNA方面的卓越预测能力,证实了其作为预测工具在不同数据集规模下的稳健性和有效性。

相关文章:

论文学习:《EVlncRNA-net:一种双通道深度学习方法,用于对实验验证的lncRNA进行准确预测》

原文标题:EVlncRNA-net: A dual-channel deep learning approach for accurate prediction of experimentally validated lncRNAs 原文链接:https://www.sciencedirect.com/science/article/pii/S0141813025020896 长链非编码RNA( long non-coding RNAs&…...

LLM Post-Training

1. LLM的后训练分类 Fine-tuning Reinforcement Learning Test-time Scaling 方法 优点 缺点 Fine-tuning 任务适应性:能够针对特定任务或领域进行优化,提升模型在该任务上的性能。 数据驱动优化:利用标注数据直接调整模型参数&#x…...

【LLM】解锁Agent协作:深入了解谷歌 A2A 协议与 Python 实现

人工智能(AI)智能体正迅速成为企业提高生产力、自动化工作流程和增强运营能力的关键工具。从处理日常重复性任务到协助复杂的决策,智能体的潜力巨大。然而,当这些智能体来自不同的供应商、使用不同的框架或被限制在孤立的数据系统…...

FileWriter 详细解析与记忆方法

FileWriter 详细解析与记忆方法 一、FileWriter 核心概念 FileWriter 是 Java 中用于向文件写入字符数据的类,继承自 OutputStreamWriter,属于字符流体系。 1. 核心特点 特性说明继承关系Writer → OutputStreamWriter → FileWriter数据单位字符&am…...

Java笔记5——面向对象(下)

目录 一、抽象类和接口 1-1、抽象类(包含抽象方法的类) 1-2、接口 ​编辑​编辑 二、多态 ​编辑 1. 自动类型转换(向上转型) 示例: 注意: 2. 强制类型转换(向下转型) 示…...

c++------模板进阶

目录 一、模板 1.1 非类型模板参数 二、模板的特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 全特化 偏特化 (1)部分特化 (2)参数更进一步的限制 三、模板分离编译 3.1 什么是分离编译 3.2 模板的分离编译 3.3 解决…...

《轨道力学讲义》——第四讲:轨道计算与预测

第四讲:轨道计算与预测 引言 在轨道力学的研究中,轨道计算与预测是将理论付诸实践的关键环节。当我们掌握了轨道运动的基本规律和数学描述后,下一步便是要能够准确地计算航天器在任意时刻的位置和速度,并对其未来的运动轨迹进行…...

鸿蒙开发-页面跳转

1.路由使用 //1.引入路由 import router from ohos.router//2.使用跳转router.pushUrl({url: "pages/Show"})2.页面跳转 import { router } from kit.ArkUI;Entry Component struct LoginPage {State message: string 登陆页;build() {Row() {Column() {Text(this…...

数据大屏只能撑撑场面?

很多人对数据大屏的看法就是“没有用”、“花架子”,实际上,它的作用绝不止于此。 业财猫全新升级的经营驾舱模块,以精准的行业洞察与场景化设计,重新定义了这一工具的价值。 作为专为财税代账行业打造的一站式运营管理平台&…...

第十九讲 | XGBoost 与集成学习:精准高效的地学建模新范式

🟨 一、为什么要学习集成学习? 集成学习(Ensemble Learning) 是一种将多个弱学习器(如决策树)组合成一个强学习器的策略。它在地理学、生态学、遥感分类等领域表现尤为突出。 📌 应用优势&#…...

大数据面试问答-批处理性能优化

1. 数据存储角度 1.1 存储优化 列式存储格式:使用Parquet/ORC代替CSV/JSON,减少I/O并提升压缩率。 df.write.parquet("hdfs://path/output.parquet")列式存储减少I/O的核心机制: 列裁剪(Column Pruning) …...

关于 软件开发模型 的分类、核心特点及详细对比分析,涵盖传统模型、迭代模型、敏捷模型等主流类型

以下是关于 软件开发模型 的分类、核心特点及详细对比分析,涵盖传统模型、迭代模型、敏捷模型等主流类型: 一、软件开发模型分类及核心特点 1. 瀑布模型(Waterfall Model) 核心特点: 线性阶段划分:需求分…...

【STL】set

在 C C C S T L STL STL 标准库中, s e t set set 是一个关联式容器,表示一个集合,用于存储唯一元素的容器。 s e t set set 中的元素会自动按照一定的顺序排序(默认情况下是升序)。这意味着在 s e t set set 中不能…...

信奥还能考吗?未来三年科技特长生政策变化

近年来,科技特长生已成为名校录取的“黄金敲门砖”。 从CSP-J/S到NOI,编程竞赛成绩直接关联升学优势。 未来三年,政策将如何调整?家长该如何提前布局? 一、科技特长生政策趋势:2025-2027关键变化 1. 竞…...

几何建模基础-拓扑命名实现及优化

1.背景介绍 1.1 什么是拓扑? 拓扑是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。 Body对象的拓扑可以理解为面(Face)与边(Edge)、边…...

浙江大学DeepSeek系列专题线上公开课第二季第五期即将上线!deepseek音乐创作最强玩法来了!

浙江大学DeepSeek系列专题线上公开课第二季第5期即将在今晚进行直播! 其中,今晚8点10分左右,浙大AI大佬张克俊教授将带来硬核的deepseek公开课讲座。 讲座 主题: 人工智能与音乐创作 主讲人: 张克俊 教授 人工智能作…...

electron-builder参数详解

electron-builder 是一个用于打包和构建 Electron 应用的工具,支持 macOS、Windows 和 Linux 平台,并提供了丰富的参数配置选项。 1、安装: npm install electron-builder --save-dev2、参数详解 命令: electron-builder build…...

PVE+CEPH+HA部署搭建测试

一、基本概念介绍 Proxmox VE ‌Proxmox Virtual Environment (Proxmox VE)‌ 是一款开源的虚拟化管理平台,基于 Debian Linux 开发,支持虚拟机和容器的混合部署。它提供基于 Web 的集中管理界面,简化了计算、存储和网络资源的配置与监控。P…...

Android Studio 日志系统详解

文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…...

【LLM】A2A 与 MCP:剖析 AI Agent 互联时代的两种关键协议

随着人工智能技术的飞速发展,AI Agent(智能体)正从理论走向实践,有望成为提升生产力的关键。然而,正如历史上任何新兴技术领域一样,标准的缺失导致了“筒仓效应”——不同来源、不同框架构建的 Agent 难以有…...

解析大尺寸液晶屏视觉检测,装配错位如何避免?

在3C电子产品种类飞速发展的今天,大尺寸液晶屏已成为市场主流,消费刚需。消费者对手机屏幕的视觉体验要求不断攀升,屏占比的提升成为各大手机厂商竞争的焦点。然而,大尺寸液晶屏在生产过程中面临着诸多检测难题,严重影…...

巴法云平台-TCP设备云-微信小程序实时接收显示数据-原理

微信小程序通过WebSocket或HTTP长轮询连接平台(而非直接使用TCP)!!! 物联网平台对协议层的一种封装设计——将底层通信协议(如TCP)与应用层业务逻辑(如主题路由)解耦&am…...

ElementNotInteractableException原因及解决办法

在自动化测试中,ElementNotInteractableException是一个常见的异常,它通常发生在尝试与网页上的某个元素进行交互(例如点击、输入等操作)时,但由于该元素当前不可交互。这可能由多种原因引起,以下是一些常见的原因及其解决方法: 元素未完全加载 如果尝试与页面上的元素交…...

信息系统项目管理师-工具名词解释(上)

本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 数据收集 头脑风暴 在短时间内获得大量创意,适用于团队环境,需要引导者…...

CSI-external-provisioner

main() 这段Go代码是一个CSI(容器存储接口)Provisioner(供应器)的实现,用于在Kubernetes集群中动态提供持久卷。代码涉及多个组件和步骤,下面是对关键部分的解释: 初始化和配置 命令行标志和…...

OpenAI为抢跑AI,安全底线成牺牲品?

几年前,如果你问任何一个AI从业者,安全测试需要多长时间,他们可能会淡定地告诉你:“至少几个月吧,毕竟这玩意儿可能改变世界,也可能毁了它。”而现在,OpenAI用实际行动给出了一个新答案——几天…...

单片机任意普通IO引脚使用定时器扩展外部中断的巧妙方法

在嵌入式系统中,将任意一个IO端口配置为外部中断源是一种常见的需求,尤其是在硬件资源有限的情况下。通过定时器扩展外部中断的方法,可以在不依赖专用中断引脚的情况下,实现对外部信号的实时响应。以下是一种基于定时器扩展外部中…...

arcgis几何与游标(1)

本节我们对几何进行展开学习 ArcPy 的几何对象 在 ArcPy 中,几何对象是表示地理空间数据的核心。它包括点(Point)、多点(Multipoint)、线(Polyline)和面(Polygon)等类型…...

安全密码处理实践

1. 引言 在现代应用程序中,密码存储和验证的安全性 直接关系到用户数据的保护。密码泄露事件频繁发生,通常是由于不安全的存储方式 或 弱加密处理 导致的。为了提高密码的安全性,开发者需要遵循一系列安全密码处理 的最佳实践。 本篇文章将详细介绍如何在应用程序中安全地…...

can‘t set boot order in virtualbox

Boot order setting is ignored if UEFI is enabled https://forums.virtualbox.org/viewtopic.php?t99121 如果勾选EFI boot order就是灰色的 传统BIOS就是可选的 然后选中任意介质,通过右边的上下箭头调节顺序,最上面的应该是优先级最高的 然后就…...

电池分选机详细介绍

在当今这个科技飞速发展的时代,电池作为能源存储的重要载体,其性能的一致性和稳定性对于各类电子设备和电动汽车等应用至关重要。而电池分选机,作为电池生产过程中的关键环节,正扮演着越来越重要的角色。本文将带您深入了解电池分…...

深入理解浏览器的 Cookie:全面解析与实践指南

在现代 Web 开发中,Cookie 扮演着举足轻重的角色。它不仅用于管理用户会话、记录用户偏好,还在行为追踪、广告投放以及安全防护等诸多方面发挥着重要作用。随着互联网应用场景的不断丰富,Cookie 的使用和管理也日趋复杂,如何在保障…...

浙江大学DeepSeek系列专题线上公开课第二季第五期即将上线!deepseek人文艺术之美专场来啦!

浙江大学DeepSeek系列专题线上公开课第二季第五期即将重磅上线! 其中,今晚7点半,浙大AI大神陈为教授将带来硬核的deepseek公开课讲座。 讲座 主题: DeepSeek时代,让AI更懂中国文化的美与善 主讲人: 陈为 …...

5分钟学会接口自动化测试框架

今天,我们来聊聊接口自动化测试。 接口自动化测试是什么?如何开始?接口自动化测试框架如何搭建? 自动化测试 自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发…...

Flink DataStream API深度解析(Scala版):窗口计算、水位线与状态编程

在前面的文章中Flink 编程基础:Scala 版 DataStream API 入门-CSDN博客,我们已经介绍了 Flink 的 Datastream API 编程模型、窗口划分以及时间语义(处理时间、事件时间等)。本篇文章将深入讲解窗口计算的进阶内容,包括…...

【从零实现高并发内存池】内存池整体框架设计 及 thread cache实现

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

#MES系统中的一些相关的名词

📌MES系统 部分 术语表 缩写英文全称中文名称详细解释MESManufacturing Execution System制造执行系统用于连接计划系统与生产现场,实时管理和控制整个生产过程,覆盖物料、人员、设备、质量、指令等。ERPEnterprise Resource Planning企业资…...

《灵活的接口设计:如何支持多种后端数据存取实现》

《灵活的接口设计:如何支持多种后端数据存取实现》 一、引言:从单一适配到多样需求 在现代软件开发中,系统通常需要与不同的数据存储后端进行交互,例如关系型数据库(MySQL、PostgreSQL)、NoSQL 数据库(MongoDB、Redis)或文件存储(JSON、CSV)。为了增强系统的可扩展性…...

Spark-SQL核心编程(一)

一、Spark-SQL 基础概念 1.定义与起源:Spark SQL 是 Spark 用于结构化数据处理的模块,前身是 Shark。Shark 基于 Hive 开发,提升了 SQL-on-Hadoop 的性能,但因对 Hive 依赖过多限制了 Spark 发展,后被 SparkSQL 取代&…...

Qt:解决MSVC编译器下qDebug输出中文乱码的问题

问题描述: 使用msvc编译器,通过qDebug输出打印信息为乱码(显示问号或者乱码) 百度到以下方案,但是没有效果 最终解决: 在.pro文件中添加如下,重新构建运行即可显示中文内容 msvc:QMAKE_CXXFLAGS -exec…...

Go:接口

接口既约定 Go 语言中接口是抽象类型 ,与具体类型不同 ,不暴露数据布局、内部结构及基本操作 ,仅提供一些方法 ,拿到接口类型的值 ,只能知道它能做什么 ,即提供了哪些方法 。 func Fprintf(w io.Writer, …...

js | 网页上的 json 数据怎么保存到本地表格中?

1.思路 json 转为 csv 保存到本地或者:json 转为 html 显示到网页中,然后复制到excel中。 (2) 数据 wjl{"code":1,"data":[{"chrmiRNA":"chr1","0":"chr1","startmiRNA":&quo…...

智能Todo协作系统开发日志(二):架构优化与安全增强

📅 2025年4月14日 | 作者:Aphelios380 🌟 今日优化目标 在原Todo单机版基础上进行三大核心升级: 组件化架构改造 - 提升代码可维护性 本地数据加密存储 - 增强隐私安全性 无障碍访问支持 - 践行W3C标准 一、组件化架构改造 …...

buctoj_算法设计与分析(5)

问题 A: 没有上司的舞会 题目描述 Ural大学有N名职员,编号为1~N。 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。 每个职员有一个快乐指数,用整数 HiHi 给出,其中 1≤i≤N。 现在要召开一场周年庆宴会&#x…...

VUE项目中的package.json中的启动脚本

"scripts": {"dev": "vite","build:prod": "vite build","build:stage": "vite build --mode staging","preview": "vite preview"}vite build 和 vite build --mode staging 是 V…...

目标追踪数据标注

在将 YOLO(目标检测) 和 DeepSORT(目标追踪) 结合时,数据标注需要同时满足 检测 和 追踪 的需求。以下是具体的分阶段标注策略和操作指南: 一、标注的核心要求 检测标注:每帧中目标的 边界框&a…...

详细介绍7大排序算法

1.排序的概念及其运用 1.1 排序的概念 排序 :所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的关键字的记…...

TGCTF web

AAA偷渡阴平 这个题是一个非预期的无参RCE <?php$tgctf2025$_GET[tgctf2025];if(!preg_match("/0|1|[3-9]|\~|\|\|\#|\\$|\%|\^|\&|\*|\&#xff08;|\&#xff09;|\-|\|\|\{|\[|\]|\}|\:|\|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $tgctf2025)){//hi…...

RTPS数据包分析

DDS-RTPS 常见子消息_dds pdp消息-CSDN博客Fast RTPS原理与代码分析(3)&#xff1a;动态发现协议之端点发现协议EDP_fast-rtps 原理-CSDN博客 在RTPS&#xff08;Real-Time Publish-Subscribe&#xff0c;实时发布订阅&#xff09;协议中&#xff0c;DATA(r)和DATA是两种不同的…...

go语言gRPC使用流程

1. 安装工具和依赖 安装 Protocol Buffers 编译器 (protoc) 下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 使用说明&#xff1a;https://protobuf.dev/ 【centos环境】yum方式安装&#xff1a;protoc[rootlocalhost demo-first]# yum install …...