自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring AI Alibaba 分布式智能体实战:基于 A2A 协议的架构演进与落地

本文介绍了Spring AI Alibaba中的Multi-Agent协作方案,重点解决分布式场景下的智能体远程通信问题。通过A2A协议和Nacos注册中心,实现了智能体的服务发布、发现与负载均衡。文章详细展示了如何将本地ReactAgent发布为A2A服务,并通过客户端进行远程调用,验证了分布式环境下多个智能体实例的协同工作能力。该方案支持不同框架、不同部署环境的智能体无缝协作,为复杂业务场景提供了有效的分布式解决方案。

2026-04-08 13:27:06 457

原创 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 441

原创 使用 Spring AI Alibaba MCP 结合 Nacos 实现企业级智能体应用

本文探讨了如何基于Nacos服务注册中心构建Spring AI Alibaba MCP的分布式智能体应用架构。通过将MCP Server注册到Nacos实现服务发现,并开发DistributedSyncMcpClient支持多节点负载均衡,解决了单点故障问题。文章详细介绍了服务端和客户端的改造方案,包括依赖引入、Nacos配置以及分布式连接管理,并特别解决了分布式场景下的鉴权问题。该方案显著提升了企业级AI应用的高并发处理能力和服务可用性,为智能体应用提供了可靠的分布式基础架构支持。

2026-04-01 09:34:55 614

原创 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 778

原创 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 514

原创 个性化闭环与全链路总结—让 AI 真正“懂你”

本文提出了一种增强RAG系统的个性化闭环方案,通过引入长期记忆机制使AI系统能够记住用户偏好。该系统包含三个关键步骤:1)异步分析对话内容提取用户画像;2)结构化存储用户偏好信息;3)动态注入记忆到后续对话。技术实现上采用Spring AI Alibaba生态中的Store接口,支持MySQL等存储介质,通过JSON文档灵活存储用户画像数据。核心代码展示了如何异步更新用户记忆,包括提取对话上下文、分析记忆需求、执行存储更新等流程。这种设计使AI系统能跨会话保持用户偏好记忆,实现"越用越懂你&quo

2026-03-26 15:38:24 477

原创 答案验证:最后的“质检员”

文章摘要:本文介绍了基于Spring AI Alibaba的ModelInterceptor构建的答案验证与自我修正机制。该系统通过"宽召回+模型精排"精准筛选文档后,利用拦截器在模型输出前进行三重质量检查(一致性、完整性、安全性),形成"生成-验证-修正"的闭环流程。关键实现包括精准提取上下文、设计裁判Prompt模板、防死循环机制和异常降级策略。该方案显著降低了AI幻觉风险,提高了回答质量,使RAG系统具备从语义缓存到答案验证的全链路智能能力,为构建企业级AI A

2026-03-26 14:42:18 389

原创 工具调用与精排:像专家一样“挑重点”

本文提出了一种优化RAG系统检索链路的高效架构——"宽召回+模型精排"。针对传统RAG"全量投喂"导致的Token浪费和噪音干扰问题,该方案通过三个关键阶段实现优化:首先放宽阈值进行大规模初步检索(topK=20),然后利用大模型基于预埋的摘要和关键词元数据进行轻量级精排,最终仅投喂5篇最相关文档。这种设计既保证了召回率,又显著降低了75%的Token消耗,同时避免了引入昂贵专用重排序模型。文章还详细介绍了配套的ETL预处理流程和DocumentSearchTool的

2026-03-26 10:08:45 408

原创 使用SpringAIAlibaba给上下文“瘦身”

本文探讨了AI Agent在处理长对话时面临的历史记忆过载问题,提出了自适应摘要压缩的解决方案。文章首先分析了传统全量记忆策略的弊端:成本上升、性能下降和模型注意力分散。随后介绍了一个基于Spring AI Alibaba框架的手写实现MessageSummarizationHook,详细说明了其阈值检测、切片压缩和增量融合的核心机制。最后重点介绍了官方SummarizationHook的优势,包括精准Token计算、灵活配置和健壮的错误处理,并提供了具体的使用示例。这种"有损"记忆机制

2026-03-26 09:29:39 441

原创 用 SpringAIAlibab 让高频问题实现毫秒级响应

