- 博客(61)
- 收藏
- 关注
原创 Agent 的规划与执行范式:Plan-Execute-Replan 与 ReAct
Agent的规划与执行,核心是把目标转化为行动,再用反馈校准计划与决策。本文系统解析Plan-Execute-Replan与ReAct:前者显式管理总体步骤及计划修订,后者通过推理、行动与观察的交替推进任务。围绕两种范式的运行机制、适用场景与执行成本,展示“外层规划、内层执行”的双层协作结构,厘清局部调整与整体重规划的边界,并说明状态记录、约束检查、预算控制与任务验收如何支撑可靠执行。
2026-10-19 11:20:50
989
原创 RAG相关技术介绍及Spring AI中使用--第三期
本文全面解析了构建高质量 RAG 系统中的核心 ETL 流程与重排序(Re-Ranking)技术。文章依托 Spring AI 框架,结合详实的实战代码,完整演示了从数据预处理到精细化检索的全链路开发过程。文中首先深入剖析了文档转换器的协同机制,展示如何利用 TokenTextSplitter、特征提取及摘要生成等组件,将原始复杂文档转化为 AI 友好的标准格式。随后,对比演示了 Redis、Pinecone 等主流向量数据库的底层存储与接入方案。最后,文章重点阐述了重排序技术在打破检索瓶颈中的核心价值
2026-04-20 10:04:21
1295
原创 RAG相关技术介绍及Spring AI中使用--第二期
本文介绍了RAG(检索增强生成)系统中的关键ETL(提取、转换、加载)流程,重点讲解SpringAI框架中的文档读取器实现。ETL过程包括从各类数据源提取内容、进行文本清洗和标准化处理,最后加载到向量数据库。文章详细演示了SpringAI提供的多种DocumentReader实现,包括处理JSON、纯文本、HTML、Markdown、PDF以及各类办公文档的读取器,并展示了MySQL数据库读取器的使用示例。这些工具为构建RAG系统提供了高效的数据预处理能力,确保原始数据能有效转化为适合AI模型检索结构化格式
2026-04-13 09:31:26
1118
原创 RAG相关技术介绍及Spring AI中使用--第一期
RAG(检索增强生成)是一种结合信息检索和文本生成的技术架构,旨在解决传统大语言模型的知识局限性和幻觉问题。其核心流程包括:1)文档加载与分割;2)向量转换(使用Embedding模型);3)向量存储;4)相似性检索;5)生成增强回答。通过将外部知识库(如企业文档)转换为向量存储在向量数据库中,当用户提问时,系统会先检索相关文档片段,再将其作为上下文输入大模型生成更准确的回答。SpringAI框架提供了完整的RAG实现支持,包括文本向量化、向量存储(如SimpleVectorStore)和检索增强组件
2026-04-06 11:55:43
1523
1
原创 开发自定义MCP Server并部署
本文详细介绍了基于Stdio和SSE传输协议开发MCP Server的全过程。首先通过父子工程搭建项目框架,配置依赖和工具类,演示了获取用户信息的MCP服务开发。然后对比了两种传输协议的实现差异,包括项目配置、启动方式和客户端调用方法。文章还补充了不同starter依赖的区别及常见问题解决方案,最后分享了MCP服务的多种部署方式,并推荐了Playwright和Fetch两款实用的MCP工具。全文提供了从开发到部署的完整指南,适合需要构建MCP服务的开发者参考。
2026-03-30 08:03:05
1008
原创 MCP详细介绍以及IDE和Spring AI中应用
这篇博客系统介绍了大模型上下文协议(MCP)的概念与价值,指出其作为AI连接外部系统的标准化通信协议,解决了传统工具调用接口不统一的痛点,文章解析了MCP Java SDK的Client/Server、Session、Transport三层架构与核心功能,并提供了详尽的实战指南,包括环境搭建、在Antigravity中配置百度地图MCP Server,以及在Spring AI项目中通过引入依赖和JSON配置来接入MCP服务的完整流程。
2026-03-23 17:00:32
1443
原创 SpringAI Tool Calling(工具调用)
ToolCalling(工具调用)是大语言模型(LLM)与外部工具交互的关键技术,使其从单纯文本生成升级为能执行实际任务的智能助手。文章对比了ToolCalling与FunctionCalling的关系,介绍了其应用场景(信息检索、执行操作)和实现方式(声明式@Tool注解和编程式MethodToolCallback)。详细解析了ToolCalling的工作原理,包括工具注册、模型决策、执行流程和结果处理,并提供了SpringAI中的代码示例。还探讨了工具规范(ToolDefinition、ToolCont
2026-03-16 19:28:50
1508
原创 使用AI IDE从0到1开发五子棋对战项目(vibe coding)
本项目基于AI辅助开发模式使用Java构建五子棋对战系统。通过IDEA的Qoder插件实现自然语言驱动开发,采用SpringBoot3+WebSocket技术栈,包含用户管理、在线匹配、实时对战等核心功能。开发过程采用"模板+提示词"和"rules+提示词"的方法,自上而下完成系统设计,包括PRD生成、UI设计、技术架构、数据库设计等环节。项目部署采用Docker容器化方案,整合MySQL、Redis、RabbitMQ等中间件。最终实现了一个具备积分匹配算法、低延迟同步的在线五子棋对战平台,
2026-03-09 08:47:05
1236
原创 OpenClaw保姆级安装与常见问题解决(MAC&WIN)
本文介绍了OpenClaw在Windows和MacOS系统下的安装配置流程。主要内容包括:1)安装Node.js运行环境;2)通过官网命令安装OpenClaw;3)配置模型供应商和通信方式;4)飞书插件的安装与权限配置;5)网关设置及常见问题解决方法;6)飞书应用的事件回调配置;7)测试对话功能及网络搜索配置。特别针对Windows用户提供了兼容性问题的解决方案,并详细说明了飞书机器人权限的批量导入方法。最后还介绍了如何配置Brave搜索API实现联网搜索功能。
2026-03-02 12:40:18
6329
原创 JVM(Java虚拟机)
JVM 是 Java Virtual Machine 的简称,意为 Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。1. VMwave与VirtualBox是通过软件模拟物理CPU的指令集,物理系统中会有很多的寄存器;2. JVM则是通过软件模拟Java字节码的指令集,JVM中只是主要保留了PC寄存器,其他的寄存器都进行了裁剪。JVM 是一台被定制过的现实当中不存在的计算机。
2025-12-08 15:11:39
1431
原创 网络层(IP协议) && 数据链路层(以太网)
思考:如果基于UDP实现传输超过64kb的数据要怎么设计?在应用层协议中就可以表示符,指定片偏移,指定标志位。
2025-09-16 22:40:00
1291
1
原创 传输层:UDP/TCP协议
本文对比分析了TCP和UDP两大网络协议的核心特性。UDP作为无连接协议,具有不可靠但高效的特点,其64KB报文长度限制是主要痛点。TCP通过十大核心机制实现可靠传输:1)确认应答保证数据有序到达;2)超时重传应对丢包;3)三次握手/四次挥手的连接管理;4)滑动窗口提高效率;5)流量控制防止接收方过载;6)拥塞控制适应网络状况;7)延迟应答提升吞吐量;8)捎带应答减少报文;9)字节流特性带来的粘包问题及解决方案;10)异常处理机制。文章详细解析了TCP各机制的工作原理,包括状态转换、窗口调整策略等,并讨论了
2025-09-09 19:49:27
1837
1
原创 应用层:HTTP/HTTPS协议
核心就是重复执行同一操作,返回的结果保持一致比如牛吃进去的是草,挤出来的是奶如果每次吃进去的都是草,并且每次挤出来的都是奶,就可以说是幂等如果每次吃进去的是草,挤出来的不都是奶,就不是幂等幂等性,在开发中也是很关键的,设计成幂等之后,请求就可以缓存了。
2025-09-02 12:03:28
1598
1
原创 网络编程--TCP/UDP Socket套接字
网络编程主要涉及应用层和传输层的通信实现。TCP和UDP是两种核心传输协议:TCP提供可靠、面向连接的字节流传输,而UDP则是无连接、不可靠的数据报传输。程序员通过Socket套接字进行网络编程,其中DatagramSocket用于UDP通信,ServerSocket和Socket用于TCP通信。文章通过Java代码示例展示了UDP回显服务器和TCP回显服务器的实现过程,包括请求处理、响应发送等关键步骤。网络编程的核心在于实现不同主机间的进程通信,客户端发送请求,服务器处理并返回响应,这种模式构成了现代网络
2025-08-25 18:37:19
1739
1
原创 Java文件操作/IO
/绝对路径//相对路径,相对于当前项目目录//获得父目录//获得文件名//获得文件路径(与上述构造方法路径相同)//获得绝对路径//获得规范路径(去除..等)
2025-08-18 19:52:52
1555
原创 多线程--CAS原子操作
CAS(比较并交换)是并发编程中的原子操作机制,通过比较内存值与预期值实现线程安全访问。其应用包括实现原子类(如AtomicInteger)和自旋锁。但CAS存在ABA问题,即值被多次修改后恢复原值可能导致误判,如银行账户重复扣款场景。Java通过版本号机制解决ABA问题,并在ConcurrentHashMap中运用CAS优化并发性能,如使用链表头节点作为锁对象和CAS辅助计数。CAS虽高效但需注意极端场景下的线程安全问题。
2025-08-12 16:26:11
1625
原创 多线程--定时器
摘要: 定时器是一种用于在指定时间或时间间隔执行任务的机制,广泛应用于数据备份、日志清理等场景。Java标准库提供Timer类,其schedule方法可安排任务延迟执行。通过分析Timer实现原理,可发现其使用独立线程处理任务队列。文章还详细介绍了如何手动实现定时器,包括使用优先级队列处理任务调度、解决线程安全问题以及优化方案。最后提到Java线程池方案ScheduledExecutorService,它通过多线程处理任务提高了执行效率。
2025-08-04 17:28:51
870
原创 多线程--关于锁的一些知识考点
本文摘要: 锁策略是描述锁特性的抽象概念,主要包括:乐观锁(低冲突预测)与悲观锁(高冲突预测);轻量级锁(低开销)与重量级锁(高开销);自旋锁(用户态循环)与挂起等待锁(内核调度);读写锁(区分读写操作);公平锁(先来先服务)与非公平锁;可重入锁(避免嵌套死锁)与不可重入锁。文章还分析了死锁的三种场景,介绍了synchronized的实现策略,并通过ReentrantLock和Semaphore的代码示例展示了锁和信号量的实际应用。信号量作为广义锁,能控制并发访问资源数量,二元信号量可模拟互斥锁。
2025-07-29 22:24:00
1649
原创 多线程--线程池
即使核心线程数为N,线程池通常只创建处理第一个任务所需的1个线程:线程池会创建新线程来处理任务,直到达到核心线程数:可以显式地提前启动核心线程。
2025-07-21 21:14:00
1492
原创 多线程--单例模式and工厂模式
设计模式是解决常见软件问题的固定套路,可提高代码复用性和可维护性。单例模式确保类仅有一个实例,实现方式包括饿汉模式(类加载时创建)和懒汉模式(首次使用时创建),后者需解决线程安全问题。工厂模式通过封装对象创建过程,解决构造方法冲突,提供灵活的对象创建方式,但可能增加代码复杂性。合理使用设计模式能优化代码结构,但需避免过度依赖。
2025-07-14 22:06:06
1423
原创 多线程--阻塞队列and生产消费者模型
阻塞队列是一种线程安全的先进先出数据结构,具有阻塞特性:当队列为空时出队操作会阻塞,当队列满时入队操作会阻塞。Java中通过BlockingDeque和BlockingQueue接口实现,常用类包括LinkedBlockingDeque、ArrayBlockingQueue等。阻塞队列的核心应用是生产者-消费者模型,它能实现生产者和消费者的解耦合,并起到削峰填谷的作用。文章通过代码示例演示了阻塞队列的使用方法,并展示了如何手动实现一个简单的阻塞队列,包括put和take操作的线程安全处理。该模型通过缓冲区平
2025-07-07 09:49:50
1136
原创 多线程--内存可见性问题以及volatie关键字
内存可见性是导致线程安全问题的常见原因,表现为一个线程修改共享变量后,其他线程无法及时感知。文章通过示例代码演示了线程2修改flag值后,线程1仍因编译器优化而持续读取寄存器缓存,导致死循环。分析了编译器为提高效率将内存读取优化为寄存器读取的机制。提出两种解决方案:1)在循环中插入sleep降低优化必要性;2)使用volatile强制读写内存,确保变量修改对其他线程可见。强调volatile仅解决可见性问题,原子性问题仍需synchronized处理。
2025-06-30 17:42:47
818
原创 多线程-线程安全问题及解决方法
这里列举两种情况情况二👇一个字:贵 而且运行速度是相对的内存就已经很快了像这种bug情况由于随机排序 还有很多a)一个线程一把锁 -- 可重入b)两个线程两把锁b)M个线程N把锁。
2025-06-23 16:21:43
1351
原创 数据库--事务
本文系统介绍了数据库事务的核心概念与应用。首先阐述了事务作为数据库操作基本单位的定义及其"全有或全无"的特性,并以银行转账为例说明其重要性。重点解析了事务的ACID四大特性:原子性、一致性、隔离性和持久性。详细说明了MySQL中事务的使用方法,包括存储引擎选择、基本控制语句和保存点设置。深入分析了四种事务隔离级别(读未提交、读已提交、可重复读和串行化)及其可能引发的并发问题(脏读、不可重复读和幻读),特别指出MySQL默认的可重复读级别通过Next-Key锁解决了大部分幻读问题。最后给出
2025-06-16 22:31:25
1335
原创 数据库-索引
MySQL索引通过B+树数据结构提升查询效率,支持高效的范围查找和排序操作。索引分为主键、普通、唯一等多种类型,其中聚集索引按主键顺序存储数据。创建索引需考虑高频查询列和选择性,避免过多索引影响性能。B+树利用页结构(默认16KB)优化磁盘IO,三层结构可支持2000万+数据的高效检索。合理使用索引能显著提升系统性能,但需平衡查询与写入操作的开销。
2025-06-11 07:38:42
1162
原创 Java语法:抽象类和接口
/抽象类被abstract修饰//抽象方法,不用给出实例@OverrideSystem.out.println("画一个圆");//抽象子类//必须要先初始化//对于成员变量public static final是默认有的public static final String name = "圆";// String name = "圆";//成员方法//对于成员方法public abstrac是默认有的//usb接口//鼠标类实现usb接口。
2025-03-24 08:01:53
1619
原创 Java--多态
System.out.println(this.name + "正在吃东西");//重写eat@OverrideSystem.out.println(this.name + "正在吃虫子");//重写eat@OverrideSystem.out.println(this.name + "正在吃骨头");System.out.println(this.name + "正在吃东西");//重写eat@Override。
2025-03-23 07:19:42
832
原创 Java语法--继承
System.out.println(this.name + "正在吃东西");System.out.println(this.name + "正在喵喵叫");System.out.println(this.name + "正在汪汪叫");System.out.println(this.name + "正在吃东西");System.out.println(this.name + "正在喵喵叫");eat();//访问父类方法mimi();//访问子类方法cat.func();
2025-03-17 13:45:17
1310
原创 Java的类和对象
class Dog{//访问修饰符 类型 变量//成员变量//成员变量//成员方法(狗的行为)System.out.println(name + " 正在汪汪叫");class Dog{//访问修饰符 类型 变量//成员变量//成员变量//成员方法(狗的行为)System.out.println(name + " 正在汪汪叫");//实例化对象//用.号访问成员变量和成员方法(类似于C语言)dog1.name = "大黄";day = day;
2025-03-17 08:32:47
1372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