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

基于编程语言的知识图谱表示增强大模型推理能力研究,一种提升LLM推理准确率达91.5%的结构化数据方法

基于编程语言的知识图谱表示增强大模型推理能力研究,一种提升LLM推理准确率达91.5%的结构化数据方法

    • 理解
    • 数据分析
    • 全流程
    • 提问
      • 问题:知识的表示方式如何影响模型的推理能力?
      • 问题:为什么编程语言会是一个更好的知识表示选择?
      • 问题:什么是"好的"知识表示方式的关键特征?
      • 问题:为什么自然语言表示知识图谱会导致模型产生幻觉?
      • 问题:编程语言相比自然语言和JSON,在结构上有什么本质区别?
      • 问题:如何理解"结构化表示"和"推理能力"之间的关系?
      • 问题:为什么动态表示比静态表示在某些场景下更有优势?
      • 问题:这种方法对模型训练有什么特殊要求?
      • 问题:是否存在一种"最优"的知识表示方式?

 

论文:Thinking with Knowledge Graphs: Enhancing LLM Reasoning Through Structured Data

理解

Why(背景理由):
大语言模型虽然强大,但在进行多步推理时容易产生幻觉,就像一个聪明但记性不太好的人,需要给它一个清晰的思路框架。

What(主题):
用编程语言而不是自然语言来表达知识关系,就像给模型一个严格的操作手册,而不是模糊的口头指令。

How(方法和例子):

  1. 比如我们要告诉模型"It Goes Like It Goes这首歌的作曲家的配偶是谁",用Python代码可以清楚地定义每一步:先找作曲家,再找配偶。

  2. 这就像是给模型一个带有明确路标的地图,而不是模糊的"往前走,到一个路口右转"这样的指示。

  3. 我们让模型使用字典这样的数据结构,就像给它一个有序的抽屉,每个关系都放在固定的位置。

  4. 实验证明,这种方法让模型的推理准确率提高到了91.5%,比用自然语言描述提高了很多。

How good(总结):
这种方法不仅提高了模型的推理准确性,更重要的是提供了一种可靠的知识表达方式,就像给模型配了一副更清晰的眼镜。

 
第一块:问题背景

  • AI模型很聪明但推理容易出错
  • 特别是在需要多步推理的复杂问题上
  • 容易产生虚假信息

第二块:现有方案

  • 方案一:用神经网络处理图(GNN)
GNN 问题:
- 需要把实体转换为向量,信息可能失真
- 训练复杂,需要大量调参
- 每换一个图都要重新训练
  • 方案二:用数据库查询语言(SPARQL)
问题:
- LLM需要先生成SPARQL查询语句
- 推理过程被分成两步:生成查询和执行查询
- 容易在查询生成环节出错
  • 方案三:用自然语言描述关系
问题:
- "David Shire创作了'It Goes Like It Goes'。Didi Conn是David Shire的妻子。"
- 结构信息被打散,容易引入歧义
- 上下文过长时难以准确找到关系

传统方案要么太复杂(GNN),要么不够精确(自然语言),要么间接易错(SPARQL)。

第三块:创新方案

  • 用Python表示知识关系
  • 设计专门的数据结构
  • 实现多步推理函数

第四块:验证效果

  • 在不同数据集上测试
  • 与大模型基准对比
  • 评估推理准确性
Q1:如何让LLM更准确地进行多步推理?
├── Q1.1:为什么现有方案效果不够好?
│   ├── GNN方案:需要复杂调优,难以泛化
│   ├── SPARQL方案:推理过程被割裂
│   └── 自然语言方案:结构信息损失
│
├── Q1.2:如何保持知识的结构化表示?
│   ├── 使用编程语言的数据结构
│   └── 设计专门的知识库类
│
└── Q1.3:如何确保推理过程可控?├── 实现显式的推理函数└── 设计可验证的执行流程

 


数据分析

