自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 收藏
  • 关注

原创 Harness 工程:八大机制带你理解Harness工程核心

Agent = Model + Harness,模型决定能力上限,Harness保障运行下限。朴素Agent常因循环失控、上下文溢出、状态丢失等八类问题翻车。Harness工程通过四相循环、工具编排、进度追踪、验证闭环、子代理分治等机制,构建稳定可扩展的工程骨架,实现安全、可控、可持续的智能体系统。

2026-11-08 20:53:54 307

原创 上下文工程(Context Engineering):六大模块与五大核心策略深度解析

大模型 Agent 从演示走向生产,上下文工程成为核心挑战。面对有限的上下文窗口,需对对话历史、工具调用、长期记忆等六大板块进行精细化管理。业界提出“Write、Select、Compress、Isolate、Cache”五大策略:通过持久化卸载冗余信息,按需检索精准加载,压缩降噪(如交接文档重启),隔离多 Agent 干扰,缓存重复提示词。结合 RAG 与长上下文互补,实现成本、延迟与稳定性的平衡。

2026-11-06 22:48:01 335

原创 人工介入:用 LangGraph 做工具级人工审批

本文提出从「意图路由」升级为「风险路由」,核心是将决策维度从用户语义意图转向工具执行风险。通过引入基于工具风险等级的路由机制,实现高风险操作强制审批、低风险自动执行,并将审批结果作为状态持久化,确保中断恢复后逻辑一致。系统采用分层工具策略、单一职责的思考节点与整批审批设计,兼顾安全性与流程简洁性,解决了复合请求中不可逆操作的管控难题。

2026-11-03 15:43:11 296

原创 同一个 ReAct,两种手写方式:LangChain 文本协议 vs LangGraph 状态图

本文对比了两种实现“模型思考-调工具-看结果-再思考”循环的方案:基于prompt+正则+while的LangChain版与基于StateGraph+ToolNode的LangGraph版。前者依赖文本协议和字符串解析,灵活性差、难扩展;后者以状态图驱动,显式管理状态、决策与循环,支持多工具链式调用、结构化判断与可扩展设计,显著提升可维护性与可靠性。

2026-11-02 18:20:02 172

原创 LangGraph 简易意图路由 Agent

该代码构建了一个基于意图路由的轻量级 Agent 分发器,利用 LangGraph 的 Pregel 引擎实现结构化流程控制。模型仅负责判断用户意图与是否调用工具,流程由图定义,分支基于枚举值动态路由,状态通过 channel 机制合并更新。关键设计包括:节点返回 partial update、状态不可原地修改、add_messages 保证消息语义完整性。意图识别依赖 with_structured_output 提供的 Pydantic 校验,确保输出合法。条件边需注意路由键与映射表一致性,建议采用统一

2026-11-02 13:42:41 235

原创 LangGraph 核心设计哲学:输入、输出与状态流转的“三重境界”

本文系统解析 LangGraph 状态设计的核心难题,提出“输入契约、输出过滤、内部流转”三重 Schema 机制:InputState 强校验入口参数,OutputState 净化最终输出,OverallState 作为节点间共享内存。通过图示与实战代码,详解状态合并、Reducer 机制及企业级应用技巧,强调“入参最小化、出参最净化、内部随便化”的设计原则,助开发者构建健壮灵活的 Agent 应用。

2026-11-01 16:06:51 305

原创 让模型学会“边想边做”:一次手写 ReAct Agent 的实录

本文介绍了一种基于ReAct范式的简易Agent实现,通过手写框架让大模型(如DeepSeek)在无联网、无计算器的情况下,通过“思考-行动-观察”循环完成复杂任务。核心在于将推理与工具调用分离:模型生成Thought和Action指令,程序执行工具并返回真实Observation,再由模型基于反馈修正决策。作者仅用一个ReAct.py文件,结合正则解析、自定义工具(搜索、计算)和循环调度,实现了无需外部框架的轻量级Agent系统,验证了其在“计算地球质量+1919191919”等任务中的有效性,揭示了大模

2026-10-31 14:22:17 215

原创 Linux:读写锁与自旋锁

