4.4 记忆机制与上下文管理:短期与长期记忆的设计与应用
记忆机制与上下文管理已成为智能代理(Agent)系统实现高效、智能化行为的核心技术。记忆机制通过短期记忆(Short-Term Memory, STM)和长期记忆(Long-Term Memory, LTM)支持Agent存储、检索和利用信息,短期记忆处理即时任务的上下文,长期记忆支持跨会话学习和个性化服务。上下文管理则通过动态维护相关信息,确保Agent在复杂任务中保持一致性和准确性。这些技术广泛应用于客服自动化、金融分析、供应链管理和医疗诊断等领域。然而,容量限制、检索效率、隐私安全和模型不稳定性等挑战需通过优化机制解决。本章基于最新研究,深入探讨短期与长期记忆的设计原则、实现技术、优化策略、行业应用及未来趋势,重点分析如何通过高效记忆机制提升Agent性能。文章控制在约30000字,内容专业、详尽且结构严谨。
4.4.1 记忆机制的定义与重要性
定义
记忆机制是指Agent存储、检索和利用过去信息的能力,使其在动态环境中保持上下文一致性、优化决策并支持个性化服务。根据Memory for AI Agents, 记忆机制借鉴人类认知架构(如Atkinson-Shiffrin模型),分为:
- 短期记忆(STM):存储当前任务或对话的即时信息,类似于人类的工作记忆(Working Memory),容量有限但访问快速。
- 长期记忆(LTM):存储跨任务或会话的信息,支持知识积累、经验学习和个性化,容量大但需高效检索。
上下文管理是指Agent动态维护和利用相关信息的过程,通过整合短期和长期记忆,确保任务执行的连贯性和准确性。
重要性
记忆机制与上下文管理在Agent系统中的作用包括:
- 上下文感知:确保Agent理解任务背景,如客服Agent记住用户历史查询,提供连贯回答。
- 任务连续性:支持多步骤任务执行,如供应链Agent跟踪库存状态,避免重复操作。
- 个性化服务:通过LTM存储用户偏好,如电商Agent推荐符合用户喜好的产品。
- 持续学习:通过LTM积累经验,如金融Agent优化投资策略。
- 效率提升:通过高效检索和上下文压缩,减少冗余计算。
根据Does AI Remember? The Role of Memory in Agentic Workflows, 记忆机制是Agent实现“类人”行为的基础,显著提升复杂任务处理能力。
4.4.2 短期记忆的设计与实现
定义与设计原则
短期记忆用于存储当前任务或对话的即时信息,确保上下文一致性和实时响应。STM类似于人类工作记忆,容量受限于LLM上下文窗口(如Grok 3的8192令牌)或内存模块。设计需遵循以下原则:
- 有限容量:优化信息存储,避免上下文溢出。
- 快速访问:支持毫秒级读取,满足实时任务需求。
- 动态更新:根据任务进展添加或移除信息。
- 相关性筛选:通过注意力机制或评分算法,优先保留关键信息。
实现技术
- 上下文窗口
LLMs通过上下文窗口存储对话历史或任务状态,Agent将用户输入、历史消息和中间结果作为输入。例如,客服Agent将最近5条对话作为上下文,确保回答连贯。
技术细节:- 令牌管理:通过max_tokens参数控制上下文大小,防止溢出。
- 滑动窗口:仅保留最近N条消息(如ConversationBufferWindowMemory),减少冗余。
- 压缩:通过LLM总结长上下文(如ConversationSummaryMemory),保留关键信息。
- 工具:LangChain的ConversationBufferMemory支持动态更新(参考:LangChain文档)。
- 状态变量
Agent通过状态变量跟踪多步骤任务进度,如任务规划Agent记录当前步骤(state: {step: 2, action: “query_database”})。
技术细节:- 序列化:使用JSON或Protobuf存储状态,支持跨会话恢复。
- 共享内存:通过Redis存储状态,支持多Agent访问。
- 一致性:通过分布式锁(如Redlock)防止并发冲突。
- 注意力机制
LLMs通过自注意力机制(Self-Attention)动态关注上下文关键部分,优先处理相关信息。
技术细节:- 稀疏注意力:通过Longformer或Performer减少计算复杂度。
- 提示优化:通过提示工程(如“关注用户最新查询”)引导注意力。
- 微调:通过LoRA微调注意力分配,提升相关性。
- 工作内存模块
专用内存模块(如LangGraph的MemoryState)存储任务特定信息,如用户意图或子任务状态。
技术细节:- 动态分配:通过MemoryTokenBuffer限制令牌,优先存储高优先级信息。
- 日志:通过LangSmith记录内存更新,优化调试。
- 异步更新:通过asyncio支持高并发任务。
优化策略
- 上下文压缩:通过ContextualCompressionRetriever总结长对话,减少令牌使用50%(参考:LangChain文档)。
- 相关性评分:使用BM25或TF-IDF评分,筛选上下文中的关键信息。
- 缓存:通过Redis缓存频繁访问的上下文,降低LLM推理成本。
- 分区管理:将上下文按任务类型分区(如对话、状态),提升访问效率。
优势
- 实时性:毫秒级访问支持动态任务。
- 一致性:确保对话和任务的上下文连贯。
- 灵活性:支持多种任务类型,如对话、规划。
挑战
- 容量限制:上下文窗口受限,需压缩或筛选。
- 信息丢失:滑动窗口可能丢弃重要信息。
- 计算成本:长上下文推理增加延迟和能耗。
企业应用案例
- 客服对话
场景:电商客服Agent处理用户退货查询。
实现:使用ConversationBufferWindowMemory存储最近5条对话,异步更新上下文。
优化:通过LLM总结长对话,减少令牌50%。
优势:响应速度提升30%,满意度提高20%。
挑战:需防止信息丢失。 - 任务规划
场景:供应链Agent规划物流路线。
实现:状态变量存储当前步骤(state: {step: “select_route”}),Redis共享状态。
优化:分布式锁确保状态一致,响应延迟降至5ms。
优势:规划效率提升25%。
挑战:需优化并发性能。
4.4.3 长期记忆的设计与实现
定义与设计原则
长期记忆用于存储跨任务或会话的信息,支持知识积累、经验学习和个性化服务。LTM类似于人类的语义记忆(Semantic Memory)和情景记忆(Episodic Memory),容量大但需高效检索。设计需遵循以下原则:
- 持久性:信息需长期保留,跨多个会话有效。
- 可检索性:支持快速、准确查找,满足任务需求。
- 可扩展性:存储系统需支持海量数据和高并发。
- 安全性:通过加密和权限控制保护敏感数据。
实现技术
- 关系型数据库
使用PostgreSQL或MySQL存储结构化数据,如用户偏好或交易记录。例如,电商Agent存储用户购买历史(INSERT INTO purchases (user_id, item_id) VALUES (123, 456))。
技术细节:- 索引:B+树索引加速查询,延迟降至1ms。
- 分区:按用户ID分区,支持10亿条记录。
- 事务:ACID事务确保数据一致性。
- 工具:SQLAlchemy简化查询管理。
- 向量存储
使用FAISS、Pinecone存储嵌入向量,支持语义检索。例如,Agent通过余弦相似度检索用户历史查询。
技术细节:- 嵌入模型:Sentence-BERT生成768维向量。
- 索引:HNSW(Hierarchical Navigable Small World)索引支持毫秒级搜索。
- 更新:增量索引支持动态数据。
- 工具:LangChain的VectorStore模块集成FAISS。
- 知识图谱
使用Neo4j或RDF存储实体关系,支持复杂推理。例如,医疗Agent通过Cypher查询疾病症状(MATCH (disease)-[:CAUSES]->(symptom) RETURN symptom)。
技术细节:- 查询语言:Cypher支持关系查询,延迟5ms。
- 推理:通过规则引擎(如Drools)推导隐含关系。
- 扩展:分布式Neo4j支持10亿节点。
- 分布式缓存
使用Redis或Memcached缓存热门LTM数据,减少对数据库的访问。
技术细节:- LRU算法:确保缓存命中率达90%。
- 持久化:Redis AOF(Append-Only File)防止数据丢失。
- 集群:Redis Cluster支持10万QPS。
- MCP集成
MCP通过JSON-RPC 2.0接口支持Agent访问LTM数据源(如数据库、文件系统)。例如,Agent发送{“method”: “fetch_data”, “params”: {“query”: “SELECT * FROM users”}}(参考:MCP初体验)。
技术细节:- 参数化查询:防止SQL注入。
- 异步请求:通过asyncio支持高并发。
- 认证:JWT确保安全访问。
优化策略
- 预检索:通过定时任务预加载热门数据,降低实时检索延迟。
- 分层存储:热点数据存储在Redis,冷数据存储在PostgreSQL。
- 压缩:通过Zstandard压缩向量数据,减少存储成本50%。
- 分布式架构:通过TiDB或CockroachDB支持分布式查询,QPS达10万。
优势
- 持久性:支持跨会话信息保留。
- 语义支持:向量搜索和知识图谱支持复杂推理。
- 可扩展性:支持海量数据和高并发。
挑战
- 检索效率:大规模数据检索可能延迟,需优化索引。
- 存储成本:向量存储和数据库需高性能硬件。
- 隐私安全:敏感数据需加密和匿名化。
企业应用案例
- 个性化推荐
场景:电商Agent推荐产品。
实现:PostgreSQL存储购买记录,FAISS检索用户偏好向量。
优化:HNSW索引降低检索延迟至10ms,Redis缓存热门推荐。
优势:转化率提升20%。
挑战:需保护用户隐私。 - 医疗知识管理
场景:医疗Agent回答疾病查询。
实现:Neo4j存储疾病-症状关系,MCP查询知识库。
优化:Cypher查询优化,推理延迟降至5ms。
优势:查询准确率提高25%。
挑战:需确保数据合规。
4.4.4 记忆机制与上下文管理的整合
整合机制
上下文管理通过整合STM和LTM,确保Agent在动态任务中保持一致性和准确性。整合机制包括:
- 协同使用
STM处理即时上下文,LTM提供背景知识。例如,RAG(Retrieval-Augmented Generation)先从LTM检索信息,结合STM生成回答(参考:Retrieval-Augmented Generation)。 - 上下文压缩
通过LangChain的ContextualCompressionRetriever总结长文档或对话,减少STM令牌使用。例如,客服Agent将10条对话总结为3条,降低50%令牌。 - 动态更新
Agent根据任务需求,将关键信息从STM转移到LTM,或从LTM检索补充STM。例如,金融Agent将交易结果存入LTM,供后续分析使用。 - 混合记忆模型
通过A-Mem(Agentic Memory)框架整合STM和LTM,支持动态任务分解和记忆管理(参考:A-Mem: Agentic Memory for LLM Agents)。
优化策略
- 相关性筛选:通过BM25或余弦相似度筛选LTM信息,确保STM仅包含高相关数据。
- 异步加载:通过asyncio异步检索LTM,降低STM更新延迟。
- 分层管理:STM存储高优先级信息,LTM存储低频数据,减少冲突。
- 监控:通过OpenTelemetry记录记忆访问日志,分析性能瓶颈。
挑战与解决方案
- 容量与效率
问题:STM容量有限,LTM检索慢。
解决方案:通过上下文压缩和预检索优化,降低延迟50%。 - 信息相关性
问题:LTM检索可能返回无关信息。
解决方案:通过语义搜索和相关性评分(如BM25)提升准确性。 - 隐私与安全
问题:LTM存储敏感数据。
解决方案:通过AES-256加密和差分隐私保护数据。
4.4.5 企业应用案例
- 客服自动化
-
场景:电商客服Agent处理退货查询。
-
实现:
- STM:ConversationBufferWindowMemory存储最近5条对话,异步更新。
- LTM:PostgreSQL存储用户购买记录,FAISS检索偏好向量。
- 上下文管理:RAG检索退货政策,结合STM生成回复。
-
优化:上下文压缩减少令牌50%,HNSW索引降低检索延迟至10ms。
-
优势:响应速度提升30%,客户满意度提高25%。
-
挑战:需优化对话总结准确性。
-
金融分析
-
场景:交易Agent评估投资风险。
-
实现:
- STM:Redis存储实时市场行情,状态变量跟踪分析步骤。
- LTM:PostgreSQL存储历史交易,MCP查询数据。
- 上下文管理:动态更新STM,LTM提供趋势背景。
-
优化:B+树索引加速查询,Redis缓存降低延迟至5ms。
-
优势:风险评估准确率提升20%。
-
挑战:需确保数据安全。
-
医疗诊断
-
场景:诊断Agent辅助疾病诊断。
-
实现:
- STM:MemoryState存储患者症状,异步更新。
- LTM:Neo4j存储疾病-症状关系,FAISS检索文献。
- 上下文管理:RAG整合LTM文献和STM症状,生成建议。
-
优化:Cypher查询优化,HNSW索引降低延迟至10ms。
-
优势:诊断效率提升25%。
-
挑战:需保护患者隐私。
4.4.6 未来发展趋势
- 多模态记忆
支持文本、图像、语音存储,如医疗Agent结合X光片和症状(参考:6 AI trends you’ll see more of in 2025)。 - 自主记忆管理
通过强化学习或元学习,Agent自动优化存储和检索策略,减少人工干预。 - 分布式记忆
使用IPFS或区块链支持跨Agent共享记忆,适用于多Agent协作。 - 隐私保护
联邦学习和同态加密保护LTM数据,符合GDPR等法规。 - 标准化协议
MCP扩展支持记忆与外部系统集成,降低开发成本(参考:Introducing the Model Context Protocol)。
记忆机制与上下文管理通过短期和长期记忆设计,为Agent系统提供了强大的信息存储和检索能力。短期记忆支持实时任务,长期记忆实现跨会话学习,二者通过RAG、上下文压缩和动态更新整合。在客服、金融和医疗等领域的应用,展示了其在效率和个性化服务中的潜力。通过优化策略(如异步加载、相关性筛选、加密),可以应对容量、效率和安全挑战。未来,多模态记忆、分布式存储和标准化协议将进一步推动Agent系统在企业中的深度应用。
相关文章:
4.4 记忆机制与上下文管理:短期与长期记忆的设计与应用
记忆机制与上下文管理已成为智能代理(Agent)系统实现高效、智能化行为的核心技术。记忆机制通过短期记忆(Short-Term Memory, STM)和长期记忆(Long-Term Memory, LTM)支持Agent存储、检索和利用信息&#x…...
ERROR: x264 not found using pkg-config
x264 编译加上了参数,–prefix/usr/local/x264/,找不到x264.pc ffmpeg安装过程中configure报错: sudo ./configure --enable-gpl --enable-libx264 --enable-shared --extra-ldflags-L/usr/lib --extra-cflags-I/usr/include --pkg-config“…...
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
统一HTTP请求代码 public class HttpCode {/*** 操作成功*/public static final int SUCCESS 200;/*** 对象创建成功*/public static final int CREATED 201;/*** 请求已经被接受*/public static final int ACCEPTED 202;/*** 操作已经执行成功,但是没有返回数据…...
架构-系统可靠性分析与设计
一、可靠性相关基本概念 1. 可靠性与可用性 可靠性:软件系统在遇到错误、意外操作或系统故障时,仍能维持自身功能特性的能力。 举例:手机银行APP在用户误操作(如快速点击多次转账)时,仍能正确处理交易并避…...
Tailwind CSS 初学者入门指南:项目集成,主要变更内容!
网站名称类型网址Tailwind CSS 官方文档官方文档https://tailwindcss.com/docsTailwind Play在线编辑器https://play.tailwindcss.com/Tailwind Awesome资源集合https://www.tailwindawesome.com/Tailwind CSS 中文文档中文文档https://www.tailwindcss.cn/komavideo/LearnTail…...
HOJ.单词统计
目录 题目算法标签: 模拟, 字符串操作思路代码*后续 A C AC AC代码 题目 一段英语短文的内容记录于 lines 中,每行输入 lines[i] 仅包含 a-z , . , -,即英文小写字母,空格,逗号,句号和续行符。 请统计单词数量&#…...
C++ round 函数笔记 (适用于算法竞赛)
在算法竞赛中,处理浮点数并将其转换为整数是常见的需求,round 函数是标准库提供的用于执行“四舍五入”到最近整数的工具。理解其工作方式和潜在问题对于避免错误至关重要。 1. 基本用法 头文件 要使用 round 函数,需要包含 <cmath>…...
远程访问服务器的Jupyter Notebook
在 Linux 服务器上安装 Jupyter Notebook 可以直接调用服务器资源,适合处理大规模数据处理、复杂模型训练等计算密集型任务,避免本地设备算力不足的限制。 一、安装 Jupyter Notebook(在服务器上) 激活 conda 环境安装 conda install jupyter notebook 关于安装命名 1.…...
DNS实验
DNS原理 客户端发起请求:客户端向本地 DNS 服务器发送域名解析请求,这是流程的起始点。本地 DNS 服务器查询根域名服务器:若本地 DNS 服务器缓存中无对应记录,它向根域名服务器发起查询,根域名服务器是 DNS 系统顶层&a…...
SQL实战:02之连续数问题求解
文章目录 概述题目:体育馆的人流量题解步骤一:构造出一个连续序列步骤二:找出符合条件的组的序号步骤三:fetch结果,使用内连接过滤出符合条件的记录。完整SQL 题目二:连续出现的数字题解步骤一:分区并构建连…...
【C++】STL之deque
deque Deque 的底层既不直接依赖 vector 也不依赖 list,而是结合了两者的思想,采用了一种分块(chunk)存储与动态指针数组(map)结合的结构。以下是详细分析: 1. 底层结构设计 Deque 的核心设计…...
HTB - BigBang靶机记录
HTB - BigBanghttps://mp.weixin.qq.com/s/D7yR00kHdiIfoOFk_jHa9w...
AI时代的能力重构与终身进化
在数字技术加速迭代、职业边界日益模糊的当下,自我提升已从“阶段式学习”演变为“持续性进化”。这一转型的底层逻辑在于:个体能力需从“知识积累”转向“能力重构”,以适应AI技术重塑的社会分工与价值创造模式。本文将从认知升级、技能进化、生态构建三个维度,解析AI时代…...
Java—— 正则表达式 方法及捕获分组
识别正则表达式的方法 方法名说明public String[] matches(String regex) 判断字符串是否满足 正则表达式的规则 public string replaceAll(String regex,string newstr) 按照正则表达式的 规则进行替换 public string[] split(String regex) 按照正则表达式的 规则切割字符串…...
《100天精通Python——基础篇 2025 第2天:Python解释器安装与基础语法入门》
目录 一、Windows安装Python1.1 下载并安装 Python1.2 测试安装是否成功 二、Linux系统安装Python(新手可以跳过)2.1 基于RockyLinux系统安装Python(编译安装)2.2 基于Ubuntu系统安装Python(编译安装)2.3 macOS 安装python解释器 三、如何运行Python程序?3.1 Python…...
Linux平台实现低延迟的RTSP、RTMP播放
在流媒体播放器的开发过程中,RTSP(实时流协议)和RTMP(实时消息协议)是广泛应用的流媒体协议。本博客将介绍如何使用大牛直播SDK实现一个Linux平台下的RTSP/RTMP播放器。大牛直播SDK的Linux平台播放SDK,支持…...
安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用
00 案例背景 在院外心脏骤停 (OHCA) 的突发救援中,时间与效率直接决定着患者的生命。传统急救模式下,急救人员常通过视频或电话与医院医生进行沟通,以描述患者状况并依照指令行动。然而,这种信息传递方式往往因信息不完整或传递延…...
chili3d调试笔记9 参数化建模+ai生成立方体
mainwindow 怎么渲染boxnode https://github.com/ticket180/chili3d chili3d ai画立方体...
天梯——L1-110 这不是字符串题
代码 #include<bits/stdc.h> using namespace std; int main(){int n,m;cin>>n>>m;string s;for(int i0;i<n;i){int x;cin>>x;schar(x0);}while(m--){int x;cin>>x;if(x1){int l1;string s1;cin>>l1;for(int i0;i<l1;i){int a;cin&…...
React在什么情况下需要用useReducer
在 React 中,useReducer 是一个用于管理复杂状态逻辑的 Hook。它是 useState 的替代方案,适用于状态更新逻辑复杂或状态之间相互关联的场景。 什么时候需要使用 useReducer 状态更新逻辑复杂: 如果状态更新涉及多个操作或有复杂的逻辑&#x…...
要从给定的数据结构中提取所有的 itemList 并将其放入一个新的数组中
const data [{id:1,itemList:[{id:1-1,list:0},{id:1-2,list:0}]},{id:2,itemList:[{id:2-1,list:0}]} ]使用 forEach const newItemList [];data.forEach(item > {newItemList.push(...item.itemList); });console.log(newItemList);reduce const newItemList data.re…...
程序员鱼皮最新项目-----AI超级智能体教程(一)
文章目录 1.前言1.什么是AI大模型2.什么是多模态3.阿里云百炼平台介绍3.1文本调试展示3.2阿里云和dashscope的关系3.3平台智能体应用3.4工作流的创建3.5智能体编排应用 1.前言 最近鱼皮大佬出了一套关于这个AI 的教程,关注鱼皮大佬很久了,鱼皮大佬确实在…...
17.磁珠在EMC设计中的运用
磁珠在EMC设计中的运用 1. 磁珠的高频等效特性2. 磁珠的参数分析与选型3. 磁珠应用中的隐患问题 1. 磁珠的高频等效特性 和磁环类似,低频段感性jwL为主,高频段阻性R为主。 2. 磁珠的参数分析与选型 不需要太在意磁珠在100MHz时的电阻值,选型…...
常见接口测试常见面试题(JMeter)
JMeter 是 Apache 提供的开源性能测试工具,主要用于对 Web 应用、REST API、数据库、FTP 等进行性能、负载和功能测试。它支持多种协议,如 HTTP、HTTPS、JDBC、SOAP、FTP 等。 在一个线程组中,JMeter 的执行顺序通常为:配置元件…...
2026届华为海思秋暑期IC实习秋招笔试真题(2025.04.23更新)
今天给大家分享下华为海思2025.04.23号最新IC笔试真题。 华为海思IC前端中后端(COT&XPU)岗位笔试机考题 更多华为海思数字IC岗秋招实习笔试真题,可以私信小编。 数字后端培训实战项目六大典型后端实现案例 秒杀数字后端实现中clock gating使能端setup viola…...
水域陆地两相宜,便携漏电探测仪
在自然灾害如洪水、地震、台风及火灾中,建筑物和电力设施易因结构破坏、线路老化或设备浸水导致绝缘失效,引发漏电事故。漏电不仅直接威胁人员生命安全,还可能引发二次火灾或爆炸,尤其在潮湿环境下导电性增强,触电风险…...
论文笔记(七十九)STOMP: Stochastic Trajectory Optimization for Motion Planning
STOMP: Stochastic Trajectory Optimization for Motion Planning 文章概括摘要一、引言二、相关工作三、STOMP 算法A. 探索B. 轨迹更新 四、机械臂的运动规划A. 设置B. 代价函数1)障碍物代价:2)约束代价:3)扭矩代价&a…...
如何应对客户提出的不合理需求
在项目执行过程中,客户经常会提出一些看似不合理的需求,这些需求可能超出了预算、时间范围,或与项目初期的目标不符。应对这些不合理需求的最佳方法是通过清晰沟通、设定合理期望、与客户共同探索解决方案来有效管理这些需求。例如࿰…...
SEO的关键词研究与优化 第一章
关键词研究和优化是SEO的核心。通过深入了解目标受众使用的搜索词,我们可以优化网站内容,提高搜索引擎排名,并吸引更多相关流量。本章将详细探讨关键词研究的方法、和最佳实践。 关键词类型对比分析 1. 关键词研究的基础 了解不同类型的关键…...
A2A Agent 框架结构化分析报告
A2A Agent 框架结构化分析报告 第一章 绪论 1.1 引言 在全球数字化转型的浪潮中,人工智能(Artificial Intelligence, AI)技术正以前所未有的速度改变着我们的生活和工作方式。然而,随着AI系统的广泛应用,单一AI系统…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(10): つもり 计划/打算
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(10): つもり 计划/打算 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)つもり 计划/打算(2&a…...
对patch深入理解下篇:Patch+LSTM实现以及改进策略整理
我在去年11月份写了pat入理解的上篇,主要介绍patch的原理和代码实现过程。文章发布后很多朋友催更下篇,其实一直在积累素材,因为介绍完原理和实现之后,下一步肯定是要考虑如何改进。在这之前,首先,我们接着…...
线程同步与互斥(互斥)
目录 线程互斥 进程线程间的互斥相关背景概念 互斥量mutex 互斥量的接⼝ 初始化互斥量 初始化互斥量有两种⽅法 销毁互斥量 互斥量加锁和解锁 加锁的使用 互斥量实现原理探究 互斥量的封装 Mutex.hpp Main.cc 线程互斥 进程线程间的互斥相关背景概念 临界资源&…...
基于RFID的智能家居系统设计与实现
标题:基于RFID的智能家居系统设计与实现 内容:1.摘要 随着物联网技术的飞速发展,智能家居系统成为了人们关注的焦点。本研究的目的是设计并实现一个基于RFID(射频识别)的智能家居系统,以提高家居的智能化水平和用户的生活便利性。…...
JAVA设计模式——(六)装饰模式(Decorator Pattern)
JAVA设计模式——(六)装饰模式(Decorator Pattern) 介绍理解实现被装饰类被装饰类的具体实现装饰类装饰类具体实现测试 适用场景 介绍 动态给一个对象添加一些额外的功能,动态的扩展其功能。 理解 装饰模式…...
CGAL 网格等高线计算
文章目录 一、简介二、实现代码三、实现效果一、简介 这里等高线的计算其实很简单,使用不同高度的水平面与网格进行相交,最后获取不同高度的相交线即可。 二、实现代码 #include <iostream> #include <iterator> #include <map>...
Sharding-JDBC 系列专题 - 第十篇:ShardingSphere 生态与未来趋势
Sharding-JDBC 系列专题 - 第十篇:ShardingSphere 生态与未来趋势 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第十篇,也是本系列的总结篇,将全面回顾 Apache ShardingSphere 生态,包括其核心组件、功能模块和与其他…...
ETL 数据集成都包含哪些?
一、ETL 数据集成都包含哪些? 数字化时代数据已成为企业最为宝贵的资产之一。然而,企业的数据往往分散在多个不同的系统和平台中,如关系型数据库、文件系统、API 等。为了将这些分散的数据整合起来,为企业决策提供全面、准确的支…...
windows系统自定义powshell批处理脚本
windows自定义powshell批处理脚本 前几天看到大神自定义批处理骚操作操作,觉得很有意思,本篇文章记录一下入门学习笔记。 PowerShell 是一种功能强大的脚本语言和命令行外壳,基于.NET Framework,广泛应用于 Windows 系统管理、自…...
【计算机视觉】CV实战项目 - 基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化
基于YOLOv5与DeepSORT的智能交通监控系统:原理、实战与优化 一、项目架构与技术解析1.1 核心算法架构1.2 学术基础 二、实战环境配置2.1 硬件要求与系统配置2.2 分步安装指南 三、核心功能实战3.1 基础车辆计数3.2 自定义检测类别3.3 多区域计数配置 四、性能优化技…...
Java基础系列-HashMap源码解析3-红黑树
文章目录 红黑树定义与AVL树对比插入节点插入节点是根节点插入节点的叔叔是红色插入节点的叔叔是黑色 构建示例删除节点只有左子树/只有右子树 只有左孩子/只有右孩子没有孩子如果双黑节点的兄弟是黑色:如果双黑节点的兄弟是红色: 总结 红黑树 定义 与…...
Linux系统的延迟任务及定时任务
延迟任务的发起 在系统中我们可以使用at命令来发起延迟任务 at命令执行是调用的是atd服务,即使系统最小化安装atd也会被安装到系统中 at 任务信息存放在系统中/var/spool/at目录中 at 任务的日志文件被存放到/var/log/cron中 at 任务执行时如果遇到系统处于关闭状态…...
【蓝桥杯】水质检测
水质检测 题目描述 小明需要在一条 2 n 2 \times n 2n 的河床上铺设水质检测器。在他铺设之前,河床上已经存在一些检测器。如果两个检测器上下或者左右相邻,那么这两个检测器就是互相连通的。连通具有传递性,即如果 A A A 和 B B B 连通…...
【晶振】晶振的工作原理及其与单片机关系
晶振(晶体振荡器)是电子设备中常见的元件,其核心功能是提供稳定的时钟信号,而单片机(MCU)依赖这一信号来同步内部操作。以下是晶振的工作原理及其与单片机关系的详细说明: 一、晶振的工作原理 压电效应与谐振 晶振的核心是石英晶体,利用其压电效应: 当在晶体两端施加电…...
配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容
配置 C/C 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容 {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/opt/ros/humble/include/**&quo…...
Postgresql源码(143)统计信息基础知识(带实例)
概念与总结 高频值(Most Common Values, MCV) 存储在 most_common_vals 中。每个高频值的频率通过 most_common_freqs 单独记录(例如 0.010966667 等)。MCV 用于优化等值查询(如 poid 33)&…...
【含文档+PPT+源码】基于SpringBoot+vue的疫苗接种系统的设计与实现
项目介绍 本课程演示的是一款 基于SpringBootvue的疫苗接种系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系…...
解决 Dart Sass 的旧 JS API 弃用警告 的详细步骤和解决方案
以下是解决 Dart Sass 的旧 JS API 弃用警告 的详细步骤和解决方案: 错误原因 Dart Sass 1.x 版本中使用的旧 JavaScript API(如 sass.render() 或 sass.compile() 的旧调用方式)将在 2.0.0 版本中被移除。需迁移到新 API 以避免未来报错。…...
Concepts (C++20)
C20 Concepts Concepts 是 C20 引入的核心特性,用于显式约束模板参数,提升代码可读性和错误提示。以下通过代码示例和原理分步骤解析其用法。 1. 基本概念 目标:显式声明模板参数必须满足的条件。优势:替代复杂的 SFINAE 和 ena…...
CVE-2024-23897-Jenkins 2.441之前版本存在任意文件读取漏洞
1.漏洞介绍 Jenkins 2.441及更早版本,以及LTS 2.426.2及更早版本没有禁用其CLI命令解析器的一个功能,该功能会将参数中字符后跟的文件路径替换为该文件的内容,允许未经身份验证的攻击者读取Jenkins控制器文件系统上的任意文件。 2.poc利用 下…...