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

知识图谱(KG)与大语言模型(LLM)

知识图谱(KG)以其结构化的知识表示和推理能力,为大语言模型(LLM)的“幻觉”、知识更新滞后和可解释性不足等问题提供了有力的解决方案。反过来,LLM的强大文本理解和生成能力也为KG的构建、补全、查询和应用带来了革命性的进步。二者的融合旨在结合符号主义AI(以KG为代表)和连接主义AI(以LLM为代表)的优势,推动人工智能向更智能、更可信、更易用的方向发展。

一、背景与动机 (Background and Motivation)

  1. 大语言模型 (LLM) 的优势与局限:

    • 优势:
      • 强大的自然语言理解和生成能力。
      • 在开放域对话、文本摘要、代码生成等任务中表现出色。
      • 通过预训练从海量文本数据中学习了广泛的世界知识(隐式知识)。
    • 局限:
      • 幻觉 (Hallucination): 可能生成不准确或完全虚构的信息。
      • 知识更新滞后: 预训练模型中的知识是静态的,难以实时更新。
      • 可解释性差: “黑箱”模型,决策过程难以理解和追溯。
      • 逻辑推理能力有限: 尤其在复杂的多跳推理上表现不佳。
      • 事实性不足: 容易受到训练数据中偏见和错误信息的影响。
      • 计算成本高昂: 训练和微调大型模型需要巨大的计算资源。
  2. 知识图谱 (KG) 的优势与局限:

    • 优势:
      • 结构化知识: 以实体-关系-实体的三元组形式存储知识,清晰明了。
      • 精确性与一致性: 存储经过验证的事实,保证知识的准确性。
      • 可解释性强: 知识路径清晰,推理过程可追溯。
      • 支持复杂推理: 基于图结构可以进行符号逻辑推理。
    • 局限:
      • 构建成本高: 需要大量人工或复杂的自动化流程,且难以覆盖所有领域知识。
      • 知识不完备性: 现实世界的知识是动态变化的,KG难以做到完全覆盖。
      • 处理自然语言能力弱: 理解和生成自然语言的灵活性和流畅性远不如LLM。
      • 可扩展性问题: 巨大规模KG的存储、查询和更新面临挑战。
  3. 融合动机:

    • 优势互补: KG为LLM提供事实依据、可解释性和推理能力;LLM为KG提供自然语言接口、知识获取和表示能力。
    • 提升LLM性能:
      • 减少幻觉,提高事实准确性。
      • 增强对专业领域知识的理解和应用。
      • 提高推理能力和可解释性。
      • 实现知识的动态更新。
    • 赋能KG发展:
      • 自动化或半自动化KG构建和补全。
      • 提供更自然的KG查询方式(自然语言问答)。
      • 丰富KG的语义表示。
    • 推动下一代AI: 构建更接近人类认知智能的系统,兼具感知、认知、推理和生成能力。

二、前沿核心技术模块与融合范式 (Cutting-edge Core Technical Modules and Fusion Paradigms)

