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

专家系统的基本概念解析——基于《人工智能原理与方法》的深度拓展

一、什么是专家系统

(一)基本思想与定义

1. 核心思想:知识与推理的分离

迄今为止,关于专家系统还没有一个公认的严格定义,一般认为:

(1)它是一个智能程序系统;

(2)它具有相关领域内大量的专家知识;

(3)它能应用人工智能技术模拟人类专家求解问题的思维过程进行推理,解决相关领域内的困难问题,并且达到领域专家的水平。

把以上几点概括起来可以说,所谓专家系统就是一种在相关领域中具有专家水平解题能力的智能程序系统,它能运用领域专家多年积累的经验与专门知识,模拟人类专家的思维过程,求解需要专家才能解决的困难问题。

专家系统(Expert System, ES)核心思想将领域专家的专业知识与推理机制分离,通过构建知识库(Knowledge Base, KB)存储专业知识,利用推理机(Inference Engine, IE)模拟人类专家的决策过程。这一思想源于纽厄尔(Newell)和西蒙(Simon)的“物理符号系统假设”,认为智能行为可通过符号操作实现。 王永庆在《人工智能原理与方法》中指出,专家系统的本质是“基于知识的智能系统”,其优势在于能够高效利用领域知识,解决需要专家水平才能处理的复杂问题,尤其在医疗诊断、工业故障分析等领域表现突出。

2. 形式化定义

从技术层面,专家系统可定义为:ES = (KB, IE, UM, KM, DB) 

其中:

(1)KB:知识库,存储领域知识(如规则、案例、框架等);

(2)IE:推理机,实现知识的逻辑推导与问题求解;

(3)UM:用户界面(User Module),支持人机交互;

(4)KM:知识获取模块(Knowledge Acquisition Module),辅助专家或工程师录入知识;

(5)DB:数据库(Data Base),存储问题相关的事实与证据。

Feigenbaum(1982)进一步强调,专家系统的能力取决于“知识的数量与质量”,而非算法复杂度,即“知识工程(Knowledge Engineering)是核心”。

(二)表示形式与实现过程

1. 知识表示形式

专家系统的知识表示需满足清晰性、可操作性、可维护性,常见形式包括:

(1)产生式规则(Production Rules):最经典的表示方法,形式为 IF P THEN Q [CF],其中 P 是前提条件,Q 是结论或动作,CF(Certainty Factor)为置信度(如医疗诊断中“若体温>38℃且咳嗽,则感冒(CF=0.8)”)。具体可看我的文章:知识表示方法之二:产生式表示法(Production System)_关于知识表示中的产生式表示法的内容-CSDN博客 

(2)框架(Frames):以结构化方式描述对象,包含“槽(Slot)” 和“侧面(Facet)”,如“疾病框架”包含症状槽、治疗槽等,每个槽可定义默认值或约束条件。具体可看我的文章:知识表示方法之三:框架表示法(Frame Representation)_框架知识表示法-CSDN博客 

(3)语义网络(Semantic Network):通过有向图表示概念及关系,节点为概念,边为关系(如“IS-A”“PART-OF”),适用于分类知识表示。具体可看我的文章:知识表示方法之四:语义网络表示法(Semantic Network Representation)-CSDN博客 

(4)逻辑表示(Logical Representation)基于一阶谓词逻辑,如

具体可看我的文章:知识表示方法之一:一阶谓词逻辑表示法(附详细示例)-CSDN博客 

还有很多中知识的表示方法。可以看的CSDN文章。

2. 实现过程:从知识获取到系统部署

专家系统的开发是迭代的知识工程过程,主要步骤如下:

步骤 1:需求分析与领域定义

明确目标任务(如诊断、设计、规划),划定领域边界(如心血管疾病诊断系统不处理骨科问题)。

示例:开发“变压器故障诊断系统”,需确定故障类型(如绕组故障、绝缘老化)、可用数据(如油色谱数据、电压波动)。

步骤 2:知识获取与建模

通过专家访谈、文献分析、案例总结等方式提取知识,并用选定的表示形式建模。

知识获取瓶颈:早期依赖知识工程师手动编码,现代引入机器学习(如决策树归纳、案例推理)辅助自动化获取。

示例规则(变压器故障):

步骤 3:推理机制设计

根据任务类型选择推理策略,如:

(1)正向链(Forward Chaining):数据驱动,从事实出发匹配规则,适用于预测、监控(如“给定患者症状,推导可能疾病”)。

(2)反向链(Backward Chaining):目标驱动,从假设目标反向验证条件,适用于诊断、调试(如“假设患者患流感,验证是否存在发烧、头痛”)。

步骤 4:不确定性处理

若知识存在模糊性或不完整性,需引入不确定性推理方法:

(1)可信度理论(Certainty Factors):MYCIN系统采用的方法,结论置信度计算为:

其中 CF(P) 是前提置信度,CF(规则) 是规则本身的置信度(范围 [-1, 1])。

(2)贝叶斯网络(Bayesian Networks):通过条件概率表表示变量依赖,利用贝叶斯定理计算后验概率,如:

步骤 5:解释模块开发

实现“为什么(Why)”和“如何(How)”的解释功能,增强系统透明度。例如,当用户询问“为何诊断为放电故障”,系统可回溯推理路径,显示触发的规则及证据。

步骤 6:测试与优化

通过真实案例测试准确率,修正知识库中的错误规则或补充缺失知识。

(三)算法描述:推理机制的数学化表达

1. 正向推理算法(Forward Chaining Algorithm)

输入:初始事实集合 F,规则集合 R

输出:推导结论或无解

python代码如下:

def forward_chaining(F, R):used_rules = []while True:matched_rules = [r for r in R if all(condition in F for condition in r.premise)]if not matched_rules:breakfor rule in matched_rules:if rule.conclusion not in F:F.add(rule.conclusion)used_rules.append(rule)if goal in F:  # 假设goal是预设的目标结论return F, used_rulesreturn F, None  # 无解

示例:医疗诊断

初始事实: F = {体温38.5℃, 咳嗽}

规则 R 包含

(1)r1: 体温>38℃ → 发热

(2)r2: 发热 ∧ 咳嗽 → 感冒(CF=0.8)

推理过程

(1)r1 匹配,添加“发热”到 F;

(2)r2 匹配,添加“感冒(CF=0.8)”到 F,推理终止。

2. 反向推理算法(Backward Chaining Algorithm)

输入:目标 G,规则集合 R

输出:支持 G 的事实集合或无解

python代码如下:

def backward_chaining(G, R, known_facts):if G in known_facts:return True, []for rule in R:if rule.conclusion == G:satisfied = Trueused_rules = [rule]for condition in rule.premise:result, sub_rules = backward_chaining(condition, R, known_facts)if not result:satisfied = Falsebreakused_rules.extend(sub_rules)if satisfied:return True, used_rulesreturn False, None

示例:目标 G =感冒,已知事实{体温38.5℃},规则同前。

推理过程

(1)检查“感冒”是否已知,否;

(2)查找结论为“感冒”的规则 r2,其前提为“发热”和“咳嗽”;

(3)递归验证“发热”:匹配规则 r1,前提体温>38℃已知,成立

(4)验证“咳嗽”:未知,询问用户或标记为待确认,若用户补充“咳嗽”,则目标成立。

(四)具体示例:MYCIN 专家系统的诊断流程

MYCIN是20世纪70年代开发的经典医疗诊断系统,用于细菌性脑膜炎诊断,其核心组件包括:

(1)知识库:约600条产生式规则,如:IF (1)感染类型是细菌性, (2)患者是局部感染, (3) 细菌未识别 THEN 细菌可能是链球菌(CF=0.7)

(2)推理机:采用反向链结合可信度计算;

(3)解释模块:可解释推理步骤,如“为了确定细菌类型,我需要知道感染类型是否为细菌性”。

诊断流程:

(1)用户输入:患者症状(如发热、头痛)、检查数据(白细胞计数、脑脊液蛋白含量);

(2)目标设定:推理机设定目标“确定感染细菌类型”;

(3)反向匹配:从目标规则出发,递归检查前提条件,如需要“感染类型”“感染部位” 等信息,部分未知信息通过交互式询问用户获取;

(4)可信度计算:合并多条规则的结论,如不同规则推导同一种细菌时,使用可信度合成公式:

(5)输出结论:给出最可能的细菌类型及治疗建议,同时提供推理依据(如“由于患者脑脊液蛋白升高,且存在发热,故感染类型为细菌性”)。

二、专家系统的基本特征

基本特征

1. 启发性(Heuristic)

特征能运用领域专家的经验性知识(启发性规则),而非仅依赖理论公式

示例:电路故障诊断系统中,规则“若电阻发热异常,则可能接触不良(CF=0.6)”基于工程师经验,而非电路理论推导。

2. 透明性(Transparency)

特征:具备解释功能,可追溯推理过程,回答“为何得出此结论”和“如何得出此结论”。

实现通过记录推理中使用的规则和事实,生成解释文本。如 MYCIN 的解释模块可显示:“规则123被触发,因为患者的白细胞计数超过 10^9/L”。

3. 灵活性(Flexibility)

特征知识库可独立于推理机修改,支持增量式知识更新

优势:当领域知识变化时,只需更新规则库,无需修改推理算法。例如,新增疾病类型时,仅需添加对应规则,推理机无需调整。

4. 高性能(High Performance)

特征在特定领域可达到或接近人类专家水平

