Deep Graph Contrastive Representation Learning

news2024/11/18 20:36:52

摘要

如今,图表示学习已成为分析图结构数据的基础。受最近成功的对比方法的启发,在本文中,我们提出了一种新的无监督图表示学习框架,该框架利用节点级别的对比目标。具体来说,我们通过破坏生成两个图视图,并通过最大化这两个视图中节点表示的一致性来学习节点表示。为了为对比目标提供不同的节点上下文,我们提出了一种混合方案,用于在结构和属性级别both structure and attribute levels生成图视图。此外,我们还从互信息和经典三重损失两个角度为我们的动机提供了理论依据。我们使用各种真实世界的数据集对转换和归纳学习任务进行了经验实验。实验实验表明,尽管其简单,我们提出的方法始终优于现有的最先进的方法。此外,我们的无监督方法在转换任务上甚至超过了有监督的方法,显示了其在实际应用中的巨大潜力。

1.Introduction

在过去的几年里,图表示学习已经成为一种分析图结构数据的强大策略。图表示学习的目的是学习一种编码函数,将节点转换为低维密集嵌入,保持图的属性和结构特征。传统的无监督图表示学习方法,如DeepWalk[1]和node2vec[2],遵循源自skip-gram模型[3]的对比框架。具体来说,他们首先对短随机行走进行采样,然后通过与其他节点的对比,强制同一行走上的相邻节点共享相似的嵌入。然而,基于deepwalk的方法可以看作是重构图邻近矩阵,如高阶邻近矩阵[4],过度强调网络结构上定义的邻近信息[5]。

近年来,利用图神经网络(GNN)进行图表示学习受到了广泛的关注。然而,随着它的蓬勃发展,在训练模型时对标签可用性的关注也越来越多。然而,现有的GNN模型大多是以监督的方式建立的[6-8],这需要大量的标记节点进行训练。尽管有一些尝试将之前的无监督目标(即矩阵重建)与GNN模型连接起来[9,10],但这些方法仍然严重依赖于预设的图接近矩阵。

视觉表征学习不是优化重建目标,而是复兴了经典的信息最大化(InfoMax)原则[11]。到目前为止,已经提出了一系列对比学习方法[12-17],这些方法通过对比正采样对和负采样对,寻求最大限度地提高输入(即图像)与其表征(即图像嵌入)之间的互信息(MI)。受Deep Graph InfoMax (DIM)方法[15]在视觉表示学习方面的成功启发,Deep Graph InfoMax (DGI)[18]提出了一种基于图域MI最大化的替代目标。DGI首先利用GNN学习节点嵌入,并通过读出函数得到全局汇总嵌入(即图嵌入)。DGI中使用的目标是通过区分原始图中的节点和损坏图中的节点来最大化节点嵌入和图嵌入之间的MI

然而,我们认为DGI中的局部-全局MI最大化框架仍处于起步阶段。在一定条件下,其目标等价于最大化输入节点特征与高级节点嵌入之间的MI。具体来说,为了实现InfoMax目标,DGI需要一个单射读出函数来生成全局图嵌入,而单射属性的限制太大,无法实现。对于DGI中使用的均值池读出函数,不能保证图嵌入可以从节点中提取有用的信息,因为它不足以保留节点级嵌入的独特特征。此外,DGI提出使用特征变换来生成损坏的图视图。然而,该方案在生成负节点样本时考虑了粗粒度级别的损坏节点特征。当特征矩阵稀疏时,仅进行特征洗牌不足以为损坏图中的节点生成不同的邻域(即上下文),导致对比目标的学习困难。