KG与LLM的融合主要可以分为三大范式:

  1. 知识图谱增强大语言模型 (KG-enhanced LLMs / Knowledge-Augmented LLMs):

    • 目标: 利用KG中显式的结构化知识来提升LLM的性能和可靠性。
    • 核心模块:
      • 增强输入 (Input Augmentation / Prompting with KG):
        • 检索增强生成 (Retrieval Augmented Generation, RAG): 在LLM生成回答前,先从KG中检索与问题相关的知识片段(三元组、子图、路径等),并将其作为上下文信息融入LLM的提示(Prompt)中。这是目前最主流和实用的方式之一。
        • 序列化知识注入 (Serialization): 将KG中的三元组或子图序列化为文本,直接拼接到输入文本中。
      • 改进模型结构与预训练 (Model Architecture & Pre-training Modification):
        • 知识注入层 (Knowledge Injection Layers): 在LLM的某些层(如注意力层、前馈网络层)中显式地融入KG的表示(如实体/关系嵌入)。例如,KnowBERT, ERNIE, JAKET等。
        • 联合预训练 (Joint Pre-training): 设计新的预训练任务,让LLM在预训练阶段同时学习文本和KG中的知识。例如,通过掩码语言模型(MLM)和知识图谱链接预测(Link Prediction)等任务进行联合优化。
      • 优化输出与后处理 (Output Optimization & Post-processing):
        • 事实校验 (Fact Verification): 利用KG对LLM生成的文本进行事实性校验和修正。
        • 知识指导的解码 (Knowledge-Guided Decoding): 在LLM生成文本的过程中,利用KG引导生成过程,使其更符合事实逻辑。
  2. 大语言模型赋能知识图谱 (LLM-enhanced KGs / LLM-Empowered KGs):

    • 目标: 利用LLM强大的自然语言理解和生成能力来辅助KG的构建、补全、查询和应用。
    • 核心模块:
      • 知识图谱构建 (KG Construction):
        • 实体识别与链接 (Named Entity Recognition & Linking, NER & NEL): LLM可以从非结构化文本中高效抽取实体,并将其链接到KG中已有的实体或新的实体。
        • 关系抽取 (Relation Extraction, RE): LLM可以判断文本中实体对之间的关系,甚至发现新的关系类型。
        • 事件抽取 (Event Extraction): LLM可以抽取复杂的事件结构及其参与者。
        • 属性抽取 (Attribute Extraction): LLM可以从文本中为实体抽取属性信息。
        • 三元组抽取 (Triplet Extraction): LLM可以直接从文本中抽取 (头实体, 关系, 尾实体) 的三元组。
      • 知识图谱补全 (KG Completion / Link Prediction): LLM可以基于已有的KG结构和文本描述,预测KG中缺失的链接(关系)或实体。
      • 知识图谱问答/查询 (KG Question Answering / KG Querying):
        • 自然语言到查询语言 (NL2Query): LLM可以将用户的自然语言问题转换为KG的标准查询语言(如SPARQL, Cypher)。
        • 端到端问答 (End-to-End QA): LLM直接基于问题和KG上下文生成答案,可能内部隐式地进行了推理。
      • 知识图谱表示学习 (KG Representation Learning): LLM可以帮助学习更丰富的实体和关系嵌入,捕捉其深层语义。
      • 知识图谱的文本描述生成 (KG-to-Text Generation): LLM可以将KG中的子图或路径转换为流畅的自然语言描述,增强KG的可理解性。
  3. 协同进化与深度融合 (Synergistic Co-evolution and Deep Fusion):

    • 目标: 实现KG和LLM之间更深层次、更动态的交互和共同进化。这代表了更长远的研究方向。
    • 核心模块:
      • 统一表示空间 (Unified Representation Space): 学习一个统一的向量空间,能够同时表示文本语义和KG结构。
      • 迭代式增强 (Iterative Enhancement): LLM帮助完善KG,完善后的KG反过来又提升LLM的能力,形成一个正反馈循环。
      • 神经符号混合推理 (Neuro-Symbolic Reasoning): 结合LLM的模式匹配能力和KG的符号推理能力,进行更复杂的推理任务。例如,LLM生成推理路径的候选,KG进行验证和筛选。
      • 可解释性双向增强 (Bidirectional Interpretability Enhancement): KG为LLM的决策提供依据,LLM帮助解释KG中的复杂关系和模式。

三、技术细节和要点 (Technical Details and Key Points)

  1. 表示学习 (Representation Learning):

    • KG嵌入 (KG Embeddings): 如TransE, DistMult, ComplEx, RotatE等,将实体和关系映射到低维向量空间。
    • 文本嵌入 (Text Embeddings): 如Word2Vec, GloVe, BERT embeddings等。
    • 对齐与融合 (Alignment & Fusion): 关键在于如何有效地对齐和融合来自KG和文本的表示。这可以通过联合训练、多模态融合技术等实现。
  2. 检索增强生成 (RAG):

    • 检索器 (Retriever): 通常使用密集向量检索(Dense Passage Retrieval, DPR)或稀疏检索(如BM25)从KG或文本化KG中找到相关知识。需要将KG三元组或子图转换为可检索的文本单元。
    • 生成器 (Generator): 通常是预训练的LLM,将检索到的知识和原始问题一起作为输入来生成答案。
    • 关键点: 检索的质量、检索内容与问题的相关性、如何将检索到的结构化知识有效地融入LLM的上下文。
  3. 提示工程 (Prompt Engineering):

    • 在KG增强LLM的范式中,如何设计有效的Prompt至关重要。这包括如何序列化KG知识、如何向LLM提问以引导其利用这些知识。
    • 对于LLM赋能KG,Prompt可以用来引导LLM进行实体抽取、关系抽取等任务,例如通过In-Context Learning (ICL) 或 Chain-of-Thought (CoT) prompting。
  4. 微调策略 (Fine-tuning Strategies):

    • 适配器微调 (Adapter Tuning): 冻结大部分LLM参数,只微调少量插入的适配器模块,以较低成本将KG知识融入LLM。
    • 指令微调 (Instruction Tuning): 使用包含KG知识的指令数据集对LLM进行微调,使其学会遵循指令并利用KG信息。
    • 领域自适应微调: 针对特定领域的KG和文本数据进行微调。
  5. 知识的表示与粒度:

    • 是将三元组、路径、子图还是整个KG的摘要信息注入LLM?不同粒度的知识对LLM的影响不同。
    • 如何处理KG中的数值、日期等属性信息。
  6. 评估指标 (Evaluation Metrics):

    • 对于KG增强LLM: 除了标准的语言模型评估指标(如Perplexity, BLEU, ROUGE),还需要关注事实准确性(如F1-score for factuality)、知识覆盖率、推理能力等。
    • 对于LLM赋能KG: 传统的KG构建评估指标(如Precision, Recall, F1-score for NER/RE)、链接预测指标(如MRR, Hits@k)。