本文介绍如何通过语义缓存优化RAG系统性能。传统精确缓存无法识别语义相似问题,而语义缓存通过向量化查询并在向量数据库中检索相似历史问题,能覆盖同义表达。在Spring AI Alibaba框架中,通过BEFORE_MODEL位置的Hook实现语义缓存,命中时跳过后续流程。文章详细展示了缓存服务实现和Hook核心代码,并对比了不同场景下的性能差异。语义缓存可将高频问题响应时间降至毫秒级,显著降低LLM调用成本。

2026-03-23 15:41:19 497

原创 用 Spring AI Alibaba 打造智能查询增强引擎

摘要:Spring AI Alibaba 查询增强引擎解析 本文深入探讨了在 RAG(检索增强生成)系统中查询增强(Query Enhancement)的核心价值,并展示了基于 Spring AI Alibaba 的实现方案。文章指出,即使大模型拥有丰富的上下文记忆能力,未经增强的查询仍会导致检索阶段失败,使系统依赖模型猜测而非精准检索。 核心解决方案是通过QueryEnhancementHook在检索前对用户查询进行智能改写: 提取当前对话意图 注入用户长期画像(职位/偏好等) 调用LLM进行上下文感知的

2026-03-20 17:15:40 451

原创 基于 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 417

原创 基于 Debezium Server 与 Redis 的高可用 CDC 架构实践

Debezium Server HA 能实时捕获数据库变更并投递至 Kafka、Redis、Pulsar 等下游系统

2026-01-13 15:10:16 422

原创 Spring AI RAG 实战

摘要:本文介绍了基于SpringAI构建检索增强生成(RAG)系统的完整流程。系统通过LLM提取问题关键词进行元数据过滤,结合向量检索提升精度,整合文档摘要构建增强上下文,并支持工具调用和记忆功能。代码展示了关键词提取、向量检索、上下文构建和流式响应的关键实现步骤,相比传统RAG显著提高了回答准确性和相关性。

2025-10-27 10:49:32 375

原创 Spring AI 工具调用(Tool Calling)实战

Spring AI 支持通过注解的方式将普通 Java 方法转化为可被模型识别的“工具”。Spring AI 还支持以形式定义工具,更适合无状态的服务逻辑。特性方法工具(@Tool)函数工具(Function)定义方式类中带注解的方法实现注册方式或适合场景多个相关功能组合(如时间处理)单一职责服务(如天气、翻译)管理方式手动实例化可交由 Spring 容器管理(@Bean)类型限制不支持异步/响应式等不支持原始类型、集合等。

2025-10-14 10:54:23 1709

原创 Spring AI 文档ETL实战:集成text-embedding-v4 与 Milvus

本文将带你一步步实现一个完整的文档处理流水线(ETL),利用 Spring AI 框架从本地 Markdown 文件中提取内容,通过通义千问的嵌入模型 text-embedding-v4 生成向量,并最终将带有丰富元数据的文档存储到高性能向量数据库 Milvus 中。整个流程简洁高效,适用于构建知识库、智能问答系统等 AI 应用。

2025-10-13 11:49:26 1322

原创 Spring AI 会话记忆实战:从内存存储到 MySQL + Redis 双层缓存架构

ChatMemoryChatMemoryprivate static final String DEFAULT_PROMPT = "你是一个博学的智能聊天助手,请根据用户提问回答!@Bean// 使用我们自定义的服务理解了ChatMemory的核心作用:解决 LLM 无状态问题。掌握了其分层设计原理ChatMemory→Repository的清晰架构。实现了高性能双层缓存:通过自定义ChatMemory实现,结合,兼顾了性能与可靠性。

2025-10-09 11:32:27 1383

原创 基于 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 1165

原创 JVM(Java虚拟机)运行时数据区

JVM运行时数据区包含方法区(存储类信息、常量等)、堆(对象实例存储区)、程序计数器(线程私有字节码指示器)、虚拟机栈(方法执行模型)和本地方法栈。其中方法区在不同JDK版本有永久代和元空间两种实现,堆分为新生代和老年代。程序计数器是唯一不会OOM的区域,其他区域在内存不足时可能抛出OutOfMemoryError或StackOverflowError。文章还提供了元空间配置建议和常见问题解决方案,说明各内存区域的功能特点和异常处理机制。

2025-08-04 14:15:55 1102

原创 实现一个线程安全、可删除、支持估计统计的增强型计数布隆过滤器