数据:早期测试显示,MYCIN 在细菌性感染诊断上的准确率(90%)高于普通医生(70-80%)。

5. 局限性

领域窄化:仅适用于单一领域,缺乏跨领域迁移能力(如医疗系统无法直接用于工业控制);

知识获取瓶颈:依赖专家人工编码,耗时且易出错(据统计,知识获取占专家系统开发成本的 70% 以上)。

专家系统与计算机程序的区别

以上讨论了专家系统的主要特征,从中可加深对什么是专家系统这一问题的理解。另外,虽然专家系统也是一个程序系统,但它与常规的计算机程序又有不同,其主要区别是:

(1)常规的计算机程序是对数据结构以及作用于数据结构的确定型算法的表述,即

常规程序=数据结构+算法

而专家系统是通过运用知识进行推理,力求在问题领域内推导出满意的解答,即

专家系统=知识+推理

(2)常规程序把关于问题求解的知识隐含于程序中,而专家系统则把应用领域中关于问题求解的知识单独地组成一个知识库。也就是说,常规程序将其知识组织为两级,即数据级和程序级,而专家系统则将其知识组织成三级,即数据级、知识库级和控制级

(3)常规程序一般是通过查找或计算来求取问题的答案,基本上是面向数值计算和数据处理的,而且在问题求解过程中先做什么及后做什么都是由程序规定的;而专家系统是通过推理来求取问题的答案或证明某个假设,本质上是面向符号处理的,其推理过程随着情况的变化而变化,具有不确定性及灵活性。

(4)常规程序处理的数据多是精确的,对数据的检索是基于模式的布尔匹配;而专家系统处理的数据及知识大多是不精确的、模糊的,知识的模式匹配也多是不精确的,需要为其设定阈值。

(5)常规程序一般不具有解释功能,而专家系统一般具有解释机构,可对自己的行为作出解释。

三、专家系统的产生与发展

1. 萌芽期(1950-1970):理论奠基

关键事件:1956 年达特茅斯会议提出“人工智能” 概念;1959 年,Newell 和 Shaw 开发首个符号处理程序“逻辑理论家(Logic Theorist)”,证明数学定理。

代表性系统

GPS(General Problem Solver, 1960):尝试通用问题求解,采用“手段 - 目的分析”推理,但因领域知识不足效果有限。

2. 成熟期(1970-1990):知识工程崛起

标志:Feigenbaum提出“知识工程”,强调领域知识的核心作用

里程碑系统

(1)DENDRAL(1971):首个实用专家系统,通过质谱数据推断有机化合物结构,知识库包含化学家经验规则,准确率达 90%;

(2)MYCIN(1976):引入可信度理论处理不确定性,成为医疗诊断系统典范;

(3)XCON(1980):DEC 公司用于配置 VAX 计算机系统的设计型专家系统,每年节省数千万美元人工成本。

3. 扩展期(1990-2010):技术融合与应用扩散

技术创新:

(1)混合专家系统:结合规则、案例、神经网络等多种表示方法(如将神经网络用于模式识别,规则用于逻辑推理);

(2)分布式专家系统:通过网络连接多个子系统,处理跨地域复杂问题(如电力系统分布式故障诊断)。

应用领域:从医疗、工业扩展到金融(信用评估)、农业(作物病虫害诊断)、教育(智能辅导系统)等。

4. 智能化期(2010 至今):与机器学习结合

趋势:

(1)数据驱动知识获取:利用机器学习(如决策树、深度学习)从大数据中自动提取规则,缓解知识获取瓶颈。例如,通过分析电子病历数据生成诊断规则;

(2)基于知识的深度学习:将专家系统的符号推理与神经网络的数值计算结合,提升可解释性(如医疗影像诊断中,CNN识别病灶后,规则系统验证诊断逻辑)。

四、专家系统的分类

(一)按特性及处理问题的类型分类

1. 解释型(Interpretation)

功能分析数据并解释其含义,如信号分析、图像识别。

示例:DENDRAL(化学结构解释)

流程

(1)输入质谱数据(如分子离子峰、碎片离子峰);

(2)应用规则排除不可能的结构(如“若分子质量为 M,则碳数不超过 M/12”);

(3)生成可能的分子结构并排序。

2. 诊断型(Diagnosis)

功能根据症状识别故障或疾病,如医疗诊断、设备故障诊断。

示例:MYCIN(细菌性感染诊断)

核心步骤

(1)收集症状与检查数据;

(2)反向推理确定可能的病原体;

(3)计算可信度并推荐治疗方案。

3. 设计型(Design)

功能根据需求设计方案,如电路设计、建筑布局。

示例:XCON(计算机配置系统)

规则示例IF 用户需要SCSI接口 THEN 添加SCSI控制器卡,并分配IRQ=11

流程:输入用户需求(如处理器型号、存储容量),通过规则逐步选择组件并解决冲突(如IRQ 地址冲突)。