这篇论文提出了一种新的方法来提升大语言模型的推理能力 - 使用编程语言(Python)来表示知识图谱。研究的主要结果包括:

  1. 基础模型与优化后的比较:
  • Llama-3.1-8B基础模型(零样本提示): 16.3%准确率
  • 使用Python动态表示方法优化后: 67.9%准确率
  • 提升了超过3倍的性能
  1. 不同表示方法的对比(单样本提示):
  • 自然语言表示: 44.6%准确率
  • JSON格式: 26.1%准确率
  • Python静态表示: 59.9%准确率
  • Python动态表示: 67.9%准确率

主要创新点:

  1. 首次使用编程语言来表示知识图谱并用于大模型训练
  2. 证明了合适的知识表示方法可以显著提升模型推理能力
  3. 较小的模型(8B参数)经过优化后,在某些任务上可以达到甚至超过大模型(70B参数)的表现

研究意义:

  • 表明知识的表示方式对模型性能的影响可能比模型大小更重要
  • 提供了一种成本效益更高的方案 - 通过改进知识表示而不是增加模型规模来提升性能
  • 为减少模型幻觉提供了新思路,通过结构化的编程语言表示来约束模型推理

这种方法之所以有效,主要是因为:

  1. 编程语言提供了更严格和明确的结构
  2. 大语言模型在预训练中已经接触过代码,更容易理解这种表示
  3. Python的数据结构能更好地保留知识图谱的结构信息

 


全流程

知识图谱的编程语言表示 = Python静态表示 + Python动态表示

问题:

  • 大语言模型在复杂推理时容易产生幻觉
  • 需要提升多跳推理的准确性

与现有方法的主要区别:

  • 传统方法:使用自然语言或JSON表示知识图谱
  • 本文方法:使用编程语言表示,利用代码结构增强推理能力

子解法拆解:

在这里插入图片描述

  1. Python静态表示(因为需要简单直接的数据结构)
relationships = {'r1': {'e1': 'e2'},'r2': {'e2': 'e3'}
}

之所以用静态表示,是因为简单的关系可以直接用字典结构表示。

  1. Python动态表示(因为需要处理复杂的推理逻辑)

在这里插入图片描述

class KnowledgeBase:def infer(self, entity, *relations):# 动态推理逻辑

之所以用动态表示,是因为复杂推理需要灵活的类结构和方法。
在这里插入图片描述
发现的规律:

  • 所有多跳推理都遵循相同的模式:沿着关系链往前走
  • 可以用一个统一的函数来处理任意长度的推理链
  • 显著减少了代码复杂度

提问

问题:知识的表示方式如何影响模型的推理能力?

答案:根据论文研究,知识的表示方式直接影响模型的推理准确性和可靠性。

实验表明,不同的表示方式(自然语言、JSON、Python)会导致不同的推理性能。

例如,使用Python表示的知识图谱在Dataset 1上的两跳推理准确率达到91.5%,而自然语言表示只有87.4%。

问题:为什么编程语言会是一个更好的知识表示选择?

答案:编程语言是更好的选择主要有三个原因:

  1. 编程语言本身就是预训练数据的一部分,模型已经理解其语法和语义;

  2. 编程语言提供了严格的结构化表示,可以准确编码实体关系;

  3. 编程语言允许通过定义数据结构和函数来控制推理过程。

问题:什么是"好的"知识表示方式的关键特征?

答案:根据论文,好的知识表示方式应该:

  1. 保持结构信息的完整性;

  2. 能够无歧义地表达实体间的关系;

  3. 易于模型理解和处理;

  4. 支持复杂推理过程;

  5. 具有可扩展性以处理更复杂的关系。

问题:为什么自然语言表示知识图谱会导致模型产生幻觉?

答案:自然语言表示容易引入歧义,缺乏严格的结构约束。

当描述复杂关系时,自然语言的模糊性可能导致模型产生不准确的推理或填补信息空缺,从而产生幻觉。