本文介绍了一种增强型计数布隆过滤器(Enhanced Counting Bloom Filter),针对传统布隆过滤器不支持删除操作、无法统计元素数量等局限进行改进。该结构采用计数数组替代位数组实现删除功能,通过读写锁保证线程安全,支持元素数量估算和动态误判率计算,并优化了哈希函数策略和自动参数配置。测试表明,该方案在保持传统布隆过滤器空间效率的同时,增加了删除、统计等实用功能,适用于缓存穿透防护、黑名单过滤等高并发场景。

2025-07-07 09:43:13 938

原创 深入剖析一个“激进”的自定义线程池实现 —— AggressiveThreadPool

Override// 如果当前线程数 < 最大线程数,则假装队列已满,促使线程池扩容// 否则正常入队。

2025-07-07 09:20:44 958

原创 Java验证MP4文件是否为流式MP4,不是的话转换成流式MP4

使用 isoparser 验证MP4文件是否为流式MP4,不是的话使用 JavaCV 转换成流式MP4。

2025-04-27 10:55:39 281

原创 使用SpringBoot + Thymeleaf + iText实现动态PDF导出

使用SpringBoot + Thymeleaf + iText实现导出动态PDF

2025-04-01 11:12:01 363

原创 Elasticsearch7.X建模各属性文档

ES7.X索引建模各属性说明

2025-03-26 15:23:17 999

原创 自定义Spring Cloud Gateway过滤器:记录慢请求

本文将详细介绍如何实现一个自定义过滤器,用于记录响应时间超过指定阈值的请求,并展示如何支持微服务的自定义配置。通过实现自定义的Spring Cloud Gateway过滤器,我们可以灵活地监控和记录响应时间超过指定阈值的请求。如果配置启用了日志记录并且耗时超过了设定的阈值,则记录一条警告日志。这个类将负责缓存请求体,并在请求处理完成后检查响应时间是否超过了设定的阈值。如果超过了,则记录一条警告日志。启动Spring Boot应用 和 Gateway网关,并发送请求到不同的路由,观察日志输出。

2025-02-10 17:22:21 1187 1

原创 高并发数据采集场景下Nginx代理Netty服务的优化配置

高并发数据采集场景下,要优化Nginx反向代理来支持多个Netty数采服务并保证稳定的性能,可以从以下几个方面对Nginx进行优化配置。

2024-12-12 15:40:31 2188 6

原创 Elasticsearch数据冷热分离