在本文中,我们为无监督图表示学习引入了一个简单而强大的对比框架(图1),我们将其称为深度图对比表示学习(GRACE),其动机是传统的自组织网络[19]及其最近在视觉表示学习中的复兴[17]。我们没有将节点级嵌入与全局嵌入进行对比,而是主要关注节点级嵌入的对比,我们的工作没有对生成图嵌入的单射读出函数进行假设。在GRACE中,我们首先通过随机执行损坏来生成两个相关的图视图。然后,我们使用对比损失来训练模型,以最大化这两个视图中节点嵌入之间的一致性。与视觉数据不同,有大量的图像转换技术可用,如何执行损坏以生成图形视图仍然是一个开放的问题。在我们的工作中,我们在拓扑和节点属性级别共同考虑损坏,即去除边缘和屏蔽特征,为不同视图下的节点提供不同的上下文,从而促进对比目标的优化。最后,我们进行了理论分析,揭示了我们的对比目标与互信息和经典三重态损失之间的联系。

我们的贡献总结如下。

  1. 首先,我们提出了一个无监督图表示学习的一般对比框架。提出的GRACE框架简化了之前的工作,并通过最大化两个图视图之间节点嵌入的一致性来工作
  2. 其次,我们提出了去除边缘和屏蔽特征两种具体方案来生成图的视图
  3. 最后,我们使用六个流行的公共基准数据集,在常用的线性评估协议下对转导和归纳节点分类进行了全面的实证研究。

 GRACE一直优于现有的方法,我们的无监督方法甚至超过了有监督的方法,在转导任务上,展示了它在实际应用中的巨大潜力。

2.相关工作

视觉表征的对比学习。对比方法在自监督视觉表征学习中很流行,其目的是通过对比正样本和负样本来学习判别表征。对于视觉数据,可以使用图像增强技术生成负样本,如裁剪、旋转[20]、颜色失真[21]等。现有工作[12-14]采用记忆库存储阴性样本。其他工作[15-17]探讨了批内阴性样本。对于作为锚点的图像patch,这些方法通常会找到一个全局汇总向量[22,15]或相邻视图中的patch[23,24]作为正样本,并将其与负采样的对应物(如同一批次内其他图像的patch)进行对比[22]。

理论分析揭示了他们成功的原因[25]。这些方法中使用的目标可以被视为最大化输入特征与其表示之间的MI下界[11]。然而,最近的研究[26]表明,评估表征质量的下游性能可能强烈依赖于不仅在卷积架构中编码的偏差,而且在InfoMax目标的特定估计器中编码的偏差。

图表示学习。许多传统的无监督图表示学习方法也采用了对比范式[1,2,9,27]。先前关于无监督图表示学习的工作主要集中在局部对比模式上,这迫使相邻节点具有相似的嵌入。这种情况下的正样本是出现在同一随机游动中的节点[1,2]。例如,开创性的DeepWalk[1]使用噪声对比估计对节点共现对的概率进行建模[28]。这些基于随机行走的方法被证明等同于分解某些形式的图邻近(例如,相邻矩阵的变换)[4],这些方法过于强调这些图邻近中编码的结构信息,并且在大规模数据集上也面临严重的缩放问题。此外,已知这些方法在不适当的超参数调优时容易出错[1,2]。

图神经网络(GNN)的最新研究采用了比传统方法更强大的图卷积编码器。其中,有相当多的文献围绕监督GNN的主题发展起来[6 - 8,29],它需要在现实应用中可能无法访问的标记数据集。沿着另一条发展路线,无监督gnn很少受到关注。代表性的方法包括GraphSAGE[10],它也包含了类似deepwalk的目标。最近的工作DGI[18]结合了GNN和对比学习的力量,其重点是最大化全局图嵌入和局部节点嵌入之间的MI。然而,该算法很难满足图读出功能的内射要求,可能会导致图嵌入性能变差。与DGI相比,我们的工作不依赖于显式图嵌入。相反,我们关注的是在图的两个损坏视图之间最大化节点嵌入的一致性。

3.Deep Graph Contrastive Representation Learning

在本节中,我们详细介绍了我们提出的GRACE框架,从对比目标的总体框架开始,然后是具体的图形视图生成方法。在本节的最后,我们将从两个角度为我们的框架提供理论依据,即与InfoMax原则的连接和经典三元组损失。

3.1.Preliminaries

feature matrix and the adjacency matrix 特征矩阵和邻接矩阵

