知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
14.(2022.5.21)Bioinformatics-SGCL-DTI:用于DTI预测的监督图协同对比学习
论文标题: Supervised graph co-contrastive learning for drug–target interaction prediction
论文地址: https://academic.oup.com/bioinformatics/article-abstract/38/10/2847/6551245
论文期刊: Bioinformatics 2022
摘要
动机:
药物-靶标相互作用(DTI) 的识别是药物发现和重定位的重要步骤。基于生物实验的DTI预测既耗时又昂贵。近年来,基于图学习的方法引起了广泛的兴趣,并在该任务中显示出一定的优势,其中DTI预测通常被建模为由药物和蛋白质对(DPP) 组成的节点二分类问题。
然而,在许多实际应用中,标记数据非常有限且获取成本很高。由于只有几千个标记数据,模型很难理解DPP节点的表示,并且无法捕获足够的DTI预测必需的常识知识。
监督对比学习给出了具有相同类别标签的DPP节点表示的对齐表示。在嵌入空间中,具有相同标签的DPP节点表示被聚合在一起,而具有不同标签的DPP节点表示被分开。
结果:
我们提出了一种端到端的监督图协同对比学习模型,用于直接从异构网络进行DTI预测。SGCL-DTI通过对比DPP网络的拓扑结构和语义特征,以及新的正负样本选择策略,来生成对比损失,以监督的方式引导模型优化。对三个公共数据集的综合实验表明,我们的模型在DTI预测任务上明显优于SOTA方法,尤其是在冷启动的情况下。此外,SGCL-DTI为DTI预测提供了对比学习的新研究视角。
冷启动:即数据不足。
1.引言
药物靶标是可以被药物靶向并在细胞中产生作用的蛋白质。识别药物和蛋白质靶标之间的相互作用不仅是药物发现的关键步骤,而且还为药物重定位、多药药理学、耐药性和副作用预测提供引导。然而,通过生物实验来确定DTI是一种耗时且昂贵的方法。
为了加快药物发现,研究人员一直在探索识别DTI的计算方法。现有的DTI预测方法可以分为三类:基于配体的方法、基于对接的方法和基于机器学习的方法。除了广泛使用的传统算法外,一个显著的趋势是从网络的角度来处理DTI。
图表示学习模型,如图卷积网络(GCN)和图注意网络(GAT),用于从各种类型的同构或异构网络信息中学习DTI预测。现有的大多数方法主要分为两个独立的步骤:第一步提取药物和蛋白质的表示向量,第二步应用深度神经网络根据表示来预测最终的标签。就我们所知,只有很少的端到端模型可以直接预测来自许多异构网络的药物和蛋白质之间的相互作用。
除了早期的计算性DTI预测方法(如基于配基的方法和基于对接的方法),机器学习方法也引起了极大的关注,因为它们能够在相对较短的时间内对候选对象进行大规模测试。这些方法背后的一个关键思想是基于“关系犯罪”的假设,这意味着类似的药物可能有类似的目标,反之亦然。基于这一假设,随机森林(RF)、决策树(DT)和支持向量机(SVM)等机器学习模型被广泛用作分类器来预测是否存在DTI。
另一方面,已经提出了一些先进的机器学习方法来整合外部信息来进行DTI预测。有人开发了一个二分图模型,其中化学空间和基因组空间以及药物-蛋白质相互作用网络都被整合到一个药理学空间中。有人提出了一种半监督学习方法-即拉普拉斯正则化最小二乘(LapRLS),该方法将少量可用标记数据和丰富的未标记数据结合在一起,以便从化学和基因组空间获得最大的泛化能力。与此同时,药物或显性信息,如副作用、转录反应数据、“药物-疾病”关系、公共基因表达数据和功能数据已被纳入DTI,以便提供多样化的信息和多视角的视角来预测新的DTI。有人提出了一个网络集成管道DTINet,以集成不同的数据源(例如,药物、蛋白质、疾病和副作用)。上述方法大多依赖于传统的机器学习,忽略了药物和蛋白质的拓扑信息,无法学习它们之间的深层交互。
近年来,随着深度学习在生物信息学各个领域的巨大成功,能够学习丰富的拓扑信息和异构数据之间复杂相互作用的网络表示的方法被用于DTI预测。
有人提出了一种基于学习的DTI-CNN方法用于DTI预测,该方法从异构网络中学习特征的低维向量表示。DTI-CNN以药物和蛋白质的连接表示向量为输入,采用CNN作为分类模型。然而,DTI-CNN在建模和学习过程中忽略了药物和蛋白质对(DPP)之间的相互作用。
为了将DPP之间的关系纳入DTI建模,有人建立了一个基于多种药物和蛋白质的DPP图网络,其中DPP是节点,DPP之间的关系是网络的边。然后,他们提出了一种用于DTI识别的模型GCN-DTI。该模型首先使用GCN学习每个DPP的表示,并基于该表示使用深度神经网络预测最终标签。该方法虽然注意到DPP邻居之间可能存在相互影响,但忽略了DPP网络的语义特征。同时,图中的噪声是否能够被去除,或者模型是否能从有限的标记数据中学习到更有效的表示,仍然是一个悬而未决的问题。
然而,在许多实际应用中,如DTI预测,标记的数据是有限的,并且获取成本很高。近年来,自监督对比学习在许多图形表示学习任务中引起了相当大的关注。目前的工作主要集中在设计不同的图增强策略来生成同一节点的两个表示,并利用对比学习损失来最大限度地提高它们之间的一致性,同时最大限度地减少“其他负样本”之间的相似性。GraphCL通过最大化同一节点的局部子图的两个被随机干扰的表示之间的一致性/相似性来学习节点嵌入。有人设计了四种类型的图形数据论证(节点丢弃、边干扰、属性掩蔽和子图),并研究了不同组合的数据表示在不同任务中的影响。有人结合了多种先验知识,增强了对不重要节点和边的干扰,并保留了图的内部结构和属性信息。在生物信息学领域,图对比学习被应用于DDI预测,将原始图表示与处理后的图表示进行比较。同时,有人使用两个编码器对scRNA-seq中的序列进行随机掩码,并对增强后的数据进行对比学习。然而,在充分利用有价值的标签信息来监督对比损失中有效的正负对的构建方面所做的努力却很少。
也许,最相关的模型是使用异构信息网络的两个视图(网络模式和元路径视图)来学习节点嵌入。然后,提出了跨视图对比学习方法,从两个视图中提取正类和负类嵌入信息。关键的区别在于,我们试图利用有价值的监督信息,寻找每个类别的样本之间的共性,并将它们与其他类别的样本进行比较。通过对比DPP网络的拓扑结构和语义特征,两个视图相互监督,以有监督的方式引导模型优化。
如图1所示,基于同一类中一阶邻居节点之间相似度较高的直觉,我们提出了一种端到端有监督的图协同对比学习DTI预测模型,即SGCL-DTI。
具体地说,SGCL-DTI首先通过元路径引导图编码器从异构网络中学习药物和蛋白质的低维表示。然后,分别构建了药物-蛋白质对(DPP)节点的拓扑图和语义图。
与以往对比原始网络和被破坏网络的对比学习不同,我们通过两个DPP网络(拓扑图和语义图)的联合对比学习来优化最终的预测目标函数,通过最大化同一类别中一阶邻居之间的相似度并将它们与其他类别中的节点进行对比。
我们在三个公共数据集上进行了全面的实验,结果表明,该模型的性能明显优于SOTA方法。
本文的主要贡献可以概括为:
- 提出了一种用于DTI预测任务的有监督图协同对比学习模型。通过在包含监督信息的同时对多个视图进行对比学习,SGCL-DTI在所有数据集上的性能明显优于SOTA方法。据我们所知,这是第一次尝试以有监督的方式对比同一图的拓扑结构和语义特征。
- 我们设计并进行了全面的实验,以证明模型中不同组件的有效性,并分析了不同的正负样本选择策略在该任务的对比学习中的作用。
- SGCL-DTI是一个通用的端到端图表示学习框架,可以很容易地扩展到其他应用。
图1. 监督图协同对比学习示例。不同形状的节点表示它们具有不同的类标签(A类和B类)。A类代表该DPP中药物与靶标之间经过验证存在相互作用(即存在DTI),而B类代表该DPP中药物与靶标之间没有相互作用(即不存在DTI)。加粗边框的圆圈中的节点是语义图中的目标节点。选择语义图中的这个节点和拓扑图中同一类的一阶邻居作为其正样本,并用虚线连接。
2.模型方法
在这一部分中,我们介绍了我们的DTI预测模型,并解释了我们模型背后的动机和关键思想。我们建议的模型SGCL-DTI的体系结构如图2所示。它由四个部分组成:异构信息网络构建、基于元路径的图编码、DPP网络表示学习和有监督的协同对比优化。
- 首先,为了对不同类型的实体及其复杂关系进行建模,我们利用一个异构信息网络来描述药物、蛋白质以及它们之间对应的异构关系。
- 然后,使用具有注意力机制的基于元路径的图编码器从异构信息网络中学习药物和蛋白质节点的表示。
- 然后,构建和学习药物-蛋白质对(DPP)的拓扑网络和语义网络,其中每个DPP节点是药物和蛋白质表示的连接。这样,我们不仅可以了解DPP节点之间的关系,还可以了解药物和蛋白质之间的相互作用。
- 最后,使用一种新的对比优化模块来生成两个视图的协同对比损失,并以有监督的方式引导模型优化。
图2:模型整体结构。其中药物-药物和蛋白质-蛋白质中的实线表示一阶邻居,虚线表示非一阶邻居。
2.1 异构信息网络构建
异构信息网络\(\mathcal{G}=(\mathcal{V},\mathcal{E})\)是一个图,其中\(\mathcal{V}\)是节点集合,\(\mathcal{E}\)是边的集合。\(\mathcal{G}\)与节点类型映射函数\(\phi:\mathcal{V} \rightarrow \mathcal{N}\)和边类型映射函数\(\varphi:\mathcal{E} \rightarrow \mathcal{R}\)相关联。\(\mathcal{N}\)和\(\mathcal{R}\)分别表示对象和链接类型的集合,其中\(|\mathcal{N}+\mathcal{R}|>2\)。
异构图:在一个图上节点与边的种类都不止一种,二者类别数之和大于2即可被称为异构图;反之则为最传统、最简单的同构图。
我们从公共数据库收集了多种信息,构建了用于DTI预测任务的异构网络,其中有四个药物相关网络(药物-药物关系网络、药物相关疾病网络、药物-副作用网络以及药物-化学结构相似性网络),三个蛋白质相关网络(蛋白质相关疾病网络、蛋白质-蛋白质关系网络和蛋白质序列相似性网络)和一个药物-蛋白质相互作用网络用作我们的基本事实。在本研究中,我们将药物和蛋白质数据建模为\(\mathrm{HIN} \space \mathcal{G}\)。具体而言,构建的\(\mathrm{HIN} \space \mathcal{G}\)包括四类实体(即药物、蛋白质、疾病和副作用)以及它们之间的一系列关系。
2.2 基于元路径的图编码
传统的GCN只能捕捉同构网络中的同构关系,忽略了网络中丰富的信息。为了解决这个问题,元路径被用来捕获异构图中的异构上下文信息。我们利用图形编码器根据预先定义的元路径来学习药物和蛋白质的表示。考虑到不同的元路径可能会对药物或蛋白质的最终表示学习产生不同的影响,我们利用注意力机制对在不同元路径引导下学习的药物或蛋白质的表示进行融合,生成联合注意力表示。
2.2.1 元路径选择
\(\mathcal{G}\)中的元路径被定义为网络模式\(\mathcal{S}=(\mathcal{N},\mathcal{R})\),并且被表示成形式为\(N_1 \stackrel{R_1}{\longrightarrow} N_2 \stackrel{R_2}{\longrightarrow} \cdots \stackrel{R_l}{\longrightarrow} N_{l+1}\)的路径,它描述了节点类型\(N_1\)和\(N_{l+1}\)之间的复合关系\(R=R_1 \circ R_2 \circ \cdots R_l\),"\(\circ\)"表示关系间的复合运算符。
两种药物之间的典型元路径可以被定义如下:drug\(\stackrel{\mathrm{treat}}{\longrightarrow}\)disease\(\stackrel{\mathrm{treat^{-1}}}{\longrightarrow}\)drug,这意味着能治疗相同疾病的两种不同的药物也是有关联的;drug\(\stackrel{\mathrm{cause}}{\longrightarrow}\)side-effect\(\stackrel{\mathrm{cause^{-1}}}{\longrightarrow}\)drug,这意味着两种药物在含有引起相同副作用的化学成分方面是相关的。另一方面,两种蛋白质之间的元路径可以定义为protein\(\stackrel{\mathrm{express}}{\longrightarrow}\)disease\(\stackrel{\mathrm{express^{-1}}}{\longrightarrow}\)protein,说明两种蛋白质在同一种疾病上的异常表达是相关的。总的来说,我们从\(\mathcal{G}\)中诱导了五条药物元路径和四条蛋白质元路径,如图2所示。
2.2.2 元路径引导的GCN
选择合适的元路径后,我们通过GCN学习基于不同元路径的药物和蛋白质的表示。给定\(\mathrm{HIN} \space \mathcal{G}=(\mathcal{V},\mathcal{E})\),其中有一组元路径\(\mathcal{P}=\{\mathbf{P}_1,\mathbf{P}_2,\cdots,\mathbf{P}_M\}\)和对应的邻接矩阵\(\mathcal{A}=\{\mathbf{A}_1,\mathbf{A}_2,\cdots,\mathbf{A}_M\}\)(\(M\)表示元路径数量)。(对于给定的某一个药物节点,不同的元路径引导,会生成不同的邻接矩阵,比如”药物-蛋白质-药物“和”药物-疾病-药物“两种路径模式在异构图中选出的邻接矩阵肯定是不同的,当然也就会生成不同的药物表示。)
首先,我们使用多层GCN根据药物的每个元路径生成药物表示,如下所示:
\]
其中\(\mathrm{ReLU(x)=max(0,x)}\)是一个用于校正的线性激活函数。\(\mathbf{z}^{(l)}_{p_i}\)表示药物的第\(l\)层表示,其中下标\(i\)表示药物的第\(i\)个元路径。特别地,\(\mathbf{z}^{(0)}\)是从标准正态分布初始化的输入向量。我们将单位矩阵\(\mathbf{I}_{p_i}\)添加到邻接矩阵\(\mathbf{A}_{p_i}\)中,以指示节点本身,其中\(\tilde{\mathbf{A}}_{p_i}=\mathbf{A}_{p_i}+\mathbf{I}_{p_i}\)。\(\mathbf{D}_{p_i}\)是\(\tilde{\mathbf{A}}_{p_i}\)的对角矩阵;\(\mathbf{W}_{p_i}^{(l)} \in \mathbb{R}^{d_{in}×d_{out}}\)是第\(l\)层药物和蛋白质的共享可训练权重矩阵。\(d_{in}\)和\(d_{out}\)分别表示GCN各层的输入维度和输出维度。
为了了解不同的元路径对药物最终表示的不同影响,我们给出了药物在各个元路径引导下的相应表示\(\mathbf{e}_{p_i} \in \{ \mathbf{e}_{p_1},\mathbf{e}_{p_2}, \cdots,\mathbf{e}_{p_{M_d}} \}\);我们可以学习注意力权重并获得药物在不同的元路径引导下的融合的的最终表示\(\mathbf{h}_{\mathrm{drug}}\),如下所示:
\]
\]
式2计算注意力权重,式3是加上注意力权重后的药物表示。
其中\(p\)指该药物的序号;\(i\)指元路径的序号;\(\mathbf{e}_{p_i}\)指药物\(p\)在第\(i\)条元路径引导下的多层药物表示;\(\mathbf{W} \in \mathbb{R}^{d_l×d_p}\)是一个权值矩阵,\(d_l\)是注意力层的维度;\(d_p\)是\(\mathbf{e}_{p_i}\)的维度;\(\mathbf{b} \in \mathbb{R}^{d_l×1}\)是一个偏差矩阵;\(\mathbf{q} \in \mathbb{R}^{d_l×1}\)是一个共享注意力矩阵。类似地,我们可以根据蛋白质的每一个元路径获得蛋白质表示\(\mathbf{h}_{\mathrm{protein}}\)。
2.3 DPP网络表示学习
为了捕捉药物和蛋白质之间深层的和全面的关系,我们将每个药物\(p\)和蛋白质\(q\)连接成DPP \(i\)。DPP结点\(i\)可以表示成\(\mathbf{h}^i_{\mathrm{DPP}}=\{\mathbf{h}^p_{\mathrm{drug}} ; \mathbf{q}^q_{\mathrm{protein}}\}\)。我们试图为DPP构建多通道网络,拓扑图对DPP的结构信息进行建模,语义图学习DPP的语义信息。
2.3.1 构建拓扑图
首先,我们构建拓扑图:\(\mathbf{G}_t=(\mathbf{A}_t,\mathbf{X}_{\mathrm{DPP}})\),其中\(\mathbf{X}_{\mathrm{DPP}} \in \mathbb{R}^{N_{\mathrm{DPP}}×d_{\mathrm{DPP}}}\)是所有DPP节点的表示矩阵,\(N_{\mathrm{DPP}}\)表示DPP的总数,\(d_{\mathrm{DPP}}\)是DPP表示向量的维度。我们遵循的原则是,如果两个DPP含有共同的药物或蛋白质,则它们之间存在边。邻接矩阵\(\mathbf{A}_t \in \mathbb{R}^{N_{\mathrm{DPP}}×N_{\mathrm{DPP}}}\)表示图中节点之间的边的关系。如果两个DPP有一些共同的特征(药物或蛋白质),那么对应的\(\mathbf{A}_t\)的第\(i\)行和第\(j\)列的元素的值等于1,反之则为0。
2.3.2 构建语义图
我们基于学习到的表示的语义相似度来构建DPP的语义图。对于每个DPP \(i\),我们计算\(i\)与其他DPP之间的表示的余弦相似度,然后选择最接近的K个DPP节点作为其相邻节点。例如,如果DPP \(j\)和DPP \(k\)是DPP \(i\)的相邻节点,则我们可以在邻接矩阵\(\mathbf{A}_s\)中将第\(i\)行第\(j\)列中的元素和第\(i\)行第\(k\)列中的元素定义为1,否则定义为0。因此,我们可以构造一个DPP的语义图\(\mathbf{G}_s=(\mathbf{A}_s,\mathbf{X}_{DPP})\),其中\(\mathbf{A}_s\)是邻接矩阵,\(\mathbf{X}_{\mathrm{DPP}} \in \mathbb{R}^{N_{\mathrm{DPP}}×d_{\mathrm{DPP}}}\)是所有DPP节点的表示矩阵。
2.3.3 DPP网络学习
我们使用两个多层GCN来学习两个DPP网络的表示。设\(\mathbf{z}_t\)和\(\mathbf{z}_s\)分别表示从拓扑图和语义图学习到的DPP节点表示(即\(\mathbf{X}_{DPP}\)),在第\(l\)层GCN模型的输出如下:
\]
\]
其中\(\tilde{\mathbf{A}}_{(\cdot)}=\mathbf{A}_{(\cdot)}+\mathbf{I}_{(\cdot)}\),\(\mathbf{I}_{(\cdot)}\)是单位矩阵;\(\tilde{\mathbf{D}}_{(\cdot)}\)是\(\tilde{\mathbf{A}}_{(\cdot)}\)的对角矩阵;\(\mathbf{W}^{(l)}_{(\cdot)}\)是GCN第\(l\)层的权值矩阵。
2.4 有监督的联合对比优化
在本文中,我们提出了一种有监督的对比学习目标,通过聚合属于同一类的样本来最小化类内方差,通过分离来自不同类的样本来最大化类间方差。SGCL-DTI中的有监督对比学习(SCL)策略类似于自监督图形对比学习中的对比目标。不同的是,对比目标被用来引导最终预测任务的学习,而不是对比样本中不同的视图。
因此,SGCL-DTI的目标包括用于DTI预测的有监督分类项和对比学习项。在计算对比损失时,需要确定正样本和负样本。与以往的工作不同,本文提出了一种新的基于拓扑网络和语义网络的正样本选择策略。具体地说,给定拓扑网络中的一个DPP节点\(i\),我们不仅将其在语义网络中对应的节点\(j\)作为正样本,还把节点\(j\)的有着相同类别的一阶邻居节点作为正样本。我们认为具有相同类别标签的一阶邻居节点是高度相关的。因此,我们可以实现两个图之间的协同对比学习。
拓扑图\(\mathcal{L}_{SCL}^t\)的有监督协同对比学习损失可以定义如下:
\]
其中,\(\mathbb{P}_i\)是拓扑网络中的节点\(i\)在语义网络中的正样本集合,即由语义网络中的节点\(j\)及其具有相同类别标签的一阶相邻节点组成。\(\mathbb{N}_i\)是节点\(i\)的负样本集合,表示不在\(\mathbb{P}_i\)中的所有其他DPP节点。\(\tau\)是一个可调的标量温度参数。类似地,我们可以得到语义图\(\mathcal{L}_{SCL}^s\)的有监督协同对比学习损失。
我们将DTI预测任务建模为一个二分类问题,即预测DPP对\(x_i\)之间是否存在相互作用。分类损失函数可定义为:
\]
其中,\(\pi(x)=P(Y=1 \mid x)\)且\(y \in 0,1\)。
最后,模型的优化目标由分类损失、对比损失和L2正则化项\(R(\Theta)\)三部分组成:
\]
其中 \(R(\Theta)=\sum(\Theta)^2\) (即权值的平方和), \(\Theta\)表示所有可训练的模型参数。
知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习的更多相关文章
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-MSTE: 基于多向语义关系的有效KGE用于多药副作用预测
MSTE: 基于多向语义关系的有效KGE用于多药副作用预测 论文标题: Effective knowledge graph embeddings based on multidirectional s ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):生物信息学中的图表示学习:趋势、方法和应用
4.(2021.6.24)Briefings-生物信息学中的图表示学习:趋势.方法和应用 论文标题: Graph representation learning in bioinformatics: ...
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-KG4SL:用于人类癌症综合致死率预测的知识图神经网络
5.(2021.7.12)Bioinformatics-KG4SL:用于人类癌症综合致死率预测的知识图神经网络 论文标题:KG4SL: knowledge graph neural network f ...
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-SumGNN:通过有效的KG聚集进行多类型DDI预测
3.(2021.3.26)Bioinformatics-SumGNN:通过有效的KG聚集进行多类型DDI预测 论文标题: SumGNN: multi-typed drug interaction pr ...
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-MUFFIN:用于DDI预测的多尺度特征融合
2.(2021.3.15)Bioinformatics-MUFFIN:用于DDI预测的多尺度特征融合 论文标题: MUFFIN: multi-scale feature fusion for drug ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现
6.(2021.9.14)Briefings-MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现 论文标题:An effective self-supervised framew ...
- 知识图谱-生物信息学-医学论文(Chip-2022)-BCKG-基于临床指南的中国乳腺癌知识图谱的构建与应用
16.(2022)Chip-BCKG-基于临床指南的中国乳腺癌知识图谱的构建与应用 论文标题: Construction and Application of Chinese Breast Cance ...
- 知识图谱-生物信息学-医学论文(BMC Bioinformatics-2022)-挖掘阿尔茨海默病相关KG来确定潜在的相关语义三元组用于药物再利用
论文标题: Mining On Alzheimer's Diseases Related Knowledge Graph to Identity Potential AD-related Semant ...
- 百度大脑UNIT3.0详解之知识图谱与对话
如今,越来越多的企业想要在电商客服.法律顾问等领域做一套包含行业知识的智能对话系统,而行业或领域知识的积累.构建.抽取等工作对于企业来说是个不小的难题,百度大脑UNIT3.0推出「我的知识」版块专门为 ...
随机推荐
- [原创] RestartPC64-中文版v1.0.0.9
原来发布的RestartPC-中文版和英文版v1.0.0.5,在PE64下无效.所以重新编译了64位版的RestartPC64-中文版v1.0.0.9,可以在PE64下面.正常Win64系统下面重启关 ...
- 【Java面试】什么是IO的多路复用机制?
"什么是IO的多路复用机制?" 这是一道年薪50W的面试题,很遗憾,99%的人都回答不出来. 大家好,我是Mic,一个工作了14年的Java程序员. 今天,给大家分享一道网络IO的 ...
- java-重载、包修饰词以及堆栈管理
1.方法的重写(Override):重新写.覆盖 1)发生在父子类中,方法名称相同,参数列表相同,方法体不同 2)重写方法被调用时,看对象的类型2.重写与重载的区别: 1)重写(Override): ...
- ORA-01950: no privileges on tablespace 'USERS'-- 解决办法
ORA-01950: no privileges on tablespace 'USERS' 原因: 在表空间 "USERS" 无权限 解决办法: 用户登录,查看当前用户所 ...
- NSK DD马达 直驱电机 RS232通信连接
NSK DD马达 通信连接 通信测试平台 驱动器:NSK EDC系列 电机:NSK PS1006KN系列 电机线:UVW对应红白黑. 电源线:Main和Ctrl电路220V交流电供电即可. 测试软件: ...
- Knative部署应用以及应用的更新、应用的分流(二)
1. 应用的更新 1.1 更新hello-example应用 1.更新应用的环境变量 可通过命令行的方式亦可以通过读取配置文件的方式,这里主要来看命令行的方式 [root@kn-server-mast ...
- RTMP播放器开发填坑之道
好多开发者提到,在目前开源播放器如此泛滥的情况下,为什么还需要做自研框架的RTMP播放器,自研和开源播放器,到底好在哪些方面?以下大概聊聊我们的一点经验,感兴趣的,可以关注 github: 1. 低延 ...
- UTL_FILE 包使用介绍
Postgresql 不支持 package功能,这给oracle 向 postgresql迁移增加了很多迁移工作.人大金仓Kingbase数据库实现了类似 oracle package 功能,并提供 ...
- salesforce零基础学习(一百一十七)salesforce部署方式及适用场景
本篇参考:https://architect.salesforce.com/decision-guides/migrate-change https://developer.salesforce.co ...
- Netty 学习(二):服务端与客户端通信
Netty 学习(二):服务端与客户端通信 作者: Grey 原文地址: 博客园:Netty 学习(二):服务端与客户端通信 CSDN:Netty 学习(二):服务端与客户端通信 说明 Netty 中 ...