- 博客(64)
- 收藏
- 关注
原创 用 Elastic APM 实现分布式日志与链路追踪
本文介绍了如何通过Elastic APM Java Agent低成本实现链路追踪与日志采集。该方案无需代码侵入,自动注入链路追踪并发送结构化日志到Elasticsearch,支持一键从Trace跳转至关联日志。文章详细讲解了APM Server的安装配置、数据存储机制(Data Stream与ILM策略)、Java Agent接入方法,以及Kibana的可视化效果展示。特别针对APIGateway路由问题,提供了通过添加依赖和自定义过滤器来完善追踪信息的解决方案。该方案具有部署简单、零侵入、自动关联日志与链
2026-08-07 15:50:12
281
原创 基于Spring AI Alibaba的监督者模式实践
摘要:本文探讨了利用Spring AI Alibaba框架实现监督者模式,构建智能个人助理。该模式通过中心化的监督者Agent动态协调多个子Agent(如日程管理和邮件发送),克服了传统硬编码流程的局限性。监督者负责意图理解、任务拆解和动态路由,支持多步骤任务(如"安排会议并发送邮件")和条件分支(如冲突处理)。文章详细展示了如何通过Java配置定义子Agent和监督者,并演示了信息不足时的智能反问机制。这种架构显著提升了AI Agent应对复杂、多变场景的能力,为动态任务编排提供了新思
2026-04-22 17:09:04
564
原创 Spring AI Alibaba Skills 的渐进式披露与热更新实战
文章摘要: 智能体技能系统采用渐进式披露机制,通过SkillRegistry管理可复用技能。系统提示中先注入技能列表(名称和描述),当模型需要具体技能时调用read_skill加载完整内容。每个技能包含SKILL.md规范文件和可选资源目录,通过FileSystemSkillRegistry或ClasspathSkillRegistry加载。SkillsAgentHook将技能注册到系统提示,并支持工具与技能绑定,实现按需披露功能。测试显示模型能正确识别可用技能,并在需要时动态加载详细内容,同时支持技能相关
2026-04-10 16:11:23
858
原创 Spring AI Alibaba 分布式智能体实战:基于 A2A 协议的架构演进与落地
本文介绍了Spring AI Alibaba中的Multi-Agent协作方案,重点解决分布式场景下的智能体远程通信问题。通过A2A协议和Nacos注册中心,实现了智能体的服务发布、发现与负载均衡。文章详细展示了如何将本地ReactAgent发布为A2A服务,并通过客户端进行远程调用,验证了分布式环境下多个智能体实例的协同工作能力。该方案支持不同框架、不同部署环境的智能体无缝协作,为复杂业务场景提供了有效的分布式解决方案。
2026-04-08 13:27:06
959
原创 Spring AI Alibaba MCP Gateway:将存量服务转换成 MCP Server
本文介绍了Spring AI Alibaba MCP Gateway方案,实现存量Restful服务的零代码AI化改造。该网关作为中间代理层,通过Nacos动态发现存量服务,将MCP协议请求转换为对后端HTTP/Dubbo服务的调用,无需修改原有业务代码。文章详细演示了如何配置网关服务、在Nacos中定义MCP工具映射,以及改造客户端直连网关的完整流程,解决了企业存量系统AI化改造的难题,实现了协议转换、动态更新等核心功能。
2026-04-01 13:59:44
1216
原创 使用 Spring AI Alibaba MCP 结合 Nacos 实现企业级智能体应用
本文探讨了如何基于Nacos服务注册中心构建Spring AI Alibaba MCP的分布式智能体应用架构。通过将MCP Server注册到Nacos实现服务发现,并开发DistributedSyncMcpClient支持多节点负载均衡,解决了单点故障问题。文章详细介绍了服务端和客户端的改造方案,包括依赖引入、Nacos配置以及分布式连接管理,并特别解决了分布式场景下的鉴权问题。该方案显著提升了企业级AI应用的高并发处理能力和服务可用性,为智能体应用提供了可靠的分布式基础架构支持。
2026-04-01 09:34:55
966
原创 Spring AI Alibaba MCP 协议的全链路安全与动态鉴权
本文介绍了如何为MCP协议实现安全防护机制。首先通过自定义Header注入器在Client端自动传递Token,并在Server端使用Servlet Filter进行校验。同时配置异步支持以适配SSE长连接场景。此外,文章提出基于Spring Security实现动态工具鉴权,根据不同用户角色(如Admin/Guest)控制AI可访问的工具范围,实现"千人千面"的权限管理。这种机制既保障了通道安全(Token校验),又实现了应用安全(动态授权),为生产环境中的AI应用提供了完整的安全解决
2026-03-27 16:24:02
1464
原创 Spring AI Alibaba 实战 MCP 协议
摘要:Model Context Protocol (MCP) 是一个标准化协议,使AI模型能够与外部工具交互。文章介绍如何利用Spring AI Alibaba构建MCP服务器,为AI提供实时天气查询功能。通过MCP Server封装OpenMeteo天气API,并使用@Tool注解将Java方法转化为AI可调用的工具。配置包括端口设置、协议类型和功能声明,最终实现AI应用通过MCP客户端访问天气数据服务。
2026-03-27 11:19:31
714
3
原创 个性化闭环与全链路总结—让 AI 真正“懂你”
本文提出了一种增强RAG系统的个性化闭环方案,通过引入长期记忆机制使AI系统能够记住用户偏好。该系统包含三个关键步骤:1)异步分析对话内容提取用户画像;2)结构化存储用户偏好信息;3)动态注入记忆到后续对话。技术实现上采用Spring AI Alibaba生态中的Store接口,支持MySQL等存储介质,通过JSON文档灵活存储用户画像数据。核心代码展示了如何异步更新用户记忆,包括提取对话上下文、分析记忆需求、执行存储更新等流程。这种设计使AI系统能跨会话保持用户偏好记忆,实现"越用越懂你&quo
2026-03-26 15:38:24
605
原创 答案验证:最后的“质检员”
文章摘要:本文介绍了基于Spring AI Alibaba的ModelInterceptor构建的答案验证与自我修正机制。该系统通过"宽召回+模型精排"精准筛选文档后,利用拦截器在模型输出前进行三重质量检查(一致性、完整性、安全性),形成"生成-验证-修正"的闭环流程。关键实现包括精准提取上下文、设计裁判Prompt模板、防死循环机制和异常降级策略。该方案显著降低了AI幻觉风险,提高了回答质量,使RAG系统具备从语义缓存到答案验证的全链路智能能力,为构建企业级AI A
2026-03-26 14:42:18
466
原创 工具调用与精排:像专家一样“挑重点”
本文提出了一种优化RAG系统检索链路的高效架构——"宽召回+模型精排"。针对传统RAG"全量投喂"导致的Token浪费和噪音干扰问题,该方案通过三个关键阶段实现优化:首先放宽阈值进行大规模初步检索(topK=20),然后利用大模型基于预埋的摘要和关键词元数据进行轻量级精排,最终仅投喂5篇最相关文档。这种设计既保证了召回率,又显著降低了75%的Token消耗,同时避免了引入昂贵专用重排序模型。文章还详细介绍了配套的ETL预处理流程和DocumentSearchTool的
2026-03-26 10:08:45
472
原创 使用SpringAIAlibaba给上下文“瘦身”
本文探讨了AI Agent在处理长对话时面临的历史记忆过载问题,提出了自适应摘要压缩的解决方案。文章首先分析了传统全量记忆策略的弊端:成本上升、性能下降和模型注意力分散。随后介绍了一个基于Spring AI Alibaba框架的手写实现MessageSummarizationHook,详细说明了其阈值检测、切片压缩和增量融合的核心机制。最后重点介绍了官方SummarizationHook的优势,包括精准Token计算、灵活配置和健壮的错误处理,并提供了具体的使用示例。这种"有损"记忆机制
2026-03-26 09:29:39
693
原创 用 SpringAIAlibab 让高频问题实现毫秒级响应
本文介绍如何通过语义缓存优化RAG系统性能。传统精确缓存无法识别语义相似问题,而语义缓存通过向量化查询并在向量数据库中检索相似历史问题,能覆盖同义表达。在Spring AI Alibaba框架中,通过BEFORE_MODEL位置的Hook实现语义缓存,命中时跳过后续流程。文章详细展示了缓存服务实现和Hook核心代码,并对比了不同场景下的性能差异。语义缓存可将高频问题响应时间降至毫秒级,显著降低LLM调用成本。
2026-03-23 15:41:19
568
原创 用 Spring AI Alibaba 打造智能查询增强引擎
摘要:Spring AI Alibaba 查询增强引擎解析 本文深入探讨了在 RAG(检索增强生成)系统中查询增强(Query Enhancement)的核心价值,并展示了基于 Spring AI Alibaba 的实现方案。文章指出,即使大模型拥有丰富的上下文记忆能力,未经增强的查询仍会导致检索阶段失败,使系统依赖模型猜测而非精准检索。 核心解决方案是通过QueryEnhancementHook在检索前对用户查询进行智能改写: 提取当前对话意图 注入用户长期画像(职位/偏好等) 调用LLM进行上下文感知的
2026-03-20 17:15:40
518
原创 基于 Spring AI Alibaba 构建混合 RAG Agent
摘要:本文介绍基于Spring AI Alibaba构建的混合RAG Agent架构,旨在解决传统RAG技术在知识库应用中的痛点。该架构结合Agent式RAG的灵活性和两步RAG的严谨性,通过六个关键步骤(查询增强、语义缓存、Token自适应压缩、工具调用与精排、答案验证、个性化闭环)提升AI响应质量。该方案利用Spring AI Alibaba的Hook、Interceptor等组件,实现低成本、易扩展的企业级AI应用,特别适合Java开发者构建知识库、客服系统等场景。
2026-03-18 11:16:02
493
原创 基于 Debezium Server 与 Redis 的高可用 CDC 架构实践
Debezium Server HA 能实时捕获数据库变更并投递至 Kafka、Redis、Pulsar 等下游系统
2026-01-13 15:10:16
518
原创 Spring AI RAG 实战
摘要:本文介绍了基于SpringAI构建检索增强生成(RAG)系统的完整流程。系统通过LLM提取问题关键词进行元数据过滤,结合向量检索提升精度,整合文档摘要构建增强上下文,并支持工具调用和记忆功能。代码展示了关键词提取、向量检索、上下文构建和流式响应的关键实现步骤,相比传统RAG显著提高了回答准确性和相关性。
2025-10-27 10:49:32
434
原创 Spring AI 工具调用(Tool Calling)实战
Spring AI 支持通过注解的方式将普通 Java 方法转化为可被模型识别的“工具”。Spring AI 还支持以形式定义工具,更适合无状态的服务逻辑。特性方法工具(@Tool)函数工具(Function)定义方式类中带注解的方法实现注册方式或适合场景多个相关功能组合(如时间处理)单一职责服务(如天气、翻译)管理方式手动实例化可交由 Spring 容器管理(@Bean)类型限制不支持异步/响应式等不支持原始类型、集合等。
2025-10-14 10:54:23
2300
原创 Spring AI 文档ETL实战:集成text-embedding-v4 与 Milvus
本文将带你一步步实现一个完整的文档处理流水线(ETL),利用 Spring AI 框架从本地 Markdown 文件中提取内容,通过通义千问的嵌入模型 text-embedding-v4 生成向量,并最终将带有丰富元数据的文档存储到高性能向量数据库 Milvus 中。整个流程简洁高效,适用于构建知识库、智能问答系统等 AI 应用。
2025-10-13 11:49:26
1529
原创 Spring AI 会话记忆实战:从内存存储到 MySQL + Redis 双层缓存架构
ChatMemoryChatMemoryprivate static final String DEFAULT_PROMPT = "你是一个博学的智能聊天助手,请根据用户提问回答!@Bean// 使用我们自定义的服务理解了ChatMemory的核心作用:解决 LLM 无状态问题。掌握了其分层设计原理ChatMemory→Repository的清晰架构。实现了高性能双层缓存:通过自定义ChatMemory实现,结合,兼顾了性能与可靠性。
2025-10-09 11:32:27
1554
原创 基于 HLS + AES128 加密与动态 Token 鉴权的在线点播系统实现
本文提出了一种基于HLS协议和AES-128加密的在线点播系统解决方案。系统采用Java实现,核心流程包括:1) 用户上传MP4文件后,使用FFmpeg进行转码、切片(10秒片段)和加密;2) 生成带令牌的播放地址,验证令牌有效性;3) 动态修改.m3u8文件中的密钥URI和.ts片段URL。系统通过FFmpeg工具链实现视频处理,包括生成16字节随机密钥和IV、创建密钥信息文件等步骤,确保视频内容安全传输。该方案适用于在线教育、付费视频等需要内容保护的场景。
2025-08-11 17:18:42
1240
原创 JVM(Java虚拟机)运行时数据区
JVM运行时数据区包含方法区(存储类信息、常量等)、堆(对象实例存储区)、程序计数器(线程私有字节码指示器)、虚拟机栈(方法执行模型)和本地方法栈。其中方法区在不同JDK版本有永久代和元空间两种实现,堆分为新生代和老年代。程序计数器是唯一不会OOM的区域,其他区域在内存不足时可能抛出OutOfMemoryError或StackOverflowError。文章还提供了元空间配置建议和常见问题解决方案,说明各内存区域的功能特点和异常处理机制。
2025-08-04 14:15:55
1150
原创 实现一个线程安全、可删除、支持估计统计的增强型计数布隆过滤器
本文介绍了一种增强型计数布隆过滤器(Enhanced Counting Bloom Filter),针对传统布隆过滤器不支持删除操作、无法统计元素数量等局限进行改进。该结构采用计数数组替代位数组实现删除功能,通过读写锁保证线程安全,支持元素数量估算和动态误判率计算,并优化了哈希函数策略和自动参数配置。测试表明,该方案在保持传统布隆过滤器空间效率的同时,增加了删除、统计等实用功能,适用于缓存穿透防护、黑名单过滤等高并发场景。
2025-07-07 09:43:13
973
原创 深入剖析一个“激进”的自定义线程池实现 —— AggressiveThreadPool
Override// 如果当前线程数 < 最大线程数,则假装队列已满,促使线程池扩容// 否则正常入队。
2025-07-07 09:20:44
982
原创 Java验证MP4文件是否为流式MP4,不是的话转换成流式MP4
使用 isoparser 验证MP4文件是否为流式MP4,不是的话使用 JavaCV 转换成流式MP4。
2025-04-27 10:55:39
310
原创 使用SpringBoot + Thymeleaf + iText实现动态PDF导出
使用SpringBoot + Thymeleaf + iText实现导出动态PDF
2025-04-01 11:12:01
394
原创 自定义Spring Cloud Gateway过滤器:记录慢请求
本文将详细介绍如何实现一个自定义过滤器,用于记录响应时间超过指定阈值的请求,并展示如何支持微服务的自定义配置。通过实现自定义的Spring Cloud Gateway过滤器,我们可以灵活地监控和记录响应时间超过指定阈值的请求。如果配置启用了日志记录并且耗时超过了设定的阈值,则记录一条警告日志。这个类将负责缓存请求体,并在请求处理完成后检查响应时间是否超过了设定的阈值。如果超过了,则记录一条警告日志。启动Spring Boot应用 和 Gateway网关,并发送请求到不同的路由,观察日志输出。
2025-02-10 17:22:21
1206
1
原创 高并发数据采集场景下Nginx代理Netty服务的优化配置
高并发数据采集场景下,要优化Nginx反向代理来支持多个Netty数采服务并保证稳定的性能,可以从以下几个方面对Nginx进行优化配置。
2024-12-12 15:40:31
2240
6
原创 Elasticsearch数据冷热分离
在 Elasticsearch 的每个节点的配置文件(ILM 可以自动管理数据的生命周期,包括将索引从热节点迁移到温节点、冷节点,或最终删除。
2024-11-27 16:07:07
1860
原创 SpringCloudAlibabaSidecar整合异构微服务
SpringCloudAlibabaSidecar代理异构微服务注册Nacos
2024-11-08 09:04:05
2291
2
原创 Elastisearch查询最近一年消费金额排名前五的用户
现在这个查询已经满足我们的需求了,能够得到我们想要的结果,接下来我们尝试优化下它。上下文中,因为它们是用于过滤数据的,这可以提高性能并允许 Elasticsearch 使用缓存。实现这一需求的主要思路是通过 Elasticsearch 的聚合功能来实现。再加一个限定条件,收货地址是爱荷华州的,需要在。聚合可以用来获取每个分组中的部分文档数据。查询来过滤出过去一年内的订单记录。字段分组,并在每个分组内计算。为了获取用户的完整姓名,我们在。定义一个与索引结构相对应的实体类。定义聚合结果的 DTO 类。
2024-10-09 11:02:49
1119
原创 Netty配置SSL证书加密
使用 OpenSSL 生成 CA、服务端和客户端的证书。在 Netty 中,配置SslContext来加载证书,并将其应用到中。通过 Netty 的SslHandler实现安全的加密数据传输,确保数据在传输过程中是加密的。
2024-09-14 17:21:40
1863
1
原创 Netty采集数据高效写入TDengine
通过上述设计和实现,我们构建了一个高效的数据采集服务,能够实时接收数据并在数据量达到阈值或经过一定时间后批量写入 TDengine 数据库。这种设计不仅提高了数据处理的效率,还确保了在高并发环境下的数据安全性和一致性。
2024-09-03 10:43:45
1617
原创 使用[KafkaStreams流计算框架实时计算产生报警(升级报警)
需求背景很简单,每秒钟采集一次设备数据,流计算框架需要对数据做处理,判断采集值超过100就产生报警,如果持续5分钟产生高报,持续10分钟产生高高报。流计算服务只负责产出报警到topic,下游服务负责监听topic后续处理。需要注意,当报警被处置后会向接收数据的主题发送处置信号,处置后需要重置这个设备的时间窗口,它对应的报警从新开始计算。实时计算报警,官方文档非常完善。
2024-08-23 16:35:07
915
原创 Java使用RSA算法实现数字签名及验签的过程
其主要流程是发送方使用私钥对消息生成数字签名(消息的hash),然后将签名附加到消息中并将其发送给接收方,接收方收到消息后会提取签名,并计算出消息的哈希值,然后使用发送方的公钥验证签名,判断签名是否有效,数字签名提供了相当高的安全保证。如果签名是有效的,则意味着签名确实是由持有对应私钥的实体创建的,并且消息自签名以来没有被篡改。来源确认:因为私钥是唯一的,并且只有发送方知道,所以当接收方成功验证了签名,就可以确信消息是由持有该私钥的实体发送的。生成数字签名:发送方使用自己的私钥对消息的哈希值进行签名。
2024-08-23 09:44:57
1101
原创 使用Apache POI和POI-OOXML实现word模板文档自动填充功能
最近接到一个新的需求,用户创建好模板文件保存到模板库,然后使用在线文档编辑器打开模板时,将系统数据填充到模板文件并生成新的word文件,然后在线编辑,研究使用Apache POI和POI-OOXML实现了这个功能。
2024-08-19 17:12:38
1476
原创 Sentinel1.8.1 控制台改造
本项目是在Sentinel控制台1.8.1的基础上改造的,实现了控制台添加、修改规则同步至Nacos配置中心,Nacos修改配置文件后也能同步至控制台,实现了流控、降级、权限、网关、系统、参数等规则持久化改造,同时引入了。Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。时序库用于保存请求QPS数据,使用MyBatisPlus查询数据。
2024-08-14 09:21:14
518
原创 ElasticSearch优化
这样,即使其中两个节点完全离线,集群仍然可以正常工作。由于 Lucene 段合并的计算量庞大,会消耗大量的 I/O,而 ES 默认让后台定期进行段合并,这可以应对绝大多数场景,如果有特殊情况需要调整,比如对于写密集型的应用,你可能希望减少段合并的频率,以减少写操作的延迟; 由于特殊原因导致的节点瞬时中断的问题,默认情况下,集群会等待一分钟来查看节点是否会重新加入,如果等待期间重新加入,会保持其现有的分片数据,不会触发新的分片分配,这样就可以减少 ES 在自动再平衡可用分片时所带来的极大开销。
2024-07-24 15:35:54
5052
2
空空如也
OpenFeign使用HttpClient后,Feign响应GZIP压缩失效,求解
2023-12-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