在无监督图表示学习中,设表示图,其中,分别表示节点集和边集。我们将特征矩阵和邻接矩阵分别表示为,其中的特征,.训练过程中G中节点没有给定的类信息。我们的目标是学习一个GNN编码器接收图的特征和结构作为输入,产生低维节点嵌入,。令为节点的学习表示,其中为节点的嵌入。这些表示可以用于下游任务,例如节点分类。

3.2.Contrastive Learning of Node Representations

3.2.1 The Contrastive Learning Framework

与之前通过利用局部-全局关系学习表征的工作相反,在GRACE中,我们通过直接最大化嵌入之间的节点级一致性来学习嵌入。具体来说,我们首先通过随机破坏原始图来生成两个图视图。然后,我们使用一个对比目标来强制两个不同视图中每个节点的编码嵌入彼此一致,并且可以与其他节点的嵌入区分开来。

在我们的GRACE模型中,在每次迭代中,我们生成两个图视图,表示为,并表示两个生成视图中的节点嵌入为,其中是视图的特征矩阵和相邻矩阵。关于图形视图生成的细节将在后面的3.2.2节中讨论。

然后,我们使用一个对比目标(即鉴别器)来区分这两个不同视图中相同节点的嵌入与其他节点嵌入。

对于任意节点,将其在一个视图中生成的嵌入作为锚点anchor,将其在另一个视图中生成的嵌入作为正样本,将除以外的节点在两个视图中的嵌入自然视为负样本。形式上,我们定义了,其中s为余弦相似度,g is a non-linear projection to enhance the expression power of the critic 为非线性投影,以增强评论家的表达能力[17,26]。投影g是用一个两层多层感知器(MLP)实现的。我们为每个正对定义成对目标:

请注意,在我们的工作中,我们没有明确地对负节点进行采样。相反,给定正对,我们自然地将负样本定义为两个视图中的所有其他节点。因此,负样本有两个来源,视图间节点或视图内节点,分别对应分母中的第二项和第三项。由于两个视图是对称的,另一个视图的损失定义类似于。然后将要最大化的总体目标定义为所有正对的平均值,正式给出为:

综上所述,在每个训练epoch, GRACE首先生成图g的两个图视图,然后使用获得的节点表示。最后,通过最大化Eq.(2)中的目标来更新f和g的参数。算法1总结了学习算法。

3.2.2 Graph View Generation

生成视图是对比学习方法的关键组成部分。在图域中,图的不同视图为每个节点提供不同的上下文。考虑到依赖于不同视图中节点嵌入之间的对比的对比方法,我们建议在结构和属性级别上破坏原始图,从而构建不同的节点上下文供模型进行对比。在GRACE中,我们设计了两种处理图损坏的方法,即去除拓扑的边缘和屏蔽节点属性的特征。如何执行图的损坏仍然是一个开放的问题[18]。在我们的框架内,可以灵活地采用其他替代的腐败方法机制。

Removing edges (RE).

我们在原始图中随机移除一部分边。形式上,由于我们只删除现有的边缘,我们首先采样一个随机掩蔽矩阵,其条目取自伯努利分布Re ij ~ B(1−pr)如果原始图的Aij = 1,否则为。这里是每条边被移除的概率。由此产生的邻接矩阵可以计算为

Masking node features (MF).

除了去除边缘外,我们还随机地用节点特征中的零掩码部分维度。形式上,我们首先对一个随机向量进行采样,其中它的每个维度都独立地从概率为的伯努利分布中绘制,即。然后,生成的节点特征

请注意,虽然我们提出的RE和MF方案在技术上类似于Dropout[30]和DropEdge[31],但我们的GRACE模型和这两种方法的提出目的根本不同。Dropout是一种在训练过程中随机屏蔽神经元以防止大规模模型过拟合的通用技术。在图域,为了防止GNN结构过深时的过拟合和过度平滑,提出了DropEdge。然而,我们的GRACE框架随机应用RE和MF来生成不同的图视图,以便在图拓扑和节点特征级别上进行对比学习。此外,GRACE中使用的GNN编码器是一个相当浅的模型,通常仅由两层或三层组成。