四、相关的知识拓展和补充 (Related Knowledge Expansion and Supplements)

  1. 应用场景:

    • 智能问答系统: 更准确、可解释的答案,尤其在专业领域(医疗、金融、法律)。
    • 搜索引擎: 结合结构化知识和非结构化文本,提供更精准的搜索结果。
    • 推荐系统: 基于用户画像知识图谱和物品知识图谱进行更个性化和可解释的推荐。
    • 对话系统/聊天机器人: 生成更连贯、有信息量且不易跑题的对话。
    • 代码生成与理解: 结合API知识库或代码知识图谱,生成更可靠的代码。
    • 药物研发、金融风控、智能制造等专业领域。
  2. 面临的挑战:

    • 异构性问题: KG和LLM的知识表示形式不同,如何有效融合异构信息。
    • 可扩展性: 如何处理大规模KG和LLM的融合,平衡效率和效果。
    • 动态知识更新: 如何使融合模型能够高效地处理新增或变化的知识。
    • 推理的深度与复杂性: 如何实现更深层次、更复杂的联合推理。
    • 可解释性的真正实现: 如何不仅知道“是什么”,还知道“为什么”。
    • 评估体系的完善: 如何全面、公正地评估KG-LLM融合系统的性能。
    • 数据稀疏性: 很多领域的KG仍然不够完善。
  3. 相关领域:

    • 神经符号计算 (Neuro-Symbolic Computing): 旨在结合神经网络的学习能力和符号系统的推理能力,KG-LLM融合是其重要实践方向。
    • 多模态学习 (Multi-modal Learning): 将知识图谱视为一种模态,与文本、图像等其他模态融合。
    • 可信AI (Trustworthy AI): KG的引入有助于提升AI系统的透明度、鲁棒性和公平性。