4. 规划型(Planning)

功能制定行动序列,如机器人路径规划、生产调度。

示例:STEAMER(船舶蒸汽动力系统培训规划),根据学员水平动态生成培训任务,确保步骤符合安全规则。

5. 监控型(Monitoring)

功能实时监测系统状态并预警,如核电站监控、网络安全监测。

技术:基于规则的异常检测,如“若网络流量突然增加 10 倍且包含大量 SYN 包,则可能遭受 DDoS 攻击”。

6. 教学型(Instruction)

功能作为智能导师,提供个性化教学,如语言学习、编程辅导。

示例:GUIDON(医学教学系统),基于 MYCIN 知识库,通过模拟诊断过程考核学生,指出推理错误。

(二)按系统的体系结构分类

1. 基于规则的专家系统(Rule-Based ES)

结构:最经典架构,知识库由产生式规则组成,推理机通过模式匹配执行规则

优缺点

优点:规则直观易理解,支持不确定性推理;

缺点:大规模规则库易出现冲突(如两条规则结论矛盾),维护成本高。

示例:早期工业控制专家系统,规则形如“若温度>阈值且压力上升,则打开安全阀”。

2. 基于框架的专家系统(Frame-Based ES)

结构以框架为知识单元,支持继承与层次化组织,适合复杂对象建模

示例:汽车故障诊断系统,定义“发动机框架”包含“气缸槽”“火花塞槽”,每个槽关联诊断规则(如“若气缸压力异常,则检查活塞环”)。

3. 分布式专家系统(Distributed ES)

结构多个子专家系统通过网络协作,每个子系统处理特定子问题,适用于跨地域、多领域复杂任务

架构:分布式ES = {子系统_1, 子系统_2, ..., 子系统_n, 通信模块}

示例:电力系统故障诊断,各变电站子系统实时监测本地设备,中央系统通过通信模块整合数据,协同推理全网故障。

4. 神经网络专家系统(Neural Network-Based ES)

结构利用神经网络的学习能力获取知识,输出层对应结论,隐藏层模拟推理过程

流程

(1)训练数据(如故障样本)输入神经网络;

(2)网络通过反向传播调整权重,学习输入 - 输出映射关系;

(3)推理时,输入新数据,网络前向传播输出预测结论。

优势:适合处理非线性、噪声数据,如手写字符识别专家系统。

5. 混合专家系统(Hybrid ES)

结构融合多种知识表示与推理方法,弥补单一架构的不足

典型组合

(1)规则 + 案例:规则处理常见问题,案例处理罕见问题(如法律专家系统,常规条款用规则表示,复杂案例用案例推理);

(2)符号推理 + 数值计算:符号规则用于逻辑决策,神经网络用于数据预处理(如医疗诊断中,先由 CNN 识别影像病灶,再由规则系统推导疾病)。

五、总结与展望

专家系统作为人工智能从理论走向应用的重要里程碑,其核心贡献在于证明了“知识” 是智能系统的核心驱动力。从早期基于规则的单一架构到如今与机器学习、分布式技术结合的混合体系,专家系统始终围绕“如何高效获取、表示、利用知识” 这一核心问题演进。

未来,随着大数据、物联网和边缘计算的发展,专家系统将呈现以下趋势:

(1)轻量化与边缘部署:在工业物联网中,轻量化专家系统可嵌入传感器节点,实现实时本地决策;

(2)自进化能力:结合强化学习,系统可通过与环境交互自主优化知识库,减少人工干预;

(3)深度可解释性:面对复杂推理(如深度学习驱动的专家系统),需发展更精细的解释技术,满足医疗、金融等领域的合规要求。

总之,专家系统的研究与应用仍将在特定领域保持不可替代的价值,其核心思想“知识与推理的分离与协同”,也将持续为新一代智能系统提供设计灵感。

相关文章:

专家系统的基本概念解析——基于《人工智能原理与方法》的深度拓展

一、什么是专家系统 (一)基本思想与定义 1. 核心思想:知识与推理的分离 迄今为止,关于专家系统还没有一个公认的严格定义,一般认为: (1)它是一个智能程序系统; &…...

什么是公链?公链项目有哪些?公链项目开发

公链技术全景解析:定义、生态与开发指南(2025年深度版) 一、公链的本质与核心特征 1.1 公链的定义 公链(Public Blockchain)是一种完全开放、无需许可的区块链网络架构,其核心特征在于去中心化、透明…...

如何解析商品详情页面

解析商品详情页面是爬虫开发中的一个重要环节。由于商品详情页面通常包含丰富的信息,如商品名称、价格、描述、图片等,因此需要仔细分析页面结构并提取所需数据。以下是一个详细的步骤指南,展示如何使用 Java 和 Jsoup 解析商品详情页面。 一…...

Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案