在我们的实现中,我们联合利用这两种方法来生成图形视图。的生成由两个超参数控制。为了在两个视图中提供不同的上下文,两个视图的生成过程使用了两组不同的超参数实验表明,在的温和条件下,我们的模型对pr和pm的选择不敏感,使得原始图没有过度损坏。我们建议读者参考附录C.1中提出的敏感性分析以获得实证结果。

3.3 Theoretical Justification

在本节中,我们从互信息最大化和三重态损失两个角度为我们的模型提供了理论依据。详细的证明见附录D。

Connections to the mutual information.

首先,我们揭示了两个视图中节点特征之间的损失和互信息最大化之间的联系,这在表示学习文献中得到了广泛的应用[13,15,25,26]。MI通过观察另一个随机变量来量化获得的关于一个随机变量的信息量。

Theorem 1

备注:根据定理1,它揭示了最大化目标 J 等效于最大化输入节点特征与学习到的节点表示之间互信息I(X,U,V) 的一个下界。令人感到不直观的是,最近的研究进一步提供了经验证据,表明优化互信息的一个更严格的下界可能不会导致在视觉表示学习的下游任务中取得更好的性能[26],这突显了编码器设计的重要性。在附录 C.3 中,我们还将我们的目标与 InfoNCE 损失进行了比较,后者是互信息的一个更严格的估计,以进一步展示 GRACE 模型的优越性。

Connections to the triplet loss.

或者,我们可以将Eq.(2)中的优化问题视为经典的三重损失,通常用于深度度量学习。

Theorem 2

备注:定理2将目标与经典三重损失联系起来。换句话说,我们可以将Eq.(2)中的问题视为学习图卷积编码器,以鼓励正样本在嵌入空间中远离负样本。此外,通过从度量学习的角度来看目标,我们强调了适当选择负样本的重要性,这在以前基于infomax的方法中经常被忽视。最后,对比目标优化成本低,因为我们不必显式生成负样本,并且所有计算都可以并行执行。相比之下,三元组损失在计算上是昂贵的[32]。

4.Experiments

在本节中,我们使用六个公共基准数据集对节点分类产生的节点嵌入的质量进行了经验评估。我们建议有兴趣的读者查阅有关实验细节的补充材料,包括数据集配置(附录A)、实现和超参数(附录B)以及附加实验(附录C)。

4.1 Datasets

为了全面比较,我们使用了六个广泛使用的数据集来研究转导和归纳节点分类的性能。具体来说,我们使用了三种数据集:(1)包括Cora、Citeseer、Pubmed和DBLP在内的引文网络[33,34]用于转导节点分类,(2)来自Reddit帖子的社交网络用于大规模图的归纳学习[10],(3)生物蛋白-蛋白相互作用(PPI)网络[35]用于多图的归纳节点分类。这些数据集的详细信息可在附录A中找到。

4.2 Experimental Setup

对于每个实验,我们都遵循[18]中的线性评估方案,其中每个模型首先以无监督的方式进行训练。得到的嵌入用于训练和测试一个简单的正则化逻辑回归分类器。我们对模型进行了20次训练,并报告每个数据集的平均性能。此外,我们使用直推任务的微平均f1分数和归纳任务的准确性来衡量性能。请注意,对于归纳学习任务,测试是在未见或未训练的节点和图上进行的,而对于转导学习任务,我们使用所有数据的特征,但测试集的标签在训练过程中被屏蔽。

Transductive learning

我们将以下两类代表性算法作为基准,包括:(1)传统方法DeepWalk[1]和node2vec[2],以及(2)深度学习方法GAE、VGAE[9]和DGI[18]。此外,我们报告了使用原始节点特征的逻辑回归分类器和与输入节点特征连接的嵌入DeepWalk获得的性能。为了与有监督的模型进行直接比较,我们还报告了两个代表性模型SGC[29]和GCN[6]的性能,它们以端到端方式进行训练。

Inductive learning on large graphs.

考虑到Reddit数据的庞大规模,我们密切关注[18],采用带有残差连接[36]的三层GraphSAGE-GCN[10]作为编码器,其表示为