五、 Research Gaps with High Innovation Potential

  1. 统一的神经符号表示与推理框架:

    • 空白点: 目前多数融合方法仍偏向某一侧(KG增强LLM或LLM增强KG),缺乏真正深度统一的表示学习和推理框架,使得两者能力无法充分协同。
    • 潜力: 设计能够同时对符号知识和子符号模式进行建模、学习和推理的统一架构,实现端到端的神经符号推理。
    • 论文方向: “Towards a Unified Neuro-Symbolic Representation for KG-LLM Reasoning”, “Learning to Reason: Integrating Deductive Logic with Language Models via Knowledge Graphs”。
  2. 动态知识图谱与LLM的持续协同进化:

    • 空白点: 现有模型大多基于静态KG,或知识更新流程复杂低效。如何让LLM感知KG的动态变化,并反过来高效、准确地帮助KG进行实时更新和演化,是一个巨大挑战。
    • 潜力: 研究KG流数据处理、增量学习、持续学习技术在KG-LLM融合模型中的应用,实现模型知识的“终身学习”。
    • 论文方向: “Lifelong Learning for KG-LLM: Continual Adaptation to Evolving Knowledge”, “Synergistic Evolution of Knowledge Graphs and Language Models in Dynamic Environments”。
  3. 多模态知识图谱与LLM的融合:

    • 空白点: 当前KG主要还是以文本和符号为主,但现实世界知识是多模态的(图像、视频、音频等)。如何构建多模态KG,并将其与LLM有效融合,以支持更丰富的跨模态理解和生成任务。
    • 潜力: 探索多模态知识的统一表示、跨模态对齐、以及基于多模态KG的LLM增强方法。
    • 论文方向: “MM-KG-LLM: Fusing Multi-modal Knowledge Graphs with Large Language Models for Enhanced Comprehension and Generation”, “Grounding Language Models in a Multi-modal World: The Role of Visual Knowledge Graphs”。
  4. 可解释性、可控性与因果推断的深度融合:

    • 空白点: 虽然KG能提升LLM的可解释性,但目前主要停留在“溯源”层面。如何让LLM不仅能“知其然”(提供事实),还能“知其所以然”(解释原因、进行因果推断),并能精确控制生成内容的风格、观点和知识范围。
    • 潜力: 结合KG的结构化因果信息与LLM的上下文理解能力,探索更深层次的因果推断和可控文本生成。
    • 论文方向: “Causal Reasoning in KG-LLM: Towards Explainable and Controllable Text Generation”, “From Correlation to Causation: Empowering LLMs with Causal Knowledge Graphs”。
  5. 面向低资源和小众领域的KG-LLM融合:

    • 空白点: 当前研究主要集中在通用领域或资源丰富的领域。对于低资源语言、小众领域或只有小型KG的场景,如何有效进行KG-LLM融合是一个实际且重要的问题。
    • 潜力: 研究小样本学习、迁移学习、元学习等技术,在低资源条件下实现有效的知识注入和利用。利用LLM的泛化能力辅助构建和增强小型KG。
    • 论文方向: “Few-Shot KG-Augmented LLMs for Specialized Domains”, “Cross-Lingual Knowledge Transfer for LLM-Empowered KG Construction in Low-Resource Languages”。
  6. KG-LLM融合的自动化与自适应调优:

    • 空白点: 当前融合策略往往需要大量人工设计和调优(如Prompt工程、检索策略选择、模型结构调整)。如何自动化地根据任务特性和数据特点选择最优的融合策略,并进行自适应优化。
    • 潜力: 探索AutoML、强化学习等技术,用于自动化设计KG-LLM融合流程,优化超参数,甚至动态调整融合模块。
    • 论文方向: “Automating the Fusion: An AutoML Framework for Optimal KG-LLM Integration”, “Adaptive Knowledge Retrieval and Fusion for LLMs using Reinforcement Learning”。
  7. 伦理、偏见与鲁棒性研究:

    • 空白点: KG本身可能带有偏见,LLM也可能放大这些偏见。如何检测、量化和缓解KG-LLM融合系统中的偏见,并增强其对抗攻击的鲁棒性。
    • 潜力: 开发公平性感知的KG构建方法、偏见缓解的融合算法、以及针对融合模型的鲁棒性评估基准和增强技术。
    • 论文方向: “Fairness and Bias in KG-Enhanced Large Language Models”, “Robustness of Neuro-Symbolic Systems: An Investigation into KG-LLM Adversarial Attacks and Defenses”。

参考论文与综述:

  • 综述类:
    • Pan, S., Luo, L., Wang, Y., Chen, C., Wang, J., & Wu, X. (2024). Unifying Large Language Models and Knowledge Graphs: A Roadmap. IEEE Transactions on Knowledge and Data Engineering. (或其他同类权威期刊/会议的最新综述)
    • Dai, Y., Wang, S., Xiong, C., & Li, J. (Year). A Survey on Knowledge Graph-Enhanced Large Language Models. arXiv preprint. (搜索arXiv上近期的相关综述)
  • KG增强LLM (RAG方向):
    • Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., Goyal, N., … & Kiela, D. (2020). Retrieval-augmented generation for knowledge-intensive nlp tasks. Advances in Neural Information Processing Systems, 33, 9459-9474. (奠基性RAG论文)
  • LLM赋能KG:
    • Wei, J., Wang, X., Schuurmans, D., Bosma, M., Ichter, B., Xia, F., … & Zhou, D. (2022). Chain-of-thought prompting elicits reasoning in large language models. Advances in Neural Information Processing Systems, 35, 24824-24837. (虽然不是直接针对KG,但CoT对复杂任务分解和LLM用于KG构建有启发)
    • 相关会议如ACL, EMNLP, NAACL, AAAI, IJCAI, WWW, ISWC, ESWC, KDD等会持续有相关论文发表。

Conclusion

知识图谱与大语言模型的融合是当前人工智能领域具有潜力的发展方向。它不仅为解决各自的固有缺陷提供了新思路,更为构建下一代更智能、更可信、更通用的AI系统铺平了道路。尽管目前仍面临诸多挑战,但随着技术的不断进步和创新,KG-LLM的融合将在科研和产业界催生出更多突破性的成果。

相关文章:

知识图谱(KG)与大语言模型(LLM)

知识图谱(KG)以其结构化的知识表示和推理能力,为大语言模型(LLM)的“幻觉”、知识更新滞后和可解释性不足等问题提供了有力的解决方案。反过来,LLM的强大文本理解和生成能力也为KG的构建、补全、查询和应用…...

LLM大语言模型系列1-token