读者写者模型是一种多线程同步策略,适用于高频读、低频写的场景。比如博客文章:作者(写者)发布后很少修改,而读者(读者)频繁访问。在这种场景下,使用读写锁可以比互斥锁减少很多锁冲突。自旋锁是一种多线程互斥机制,与互斥锁的区别在于锁获取失败时的行为互斥锁:失败后线程阻塞,上下文切换自旋锁:失败后线程循环检查,忙等待特性读写锁自旋锁主要用途读多写少场景短临界区保护锁失败行为线程阻塞CPU空转并发级别多读单写单线程持有适用场景高频读、低频写临界区执行时间极短主要问题写者饥饿CPU浪费、活锁。

2026-03-10 21:52:46 249

原创 算法:N皇后问题

这里分享一个经典搜索问题,N皇后。

2025-12-22 21:23:41 462

原创 Redis事务全面解析

Redis事务是一组命令的集合,这些命令会被顺序化、串行化地执行,确保在执行过程中不会被其他客户端的命令打断。核心特性命令打包:多个命令打包成一个单元执行顺序保证:执行期间不被其他客户端插队简单易用:相比MySQL事务实现更轻量优势说明适用场景命令打包多个命令作为一个单元执行需要原子性操作的场景防止插队执行期间不被其他客户端打断并发资源竞争简单轻量实现简单,性能开销小不需要完整ACID的场景乐观锁支持通过WATCH实现版本控制数据一致性要求较高的场景。

2025-12-22 17:31:54 1069

原创 MySQL事务深度解析:从ACID到MVCC的实现原理

定义:事务是一组逻辑上相关的DML(数据操作语言)语句组成的操作序列,这些语句构成一个完整的业务逻辑单元。核心特性:事务中的操作要么全部成功,要么全部失败,保证数据的完整性和一致性。隔离级别解决的问题:在并发事务环境下,如何平衡数据一致性与系统性能的矛盾。MySQL作为一个服务器,肯定是会同时被多个客户端访问的,会同时执行多个事务,那么不同的事务之间肯定是会有可能互相影响的,比如多个事务访问同一张表、同一行数据,MySQL的事务为了避免不同的事务之间互相影响,于是将不同的事务隔离开,

2025-12-21 17:33:13 1535

原创 Redis持久化机制详解(二):AOF持久化全解析

AOF(Append Only File)是Redis的实时持久化机制,通过记录所有写操作命令来实现数据持久化。核心特点实时记录:每次写操作都立即记录可读性强:文本格式存储,便于人工阅读数据安全:丢失风险低于RDB工作原理图fill:#333;color:#333;color:#333;fill:none;客户端写命令Redis主线程执行写入AOF缓冲区根据策略刷盘AOF文件重启时重新执行AOF文件中的命令恢复数据。

2025-12-21 16:49:27 666

原创 Redis持久化机制详解(一):RDB全解析

定义:将内存中的数据保存到非易失性存储介质(磁盘),防止进程退出或系统崩溃造成数据丢失。恢复速度快:二进制加载,大数据集恢复迅速文件紧凑:压缩存储,节省磁盘空间适合备份:单个文件方便传输和归档全量复制:主从同步时效率高性能影响小:bgsave期间服务基本不受影响RDB作为Redis的定期快照持久化机制,通过fork子进程+写时复制实现了高效、一致的数据备份。虽然存在数据丢失风险,但其恢复速度快、文件紧凑的特点使其在备份、全量复制等场景中具有不可替代的价值。核心要点回顾使用bgsave避免服务阻塞。

2025-12-20 17:46:18 1443

原创 Redis ZSet类型深度解析:有序集合的原理与实战应用

高效排序:O(logN)的插入、删除和查询复杂度灵活查询:支持按排名、分数范围、元素查询丰富运算:支持交、并集运算,支持权重和聚合方式内存优化:智能选择Ziplist或Skiplist编码排行榜系统:游戏、社交、电商等各种排名场景延迟任务:订单超时、定时提醒、任务调度实时统计:在线用户、文章热度、系统监控优先级队列:任务调度、消息队列地理位置:附近搜索、范围查询时间序列:监控数据、日志记录。

2025-12-20 17:26:38 1105