这里我们使用均值池传播规则,作为平均节点特征。由于Reddit的规模很大,它不能完全适合GPU内存。因此,我们采用[10]中提出的子抽样方法,首先随机选择一个小批量的节点,然后对每个被选中的节点邻居进行抽样替换,得到以每个节点为中心的子图。具体来说,我们分别在第一、第二和第三跳对30、25和20个邻居进行采样。为了在这种基于采样的设置下生成图形视图,RE和MF都可以毫不费力地适应采样子图。

Inductive learning on multiple graphs

对于多图PPI的归纳学习,我们堆叠了三个具有跳过连接的均值池层,类似于DGI[18]。图卷积编码器可以表示为

其中是两个投影矩阵,在Eq.(9)中定义。尽管PPI数据集由多个图组成,但出于效率考虑,我们只计算一个锚节点的负样本,就像同一图中的其他节点一样。

在大图和多图设置中选择基线与换能型任务类似。我们考虑(1)传统方法DeepWalk4[1],(2)深度学习方法GraphSAGE[10]和DGI[18]。此外,我们报告了在与转换任务相同的设置下使用原始特征和DeepWalk +特征的性能。我们进一步提供了FastGCN[37]和GaAN-mean[38]两种具有代表性的监督方法的性能,以供参考。在表中,基线的结果按照其原始论文的表现进行报告。对于GraphSAGE,我们重用无监督的结果进行公平比较。

4.3 Results and Analysis

实证绩效总结如表1所示。总的来说,从表中,我们可以看到我们提出的模型在所有六个数据集上都显示出强大的性能。GRACE在传导和归纳任务上的表现始终优于无监督基线。较强的性能验证了所提出的对比学习框架的优越性。我们特别注意到,GRACE与在所有四个转换数据集和归纳数据集Reddit上进行标签监督训练的模型竞争。

我们的其他意见如下。首先,GRACE在PPI上比另一种竞争性对比学习方法DGI取得了相当大的进步。我们认为这是由于节点特征的极端稀疏性(超过40%的节点具有全零特征[10]),这强调了在选择负样本时考虑拓扑信息的重要性。对于像PPI这样的数据集,极端的特征稀疏性使DGI无法区分原始图中的样本和通过变换节点特征生成的损坏图中的样本,因为变换节点特征对对比目标没有影响。相反,GRACE中使用的RE方案不依赖于节点特征,在这种情况下起到了补救作用,这可以解释GRACE相对于DGI在PPI上的增益。此外,我们注意到我们的方法与监督模型之间仍然存在巨大的差距。这些有监督的模型受益于标签的另一个优点,标签为模型学习提供了其他辅助信息。考虑到现实世界数据集的稀疏性,我们进行了另一个实验来验证我们的方法对稀疏节点特征的鲁棒性(附录C.4)。结果表明,通过随机去除节点特征,我们的方法仍然优于现有的基线。

其次,传统的对比学习方法(如DeepWalk)在一些数据集(Citeseer、Pubmed和Reddit)上的性能不如只使用原始特征的朴素分类器,这表明这些方法在利用节点特征方面可能是无效的。与传统的工作不同,我们看到基于gcn的方法,例如GraphSAGE和GAE,在学习嵌入时能够结合节点特征。然而,我们注意到在某些数据集(Pubmed)上,它们的性能仍然比DeepWalk +特征差,我们认为这可以归因于它们选择负样本的朴素方法,即简单地根据边缘选择对比对。这一事实进一步证明了负样本选择在对比表征学习中的重要作用。GRACE与GAEs相比的优越性能也再次验证了我们提出的GRACE框架在图视图之间对比节点的有效性。

此外,我们对关键超参数pr和pm进行了敏感性分析(附录C.1),并对生成图形视图的混合方案进行了消融研究(附录C.2)。结果表明,我们的方法对这些参数的扰动是稳定的,并验证了在图拓扑和节点特征级别上损坏的必要性。我们还比较了经典的InfoNCE损失(附录C.3),验证了我们的设计选择的有效性。这些额外实验的细节可在补充材料中找到。