一,什么是token 1,什么是token: 参考:https://en.wikipedia.org/wiki/Token https://en.wikipedia.org/wiki/Lexical_analysis#Token 我们有很多描述token的解释,建议是汇总在一起进行综合理解: 1️⃣To…...

数据清洗-案例

四)实现代码 在之前的项目的基础之上,重写去写一个包,并创建两个类:WebLogMapper和WebLogDriver类。 (1)编写WebLogMapper类 package com.root.mapreduce.weblog; import java.io.IOException; import…...

项目的部署发布和访问的流程

首先打包项目: npm run build 打包后的文件会生成在dist文件夹中,将dist文件夹需要放到服务器里面,意味着服务有dist静态资源(index.html,css/,js/,img/) 用户在浏览器输入域名&am…...

人工智能、机器学习、深度学习定义与联系

人工智能、机器学习、深度学习定义与联系目录 一、人工智能(Artificial Intelligence, AI)1、定义2、特征:3、关键阶段的概述:1. 萌芽期(1940s–1950s):理论奠基2. 形成期(1950s–19…...

Gartner《如何将生成式人工智能(GenAI)集成到应用架构》学习心得

针对软件架构师、技术专业人士如何更好的把 GenAI 如何融入解决方案,提升用户体验、生产力并带来差异化成果的趋势,Gartner发布了《Integrating GenAI Into Your Application Architecture》研究报告。 报告首先介绍了 GenAI 的发展背景,指出其已成为主流趋势,大型语言模型…...

vscode中Debug c++

在vscode中Debug ros c程序 1 在Debug模式下编译 如果用命令行catkin_make,在输入catkin_make时加上一个参数: catkin_make -DCMAKE_BUILD_TYPEDebug 或者直接修改CMakelist.txt,添加以下代码: SET(CMAKE_BUILD_TYPE "D…...

c++从入门到精通(六)--特殊工具与技术-完结篇

特殊工具与技术-完结篇 控制内存分配 重载new和delete: ​ 如果应用程序希望控制内存分配的过程,则它们需要定义自己的operator new函数和operator delete函数。当自定义了全局的operator new函数和operator delete函数后,我们就担负起了控…...

原型链的详细解释及使用场景

一、原型链的概念 原型链是JavaScript实现继承和属性共享的核心机制。每个对象都有一个内部属性[[Prototype]](可通过proto访问),指向其原型对象。当访问对象的属性时,若对象自身不存在该属性,则会沿着原型链向上查找…...

OpenCL C C++核心对象与属性对比

基础对象对应关系 OpenCL C 对象OpenCL C 对应类型创建函数示例cl::Platformcl_platform_idclGetPlatformIDs(1, &platform, NULL)cl::Devicecl_device_idclGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL)cl::Contextcl_contextclCreateContext(NULL,…...

Azure 机器学习初学者指南

Azure 机器学习初学者指南 在我们的初学者指南中探索Azure机器学习,了解如何设置、部署模型以及在Azure生态系统中使用AutoML & ML Studio。Azure 机器学习 (Azure ML) 是一项全面的云服务,专为机器学习项目生命周期而设计&am…...

一文读懂----Docker 常用命令

Docker 是一个强大的容器化平台,广泛用于开发、测试和生产环境。通过 Docker 命令行工具(CLI),我们可以轻松管理容器、镜像、网络和卷等资源。本文将详细介绍 Docker 的常用命令,带你熟练掌握 Docker 的核心操作命令。…...

React 19 中的useRef得到了进一步加强。

文章目录 前言一 useRef 的核心原理1.1 为什么需要 useRef?1.2 基本语法 二、React 19 中 useRef 的常见用法2.1 访问 DOM 元素2.2 保存跨渲染的数据 三、React 19 中的改进ref 作为一个属性案例演示(触发子组件焦点事件) 注意 总结 前言 在 React 的世界里&#x…...

报错System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)”

this.hWindowControl_Player new HalconDotNet.HWindowControl();报错System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)” System.BadImageFormatException 错误通常是由于平台架构不匹配导致的。它意味着你正在尝试在一个平台上加…...

【图像处理基石】OpenCV中都有哪些图像增强的工具?

OpenCV 图像增强工具系统性介绍 OpenCV 提供了丰富的图像增强工具,主要分为以下几类: 亮度与对比度调整 线性变换(亮度/对比度调整)直方图均衡化自适应直方图均衡化(CLAHE) 滤波与平滑 高斯滤波中值滤波双…...

Nordic 的RTC(Real-time counter)的介绍