整个应用&#xff08;包括 View 和 Compose 部分&#xff09;的浅色/深色模式保持一致。以下是完整的解决方案&#xff1a; 全局配置方案 1. 基础主题设置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定义统一的主题&#xff1a; <!-- values/themes.x…...

三国杀专业分析面板,立志成为桌游界的stockfish

三国杀专业分析面板 (SGSFish) GitHub仓库&#xff1a; 本项目是一个基于 Python 实现的三国杀专业分析面板&#xff0c;旨在模拟玩家决策过程&#xff0c;通过量化评估动作实体&#xff08;卡牌/技能&#xff09;的价值、考虑它们之间的相互影响&#xff08;包括基于作用域的…...

解析 select 函数

解析 select 函数 select 函数是 Unix/Linux 系统中用于多路复用的系统调用&#xff0c;主要用于在多个文件描述符&#xff08;file descriptors&#xff09;上等待事件的发生。它允许程序同时监视多个 I/O 通道&#xff0c;并在任意一个通道准备好进行 I/O 操作时通知程序&am…...

对话模型和补全模型区别

对话模型和补全模型区别 什么是对话模型、补全模型 什么是 Completion 最基本地说,文本模型是一个经过训练的大型数学模型,旨在完成一项单一任务:预测下一个 token 或字符。这个过程被称为 completion,在您的旅程中您会经常遇到这个术语。 例如,当使用 completion 文本…...

计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形

以下是使用Qt和OpenGL实现绘制彩色三角形并添加颜色选择按钮的步骤&#xff1a; 一、创建OpenGL绘制组件 继承QOpenGLWidget实现自定义绘制类&#xff1a; // myopenglwidget.h #include <QOpenGLWidget> #include <QOpenGLFunctions_3_3_Core> #include <QO…...

十分钟应急响应——自定义工具链整合实战

核心思路 结合群联AI云防护的API和自定义脚本&#xff0c;实现攻击检测、节点切换、日志分析的端到端自动化。 技术实现步骤 1. 实时攻击检测脚本 使用Python监听群联系统日志&#xff0c;识别攻击特征&#xff1a; # monitor_attack.py import json import subprocess from…...

SpringCloud微服务架构设计与实践 - 面试实战

SpringCloud微服务架构设计与实践 - 面试实战 第一轮提问 面试官&#xff1a;马架构&#xff0c;请问在SpringCloud微服务架构中&#xff0c;如何实现服务注册与发现&#xff1f; 马架构&#xff1a;在SpringCloud中&#xff0c;Eureka是常用的服务注册与发现组件。服务提供…...

每日算法——快乐数、两数之和