5 Conclusion

在本文中,我们开发了一种新的基于节点级最大化协议的图对比表示学习框架。我们的模型通过首先使用两种提出的方案生成图视图,去除边缘和屏蔽节点特征来学习表示,然后应用对比损失来最大化这两种视图中节点嵌入的一致性。理论分析揭示了我们的对比目标与相互信息最大化和经典三重损失之间的联系,这证明了我们的动机是合理的。我们在传感和感应设置下使用各种真实世界的数据集进行了全面的实验。实验结果表明,我们提出的方法可以在很大程度上优于现有的最先进的方法,甚至超过有监督的等效方法

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

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

相关文章

Jmeter接口自动化测试操作流程(超详细整理)

在企业使用jmeter开展实际的接口自动化测试工具,建议按如下操作流程, 可以使整个接口测试过程更规范,更有效。 接口自动化的流程: 1、获取到接口文档:swagger、word、excel ... 2、熟悉接口文档然后设计测试用例&am…

基于人工智能算法与视频监控相结合的EasyCVR智能游乐园监控方案

随着圣诞节的到来,人们都已经在规划如何安排平安夜活动,游乐园俨然成为了人们的首选。游乐园人员流量大且密集,特别是在节假日和重大节日,人满为患,极易发生事故,为保证游乐场安全运营,减少事故…

JVM虚拟机系统性学习-JVM调优之GC日志分析

