Relations Prediction for Knowledge Graph Completion using Large Language Models
文章目录
- 题目
- 摘要
- 简介
- 相关工作
- 方法论
- 实验
- 结论
- 局限性
- 未来工作
题目
使用大型语言模型进行知识图谱补全的关系预测
论文地址:https://arxiv.org/pdf/2405.02738
项目地址: https://github.com/yao8839836/kg-llm
摘要
知识图谱已被广泛用于以结构化格式表示事实。由于其大规模应用,知识图谱存在不完整性的问题。关系预测任务通过为每对节点分配一个或多个可能的关系来获得知识图谱完成。在这项工作中,我们利用知识图谱节点名称来微调关系预测任务的大型语言模型。通过仅使用节点名称,我们使我们的模型能够在归纳设置中充分运行。我们的实验表明,我们在广泛使用的知识图谱基准上取得了新的分数。
CCS 概念:• 计算方法 → 自然语言处理;知识表示和推理;语义网络。
ACM 参考格式:Sakher Khalil Alqaaidi 和 Krzysztof Kochut。2024. 使用大型语言模型进行知识图谱完成的关系预测。在第 8 届信息系统和数据挖掘国际会议 (ICISDM '24) 论文集上。ACM,纽约,纽约州,美国,10 页。
简介
知识图谱 (KG) 用于以实体节点和边的形式存储语义数据。边表示实体之间的有向关系。例如,詹姆斯·卡梅隆制作了《阿凡达》这一事实可以存储在 KG 中,方法是使用生成的关系(边)将詹姆斯·卡梅隆节点链接到《阿凡达》节点。这种知识表示结构称为三元组;它由头节点、关系和尾节点组成。如果交换了围绕边的节点,此三元组中的方向对于保持事实的有效性很重要。由于 KG 在表示语义事实方面的效率,KG 被用于大规模应用,例如推荐系统和信息提取 [25]。然而,由于 KG 规模巨大,因此存在不完整的问题 [26]。因此,提出了几种用于知识图谱完成 (KGC) 的方法 [18]。预测节点对之间的关系就是其中一种方法。关系预测 (RP) 任务旨在识别两个给定节点之间的关系; RP 任务输入中的节点顺序对于保持关系方向和区分头节点和尾节点非常重要。正式地,在 RP 任务中,函数 𝑓 被训练来预测给定节点对的一组关系 𝑅,即头节点 𝑛ℎ 和尾节点 𝑛𝑡 ,如下所示:𝑓 (𝑛ℎ, 𝑛𝑡) = 𝑅。因此,在前面给出的例子中,RP 任务还可以预测詹姆斯·卡梅隆节点和阿凡达节点之间其他合理的关系,例如 writer_for、directed、honored_for 和 nominated_for。
KGC 的最新成果是通过将节点和边编码为数值浮点向量而获得的 [18]。这些向量通常称为嵌入,它们广泛应用于基于机器学习的模型中。最初,KGC 模型仅依靠图结构来生成节点和边的嵌入 [3, 20]。图结构信息反映了节点的拓扑细节,例如节点度、可以从节点开始的步行长度以及节点邻域的结构。然而,基于 KGC 结构的模型在归纳设置中的表现不尽如人意,即在预测模型训练期间未见过的节点关系时。
另一方面,一系列 KGC 模型采用了从节点内容生成的嵌入,例如节点标签中的文本或节点属性中的数值 [29, 30]。然而,由于内容类型的异构性,一些 KGC 模型仅利用了语言模型易于进行文本编码所支持的文本内容。此外,能够处理模型训练期间未见过的节点文本,这使得基于语言模型的 KGC 在开放世界场景中具有优势。
在自然语言处理 (NLP) 中,语言模型与机器学习的结合已经在各种任务上取得了惊人的成就,特别是在预训练语言模型 (PLM) 出现之后,例如 BERT、GPT2 和 Roberta [12]。最近,大型语言模型 (LLM) 凭借其庞大的训练语料库和先进的转换器 [22],在多个 NLP 任务中表现优于 PLM。
在这项工作中,我们利用 LLM 来完成知识图谱。特别是,我们利用了 Llama 2 [22],这是一种新的但功能强大的 LLM。我们使用 Llama 2 对关系预测任务执行序列多标签分类,并在 Freebase 基准测试中获得新分数。此外,我们在 WordNet 基准测试中获得的分数与文献中报告的分数相当;我们将在第 4 节中证明这些分数的合理性。我们的实现在归纳设置下效果很好,因为我们只依赖节点的文本信息来预测关系。此外,我们的模型优于其他模型,因为我们只使用节点名称,即在微调模型时忽略冗长的节点描述。
相关工作
知识图谱完成 KGC 模型因遵循的方法而异,即(但不详尽)基于规则的方法 [8, 31]、张量分解方法 [1, 13, 21]、基于结构翻译的方法 [3, 9] 和 KG 内容利用方法 [24, 29]。除此之外,KGC 模型还因完成目标而异。一系列模型旨在通过预测 KG 三元组中缺失的实体来完成 KG [3, 7]。实体预测 (EP) 或链接预测 (LP) 是这个方向的常用名称。类似地,另一个 KGC 目标是预测节点对中的关系,这对于通过两种方式丰富知识图谱。首先,通过在节点之间建立缺失的链接。其次,通过使用多关系链接来促进已经连接的节点。
在这里,我们回顾了相关的关系预测模型,并在表 1 中重点介绍了它们与我们的工作相比的主要区别和特点。TransE [3] 提出了一种翻译方法,使用它们的结构信息来表示图中的节点和边。模型训练目标是在翻译方程 𝐸(ℎ, 𝑟, 𝑡) = ||ℎ +𝑟 −𝑡|| 中获得较低的能量分数,其中 𝐸 是能量分数,ℎ、𝑟 和 𝑡 分别是头节点、边和尾节点嵌入。PTransE [9] 扩展了 TransE,以在知识图谱的表示学习中使用关系路径。PTransE 不仅仅考虑节点之间的直接边,还考虑了多步关系路径。 TKRL [28] 是一个同样遵循 TransE 中的翻译技术的模型,由节点实体类型为 KGC 任务提供支持。DKRL [27] 使用 TransE 嵌入并将它们与节点的描述嵌入对齐。Word2Vec [10] 用于描述编码,然后将嵌入输入到卷积神经网络。KG-BERT [29] 将三元组的文本内容仅作为 BERT 语言模型的输入,然后针对 LP 任务和 RP 任务对模型进行微调。KGML [14] 是一个简单而有效的 RP 模型。KGML 的作者使用独热编码器表示实体,并在多层神经网络中使用输入。TaRP [4] 将实体类型纳入模型决策层,而不是纳入嵌入学习中。
该模型基于不同的 KG 嵌入方法提出了多种变体,例如 TransE 和 RotateE [20]。 Shallom [5] 训练了一个浅层神经网络来学习节点对嵌入,然后预测它们可能的关系。与上述模型相比,我们的模型具有以下优势:仅使用节点名称表示的最小节点信息、能够在归纳设置中操作以及进行单阶段训练(如表 1 所示)。
语言模型文本特征提取源于寻找单词表示 [15] 到句子和文档表示。循环神经网络 (RNN) [17] 能够理解单词序列,但其有效性受到内存限制的制约,限制了单词考虑的范围。因此,RNN 中句子的语境化表示往往不能令人满意。后来,注意力技术 [23] 导致了 Transformer 架构的构建。使用注意力 Transformer,NLP 模型能够掌握完整的句子或段落并呈现有意义的表示。鉴于计算技术的增强,更先进的 Transformer 模型在具有自监督学习目标的大型语料库上进行训练。这些模型被称为预训练语言模型 (PLM);一些出色的 PLM 示例是 BERT 和 GPT [6, 16]。最近,大型语言模型 (LLM) 使用自回归转换器架构对更大的语料库进行预训练,其中包括在线百科全书、书籍、学术论文以及电影和访谈中的口头对话的网络爬取转储。感知如此大量的文本内容导致同时处理多个领域的更复杂的语言规则和专家知识。PLM 和 LLM 通过对下游任务进行微调而用于各种应用程序。自出现以来,LLM 一直以重要的应用吸引着我们,例如能够达到人类水平表现的聊天机器人,如 ChatGPT 中所展示的那样。在这项工作中,我们通过展示其优于使用其他语言模型的作品,有效地在 RP 任务中使用了 LLM。
方法论
我们利用强大的大型语言模型 Llama 2 [22] 来预测实体对之间的合理关系。实体表示知识图谱中的节点,关系集是固定的。图 1 显示了我们实现的主要架构。我们对 Llama 2 进行了微调,以完成下游监督任务,即多标签序列分类。我们验证了基于分类交叉熵损失的微调过程。其中 𝑦ˆ 表示预测的关系概率,𝑦 表示真实二进制标签,𝐶 表示关系大小。
文本编码为了实现简单而高效的实现,我们选择仅使用实体名称作为 LLM 的输入。LLM 的预训练和微调阶段涉及文本标记化,然后将标记编码为数字 ID [19]。因此,我们使用 Llama 2 标记器将实体文本转换为数字 ID。标记器将文本序列中的每个单词与其词汇表中的 ID 进行匹配。如果没有匹配,标记器会将单词分成块。标记器使用这些块来查找新的匹配项或不断将其分解,直到在递归操作中达到字符级别。
除了输入 ID,标记器还使用特殊标记 [CLS] 和 [SEP]。前者表示序列的开头,而后者用于分隔每个实体词序列。为了保持输入 ID 列表的一致性,应用了填充和截断操作。因此,如果输入 ID 列表的大小小于定义的填充长度,则使用填充标记来填补空白。或者,如果输入 ID 列表较大,则应用截断过程。除了输入 ID 列表之外,标记器还返回注意掩码,即二进制值序列。注意掩码中带有 1 的项目表示标记在输入 ID 列表中的位置,而零表示填充标记(如果有)。
Llama 2 从标记器接收输入 ID 和注意力掩码,然后通过多层注意力转换器处理这些值。每层的参数都根据提供的关系标签进行微调。用于序列分类的 Llama 2 有一个顶层线性层,它输出最终的关系概率。
实验
实验设置 为了展示我们模型的有效性,我们在两个广泛认可的基准 FreeBase [2] 和 WordNet [11] 上进行了评估。表 2 显示了两个 KG 的统计数据。负抽样是 LP 任务中的一种常见做法,经常导致训练三元组的重复。具体而言,这种方法涉及通过将原始正标签替换为负标签来破坏训练三元组的副本。破坏通常涉及用无效的、随机选择的实体替换正确的实体。虽然这种方法旨在增强训练数据的多样性并提高模型性能,但它不可避免地延长了训练时间。然而,当涉及到 RP 任务时,负采样的实施提出了一个独特的研究挑战。
这主要是因为 RP 任务涉及为节点对分配多个标签,而不像 LP 任务中使用的二进制标签。因此,由于标签分配方法的根本差异,我们选择不将负采样纳入 RP 任务。 Llama 2 预训练大型语言模型集合的参数数量从 70 亿到 700 亿不等。考虑到我们的计算资源,我们选择对使用 70 亿参数预训练的 Llama 2 模型进行微调以用于 RP 任务。我们使用 Nvidia A100-SXM-80GB 作为 GPU 节点。我们仅使用 PyTorch 对 Llama-2-70B 进行 10 个 epoch 的微调。Llama 的标记器中实体文本序列的填充长度为 50。我们使用 Adam 算法进行优化。学习率为 5e-5,优化器衰减为 25%。
评估指标 平均排名 (MR) 和 Hits@N 是评估预测排名的常用指标,特别是在 KGC 任务中。鉴于模型预测代表关系概率,MR 指标计算按降序排列的概率中真实关系的平均排名。正式定义为其中 𝑄 是查询集。因此,KGC 模型旨在实现较低的 MR 值。在这种情况下,考虑到可能为一对节点预测多个关系,过滤设置 [3] 特别有用。因此,在这种评估场景中,预测等级应该减少排名高于预测等级的有效关系的数量。我们在实验结果中报告了过滤设置的性能。Hits@N 指标用于计算按降序排列的 N 个概率中发现的真实关系的平均数量。正式定义为
其中 𝑄 是查询集。通常,KGC 模型以 𝑁 = 1 报告此指标。同样,我们也这样做。我们还在结果中使用此指标的过滤设置。我们扩展了模型报告的分数,以显示表 5 中 Hits@5 的结果。此外,我们在同一张表中显示了平均倒数排名 (MRR) 分数。MRR 指标类似于 MR 指标,不同之处在于它将分数表示为百分比值。以下等式是 MRR 指标的正式定义。
比较模型 我们将我们的模型与各种 RP 基线进行比较。第 2 节简要解释了比较中使用的每个模型的方法。TransE [3] 中的 RP 分数由其他几篇论文报告,我们在比较中使用它们的分数。PTransE [9] 基于嵌入连接方法和路径长度提出了几种变体。我们在比较中报告了它们最佳变体的分数。TKRL [28] 提出了一种用于构建分层类型投影矩阵的递归变体,该变体在 RP 任务中获得了其他变体中的最佳性能。同样,DKRL [27] 提出了几种变体。然而,具有卷积层和 TransE 嵌入的变体获得了最佳分数。在 KGML [14] 中,𝛼 是它们组合损失函数之间的平衡参数。我们报告了它们在两个不同的 𝛼 参数中出现的最佳分数。
Shallom [5] 与 KGML 的不同之处在于它对实体嵌入采用了连接步骤。此外,在交叉熵损失利用率方面也有所不同。TaRP [4] 提出了三种基于嵌入子模型的变体。性能最佳的变体是使用 RotateE [20] 进行 KG 嵌入的变体。TaRP 中的 KG 嵌入与关系决策级阶段一起使用,这取决于节点类型。我们的架构与 KG-BERT [29] 相似,但有两个不同之处,即使用的语言模型和节点信息的使用。鉴于我们能够使用作者发布的代码重现 KG-BERT 的结果,其他模型的代码无法在线获取,例如 TaRP。
主要结果表 3 和表 4 分别报告了我们对 FreeBase 和 WordNet KG 的评估结果。在 FreeBase 中,我们的模型在 MR 和 Hit@1 指标中的表现优于最佳得分,但 KG-BERT 和 KGML(𝛼 = 0.0)的过滤 Hits@1 除外,在这些指标中,我们的模型得分低 1%。我们将过滤后的 Hits@1 得分归因于两个主要原因。
首先,过滤设置中的评估程序。确切地说,在评估过程中,训练和验证的纳入增加了三倍,从而提高了模型的得分。其次,KG-BERT 中的训练周期延长,作者建议为 20 个周期,而我们的模型仅训练了 10 个周期。在 WordNet KG 评估中,我们认为我们的模型由于两个原因无法取得优势。首先,关系集的大小,它比 FreeBase 小得多。其次,数据集的性质,它是英语的词汇 KG。
归纳设置 为了展示 LLM 和基于文本的 RP 模型在归纳设置中的有效性,即在预测模型训练期间未见过的文本的关系时,我们在 FreeBase KG 的分割上评估模型,该分割包含验证部分和训练部分中未包含的测试实体。此外,验证部分包括与训练部分中任何实体都不匹配的实体。我们根据 FreeBase 原始测试三元组的随机 10% 生成这些分割。表 5 显示了以前结果中使用的相同指标和另外两个指标(即 MRR 和 Hits@5,在第 4.2 节中描述)的得分。值得注意的是,结果显示归纳设置的性能接近传导设置。例如,我们的模型在传导设置中的 MRR 得分仅好 5% 左右。
故障分析 表 6 报告了我们模型的三个最低测试预测。这三条记录根据预测中基本事实关系的排名被排序为最差。我们将这三个观测值的低排名归因于两个原因。首先,具有相同关系的训练三元组数量有限。换句话说,该模型对这三种关系的训练不足。例如,三元组 #1 中的关系 Appointed_by 在数据集的训练部分只出现过一次。其次,实体歧义问题,即节点名称代表多个实体时。例如,在三元组 #3 中,很难将实体金星识别为太阳行星或罗马女神。
结论
我们引入了 RPLLM,它是使用大型语言模型来完成关系预测任务的。该模型旨在通过预测给定一对节点实体的合理关系来完成知识图谱。RPLLM 利用了 Llama 2,这是一种新的、功能强大的大型语言模型。我们在一个著名基准上进行的实验表明,RPLLM 超过了关系预测任务中取得的最佳分数。
局限性
虽然 LLM 在理解文本序列方面表现出色,但它们仍然需要大量计算资源才能有效运行。因此,我们的实验仅限于运行具有 70 亿个参数的 Llama 2。但是,借助额外的 GPU 功能,我们可以利用 700 亿个参数的版本。通过使用统一指标,可以进一步增强对 KGC 模型的评估。例如,几个模型采用平均倒数排名而不是平均排名。此外,模型可以在 Hits@N 指标中使用不同的 N 值,例如 3、5 和 10。
未来工作
未来的 KGC 研究可以解决实体歧义问题。我们在第 4.6 节中展示了这个问题如何导致我们模型评估中的排名较低。具体来说,未来的努力可以探索利用训练三元组中的关系文本,这在我们的实现中没有考虑到。此外,未来的努力可以有效地利用实体描述来改善结果,同时尽量减少额外的计算负荷。此外,一个有前途的研究方向可以通过引入具有更复杂关系预测场景的新评估知识图来丰富文献。我们声称,包括我们在内的当前模型都表现出最先进的性能,这由报告的预测等级始终很高以及新研究的小幅改进所证明。
未来的研究可以利用我们的工作,通过对模型进行额外的微调来获得更好的结果。此外,我们的实现可以适用于实体预测任务,从而提出新的贡献。此外,一个潜在的研究方向可以探索负采样技术在 RP 任务中的应用,如第 4.1 节所述。最后,虽然我们的模型能够在实体归纳设置中运行,但它并非为处理关系归纳设置而设计的。换句话说,它无法预测训练期间未遇到的关系。因此,未来的工作可以解决这个问题。
相关文章:

Relations Prediction for Knowledge Graph Completion using Large Language Models
文章目录 题目摘要简介相关工作方法论实验结论局限性未来工作 题目 使用大型语言模型进行知识图谱补全的关系预测 论文地址:https://arxiv.org/pdf/2405.02738 项目地址: https://github.com/yao8839836/kg-llm 摘要 知识图谱已被广泛用于以结构化格式表…...
2024年中国研究生数学建模竞赛D题思路代码分析——大数据驱动的地理综合问题
地理系统是自然、人文多要素综合作用的复杂巨系统[1-2],地理学家常用地理综合的方式对地理系统进行主导特征的表达[3]。如以三大阶梯概括中国的地形特征,以秦岭—淮河一线和其它地理区划的方式揭示中国气温、降水、植被、土壤及生态环境在水平和垂直方向…...

全国31省对外开放程度、经济发展水平、政府干预程度指标数据(2000-2022年)
旨在分析2000-2022年间中国31个省份的对外开放程度、经济发展水平和政府干预程度,探讨其背后的动因与影响。 2000年-2022年 全国31省对外开放程度、经济发展水平、政府干预程度指标数据https://download.csdn.net/download/2401_84585615/89478612 数据概览 对外…...

计算机网络传输层---课后综合题
线路:TCP报文下放到物理层传输。 TCP报文段中,“序号”长度为32bit,为了让序列号不会循环,则最多能传输2^32B的数据,则最多能传输:2^32/1500B个报文 结果: 吞吐率一个周期内传输的数据/周期时间…...

【homebrew安装】踩坑爬坑教程
homebrew官网,有安装教程提示,但是在实际安装时,由于待下载的包的尺寸过大,本地git缓存尺寸、超时时间的限制,会报如下错误: error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly…...
反游戏学(Reludology):概念、历史、现状与展望?(豆包AI版)
李升伟 以下是关于“反游戏学(Reludology):概念、历史、现状与展望”的综述: 一、概念 反游戏学(Reludology)是一个相对较新且不太常见的概念,目前尚未有统一明确的定义。一般来说…...
【C/C++语言系列】实现单例模式
1.单例模式概念 定义:单例模式是一种常见的设计模式,它可以保证系统中一个类只有一个实例,而且该实例易于外界访问(一个类一个对象,共享这个对象)。 条件: 只有1个对象易于外界访问共享这个对…...
A. Make All Equal
time limit per test 1 second memory limit per test 256 megabytes You are given a cyclic array a1,a2,…,ana1,a2,…,an. You can perform the following operation on aa at most n−1n−1 times: Let mm be the current size of aa, you can choose any two adjac…...

业务安全治理
业务安全治理 1.账号安全撞库账户盗用 2.爬虫与反爬虫3.API网关防护4.钓鱼与反制钓鱼发现钓鱼处置 5.大数据风控风控介绍 1.账号安全 撞库 撞库分为垂直撞库和水平撞库两种,垂直撞库是对一个账号使用多个不同的密码进行尝试,可以理解为暴力破解&#x…...

HelpLook VS GitBook,在线文档管理工具对比
在线文档管理工具在当今时代非常重要。随着数字化时代的到来,人们越来越依赖于电子文档来存储、共享和管理信息。无论是与团队合作还是与客户分享,人们都可以轻松地共享文档链接或通过设置权限来控制访问。在线文档管理工具的出现大大提高了工作效率和协…...
docker面经
docker面经在线链接 docker面经在线链接🔗: (https://h03yz7idw7.feishu.cn/wiki/N3CVwO3kMifLypkJqnic9wNynKh)...

Python 中的 Kombu 类库
Kombu 是一个用于 Python 的消息队列库,提供了高效、灵活的消息传递机制。它是 Celery 的核心组件之一,但也可以单独使用。Kombu 支持多种消息代理(如 RabbitMQ、Redis、Amazon SQS 等),并提供了消息生产者和消费者的功…...
safepoint是什么?有什么用?
在JVM中,safepoint(安全点)是一个非常重要的概念,特别是在垃圾回收(GC)和其他需要暂停所有应用线程的操作中。 什么是safepoint Safepoint是JVM执行过程中一个特定的位置,在这个位置上&#x…...
axios相关知识点
一、基本概念 1、基于Promise:Axios通过Promise实现异步请求,避免了传统回调函数导致的“回调地狱”问题,使得代码更加清晰和易于维护。 2、跨平台:Axios既可以在浏览器中运行,也可以在Node.js环境中使用,为前后端开…...
LeetCode 面试经典150题 67.二进制求和
415.字符串相加 思路一模一样 题目:给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 eg: 输入a“1010” b“1011” 输出“10101” 思路:从右开始遍历两个字符串,因为右边是低位先运算。如果…...

Dell PowerEdge 网络恢复笔记
我有一台Dell的PowerEdge服务器,之前安装了Ubuntu 20 桌面版。突然有一天不能开机了。 故障排查 Disk Error 首先是看一下机器的正面,有一个非常小的液晶显示器,只能显示一排字。 上面显示Disk Error,然后看挂载的硬盘仓&#…...

Java面试——集合篇
1.Java中常用的容器有哪些? 容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 如图: 面试官追问:说说集合有哪些类及他们各自的区别和特点? S…...
算法【双向广搜】
双向广搜常见用途 1:小优化。bfs的剪枝策略,分两侧展开分支,哪侧数量少就从哪侧展开。 2:用于解决特征很明显的一类问题。特征:全量样本不允许递归完全展开,但是半量样本可以完全展开。过程:把…...
javascript检测数据类型的方法
1. typeof 运算符 typeof是一个用来检测变量的基本数据类型的运算符。它可以返回以下几种类型的字符串:“undefined”、“boolean”、“number”、“string”、“object”、“function” 和 “symbol”(ES6)。需要注意的是,对于 n…...

生信初学者教程(五):R语言基础
文章目录 数据类型整型逻辑型字符型日期型数值型复杂数数据结构向量矩阵数组列表因子数据框ts特殊值缺失值 (NA)无穷大 (Inf)非数字 (NaN)安装R包学习材料R语言是一种用于统计计算和图形展示的编程语言和软件环境,广泛应用于数据分析、统计建模和数据可视化。1991年:R语言的最…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...