原创 算法:hot100---128. 最长连续序列

但是我统计长度的时候,是从前往后遍历,我把每一个元素都当成了连续序列的起点进行计算,这也就导致超时了,O(N*N),要设计时间复杂度为O(N)的方法,O(N*logN)就不能考虑了,也就是说,这道题排序是用不了了。但是问题在于,我们不能够遍历所有的子序列,如果遍历所有的子序列,妥妥的O(N*N),这么一看,还是要两重遍历啊,但是,两重遍历,时间复杂度不一定是O(N*N)啊,于是,转换思路,使用位图,因为位图中的元素是连续存储的,天然帮我排好序了,但是,我忽略了一个问题,我在统计的过程中需要遍历整个位图。

2025-12-19 12:44:18 311

原创 Redis Set类型完全指南:无序集合的原理与应用

✅用户标签系统:基于兴趣的推荐和分组✅社交关系:共同好友、好友推荐✅统计分析:UV统计、独立计数✅内容筛选:多条件过滤、去重✅随机选择:抽奖、随机推荐✅访问控制:黑白名单管理。

2025-12-15 17:20:34 1041

原创 Redis List类型完全指南:从原理到实战应用

Redis的List(列表)类型是一个功能强大的数据结构,它类似于双端队列(deque),支持两端的高效插入和删除操作。本篇博客将深入探讨Redis List的底层实现、丰富命令集以及多种实际应用场景,帮助你全面掌握这一重要数据结构。Redis List具备以下关键特性:Redis List有序存储双向操作元素可重复下标访问维护插入顺序左端操作 lpush/lpop右端操作 rpush/rpop正数下标: 0, 1, 2...负数下标: -1, -2, -3...1.2 性能特点两端插入/删除:O(1

2025-12-15 17:00:19 1256

原创 Redis Hash类型深度解析:结构、原理与实战应用

Redis Hash是一个键值对集合,用于存储字段-值(field-value)映射。为了避免与Redis本身的key-value结构混淆,我们将Hash内部的键值对称为对。fill:#333;color:#333;color:#333;fill:none;Redis KeyHash类型Value...Redis Hash类型是一个功能强大、灵活的数据结构,特别适合存储对象类型的数据。

2025-12-11 17:15:52 776

原创 Redis 字符串类型完全指南:从原理到实战应用

Redis字符串类型是最基础的数据结构,支持二进制安全存储,最大容量512MB。文章详细介绍了GET/SET等核心命令、批量操作及数字操作特性,并分享了键名设计规范。在应用场景方面,Redis字符串可用于缓存、计数器、共享Session和验证码系统。最后给出性能优化建议,包括批量操作、内存管理和网络优化。掌握这些知识能充分发挥Redis的高性能优势,构建更可靠的系统。

2025-12-11 17:01:27 648

原创 Redis 渐进式 Rehash 深度剖析:如何实现平滑扩容与数据一致性

Redis采用渐进式Rehash机制解决哈希表扩容时的性能问题。当负载因子超过阈值时,Redis会创建新哈希表ht[1],但不一次性迁移数据,而是将rehash过程分摊到每次操作中:查询访问两个表,插入只写入新表,并逐步迁移一个桶的数据。这种设计避免了全局rehash导致的性能抖动,保证了Redis的毫秒级响应。通过双表机制和精确的负载因子控制(正常扩容≥1,强制扩容>5,缩容<0.1),Redis在内存使用和性能之间取得了平衡。

2025-12-10 12:42:00 901

原创 从单机到微服务:分布式架构演进全景解析

单机时代 (1990-2000)├── 特点:All in One├── 技术:LAMP栈└── 局限:单点故障,扩展困难Web 2.0时代 (2000-2010)├── 演进:前后端分离├── 技术:负载均衡,读写分离└── 突破:水平扩展成为可能云计算时代 (2010-2015)├── 演进:服务化架构├── 技术:SOA,分布式缓存└── 突破:弹性伸缩能力微服务时代 (2015-2020)├── 演进:功能解耦├── 技术:容器化,服务网格。

2025-12-04 10:12:42 779

原创 MySQL 索引:核心原理、数据结构与优化实践

MySQL索引是提升查询性能的核心工具,本文系统讲解了其原理与实践。索引本质是B+树数据结构,具有矮胖、有序等特点,支持高效查询。MySQL支持主键、唯一、普通等索引类型,InnoDB采用聚簇索引存储数据。复合索引需遵循最左匹配原则,合理使用可避免回表查询。索引创建应考虑查询频率、区分度等因素,避免滥用导致性能下降。通过EXPLAIN分析查询计划,结合实际业务场景优化索引,才能实现数据库高效稳定运行。

2025-12-03 20:17:32 1230

原创 C++多线程调试历险记:一个由构造顺序引发的“幽灵bug“

方案1:调整成员声明顺序(推荐)private:// 被依赖的成员在前// 线程在最后声明!

2025-11-28 17:34:13 752

原创 日志接口的便捷与性能之争:流式与格式化的深度对比

在C++日志系统设计中,接口选择始终是架构师需要面对的重要抉择。流式接口的优雅便捷与格式化接口的极致性能,如同鱼与熊掌,如何取舍?本文将通过详细的技术分析和实测数据,为你揭示两者的本质差异。

2025-11-23 16:47:57 1123

原创 C++11智能指针完全指南:告别内存泄漏

在现代C++开发中,原始指针的直接使用已被视为不良实践。C++11引入的智能指针通过自动化内存管理,彻底改变了我们处理动态内存的方式。本文将带你全面掌握智能指针的使用精髓。使用原始指针进行动态内存管理,开发者必须手动配对使用。:两个Node对象的引用计数始终为1,无法被自动释放。,让智能指针帮你自动管理内存生命周期。实现共享所有权,当最后一个。被销毁时才会释放对象。reset(),计数=2。析构,计数=0,释放内存。,用于解决循环引用问题。让你的代码中几乎看不到。,同一时刻只能有一个。

2025-11-21 14:37:10 906

原创 软件测试完全指南:从概念到实战的完整体系

建议读者在理解理论的基础上,多参与实际项目测试,积累实战经验。:使用人工或自动化手段来运行或测定某个软件系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。本文系统讲解软件测试的核心概念、测试用例设计方法和缺陷管理流程,助你构建完整的测试知识体系。的过程,目的是在软件发布前尽可能多地发现其中存在的问题(Bug),确保软件质量。:为特定测试目标而设计的一组测试输入、执行条件和预期结果。:软件产品中存在的各种问题,不符合需求或影响正常使用。- 每个用例有明确的测试点。

2025-11-21 14:23:48 1007

原创 MySQL全面入门:从基础操作到数据管理实战

MySQL作为世界上最流行的开源关系型数据库,是每一位开发者必备的技能。本文将从零开始,系统地介绍MySQL的核心操作,内容涵盖。字符集支持更广泛的Unicode字符,包括emoji表情,是现代应用的推荐选择。无论你是数据库新手还是需要一份速查手册,本文都将为你提供清晰的指引。数据库是存储数据的容器,我们的所有操作都在其内部进行。表是数据库中实际存储数据的结构,由行和列组成。这是与数据本身交互的核心部分,即我们常说的。从表中检索数据,这是最复杂也最常用的操作。确保某列或某组列的值是唯一的。

2025-11-21 14:11:14 442

原创 Python:基础语法细节(一)

Python 语法简洁直观,具有动态类型、自动内存管理等特点,与 C++/Java 等静态语言在类型系统、运算符等方面存在显著差异。掌握这些基础特性是深入学习 Python 的重要前提。

2025-11-20 13:16:36 376

原创 Python:简单了解python

简单函数print("你好!")# 调用函数greet()# 带参数的函数print(f"你好,# 简单函数 def greet() : print("你好!") # 调用函数 greet() # 带参数的函数 def greet_person(name) : print(f"你好, {name }!") greet_person("小明") # 带返回值的函数 def add_numbers(a , b) : return a + b!")greet_person("小明")

2025-11-20 13:10:04 1025

原创 解决异常:terminate called without an active exception Aborted

Aborted。

2025-11-19 21:33:19 226

原创 Linux文件:文件描述符和文件缓冲区 --- 源码解析,我行你也行

文件中的内核缓冲区有一个作用就是,一次往缓冲区多写入或者多读取一些内容,再刷新,是为了减少I/O次数,提高性能。而且我们知道,write/read这些系统调用,也是有成本的,如果每次使用printf/fputs等函数,都会调用一次系统调用,就要经历从用户态陷入内核态,再从内核态切换回用户态的过程,这个过程是比较耗费时间的。直接将用户要写入/读取的内容写到/读出文件的内核缓冲区,成本是比较高的,为了减少系统调用的次数,在语言层面就设置一个缓冲区(这个缓冲区就是开辟了一块内存,先存在这个内存中)

2025-11-16 12:03:37 1042

原创 算法:位运算类型题目练习与总结

这有啥用啊?不是很显然吗?我们就可以。

2025-11-16 11:10:02 918

原创 一次代价昂贵的调试教训:我是如何花6小时追踪一个本应3分钟发现的Bug

从Protobuf序列化层级不匹配的惨痛经历,反思技术问题排查的系统性方法。昨晚11点,我正沉浸在消息队列项目的持久化模块开发中。一切都看起来很美好——架构设计清晰,代码逻辑合理,测试用例覆盖全面。但当我实现消息的垃圾回收和恢复功能时,一个看似简单的问题让我陷入了长达6小时的调试深渊。

2025-11-15 00:51:43 566

原创 算法:前缀和类型题目的练习与总结

这周做了不少前缀和的题目,总感觉前缀和的题目和dp题目非常相似,似乎大部分用dp也能做,不过,没关系,我们就当练习前缀和好了。这篇博客中将分享一些前缀和的经典题目,并总结出前缀和的模版套路。如果有所收获,请不要吝啬手中的三连哦!!!

2025-11-12 12:11:14 1079

原创 算法:二分算法类型题目总结---(含二分模版)

34. 在排序数组中查找元素的第一个和最后一个位置。

2025-11-07 13:36:25 1333

原创 Linux文件:文件基础

众所周知,操作系统的四大核心功能是进程管理、文件管理、内存管理、设备管理。在前面的博客中,已经分享了进程管理的相关知识,接下来,分享一下Linux的文件管理的相关知识。我认为Linux文件管理需要了解文件描述符、缓冲区、重定向、磁盘文件系统、虚拟文件系统等等知识,当然,看看这篇博客的标题,这篇博客当然不会讲那么多,想要学习这些深入的知识,我们得提前了解一些文件的基础知识,那么,接下来就一起来了解一下文件系统的前置知识吧。

2025-11-07 11:43:10 699

原创 解决报错:/usr/bin/ld: /tmp/cc52JU0u.o: undefined reference to symbol ‘adler32‘ /usr/bin/ld: /lib/x86_64-

代码中使用到了muduo库,protobuf,pthread库。

2025-11-06 15:50:55 294

原创 Linux进程:进程控制(一个进程从出生到离开的全过程,一篇文章讲清楚)

在前面的几篇博客中,我们聊了进程属性、状态、进程地址空间、优先级、调度切换等内容,已经为这篇博客的阅读打下了基础,在这篇文章,我们来一起学习一下怎么控制进程。一个进程究竟怎么创建?一个进程怎么退出?……fork系统调用,用来创建一个进程,返回值比较特殊,有两个返回值,对于父进程来说,返回值是子进程的pid,对于子进程来说,返回值为0,当然,创建失败,返回值就是-1。fork有两个返回值?我的天呐,怎么做到的?fork创建了多个进程之后,一般而言,父子进程的代码是共享的,数据是私有的、各自一份的(全局

2025-11-06 10:08:42 1363

原创 算法:38.外观数列----一道模拟题的经典易错点

这道题题目并不难,但是这道题目真的给我上了一课,希望这篇博客,能够给看到的读者小小的提一个醒,大家不要范这种错误哦!!!

2025-11-06 09:21:53 925

原创 Linux进程:进程调度O(1)算法---走进操作系统内核,不在停留课本

优先级的本质:确定某种资源分配的先后顺序,目标资源比较少,需要竞争资源,于是就有了优先级,进程的优先级竞争的是CPU的资源。

2025-11-05 10:53:01 1202

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除