问题:编程语言相比自然语言和JSON,在结构上有什么本质区别?

答案:编程语言提供了更丰富的数据结构和控制流程。

它不仅可以存储数据(如JSON),还可以定义实体类、关系类,并通过函数实现推理逻辑。

这种结构化程度更高,也更容易控制推理过程。

问题:如何理解"结构化表示"和"推理能力"之间的关系?

答案:结构化表示为推理提供了清晰的路径和约束。

通过明确的数据结构和推理步骤,模型可以更准确地追踪关系链,减少错误推理的可能性。

实验显示,更结构化的表示(如Python)能带来更好的推理性能。

问题:为什么动态表示比静态表示在某些场景下更有优势?

答案:动态表示(如Python类)更灵活,可以根据需要添加新的实体和关系,支持属性的动态添加和复杂的推理规则。

这对于处理复杂的知识图谱子图和多跳推理特别有用。

问题:这种方法对模型训练有什么特殊要求?

答案:论文采用了LoRA进行参数高效微调,只需要一轮训练。

模型需要理解编程语言语法,但由于这些已经包含在预训练数据中,因此不需要额外的特殊训练。

问题:是否存在一种"最优"的知识表示方式?

答案:论文表明不存在单一的"最优"表示方式。

不同场景可能需要不同的表示方式。

Python表示在实验中总体表现最好,但对于简单的关系,自然语言表示也可能足够。

选择取决于具体任务的复杂度和要求。

相关文章:

基于编程语言的知识图谱表示增强大模型推理能力研究,一种提升LLM推理准确率达91.5%的结构化数据方法

基于编程语言的知识图谱表示增强大模型推理能力研究,一种提升LLM推理准确率达91.5%的结构化数据方法 理解数据分析全流程提问问题:知识的表示方式如何影响模型的推理能力?问题:为什么编程语言会是一个更好的知识表示选择&#xff…...

【北京迅为】iTOP-4412全能版使用手册-第七十章 Linux内核移植

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

使用 ASP.NET Core wwwroot 上传和存储文件

在 ASP.NET Core 应用程序中上传和存储文件是用户个人资料、产品目录等功能的常见要求。本指南将解释使用wwwroot存储图像(可用于文件)的过程以及如何在应用程序中处理图像上传。 步骤 1:设置项目环境 确保您的 ASP.NET 项目中具有必要的依…...

什么是 Azure OpenAI ?了解微软 Azure OpenAI 和 OpenAI 的关系