在 Elasticsearch 的每个节点的配置文件(ILM 可以自动管理数据的生命周期,包括将索引从热节点迁移到温节点、冷节点,或最终删除。

2024-11-27 16:07:07 1813

原创 SpringCloudAlibabaSidecar整合异构微服务

SpringCloudAlibabaSidecar代理异构微服务注册Nacos

2024-11-08 09:04:05 2225 2

原创 Spring的事务传播行为

Spring的事务传播行为和应用示例

2024-11-01 09:56:36 487

原创 Elastisearch查询最近一年消费金额排名前五的用户

现在这个查询已经满足我们的需求了,能够得到我们想要的结果,接下来我们尝试优化下它。上下文中,因为它们是用于过滤数据的,这可以提高性能并允许 Elasticsearch 使用缓存。实现这一需求的主要思路是通过 Elasticsearch 的聚合功能来实现。再加一个限定条件,收货地址是爱荷华州的,需要在。聚合可以用来获取每个分组中的部分文档数据。查询来过滤出过去一年内的订单记录。字段分组,并在每个分组内计算。为了获取用户的完整姓名,我们在。定义一个与索引结构相对应的实体类。定义聚合结果的 DTO 类。

2024-10-09 11:02:49 1104

原创 Netty配置SSL证书加密

使用 OpenSSL 生成 CA、服务端和客户端的证书。在 Netty 中,配置SslContext来加载证书,并将其应用到中。通过 Netty 的SslHandler实现安全的加密数据传输,确保数据在传输过程中是加密的。

2024-09-14 17:21:40 1799 1

原创 Netty采集数据高效写入TDengine

通过上述设计和实现,我们构建了一个高效的数据采集服务,能够实时接收数据并在数据量达到阈值或经过一定时间后批量写入 TDengine 数据库。这种设计不仅提高了数据处理的效率,还确保了在高并发环境下的数据安全性和一致性。

2024-09-03 10:43:45 1589

原创 使用[KafkaStreams流计算框架实时计算产生报警(升级报警)

需求背景很简单,每秒钟采集一次设备数据,流计算框架需要对数据做处理,判断采集值超过100就产生报警,如果持续5分钟产生高报,持续10分钟产生高高报。流计算服务只负责产出报警到topic,下游服务负责监听topic后续处理。需要注意,当报警被处置后会向接收数据的主题发送处置信号,处置后需要重置这个设备的时间窗口,它对应的报警从新开始计算。实时计算报警,官方文档非常完善。

2024-08-23 16:35:07 891

原创 Java使用RSA算法实现数字签名及验签的过程

其主要流程是发送方使用私钥对消息生成数字签名(消息的hash),然后将签名附加到消息中并将其发送给接收方,接收方收到消息后会提取签名,并计算出消息的哈希值,然后使用发送方的公钥验证签名,判断签名是否有效,数字签名提供了相当高的安全保证。如果签名是有效的,则意味着签名确实是由持有对应私钥的实体创建的,并且消息自签名以来没有被篡改。来源确认:因为私钥是唯一的,并且只有发送方知道,所以当接收方成功验证了签名,就可以确信消息是由持有该私钥的实体发送的。生成数字签名:发送方使用自己的私钥对消息的哈希值进行签名。

2024-08-23 09:44:57 1059

原创 使用Apache POI和POI-OOXML实现word模板文档自动填充功能

最近接到一个新的需求,用户创建好模板文件保存到模板库,然后使用在线文档编辑器打开模板时,将系统数据填充到模板文件并生成新的word文件,然后在线编辑,研究使用Apache POI和POI-OOXML实现了这个功能。

2024-08-19 17:12:38 1400

原创 Sentinel1.8.1 控制台改造

本项目是在Sentinel控制台1.8.1的基础上改造的,实现了控制台添加、修改规则同步至Nacos配置中心,Nacos修改配置文件后也能同步至控制台,实现了流控、降级、权限、网关、系统、参数等规则持久化改造,同时引入了。Sentinel 控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在 Sentinel 控制台上,我们可以配置规则并实时查看流量控制效果。时序库用于保存请求QPS数据,使用MyBatisPlus查询数据。

2024-08-14 09:21:14 496

原创 ElasticSearch优化

这样,即使其中两个节点完全离线,集群仍然可以正常工作。由于 Lucene 段合并的计算量庞大,会消耗大量的 I/O,而 ES 默认让后台定期进行段合并,这可以应对绝大多数场景,如果有特殊情况需要调整,比如对于写密集型的应用,你可能希望减少段合并的频率,以减少写操作的延迟;​ 由于特殊原因导致的节点瞬时中断的问题,默认情况下,集群会等待一分钟来查看节点是否会重新加入,如果等待期间重新加入,会保持其现有的分片数据,不会触发新的分片分配,这样就可以减少 ES 在自动再平衡可用分片时所带来的极大开销。

2024-07-24 15:35:54 4928 2

原创 JavaCV + Netty实现推流直播复用、录播回放

JavaCV 是一个开源的计算机视觉和多媒体处理库,它为Java开发者提供了访问一系列底层C/C++库的能力,而无需直接编写C/C++代码。JavaCV通过JNI(Java Native Interface)和JavaCPP项目实现这一目标,使得Java应用程序能够高效地调用这些库的功能。它提供了一套统一的API,让开发者能够在Java中轻松地执行图像和视频的处理任务,如图像识别、人脸识别、字符识别、视频流媒体处理等。

2024-07-03 17:24:04 2098 15

原创 记一次Centos7文件系统调整的操作

这个文件系统通常是内存中的虚拟文件系统,大小取决于系统内存。tmpfs:挂载点/sys/fs/cgroup,这是一个内存中的文件系统,用于存放控制组 (cgroup) 的信息和配置。tmpfs:挂载点/run,这是一个临时文件系统,用于存放系统启动和运行时的临时文件,它也是内存中的文件系统。在不增加磁盘的情况下想调整根文件系统空间的话,只能缩小其他文件系统,在实操之前应该先知道每个文件系统是干嘛的。tmpfs:挂载点/run/user/{userId},为某个用户分配的临时文件系统,通常用于存储临时会话。

2024-06-13 11:27:06 668

原创 常用工具和SQL

2.根据创建时间统计每月新增记录数。特点是严格按照年月日计算的年龄。

2024-06-04 10:03:23 1713

空空如也

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

TA关注的人

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