目录 概述 1 RTC(Real-time counter)介绍 1.1 框架结构 1.2 时钟源 1.3 分辨率与溢出和precaler 2 寄存器功能介绍 2.1 计数寄存器 2.2 事件控制功能 2.3 比较功能 2.4 读取COUNTER寄存器 概述 本文主要介绍Nordic 的RTC(Real-time…...

【数据结构】2-2-2 顺序表的插入删除查找

数据结构知识点合集 知识点 顺序表的插入 ListInsert(&L,i,e)&#xff1a;插入操作。在表L中的第i个位置上插入指定元素e。 /*在顺序表L的第i个位置插入元素e*/ bool ListInsert(SqList &L,int i,int e) {/*判断i的范围是否有效*/if(i<0||i>L.length)return fals…...

【免杀】C2免杀技术(五)动态API

一、什么是动态API 在C2免杀领域中&#xff0c;“动态API” 主要指的是绕过静态检测的一种技术手段&#xff0c;其本质是运行时动态解析和调用Windows API函数&#xff0c;而不是在程序编译阶段就明确引用这些API。这种方式可以有效躲避静态分析工具和杀软的签名识别。 为什么…...

77.数据大小端赋值的差异与联系

上述赋值a定义为大端模式 a[7] a[6] a[5] a[4] a[3] a[2] a[1] a[0] 上述赋值b定义为小端模式 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 因为5的二进制数…...

GO语言语法---switch语句

文章目录 基本语法1. 特点1.1 不需要break1.2 表达式可以是任何类型1.3 省略比较表达式1.4 多值匹配1.5 类型switch1.6 case穿透1.7 switch后直接声明变量1.7.1 基本语法1.7.2 带比较表达式1.7.3 不带比较表达式1.7.4 结合类型判断 1.8 switch后的表达式必须与case语句中的表达…...

PH热榜 | 2025-05-16

1. Tolt 标语&#xff1a;专为SaaS初创公司打造的一体化联盟营销软件 介绍&#xff1a;Tolt帮助SaaS初创公司启动和发展联盟计划。它提供自动化的支付、欺诈保护、与多种平台的无缝集成&#xff08;包括Stripe、Paddle和Chargebee&#xff09;&#xff0c;还有一个品牌化的联…...

Java正则表达式:从基础到高级应用全解析

Java正则表达式应用与知识点详解 一、正则表达式基础概念 正则表达式(Regular Expression)是通过特定语法规则描述字符串模式的工具&#xff0c;常用于&#xff1a; 数据格式验证文本搜索与替换字符串分割模式匹配提取 Java通过java.util.regex包提供支持&#xff0c;核心类…...

iOS 初识RunLoop

iOS 初识RunLoop 文章目录 iOS 初识RunLoopRunLoop的概念RunLoop的功能RunLoop和线程的关系RunLoop的结构ModeObserverTimer 和 source小结 RunLoop的核心RunLoop的流程RunLoop的应用AutoreleasePool响应触控事件刷新界面常驻线程网络请求NSTimer 和 CADisplayLinkNSTimerGCDTi…...

备忘录模式

1.意图 备忘录模式是一种行为型设计模式&#xff0c;允许在不破坏封装的特性前提&#xff0c;获取并保存一个对象的内部状态&#xff0c;后续需要时恢复该状态。核心是将对象的状态存储在一个独立的备忘录对象中&#xff0c;并在需要时恢复。 2.模式类型 行为型对象设计模式 …...

UCOS 嵌入式操作系统

UCOS 嵌入式操作系统是一款在嵌入式领域应用广泛且具有重要地位的实时操作系统&#xff0c;以下是对它的详细介绍。 发展历程 初始版本诞生&#xff1a;UCOS 最早由美国嵌入式系统专家 Jean J. Labrosse 于 1991 年开始开发。当时他在项目中需要一个合适的实时操作系统&#…...

redis读写一致问题

title: redis读写一致问题 date: 2025-05-18 11:11:31 tags: redis categories: redis的问题方案 Redis读写一致问题 条件: 数据库此时的数据为10,redis此时的数据也为10 业务流程: 操作数据库使得数据库的数据为20&#xff0c;删除redis里面的数据保证读写一致 先删缓存…...

Redis实现分布式锁的进阶版:Redisson实战指南

一、为什么选择Redisson&#xff1f; 在上一篇文章中&#xff0c;我们通过Redis原生命令实现了分布式锁。但在实际生产环境中&#xff0c;这样的基础方案存在三大痛点&#xff1a; 锁续期难题&#xff1a;业务操作超时导致锁提前释放不可重入限制&#xff1a;同一线程无法重复…...

标准库、HAl库和LL库(PC13初始化)

标准库 (Standard Peripheral Library) c #include "stm32f10x.h"void GPIO_Init_PC13(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStruct.GPIO_Pin GPIO_Pin_13;GPIO_InitStruct.GPIO_Mode GPIO_…...

第二章:安卓端启动流程详解与疑难杂症调试手册

想让一个安卓项目跑起来&#xff0c;从表面看无非就是&#xff1a;双击打开、连接真机、点击运行。 但是到了互动娱乐组件项目里&#xff0c;事情就变成了&#xff1a;点击运行→等待→黑屏→白屏→强制退出→LogCat爆炸→你怀疑人生。 本章就来系统性解决几个问题&#xff1…...

备份C#的两个类

GuestIP依赖项&#xff1a; using System.Data.SQLite; //这是第三方依赖项&#xff0c;要从nuget下载 static class GuestIP {public static void ReadLastGuestIP(string constr "Data Sourceguestip_log.db;"){using (var connection new SQLiteConnection(co…...

通过串口设备的VID PID动态获取串口号(C# C++)

摘要 本篇文章主要介绍分别通过C#和C++使用设备VID PID如何动态获取COM口 目录 1 简述 2 VID PID查看方式 3 C#实现通过串口设备的VID PID动态获取串口号 3.1 辅助类实现 3.2 调用实例 4 C++实现通过串口设备的VID PID动态获取串口号 4.1 辅助类实现 4.2 调用实例 1 简…...

C语言指针深入详解(二):const修饰指针、野指针、assert断言、指针的使用和传址调用

目录 一、const修饰指针 &#xff08;一&#xff09;const修饰变量 &#xff08;二&#xff09;const 修饰指针变量 二、野指针 &#xff08;一&#xff09;野指针成因 1、指针未初始化 2、指针越界访问 3、指针指向的空间释放 &#xff08;二&#xff09;如何规避野指…...

《P5283 [十二省联考 2019] 异或粽子》

题目描述 小粽是一个喜欢吃粽子的好孩子。今天她在家里自己做起了粽子。 小粽面前有 n 种互不相同的粽子馅儿&#xff0c;小粽将它们摆放为了一排&#xff0c;并从左至右编号为 1 到 n。第 i 种馅儿具有一个非负整数的属性值 ai​。每种馅儿的数量都足够多&#xff0c;即小粽…...

C#自定义扩展方法 及 EventHandler<TEventArgs> 委托

有自定义官方示例链接&#xff1a; 如何实现和调用自定义扩展方法 - C# | Microsoft Learn 1.静态类 2.静态方法 3.第一参数固定为this 要修改的类型,后面才是自定的参数 AI给出的一个示例&#xff1a;没有自定义参数 、有自定义参数的 using System; using System.Colle…...

oracle 资源管理器的使用

14.8.2资源管理器的使用 资源管理器控制CPU资源使用说明&#xff1a;  第一种分配方法&#xff1a;EMPHASIS CPU 分配方法确定在资源计划中对不同使用者组中的会话的重视程度。CPU占用率的分配级别为从1 到8&#xff0c;级别1 的优先级最高。百分比指定如何将CPU 资源分配给每…...

(二十一)Java集合框架源码深度解析

一、集合框架概述 Java集合框架(Java Collections Framework, JCF)是Java语言中用于存储和操作数据集合的一套标准架构。它提供了一组接口、实现类和算法&#xff0c;使开发者能够高效地处理各种数据结构。 1.1 集合框架的历史演变 在Java 1.2之前&#xff0c;Java只有几种简…...

spark数据的提取和保存

Spark数据提取和保存 一、数据提取&#xff08;读取数据&#xff09; 1. 读取文件&#xff08;文本、CSV、JSON等&#xff09; scala // 读取文本文件 val textData spark.read.text("路径/文件.txt") // 读取CSV文件&#xff08;带表头&#xff09; val csvD…...

Graphics——基于.NET 的 CAD 图形预览技术研究与实现——CAD c#二次开发

一、Graphics 类的本质与作用 Graphics 是 .NET 框架中 System.Drawing 命名空间下的核心类&#xff0c;用于在二维画布&#xff08;如 Bitmap 图像&#xff09;上绘制图形、文本或图像。它相当于 “绘图工具”&#xff0c;提供了一系列方法&#xff08;如 DrawLine、FillElli…...

vue3_flask实现mysql数据库对比功能

实现对mysql中两个数据库的表、表结构、表数据的对比功能, 效果如下图 基础环境请参考 vue3flasksqlite前后端项目实战 代码文件结构变化 api/ # 后端相关 ├── daos/ │ ├── __init__.py │ └── db_compare_dao.py # 新增 ├── routes/ │ ├── _…...

【数据结构】2-3-1单链表的定义

数据结构知识点合集 知识点 单链表存储结构 优点&#xff1a;不要求大片连续空间&#xff0c;改变容量方便&#xff1b;缺点&#xff1a;不可随机存取&#xff0c;要耗费一定空间存放指针 /*单链表节点定义*/ typedef struct LNode{ElemType data;struct LNode *next; }LNo…...

面试题总结一

第一天 1. 快速排序 public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {// 分区操作&#xff0c;获取基准元素的最终位置int pivotIndex partition(arr, low, high);// 递归排序基准元素左边的部分quickSort(arr, …...

Ubuntu24.04下安装ISPConfig全过程记录

今天在网上看到ISPConfig&#xff0c;觉得不错&#xff0c;刚好手里又有一台没用的VPS,就顺手安装一个玩玩。具体安装步骤如下&#xff1a; 一、配置服务器hosts及hostname 【安装时候需要检查】 使用root账号登录VPS后 先安装vim编辑器&#xff0c;然后编辑hosts&#xff0…...

【NGINX】 -10 keepalived + nginx + httpd 实现的双机热备+ 负载均衡

文章目录 1、主架构图1.1 IP地址规划 2、web服务器操作3、配置nginx服务器的负载均衡4、配置keepalived4.1 master4.1 backup 5、测试双机热备5.1 两台keepalived服务器均开启5.2 模拟master节点故障 1、主架构图 1.1 IP地址规划 服务器IP地址web1192.168.107.193web2192.168.…...

NC016NC017美光固态芯片NC101NC102

NC016NC017美光固态芯片NC101NC102 在存储技术的演进历程中&#xff0c;美光科技的NC016、NC017、NC101与NC102系列固态芯片&#xff0c;凭借其技术创新与市场适应性&#xff0c;成为行业关注的焦点。本文将从技术内核、产品性能、行业动向、应用场景及市场价值五个维度&#…...

C++(22):fstream的一些成员函数

目录 1 遍历读取文件 1.1 eof()方法 2 读取文件大小 2.1 seekg() 2.2 tellg() 2.3 代码实例 3 存取文字 3.1 read() 3.2 write() 3.3 代码实例 3.3.1 存取文字 3.3.2 特殊方法存储 3.3.3 特殊方法读取 4 重载的输入输出 4.1 重载的输出 << 4.2 重载的输…...

【网络】Wireshark练习3 analyse DNS||ICMP and response message

ip.addr 172.16.0.100 && ip.addr 172.16.0.5 && (dns || icmp) 包号 22–31 之所以被选中&#xff0c;是因为在整个抓包文件里&#xff0c;与执行 ping cat.inx251.edu.au 这一事件相关的所有报文&#xff0c;恰好连续出现在第 22 到第 31 条记录中。具体分…...

GBS 8.0服装裁剪计划软件在线试用

1、全新升级内核8.0&#xff0c;分床更合理&#xff0c;铺布床数更少&#xff1b; 2、支持SS AUTONESTER排料引擎切换 3、支持ASTM AAMA及国产CAD&#xff08;如布衣&#xff09;导出的DXF&#xff0c;Prj文件等 4、核心引擎优化 拖料优化 省料优化 5、经实战对比人工&…...

顺 序 表:数 据 存 储 的 “ 有 序 阵 地 ”

顺 序 表&#xff1a;数 据 存 储 的 “ 有 序 阵 地 ” 线 性 表顺 序 表 - - - 顺 序 存 储 结 构顺 序 表 的 操 作 实 现代 码 全 貌 与 功 能 介 绍顺 序 表 的 功 能 说 明代 码 效 果 展 示代 码 详 解SeqList.hSeqList.ctest.c 总 结 &#x1f4bb;作 者 简 介&#xf…...

#Redis黑马点评#(七)实战篇完结

目录 一 达人探店 1 发布探店笔记 2 查看探店笔记 3 点赞功能 ​编辑 4 点赞排行榜&#xff08;top5&#xff09; ​编辑 二 好友关注 1 关注与取关 2 共同关注 3 Feed流实现关注推送 4 实现滚动分页查询 三 附近商店 1 GEO数据结构 2 附近商户搜索功能 四 用户…...

初始C++:类和对象(中)

概述&#xff1a;本篇博客主要介绍类和对象的相关知识。 1. 类的默认成员函数 默认成员函数就是用户没有显示实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;在不写任何代码的情况下编译器会默认生成以下六个默认函数&#xff0c;在六个默认…...