- 博客(31)
- 收藏
- 关注
原创 Spring AI 2.0 升级实录:7 个真实踩坑与完整迁移检查清单
本文记录一次真实的 Spring AI 1.0.9 → 2.0.0 生产级升级(WMS 智能仓储项目,Spring Boot 3.5 → 4.1.0),每个坑都附带真实报错信息与复现路径,结尾给出 8 项升级检查清单,可直接对照执行。
2026-10-16 14:27:43
370
原创 RAG 知识库改造方案 —— 集成 ripgrep + Agentic 检索
RAG知识库改造摘要(148字): 为解决代码问答中索引滞后、副本不一致与抽象检索弱三大痛点,本方案在保留原有RAG链路基础上,新增基于ripgrep + 大模型的Agentic检索链路。通过零预索引、直读磁盘源码实现改完即答,支持策略热切换(RAG/AGENTIC/HYBRID),融合双范式优势。采用路径沙盒、轮次硬限等机制保障安全可控,兼顾时效性与准确性,显著提升代码类问题召回率与系统稳定性。
2026-09-28 08:54:17
248
原创 ERP AI Agent集成 ripgrep + Agentic 检索 前后对比说明
版本:v1.0日期:2026-09-22项目:erp-ai-parent(ERP 智能助手)配对文档:docs/rag-agentic-refactor-plan.md(改造方案)
2026-09-27 15:15:49
155
原创 【WMS 仓储系统集成 AI Agent 实战】第 8 讲(终篇):生产部署与并发安全——Semaphore 放进 Flux.defer 的坑,压测抓了一晚上
系列最后一讲。系统功能全齐了,问题是:它扛得住真实流量吗?Ollama 挂了会怎样? 这一讲先做并发安全审计,再上 P0-P3 四层保护,最后给完整部署方案。压测部分有个值得所有 Reactor 用户警惕的坑。
2026-09-27 13:40:49
368
原创 【WMS 仓储系统集成 AI Agent 实战】第 7 讲:Vue3 前端工程化——Token 刷新锁、Markdown 渲染踩坑与权限体系
前一讲把 RAG 讲完了,这一讲专门讲前端工程化。核心内容:Pinia 双 Store 怎么分、并发刷新的"单飞+排队"模式(第 3 讲讲过设计,这讲补全实现)、Markdown 渲染让版式起飞的坑、以及 RBAC 权限的前端实现。
2026-09-22 16:39:51
197
原创 【WMS 仓储系统集成 AI Agent 实战】第 6 讲:RAG 知识库——“输出简单流程“为什么检索不到任何东西
RAG 是这个项目里"看着简单、做着深"的部分。这一讲覆盖完整链路:文档上传解析 → 向量分片 → 混合检索 → 多轮追问。最后那个追问检索为空的 bug,是整个 RAG 模块最有价值的修复。
2026-09-13 20:14:49
328
原创 【WMS 仓储系统集成 AI Agent 实战】第 5 讲:SSE 流式对话——Flux 双订阅、data:data: 双重包装,一个个填
AI 回复逐字流出 + 工具调用过程实时可视化。Spring MVC 下做 SSE 的坑密度极高——data:data: 双重包装、No StreamAdvisors available、WebFlux 参数类型报错——这篇全部还原。
2026-09-11 14:04:46
305
原创 【WMS 仓储系统集成 AI Agent 实战】第 4 讲:15 张表 + 19 个 AI 工具——让大模型真正“摸到“数据库
前三讲把地基打完了。这一讲是整个项目的业务核心:ERP 仓储域怎么建模、AI 怎么通过工具调用读写真实数据、库存防超卖怎么保证。还有一个 8B 模型特有的坑:数字参数 100% 成功,字符串参数时灵时不灵。
2026-09-05 13:52:34
241
原创 【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
三个问题:过滤器顺序天坑(一词之差全站 401)、SSE 异步丢认证(诡异到怀疑人生)、Token 过期体验(三层刷新机制)。每个都是真实踩坑,排查过程完整还原。
2026-08-30 16:27:37
377
原创 【WMS 仓储系统集成 AI Agent 实战】第 1 讲:从零搭建开发环境——pgvector 装不上、模型选错、依赖冲突,一天踩完三个大坑
系列开篇。这一讲把项目跑起来的地基打好:PostgreSQL 17 + pgvector、Ollama + 三个模型、Spring Boot 3 后端骨架、Vue3 前端骨架。看似是"下载安装"这种没技术含量的活,说实话,我在这步耗掉的时间比写业务代码还多——光 pgvector 就折腾了半天。
2026-08-26 18:59:26
420
原创 【WMS 仓储系统集成 AI Agent 实战】第 2 讲:双 ChatClient 架构——首 token 从 57 秒到 1 秒,keepAlive 是关键
环境搭好了,这一讲把模型接进来。核心内容:为什么一个 ChatClient 不够用、keepAlive 怎么配才能让模型常驻显存、以及一套改参数不用重启服务的三层配置热加载设计。
2026-08-26 18:40:47
452
原创 《WMS 仓储系统集成 AI Agent 实战》系列总纲
一套完整的开源实战教程:把传统 WMS 仓储系统接入本地AI大模型,让用户用自然语言完成查库存、开单据、搜知识库等真实业务操作。
2026-08-25 08:11:14
467
原创 从零搭建企业级 ERP AI 智能体:Spring Boot 3 + Spring AI + Ollama 全链路落地实践(踩坑全集)
这是一个 ERP + AI 智能体 系统的完整落地实录:把传统 ERP(物料管理、库存查询、出入库单据、质检管理)接入本地大模型,让用户用自然语言完成业务操作,数据完全不出企业。
2026-08-21 21:41:05
421
原创 ERP+Ollama+HermesAgent+Qwen2.5+SpringAi智能体本地部署说明以及避坑指南
在 ERP 开发中引入 AI 智能体,最大的顾虑是什么?数据安全。本文给你一套全离线、零外传的本地部署方案——从 Ollama 安装到 Hermes Agent 排错,再到 ERP 项目实际落地,四个模块逐步拆解。
2026-08-01 14:37:31
226
原创 ConcurrentHashMap JDK8 为什么只锁住链表首节点?原理详细拆解
1. 哈希表每个桶数据相互独立,修改单个桶无需锁住其他位置2. 一条链表全部节点都挂载在头节点,锁首节点 = 锁住整条链表3. 锁粒度压缩到最小,大幅度减少多线程锁竞争4. 多桶可以并行操作,整体并发吞吐量大幅提升5. 配合 CAS 无锁机制,尽量少加锁;同时依托 synchronized 锁升级机制,锁性能更好。
2026-05-25 16:31:50
276
原创 ArrayList、LinkedList、HashMap 核心原理详解
本文对比了ArrayList、LinkedList和HashMap的核心原理与应用场景。ArrayList基于动态数组,查询快(O(1))但增删慢(O(n));LinkedList采用双向链表,头尾增删快(O(1))但查询慢(O(n))。HashMap初始容量16,负载因子0.75,扩容时容量翻倍,采用数组+链表+红黑树结构,当链表长度≥8且数组长度≥64时转为红黑树优化查询效率。实际应用中,读多改少选ArrayList,改多读少选LinkedList,HashMap则需关注扩容机制与哈希冲突处理。
2026-05-21 12:49:12
599
原创 如何保证接口幂等性?
首先看看幂等性的概念:同一个接口,多次发出同一个请求,必须保证操作只执行一次。调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。比如下面这些情况,如果没有实现接口幂等性会有很严重的后果:支付接口,重复支付会导致多次扣钱;订单接口,同一个订单可能会多次创建。
2026-05-21 12:28:05
405
原创 redis常见问题及解决方案
指在同一时段大量的缓存失效,导致数据查询直接打到数据库,可能会使数据库崩溃。解决方法:设置合理的缓存失效时间,避免大量缓存同时失效。实现缓存数据的分布式锁,确保同一时间只有一个客户端去数据库中查询数据,其他客户端等待。利用Redis集群或者一致性哈希,分散key的分布,避免热点数据集中失效。如果缓存数据设置了过期时间,可以在失效前主动更新缓存数据。主从+哨兵、持久化机制 aof / rdb。
2024-07-31 15:36:01
1309
原创 kafka(持续更新中,,,,,,)
我们已经提到了基础知识,但生产者(有时称为发布者)是向 Kafka 主题写入消息的组件。从生产者发送的消息存储在 Kafka 中供以后使用。我们稍后将解释其工作原理,但目标是尽可能长时间地保留写入 Kafka 的数据。许多生产者可以一次与 Kafka 系统进行通信。每个生产者都可以根据需要写入单个或多个主题。消费者是 Kafka 平台的读者部分,有时也称为订阅者。使用者阅读存储在 Kafka 中的消息。我们稍后将介绍其工作原理,但目标是确保在需要时可以读取存储在 Kafka 中的数据。
2024-07-30 17:00:41
1345
原创 SpringCloud面试整理
Spring Cloud不仅简化了服务的注册与发现、配置管理、消息总线、负载均衡等基础设施的开发,而且还为微服务架构中的各种操作提供了简单的开发方式,如服务治理、熔断机制、智能路由、微代理、控制总线、一次性token、全局一致性锁、leader选举、分布式session、集群状态管理等12。此外,Spring Cloud还支持多种技术整合,如Vue2+Vue3、低代码/无代码开发、分布式与单体式应用、工作流引擎、页面视图引擎等,进一步扩展了其应用场景和功能3。
2024-07-29 16:32:03
1218
原创 Java JDK22版本发布,有哪些新的改动
全新版本的 JDK 更新和改进了 12 项JDK 增强建议 (JEPs)。JDK 22 将提供OpenJDK Project Amber 的语言改进(Statements before super[…]、Unnamed Variables & Patterns、String Templates 以及 Implicitly Declared Classes 和 Instance Main Methods);
2024-07-29 16:01:24
1435
原创 nginx介绍
设置客户端请求主体读取超时时间,如果超过这个时间,客户端还没有发。设置客户端连接保持会话的超时时间,超过这个时间,服务器会关闭。按后端服务器的响应时间来分配请求,响应时间短的优先分配。设置客户端请求头读取超时时间,如果超过这个时间,客户端。代码质量非常高,代码很规范,手法成熟, 模块扩展也。指定响应客户端的超时时间。这个超过仅限于两个连接活。定义虚拟主机,但是这个虚拟主 机不指定自己的。其次是按文件中顺序的正则匹配,最后是交给。候,停止匹配,按当前匹配规则处理请求。无缓存的反向代理加速,简单的负载均衡。
2024-07-29 14:33:01
1405
原创 Java多线程常见面试题及答案
这一点在synchronized关键字中是无法实现的,因为它在获取锁时是隐式的,不会响应中断。这与synchronized关键字的隐式获取锁方式不同,后者在获取锁时是隐式的,当线程执行完同步代码块或方法后会自动释放锁。Java中的锁机制包括偏向锁、轻量级锁和重量级锁,它们各有优缺点,并且适用于不同的场景。LockSupport是构建同步组件(如AQS)的基础工具,它提供的方法是线程同步的基础,允许开发者精确地控制线程的阻塞和唤醒,这对于实现复杂的并发控制和同步机制非常有用。
2024-07-29 13:42:44
1065
原创 git新分支代码拉取及合并
场景:当我们在修改测试bug时,一般会从test分支拉取最新的代码分支用于修改当前bug,然后通过本地测试后再进行代码合并。这样,你就成功地将远程仓库的代码拉取到本地,并创建了一个新的分支new-bug-test。注:`origin` 替换为你的远程仓库名称,`test`为你要推送的目标分支的名称。当合并请求被接受并合并后,需要更新本地仓库以获取最新的更改。这将从远程仓库拉取最新的更改,并将其合并到当前的本地分支上。填写合并请求的标题和描述,并选择需要合并的分支。
2024-07-29 12:54:36
2138
原创 Java面试题大全(四)
这是因为 clone() 方法通常是在子类中覆盖父类的 clone() 方法实现的,而 super.clone() 负责产生正确大小的空间,并逐位复制父类的成员变量到子类对象中。其他对象:Java中还有其他引用类型,用于表示特定用途的对象,例如日期对象(java.util.Date)、集合框架对象(如java.util.List、java.util.Map)、输入/输出流对象(如java.io.InputStream、java.io.OutputStream)等。
2024-07-29 11:03:05
1000
原创 Java面试题大全(三)
然而,值得注意的是,即使两个对象的hashCode相同,它们也不一定相等。基础数据类型主要包括byte、boolean、char、short、int、float、long、double,这些类型是Java语言内置的,直接支持的数据类型,它们是编程语言中的基本构建块,用于表示不同的数据值。由于String是一种对象,它具有对象的所有特性,如可以继承和修改(尽管String类在Java中是被声明为final的,意味着不能被继承,但仍然可以修改其引用指向的对象)。
2024-07-26 13:31:53
726
原创 Java面试题大全(二)
隐式类型转换主要涉及基本数据类型之间的转换,例如,当一个数据类型的范围小于另一个数据类型时,Java会自动将小范围的数据类型转换为大范围的数据类型,如将字节类型转换为短整型、整型、长整型、浮点型或双精度浮点型。例如,int age;在Java中,局部变量声明后必须初始化才能使用,而实例变量、类变量(静态变量)在声明时已经建立了存储空间,但它们的默认值由变量的类型决定(例如,数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null)。
2024-07-24 13:54:19
660
原创 Java面试题大全(一)
在Java中,所有的方法代码都是使用Java语言编写的,而运行时都是在Java虚拟机(JVM)上执行的。System.gc()和Runtime.gc()在本质上是相似的,它们都是调用Runtime类中的gc()方法,而Runtime.gc()是一个native方法,这意味着它是用Java以外的语言(如C或C++)实现的。此外,还有JSON、XML绑定库如Jackson、Gson(JSON)和JAXB、XMLBeans(XML),用于实现对象与数据格式的互转。
2024-07-24 10:30:55
1293
1
原创 windows10系统Nacos下载和安装
看的再多,不如自己上手试一试。第一次捣鼓这个东西,还是得靠百度啊。也是借鉴了几位前辈的文章,才让我有了些头绪哈。下面说下我自己的安装过程。由于国内访问正常官网地址访问不稳定,大多数情况下是连接不上的,就算那么几次幸运的连接上,也会很快断开,至于为什么会这样,我们不多说哈。经过不断的查找,发现有那么一个办法,可以然后我们正常访问github,那就是在kgithub.com。在地址前面加上一个”k“,就可以了。不要问我为什么,问就是我也不知道为什么,网上也没说为什么。
2023-08-11 11:02:12
1048
原创 文心一言和ChatGPT有哪些区别
例如,在智能客服、智能助手、在线教育等领域,ChatGPT可以根据用户的问题或需求,生成连贯、通顺的回答和解释。而ChatGPT则基于Transformer模型进行训练和生成,并采用了GPT-3.5架构,该架构具有自注意力机制和多层神经网络结构等特点,能够处理长文本序列并生成连贯、有意义的结果。第三,输出结果:文心一言的输出结果主要是情感表达和娱乐为主,注重语言的优美和意境的营造。而ChatGPT的输出结果更加通用和广泛,可用于文本的自动生成、对话系统的构建等应用场景,更加注重语言的准确性和流畅性。
2023-08-10 21:46:22
1925
原创 使用POI拆分word文档并转成html在页面展示
需求:导入word文档,按照目录进行拆分并转换成html,将目录及应内容保存到数据库,通过赋值到富文本编辑器在页面展示。2、.docx需要POI XWPFDocument进行解析,同时将图片进行本地保存,遍历段落获取目录列表。4、通过Jsoup读取html文件,获取页面元素,删除空白行,删除标号,替换图片访问路径为相对路径。3、根据目录所在段落下标删除前后段落,进行文档段落拆分,将拆分的文件转换成html文件输出保存。1、添加POI对应的jar包,我基本上用到了这些,其他看个人情况自行添加。
2023-08-03 14:05:48
1307
代数、拓扑、微分学和 最优化理论 用于计算机科学和机器学习
2024-07-31
S1000D国际规范 使用公共源数据库
2024-07-31
潜在失效模式及后果分析FMEA-培训教材.pdf
2024-07-31
FMECA故障模式影响及危害度分析
2024-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