一、什么是Azure OpenAI ? 微软已与 OpenAI 合作以实现三个主要目标: ⦿利用 Azure 的基础结构(包括安全性、合规性和区域可用性),帮助用户构建企业级应用程序。 ⦿在微软产品(包括 Azure AI 产品以及以外…...

Flink CDC 自定义函数处理 SQLServer XML类型数据 映射 doris json字段方案

Flink CDC 自定义函数处理 SQLServer XML类型数据方案 1. 背景 因业务使用SQLServer数据库,CDC同步到doris 数仓。对于SQLServer xml类型,doris没有相应的字段对应, 可以使用json来存储xml数据。需要进行一步转换。从 flink 自定义函数入手…...

导致启动nacos报错Caused by: java.lang.IllegalStateException: No DataSource set 的两种原因

Java资深小白,不足之处,或者有任何错误欢迎指出。 --蓝紫报错代码如下: C:\Windows\System32>cd D:\nacos-server-2.2.3\nacos\binC:\Windows\System32>d:D:\nacos-server-2.2.3\nacos\bin>startup.cmd -m standalone "nacos is starting…...

mysql乱码、mysql数据中文问号

网上排出此错误方法的很多,但是 都不简洁,找不到根本原因 主要排查两点: 1.代码中jdbc链接的编码规则 urljdbc:mysql://localhost:3306/title?useUnicodetrue&characterEncodingutf8 将characterEncoding设置为utf8 2.设置mysq…...

python RAG 管道

RAG(RetrievalAugmented Generation)管道是一种结合了信息检索(Retrieval)和文本生成(Generation)的技术框架,主要用于生成高质量、基于事实的文本。它通过从外部知识源(如文档、数据…...

018-spring-基于aop的事务控制

1 先配置平台事务管理器 2 在配置 spring提供的advice 3 事务增强的aop 总结&#xff1a; 事务就是要做2个配置&#xff1a; <!-- 1 开启事务管理器 不同的框架对应不同的事务管理器 --> <bean id"transactionManager" class"org.springframework.j…...

HTML 轮播图(Carousel)详细讲解

HTML 轮播图&#xff08;Carousel&#xff09;详细讲解 轮播图&#xff08;Carousel&#xff09;是一种常见的用户界面组件&#xff0c;用于在同一位置展示多个图像或内容&#xff0c;允许用户通过滑动或自动播放的方式查看不同的内容。它通常用于展示产品、图片、广告等。 1…...

计算机网络-数据链路层(ppp协议)

2.2 ppp协议 点对点协议ppp是目前使用最广泛的点对点数据链路层协议。 2.3 媒体接入控制基本概念 共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用&#xff0c;即媒体接入控制MAC。 2.3.1 静态划分信道 频分复用 时分复用 波分复用 码分复…...

如何优化Python网络爬虫的数据清洗流程,以提升数据质量并有效应对网站反爬虫机制?

优化爬虫数据清洗流程&#xff0c;应对反爬虫机制 一、数据清洗的重要性 在网络爬虫中&#xff0c;数据清洗是关键环节。打个比方&#xff0c;我们从网页抓取到的原始数据就像一堆杂乱的杂物&#xff0c;里面有各种格式、错误和重复信息。比如抓取到的文本可能包含HTML标签、…...

QSharedMemory 实现数据exe间共享

定义共享数据结构 首先&#xff0c;需要定义一个结构体来包含要共享的数据。这个结构体应该包含所有需要在多个类的实例之间共享的成员变量 struct SharedData {int intValue;QString stringValue;// 可以添加更多需要共享的成员变量}; 使用 QSharedMemory 进行数据共享 在写…...

强化学习(1)

Reinforcement Learning Goal-directed learing from ineraction with the environment. 1. Basic Element 基本元素 1.1 Agent 玩家 1.2 Environment 1.3 Goal 2. Main Element 主要元素 2.1 State 2.2 Action 状态与行为往复 2.3 Reward 目标&#xff1a;最大化总…...

Spring Boot 嵌套事务详解及失效解决方案

在复杂的业务场景中&#xff0c;嵌套事务可以帮助我们更加精细地控制数据的一致性。然而&#xff0c;在 Spring Boot 中&#xff0c;如果嵌套事务的配置不当&#xff0c;可能会导致事务不生效的问题&#xff0c;尤其是在同一个类中进行方法调用时。 本文将详细介绍嵌套事务的原…...

IDEA 社区版 SpringBoot不能启动

报错原因&#xff0c;Failed to load class [javax.servlet.Filter] <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope> </dependency>…...

【SQL server】教材数据库(4)

学生&#xff08;学号&#xff0c;年龄&#xff0c;性别&#xff0c;系名&#xff09; 教材&#xff08;编号&#xff0c;书名&#xff0c;出版社编号&#xff0c;价格&#xff09; 订购&#xff08;学号&#xff0c;书号&#xff0c;数量&#xff09; 出版社&#xff08;编…...

px、em、rem,vw区别介绍

在网页设计中&#xff0c;px、em、rem 和 vw 都是常用的 CSS 单位&#xff0c;它们各自有不同的用途和特性。下面是这些单位的详细介绍及其区别&#xff1a; 1. px&#xff08;像素&#xff09; 定义&#xff1a; px 是最常用的绝对单位&#xff0c;表示屏幕上的一个物理像素…...

pip安装paddle失败

一、pip安装paddle失败&#xff0c;报错如下 Preparing metadata (setup.py) ... error error: subprocess-exited-with-error import common, dual, tight, data, prox ModuleNotFoundError: No module named common [end of output] 二、解决方法&#xff1a; 按照提示安装对…...

QWT 之 QwtPlotDirectPainter直接绘制

QwtPlotDirectPainter 是 Qwt 库中用于直接在 QwtPlot 的画布上绘制图形的一个类。它提供了一种高效的方法来实时更新图表&#xff0c;特别适合需要频繁更新的数据可视化应用&#xff0c;例如实时数据流的显示。 使用 QwtPlotDirectPainter 的主要优势在于它可以绕过 QwtPlot 的…...

编辑音频的基本属性

导入音频 “文件-导入-选择音频”拖到音频轨道创建序列。选择音频&#xff0c;在效果空间可以看到音频的基本属性。 音量的设置 “效果工作区-效果控件-音量”在这里可以控制所有引导的混合音量 静音 静止所有声音 音频仪表 一般位于时间轴的后面&#xff0c;找不到可以…...

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,2-44

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…...

格式化输出年月日

直接上图 结论&#xff1a;老老实实用yyyy&#xff0c;得到的年月日是我们口头上说的时间&#xff0c;而YYYY有点反人类.... 对于一年的最后一周的一些日子&#xff0c;会统计成下一年&#xff1b; 对于下一年的第一周的一些日子&#xff0c;会统计成上一年&#xff1b; 你猜…...

解决Spring boot集成quartz时service注入失败为null的问题

解决Spring boot集成quartz时service注入失败为null的问题 一、报错信息二、代码任务类源代码配置类原代码 三、注入失败原因四、解决的思路11、任务类修改2、配置类修改 五、 解决的思路2 一、报错信息 java.lang.NullPointerException: null at farbun.server.scheduledTask…...

Python 青铜宝剑十六维,破医疗数智化难关(下)

九、模型可靠性的验证秘籍 在医疗数智化进程中,模型可靠性宛如一座灯塔,为精准医疗决策指引方向。以疾病诊断模型为例,一旦模型可靠性存疑,在癌症早期筛查场景下,可能将良性病变误判为恶性,让患者承受不必要的痛苦与恐慌,又或是遗漏细微癌变迹象,延误最佳治疗时机;在…...

初识具身智能

具身智能是智能科学的一个基础问题&#xff0c;在过去的5.4亿年以来&#xff0c;地球上所有生物都是通过身体和环境交互、进化逐步产生的。通俗地讲&#xff0c;具身智能体以第一人称视角身临其境地从环境交互中理解外部世界的本质概念&#xff0c;被认为是通向通用人工智能的重…...

Node 使用pkg打包部署

一、安装pkg(不太好装&#xff0c;需要借助国内镜像) npm install -g pkg --registryhttps://registry.npm.taobao.org 二、配置package.jsonsan // package.json ,配置专门制定pkg的执行入口 { ... "bin": "main.js", "pkg":{"assets&q…...

计算机网络-L2TP Over IPSec基础实验

一、概述 上次我们进行了标准L2TP的配置&#xff0c;但是在最后我们在进行业务流量访问时看到流量是没有进行加密的&#xff0c;这就导致可能得安全风险&#xff0c;所以这里其实可以退像GRE那样调用IPSec框架来进行加密保护。 拓扑 数据不加密 现在需要配置IPSec&#xff0c;然…...

Java工程师实现视频文件上传minio文件系统存储及网页实现分批加载视频播放

Java工程师实现minio存储大型视频文件网页实现分批加载视频播放 一、需求说明 老板给我出个题目&#xff0c;让我把的电影文件上传到minio文件系统&#xff0c;再通过WEB端分配加载视频播放&#xff0c;类似于我们普通的电影网站。小编把Java代码共享出来。是真正的能拿过来直…...

html5css3

1.html5新增语义化标签 <header><nav><article><section><aside><footer> 2.新增多媒体标签 视频<video>格式&#xff1a;map4,webm,ogg <video controls"controls" autoplay"autoplay" muted"mute…...

运维人员的Go语言学习路线

以下是一份更为详细的适合运维人员的Go语言学习路线图&#xff1a; 一、基础环境搭建与入门&#xff08;第 1 - 2 周&#xff09; 第 1 周 环境搭建 在本地开发机和常用的运维服务器环境&#xff08;如 Linux 系统&#xff09;中安装 Go 语言。从官方网站&#xff08;https://…...

怎么在家访问公司服务器?

在日常工作中&#xff0c;特别是对信息技术从业者而言&#xff0c;工作往往离不开公司的服务器。他们需要定期访问服务器&#xff0c;获取一些关键的机密文件或数据。如果您在家办公&#xff0c;并且需要处理未完成的任务&#xff0c;同时需要从公司服务器获取所需的数据&#…...

【linux学习指南】】Ext系列文件系统(三)ext2 文件系统的认识与构成

文章目录 &#x1f4dd;ext2 ⽂件系统&#x1f320; 宏观认识&#x1f309; Block Group &#x1f320;块组内部构成&#x1f309;超级块&#xff08;SuperBlock&#xff09; &#x1f320;GDT&#xff08;GroupDescriptorTable&#xff09;&#x1f309;块位图&#xff08;Blo…...

区块链安全常见的攻击分析——Unprotected callback - ERC721 SafeMint reentrancy【8】

区块链安全常见的攻击分析——Unprotected callback - ERC721 SafeMint reentrancy【8】 1.1 漏洞分析1.2 漏洞合约1.3 攻击分析1.4 攻击合约 重点&#xff1a;MaxMint721 漏洞合约的 mint 函数调用了 ERC721 合约中的 _checkOnERC721Received 函数&#xff0c;触发 to 地址中实…...

Linux中sed命令的使用技巧

一、sed语法介绍 sed命令主要用于文本内容的编辑&#xff0c;默认只处理模式空间&#xff0c;不处理原数据。 命令格式&#xff1a; sed [option] command filename示例&#xff1a;删除空白行 sed ‘/^\s*$/d’ filename option 参数&#xff1a; -n&#xff1a;只有经过sed…...

小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面

文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则&#xff0c;开启外网访问WEB管理和SSH 前言 例如&#xff1a;随着人工智能的不断发展&#xf…...

Flink源码解析之:如何根据JobGraph生成ExecutionGraph

Flink源码解析之&#xff1a;如何根据JobGraph生成ExecutionGraph 在上一篇Flink源码解析中&#xff0c;我们介绍了Flink如何根据StreamGraph生成JobGraph的流程&#xff0c;并着重分析了其算子链的合并过程和JobGraph的构造流程。 对于StreamGraph和JobGraph的生成来说&…...

活动预告 |【Part2】Microsoft 安全在线技术公开课:安全性、合规性和身份基础知识

课程介绍 通过参加“Microsoft 安全在线技术公开课&#xff1a;安全性、合规性和身份基础知识”活动提升你的技能。在本次免费的介绍性活动中&#xff0c;你将获得所需的安全技能和培训&#xff0c;以创造影响力并利用机会推动职业发展。你将了解安全性、合规性和身份的基础知…...

网络基础入门到深入(2):网络协议-TCP/IP协议栈

目录 一.TCP/IP协议栈的四层结构 二.每一层的作用与协议 1.作用层 作用&#xff1a; 常见协议: 示例: 2.传输层 作用: 核心功能: 3.网络层 作用: 核心功能: 常见协议: 示例: 4.数据链路层(物理层) 作用: 核心功能: 常见技术: 示例: 三.TCP/IP协议栈的分层…...

美畅物联丨视频上云网关获取视频流地址供第三方调用的方法

在视频监控与流媒体传输领域&#xff0c;视频流地址的获取与调用是极为关键的环节。视频上云网关作为一款高效且稳定的视频传输设备&#xff0c;为获取视频流地址提供了便捷途径&#xff0c;从而使外部系统或平台能够方便地进行调用。今天我们就来讨论一下如何在视频上云网关上…...

【Cesium】一、cesium简介

文章目录 前言1.什么是Cesium&#xff1f;2.Cesium能做什么&#xff1f;3.Cesium的依赖性4.Cesium学习参考 前言 本人是前端&#xff0c;主要是开发web&#xff0c;使用技术栈Vue、Js。最近因工作需要开始学习使用Cesium&#xff0c;找到一位博主的文章很好&#xff0c;一边学…...

微服务架构介绍

微服务架构是一种现代化的软件架构风格&#xff0c;它将应用程序构建为一组小型、自治的服务&#xff0c;每个服务都运行在其独立的进程中&#xff0c;服务与服务之间通过轻量级通信机制&#xff08;通常是HTTP/RESTful API&#xff09;进行通信。 1. 服务&#xff08;Service&…...

SOLID-开闭原则

单一职责原则&#xff1a;https://blog.csdn.net/dmk877/article/details/143447010 在前面我们学习了单一职责原则&#xff0c;今天来一起学习一下SOLID原则中的开闭原则(Open-Closed Principle, OCP) 通过本篇博客你将学到到以下内容 ①什么是开闭原则 ②如何实现开闭原则 ③…...

Mac 安装 Flutter 提示 A network error occurred while checking

错误信息 A network error occurred while checking "https://maven.google.com/": Operation timed out原因 在中国大陆(由于访问 Google 服务器的限制导致超时),无法连接到 https://maven.google.com/ 解决方案 需要使用镜像网站 #flutter 使用国内的镜像 export …...

Rocky Linux下安装meld

背景介绍&#xff1a; meld是一款Linux系统下的用于 文件夹和文件的比对软件&#xff0c;非常常用&#xff1b; 故障现象&#xff1a; 输入安装命令后&#xff0c;sudo yum install meld&#xff0c;报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…...

Sentinel 介绍与使用指南:构建高可用、可靠的微服务架构

在微服务架构中&#xff0c;服务间的依赖和调用非常复杂&#xff0c;这也带来了高并发、大流量等挑战。 如何确保系统在高负载情况下仍能稳定运行&#xff0c;如何避免某个服务的故障影响整个系统的稳定性&#xff1f;Sentinel&#xff0c;作为一个轻量级的、专为分布式系统设计…...

异步请求在TypeScript网络爬虫中的应用

异步请求的重要性 异步请求是现代网络应用中不可或缺的一部分&#xff0c;特别是在网络爬虫领域。它允许爬虫在等待网络响应的同时继续执行其他任务&#xff0c;从而提高效率和性能。在JavaScript和TypeScript中&#xff0c;异步请求可以通过多种方式实现&#xff0c;包括回调…...

智能商业分析 Quick BI

Quick BI 是阿里云提供的一款智能商业分析&#xff08;BI&#xff09;工具&#xff0c;旨在帮助企业快速获取业务洞察、优化决策过程、提升数据分析效率。通过强大的数据可视化和分析功能&#xff0c;Quick BI 能够帮助用户轻松连接多种数据源、创建多维度的报表和仪表盘&#…...

[算法] [leetcode-75] 颜色分类

75 颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地 对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函…...

抖音短视频矩阵系统源码开发技术解析

开发概览&#xff1a; 抖音短视频矩阵系统的构建基于一系列现代技术栈&#xff0c;主要包括VUE, Spring Boot和Django。本文档旨在为开发者提供关于短视频矩阵系统源代码的开发与部署指南。 技术框架分析&#xff1a; 前端技术选型&#xff1a; 对于前端界面的构建&#xf…...