202. 快乐数 class Solution { public:bool isHappy(int n) {unordered_set<int> result_set;while(true){int sum 0;while(n>0){sum (n%10)*(n%10);n/10;}if(sum1){return true;}else{if(result_set.find(sum) ! result_set.end()){return false;}result_set.inser…...

反射,枚举,lambda表达式

目录 反射枚举的使用Lambda表达式函数式接口语法Lambda表达式语法精简 变量捕获Lambda在集合List中的使用 反射 作用&#xff1a;在Java代码中&#xff0c;让一个对象认识到自己 比如一个类的名字&#xff0c;里面的方法&#xff0c;属性等 让程序运行的过程&#xff0c;某个对…...

matlab 绘图

1.三维绘图 % 原始数据&#xff08;按行输入&#xff1a;x y z&#xff09; data [1 2 3 ;5 56 234 ;32 34 67 1 2 5 ];% 提取坐标并生成网格&#xff08;适用于surf函数的网格格式&#xff09; x data(:,1); % X坐标&#xff08;行数对应Y轴&#xff09; y data…...

AI日报 - 2025年04月25日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI突破 | OpenAI o3模型展现行动能力&#xff0c;英国发布RepliBench评估AI自主复制风险&#xff0c;DeepMind CEO担忧AGI协调挑战。 模型能力向行动和自主性演进&#xff0c;安全与协调成为焦点。 ▎&#x1f4bc; 商业动向…...

力扣面试150题--基本计算器

Day 31 题目描述 思路 &#xff08;逆波兰表达式扩展&#xff09; 初次思路&#xff1a;此题我遇到了几个难点 如何处理&#xff08;&#xff09;如何处理-1和2-1中的负数还是减法问题 1-&#xff08;-&#xff08;12&#xff09;&#xff09;如何处理多余的空格 我的做法如…...

各种各样的bug合集

一、连不上数据库db 1.可能是密码一大包东西不对&#xff1b; 2.可能是里面某个port和数据库不一样&#xff08;针对于修改了数据库但是连不上的情况&#xff09;&#xff1b; 3.可能是git代码没拉对&#xff0c;再拉一下代码。❤ 二、没有这个包 可能是可以#注释掉。❤ …...

【25软考网工】第三章(3)虚拟局域网VLAN

一、虚拟局域网VLAN 1. VLAN基础 定义&#xff1a;根据管理功能、组织机构或应用类型对交换局域网进行分段而形成的逻辑网络。例如将大型网络划分为多个VLAN&#xff08;如VLAN1-4&#xff09;。 优势&#xff1a; 管理便利&#xff1a;便于对不同部门或功能进行分组管理安全隔…...

SFINAE(Substitution Failure Is Not An Error)

C 中的 SFINAE&#xff08;替换失败并非错误&#xff09; SFINAE&#xff08;Substitution Failure Is Not An Error&#xff09;是 C 模板元编程的核心机制之一&#xff0c;允许在编译时根据类型特性选择不同的模板实现。以下通过代码示例和底层原理&#xff0c;逐步解析 SFI…...

学习记录:DAY17

我的学习日志&#xff1a;前端开发练习 前言 只想畏缩在自己的床上&#xff0c;什么也不想干&#x1f630; 我觉得有必要调整一下复习方针&#xff0c;不然容易白学。 我确实不太爱复习的人&#xff0c;尽量每天抽出时间来复习昨天的内容&#xff0c;周末总体复习一下一个星期…...

LibrePhotos本地部署打造个人云相册安全存储和分享家庭照片(1)

文章目录 前言1.关于LibrePhotos2.本地部署LibrePhotos3.LibrePhotos简单使用4. 安装内网穿透5.配置LibrePhotos公网地址6. 配置固定公网地址 前言 手机里塞满了珍贵回忆&#xff0c;却担心一不小心就被偷看&#xff1f;别怕&#xff0c;今天我就教你一个绝招——使用LibrePho…...

Android插拔U盘导致黑屏问题排查

问题现象&#xff1a; 车机大屏偶先插拔带音乐的U盘&#xff0c;导致车机系统短暂黑屏的情况。 日志中可以看到vold进程unmount了两次分区&#xff0c;一次是U盘分区&#xff0c;一次是/storage/emulated/0分区&#xff1a; I vold : Start killProcesses: /mnt/media_rw/…...

Android Build Variants(构建变体)详解

Android Build Variants&#xff08;构建变体&#xff09;是 Android 开发中用于生成不同版本应用程序的一种机制。它允许开发者根据不同的需求&#xff0c;如不同的应用市场、不同的功能模块、不同的环境配置等&#xff0c;从同一个代码库中生成多个不同的 APK。 组成部分 B…...

看一看 中间件Middleware

中间件&#xff08;Middleware&#xff09;是介于操作系统与应用程序之间的一层软件 它为分布式应用程序提供了统一的通信、数据交换、服务调用、消息传递等能力。 它的作用就像“胶水”&#xff0c;连接各个系统组件。 文章目录 消息队列缓存中间件数据库中间件服务注册与发现…...

ai人才需要掌握什么

在人工智能(AI)技术重塑全球产业格局的今天,AI人才的核心竞争力已超越单一技术维度,演变为“技术深度+人文广度+伦理自觉”的三维能力模型。本文将从技术能力体系、跨学科思维、伦理与治理三个层面,解析AI人才的核心能力框架,并针对技术局限性提出系统性应对策略。 一、…...

‌RISC-V低功耗MCU动态时钟门控技术详解

我来分享一下RISC-V核低功耗MCU的动态时钟门控技术实现&#xff1a; 这款MCU通过硬件级时钟门控电路实现了模块级的功耗管理。当外设&#xff08;如UART、SPI&#xff09;处于闲置状态时&#xff0c;系统会自动切断其时钟信号&#xff0c;减少无效翻转功耗。同时支持多电压域协…...

第十天 Shader编程:编写简单表面着色器 Addressable资源管理系统 DOTS(面向数据技术栈)入门

前言 作为Unity初学者&#xff0c;在实现复杂场景时经常会遇到性能瓶颈。本文将带你通过四个关键技术的实战学习&#xff0c;掌握现代Unity开发的核心优化方案&#xff1a; Shader编程 - 编写表面着色器控制物体渲染Addressable系统 - 实现高效资源管理DOTS技术栈 - 解锁百万…...

把dll模块注入到游戏进程的方法_插APC注入

一、概述 APC是异步过程调用,系统创建线程的时候会为线程创建一个APC队列,当线程调用SleepEx,WaitSingleObjectEx等函数时,并把线程状态被设置为可提醒状态时,线程并不会睡眠,而是检查APC队列是否为空,如果不为空,转去执行APC队列中的每一项,因此给目标进程中的线程插…...

【C++】内存管理:内存划分、动态内存管理(new、delete用法)

文章目录 一、C/C中的内存划分二、C语言中动态内存管理方式三、C中动态内存管理方式1、new、delete基本用法(1)、内置类型(2)、自定义类型 2、operator new与operator delete函数3、new和delete的实现原理&#xff08;1&#xff09;内置类型&#xff08;2&#xff09;自定义类型…...

【k8s】KubeProxy 的三种工作模式——Userspace、iptables 、 IPVS

在 Kubernetes 集群中&#xff0c;KubeProxy 是实现 Service 的网络代理和负载均衡功能的关键组件。它支持三种工作模式&#xff1a;Userspace 模式、iptables 模式和 IPVS 模式。每种模式都有其特点和适用场景&#xff0c;以下是详细介绍&#xff1a; Userspace 模式 工作原…...

密码学的hash函数,哈希碰撞, collision resistance, BTC用到的SHA-256简介

密码学中的哈希函数、哈希碰撞、抗碰撞性&#xff08;collision resistance&#xff09;以及比特币中使用的 SHA-256 的简明介绍&#xff1a; &#x1f9e9; 一、哈希函数&#xff08;Hash Function&#xff09; 定义&#xff1a; 哈希函数是一种将任意长度的输入&#xff08;…...

通过监督微调(SFT)提升AI Agent效果的完整指南

一、SFT技术深度剖析 1.1 核心概念 监督微调&#xff08;Supervised Fine-Tuning&#xff09;是在大规模预训练语言模型&#xff08;如LLaMA、GPT系列&#xff09;的基础上&#xff0c;使用特定任务标注数据进行二次训练的过程。其本质是通过有监督学习调整模型参数&#xff…...

TCP基础题:音乐播放列表管理系统

需求描述 服务器端 创建一个 TCP 服务器&#xff0c;监听本地的 9999 端口&#xff0c;支持多个客户端连接。维护一个音乐播放列表&#xff0c;每个音乐条目包含歌曲名称、歌手、时长等信息。能够处理客户端的以下请求&#xff1a; 添加音乐到播放列表&#xff1a;接收客户端发…...

碰一碰发视频源码文案功能,支持OEM

在数字化营销与内容传播领域&#xff0c;碰一碰发视频文案功能凭借 NFC 技术的便捷性&#xff0c;实现了视频与文案的快速传递。本文将围绕该功能的开发流程&#xff0c;从需求分析、技术架构设计到核心功能实现&#xff0c;详细解析其开发要点&#xff0c;为开发者提供实践参考…...

如何在 Vue 3 中实现一个自定义的 `v-html` 组件

引言 在 Vue.js 中&#xff0c;v-html 是一个非常有用的指令&#xff0c;用于将 HTML 字符串渲染到元素中。然而&#xff0c;由于它直接插入 HTML 内容&#xff0c;存在潜在的安全风险&#xff08;如 XSS 攻击&#xff09;。因此&#xff0c;了解其工作原理并实现一个安全的替…...

差分对的返回电流-信号完整性分析

差分对的返回电流: 单端线的返回电流集中在参考平面&#xff0c;差分对的返回电流是怎样分布的?有一种观点认为&#xff0c;对于差分对这种耦合传输结构&#xff0c;其中一条走线是另一条走线的返回路径。甚至更进一步得出差分对不需要参考平面的结论。是否真的如此?要想了解…...

html单页业务介绍源码

源码介绍 html单页业务介绍源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行 效果预览 源码免费获取 html单页业务介绍源码...

IDEA导入并启动若依项目步骤(SpringBoot+Vue3)

1.下载后端项目 项目地址&#xff1a;https://gitee.com/y_project/RuoYi-Vue 复制命令&#xff0c;将项目克隆到本地 git clone gitgitee.com:y_project/RuoYi-Vue.git使用IDEA打开&#xff08;会有点慢&#xff0c;耐心等待&#xff09;&#xff0c;打开后如下 2.Mysql导…...

零基础上手Python数据分析 (22)案例实战]之利用 Matplotlib Seaborn 进行电商销售数据可视化分析

写在前面 —— 图表为刃,洞察先行!综合运用 Pandas、Matplotlib 与 Seaborn,点亮数据价值 本篇通过一个完整的案例实战,体验如何将数据分析与数据可视化紧密结合,让冰冷的数据转化为生动、直观、富有洞察力的视觉故事! 案例目标: 本篇博客将延续我们在第 17 篇案例中…...

图像预处理-霍夫变换

一.概念 霍夫变换是图像处理的一种技术&#xff0c;主要用于检测图像中的直线、圆等几何形状。基本思想就是将图像空间&#xff08;直角坐标系或极坐标系&#xff09;中的点映射到(霍夫空间)参数空间中&#xff0c;通过在参数空间中寻找累计最大值实现对特定形状的检测。 接下…...

逐步了解蓝牙 LE 配对(物联网网络安全)

配对是蓝牙 LE 中的一个重要概念。让我们来了解一下蓝牙 LE 配对的基础知识,概述 LE 设备如何在可信设备之间安全地共享密钥。 在之前的一篇文章]中,我们讨论了蓝牙 LE 的安全密钥。我们了解到,蓝牙 LE 设备可以创建并共享三个不同的安全密钥:一个用于数据加密,一个用于创…...

嵌入模型(Embedding Models)原理详解:从Word2Vec到BERT的技术演进

一、什么是嵌入模型&#xff1f; 嵌入模型&#xff08;Embedding Models&#xff09; 是一种将高维离散数据&#xff08;如文本、图像&#xff09;转换为低维连续向量表示的技术。这些向量能够反映数据的语义关系&#xff0c;使得“语义相近的实体在向量空间中距离更近”。例如…...

解析塔能科技:绿色低碳智慧节能一站式破局之匙

在能源问题日益凸显的当下&#xff0c;绿色低碳、高效节能成为全球发展的重要课题。对各类节能方案进行深入剖析后&#xff0c;可以发现塔能科技的绿色低碳智慧节能一站式解决方案极具创新性与实用性&#xff0c;切实为众多行业面临的能源困境提供了有效解决路径。 直面行业痛点…...

el-menu箭头改为右下

问&#xff1a; el-menu箭头改为右下 回答&#xff1a; :deep(.el-menu){.el-sub-menu .el-sub-menu__icon-arrow{transition: transform 0.3stransform: rotateZ(-90deg) !important;}/* 展开状态&#xff1a;箭头向下 */.el-sub-menu.is-opened .el-sub-menu__icon-arrow,…...

[特殊字符][特殊字符] HarmonyOS相关实现原理聊聊![特殊字符][特殊字符]

Hey小伙伴们~ 今天咱们来聊聊HarmonyOS的实现原理吧&#xff01;&#x1f914;&#x1f4a1; 虽然直接看源代码是最直接的方式&#xff0c;但是OpenHarmony项目的开源进度有点让人捉急呢… 不过没关系&#xff0c;我们可以通过已经开放的SDK、IDE、开发示例和编译产物来一探究竟…...

RTSP播放器实现回调RGB|YUV给视觉算法,然后二次编码推送到RTMP服务

引言 在本文中&#xff0c;我们将介绍如何基于大牛直播SDK构建一个功能强大的RTSP|RTMP播放器&#xff0c;该播放器利用自定义SDK解码视频、处理RGB帧&#xff0c;并将其推送到RTMP流中进行直播。这个解决方案非常适合需要在实时视频流中集成视觉算法的场景&#xff0c;在处理…...

补题【Darkness+Different Billing+Dice Game】

文章目录 1.Darkness2.Different Billing3.Dice Game 1.Darkness 题目来源&#xff1a;Darkness I 这题不难想&#xff0c;通过作图我们发现 当nm时直接取对角线就好 当n!m时&#xff0c;取m,n的最小值&#xff0c;那么最小值的这个正方形都可以被填为黑色&#xff0c;剩下的…...

卷积神经网络:视觉炼金术士的数学魔法

&#x1f3ae; “你以为《赛博朋克2077》的夜之城是画出来的&#xff1f;不&#xff0c;是卷积神经网络’卷’出来的&#xff01;” &#x1f3ae; 一、卷积&#xff1a;像素世界的连连看大师 想象你拿着一张《蒙娜丽莎》的拼图——卷积核就像你手中的拼图碎片&#xff0c;在画…...

Python:简介,Python解释器安装,第一个Python程序,开发环境(PyCharm安装和配置、Sublime安装和配置)

目录 Python简介 Python解释器的安装&#xff08;Windows&#xff09; 下载和安装Python安装包&#xff08;解释器&#xff09; 验证Python安装情况 第一个Python程序 单行运行 多行运行 Python开发环境&#xff08;安装和配置PyCharm工具&#xff09; 安装PyCharm Py…...

CE第二次作业

实验要求&#xff1a; 1.配置ssh实现A&#xff0c;B主机互相免密登录 2.配置nginx服务&#xff0c;通过多ip区分多网站 一&#xff0c;配置ssh实现A&#xff0c;B主机互相免密登录 步骤 在主机 A 上生成 SSH 密钥对。把主机 A 的公钥复制到主机 B。在主机 B 上重复上述步骤…...

【阿里云大模型高级工程师ACP习题集】2.4 自动化评测答疑机器人的表现(⭐️⭐️⭐️ 重点章节!!!)

习题集: 【单选题】在使用Ragas评估RAG应用时,Answer Correctness指标计算中,语义相似度是通过以下哪种方式得到的?( ) A. 大模型直接判断 B. 计算文本向量的余弦相似度 C. 对比文本词汇重合度 D. 统计文本字数差异 【多选题】当Context recall指标得分较低时,可采取的优…...