JVM 调优 首先,为什么要 JVM 调优呢? JVM 调优的目的就是为了让应用程序使用最小的硬件消耗来承载更大的吞吐量 什么情况下需要 JVM 调优呢? 系统吞吐量下降,或系统延迟较高出现 OOMFull GC 频繁GC 停顿时间过长(超…

OneLLM:对齐所有模态的框架!

深度学习自然语言处理 原创作者:wkk 今天为大家介绍香港中文大学联合上海人工智能实验室的最新研究论文,关于在LLM时代将各种模态的信息对齐的框架。 论文:OneLLM: One Framework to Align All Modalities with Language地址:http…

vue中实现使用相框点击拍照,canvas进行前端图片合并下载

拍照和相框合成,下载图片dome 一、canvas介绍 Canvas是一个HTML5元素,它提供了一个用于在网页上绘制图形、图像和动画的2D渲染上下文。Canvas可以用于创建各种图形,如线条、矩形、圆形、文本等,并且可以通过JavaScript进行编程操作。 Canvas元素本身是一个矩形框,可以通…

《Kotlin核心编程》笔记:面向对象

kotlin 中的类 // Kotlin中的一个类 class Bird {val weight: Double 500.0val color: String "blue"val age: Int 1fun fly() { } // 全局可见 }把上述代码反编译成Java的版本,然后分析它们具体的差异: public final class Bird {privat…

逆向经历回顾总结

逆向经历回顾总结 一、前言 将自己的逆向经验做个总结,希望新手对逆向大方向能快速了解。高手有啥不一样的经验也可以讨论讨论。 二、个人经历 本人入行逆向全因一部韩剧“幽灵”,里面涉及渗透、病毒分析、取证的攻防对抗,我觉得对新手来说…

S1试讲讲稿

习题题目 答案 用到的概念: 概率之和等于1 E ( x ) ∑ i 1 4 x i P i E(x)\sum_{i1}^4x_iP_i E(x)∑i14​xi​Pi​ E ( x 2 ) ∑ i 1 4 x i 2 P i E(x^2)\sum_{i1}^4x_i^2P_i E(x2)∑i14​xi2​Pi​ V a r ( X ) Var(X) Var(X) ∑ i 1 4 ( x i − x ‾ ) 2…

美易官方:道指续创收盘历史新高

美国股市周三继续上涨,道琼斯工业平均指数连续六个交易日收高,并再次创下收盘历史新高。尽管市场对全球经济增长放缓的担忧依然存在,但美国经济数据的强劲表现以及企业盈利的良好预期,使得投资者对股市的信心得到提振。 在今日的交…

Volatility3内存取证工具安装及入门在Linux下的安装教程

1-1. Volatility3简介 Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。 针对竞赛这块(CTF、技能大赛等)基本上都…

系列二十七、Apache Jmeter使用

一、安装 下载安装包>解压到指定目录>双击打开D:\Programs\apache-jmeter-5.5\bin\ApacheJmeter.jar即可。我分享的ApacheJmeter链接: 链接:https://pan.baidu.com/s/1VI7f3buIWZbQEeq2CRbwlg?pwdyyds 提取码:yyds 二、使用 2.1、添…

docker创建镜像 Dockerfile

目录 docker的创建镜像的方式 dockerfile形成(原理) docker的核心作用 docker的文件结构 dockerfile的语法 CMD和ENTRPOINT的区别 创建dockerfile镜像 区别 RUN命令的优化 如何把run命令写在一块 copy和ADD区别 区别 centos7 构建Apache的d…

jdk常用命令

1.jinfo命令 jinfo命令主要查看虚拟机配置参数信息,也可用于调整虚拟机的配置参数。jinfo不仅可以查看运行时某一个Java虚拟机参数的实际取值, 甚至可以在运行时修改部分参 数,并使之立即生效。 但是,并非所有参数都支持动态修改。…

springboot使用validation-api对入参进行校验

springboot使用validation-api对入参进行校验 前言:在实际开发中,我们不能完全相信前端给我们的参数是否符合预期或规范,为了避免恶意入参,引发系统或数据安全问题,需要对前端传过来的参数进行校验。例如字符串长度校…

牛客网BC107矩阵转置

答案&#xff1a; #include <stdio.h> int main() {int n0, m0,i0,j0,a0,b0;int arr1[10][10]{0},arr2[10][10]{0}; //第一个数组用来储存原矩阵&#xff0c;第二个数组用来储存转置矩阵scanf("%d%d",&n,&m); if((n>1&&n<10)&&am…

ShopsN commentUpload 文件上传漏洞复现

0x01 产品简介 ShopsN 是一款符合企业级商用标准全功能的真正允许免费商业用途的开源网店全网系统。 0x02 漏洞概述 ShopsN commentUpload 接口处存在任意文件上传漏洞,攻击者可以利用文件上传漏洞执行恶意代码、写入后门、读取敏感文件,从而可能导致服务器受到攻击并被控…

千梦网创:Too Young,to simple

大多数人啊&#xff0c;还是too young&#xff0c;包括我。 网上的评论对我而言并不影响我通过提供价值服务经营生活&#xff0c;但是有时候对于我的思考还是有一些帮助的。 我把很多可以争与不可争的事件看做是一种现象&#xff0c;这种现象往往可以给予我新的能量。 当学员…

2024美赛备战-美赛必备技能(matlab 和SPSS入门必备)

( 一 )Matlab 1.数值计算和符号计算功能 Matlab 以矩阵作为数据操作的基本单位&#xff0c;它的指令表达式与数学、工程中 常用的符号、表达式十分相似&#xff0c;故用Matlab 来解算问题要比用C、FORTRAN 等 语 言完成相同的事情简捷得多&#xff0c;使学者易于学习和掌握…

完蛋,我的AI自己动起来了

故事的开始 一开始&#xff0c;我只是给我的公众号接入了星火认知大模型。但是公众号的应用场景不足&#xff0c;没办法当成群机器人来用。所以我后来办了张新的电话卡&#xff0c;注册了个小号微信。想把小号打造成微信群聊助手&#xff0c;在我没时间翻冗长的聊天记录的时候…

平面腔体谐振计算与仿真

PCB的电源网络是由电介质材料隔开的两个平行金属板所组成&#xff0c;可以通过以下的3种方法对其谐振模式进行分析&#xff1a; 1. 基于腔体模型的计算&#xff1b; 2. 基于SPICE等效电路&#xff1b; 3. 基于全波数值电磁算法的3D模型。 设计得当的前提下&#xff0c;上述3种方…