- 博客(40)
- 收藏
- 关注
原创 LangChain4j 集成 Spring Boot:会话记忆 NPE 的根源与 ChatMemoryProvider 正确配置
Corner 是一个情绪驱动的个性化地点推荐系统,通过 LangChain4j 实现记忆管理来提升用户体验。文章拆解了其双层记忆架构:基于 Redis 的短期会话记忆(保存最近30条消息,1天TTL)和基于 MySQL 的长期用户偏好记忆。重点展示了 RedisChatMemoryRepository 的实现,包括序列化方案、Key 设计和 TTL 策略,并说明如何通过 ChatMemoryProvider 配置滑动窗口式记忆。该方案解决了上下文连贯性问题,同时平衡了存储成本与个性化需求。项目采用
2026-06-03 20:09:31
371
原创 从通用到专属:文迹(WenJi)引入 RAG 向量库的技术复盘
文迹(WenJi)项目通过引入RAG(检索增强生成)技术,结合Redis向量库解决大语言模型在非遗知识问答中的局限性(如知识滞后、AI幻觉)。方案采用文档级分块策略,利用阿里云text-embedding-v3生成1024维向量,基于现有Redis基础设施存储(HNSW索引),实现高效检索与准确回答。技术选型权衡了性能与成本,复用Redis DB4隔离向量数据,支持私有知识即插即用,使AI导游从通用聊天升级为专业文化解答。
2026-06-01 23:13:08
208
原创 Spring Data Redis 实战避坑:搞定序列化乱码与 Hash 结构存储
本文介绍了Spring Data Redis在实际开发中的两个关键问题:序列化乱码与Hash结构存储
2026-05-21 20:10:10
442
原创 情绪感知出行助手:LangChain4j 实战中的记忆、提示词与 Tool 调用最佳实践
本文介绍了基于 LangChain4j 框架开发的情绪感知个性化微出行决策助手项目 Corner。文章详细阐述了项目的技术架构(Spring Boot + LangChain4j + MySQL + Redis)、核心推荐机制的三层架构设计(情绪+收藏+位置),以及开发过程中遇到的关键问题与解决方案,包括版本兼容性、会话记忆 NPE、提示词模板、JSON 反序列化和推荐结果为空等典型挑战。项目通过大模型对话提取用户画像,结合 Function Calling 实现智能推荐层级判断,旨在为用户提供个性化的出行
2026-05-15 21:43:55
338
原创 什么是Spring设计模式:单例、工厂与代理
摘要:Spring框架中广泛应用了多种设计模式,主要包括单例模式(Bean默认单例)、工厂模式(IOC容器)、代理模式(AOP实现)和观察者模式(事件机制)。单例模式通过双重检查锁确保线程安全;工厂模式通过ApplicationContext管理Bean;代理模式实现功能增强;观察者模式实现松耦合事件处理。这些模式帮助Spring实现了依赖注入、事务管理等核心功能,同时保持代码的灵活性和可扩展性。
2026-04-26 20:54:16
225
原创 为什么Mysql需要索引以及如何应用到项目中
本文系统介绍了数据库索引的核心概念与应用。索引通过有序数据结构提升查询效率(减少IO和CPU消耗),但会增加存储空间和降低写入速度。重点分析了B+Tree作为InnoDB引擎选择的优势:层级更低、支持范围查询。文章详细讲解了索引使用语法、最左前缀原则、回表与覆盖索引机制,并通过实际项目案例演示了索引优化技巧。同时列举了导致索引失效的常见场景(如字段运算、模糊查询等),强调在开发中需平衡读写性能与存储成本。最后以地理空间查询为例,展示了函数计算对索引的影响及解决方案。
2026-04-25 17:08:03
401
原创 《LangChain 实战:用Memory和Tool打造有记忆、能行动的智能体》
LangChain实战:Memory与Tool构建智能体 本文基于DataWhale教程,介绍如何通过LangChain的Memory和Tool组件构建具有记忆能力和工具调用功能的AI智能体。 核心组件 Memory组件使AI具备对话记忆能力,包含三种模式: 全量记忆:完整保存所有对话历史 窗口记忆:仅保留最近N轮对话 摘要记忆:动态生成对话摘要 Tool组件使AI能调用外部工具,弥补LLM固有缺陷。通过@tool装饰器可快速创建自定义工具,需注意: 清晰的docstring说明 明确的参数类型 安全的返回
2026-04-18 17:58:42
239
原创 《别再被 pip 的 RemoteDisconnected 骗了!LangChain 安装失败的真相竟是源的问题?》
关于pip的RemoteDisconnected报错的问题的解决方法-可能是源的选择问题
2026-04-16 16:59:47
255
原创 《LangChain 工程化入门:如何像搭乐高一样构建 AI 应用?》
本文介绍了使用 LangChain 框架构建 AI 应用的工程化方法。主要内容包括: 模型抽象组件:通过统一接口调用不同厂商的大模型(如 Qwen-turbo),屏蔽底层差异 提示词模板:使用 PromptTemplate 实现动态参数分离,FewShotPromptTemplate 实现少样本提示 角色设计理念:system/user/assistant 构成对话上下文沙盒,system 设定规则边界,user 提供输入,assistant
2026-04-16 12:01:34
415
原创 从“乐高积木”到“建筑设计图”:LangChain与LangGraph框架初探
本文探讨了LangChain和LangGraph框架在大模型应用开发中的作用与关系。LangChain被比喻为"乐高积木",提供基础组件(模型接口、记忆模块等)快速构建简单应用;而LangGraph则是"建筑设计图",专注于复杂流程的状态管理和多步骤控制。文章通过架构图展示了两者的三层生态关系,并给出实践案例:LangChain实现单次API调用,LangGraph构建多步骤工作流。最后提供了常见问题解答,包括环境配置、依赖安装、API密钥管理等实用建议,为开
2026-04-14 19:49:37
415
原创 项目如何用Docker一键部署?(个人常见避坑指南)
本文记录了Vue3+SpringBoot项目Docker化部署过程中遇到的典型问题及解决方案。主要包含五个关键坑点:1) 镜像下载403报错,建议更换国内镜像源;2) OpenJDK镜像失效,改用eclipse-temurin镜像;3) 后端连接数据库失败,需用服务名代替localhost;4) 容器重启数据丢失,使用Volume持久化数据;5) 中文乱码问题,需配置MySQL字符集和系统字体。通过优化docker-compose.yml和Dockerfile配置,最终实现了一键启动的容器化部署方案。
2026-03-31 10:40:30
563
原创 通过实际demo掌握SpringSecurity+MP中的基本框架搭建
本文介绍了一个基于Spring Security + MyBatis-Plus + H2数据库实现的用户认证Demo。通过自定义UserDetailsService实现数据库用户查询,使用SecurityFilterChain配置URL权限规则,并整合Thymeleaf模板引擎实现简易页面。项目采用MyBatis-Plus简化数据访问层开发,利用LambdaQueryWrapper进行类型安全查询,实现了用户登录认证、角色权限控制等核心功能,解决了多管理员身份区分和权限优化问题。
2026-03-20 11:08:15
423
原创 AI 时代下的 Spring Security:为什么你的密码需要 `{bcrypt}` 前缀?
在AI时代下Spring Security密码加密的最佳实践。核心机制DelegatingPasswordEncoder通过{id}前缀实现多加密算法兼容,解决系统升级迁移问题
2026-03-15 08:00:00
374
原创 高并发下AI对话系统架构升级:从内存到Redis+MySQL的一致性陷阱与实战
本文记录了非遗AI对话系统从内存存储升级为Redis+MySQL持久化架构的全过程。最初的内存方案存在数据丢失、隐私风险等问题,重构后采用Redis缓存热数据(1-2天TTL)和MySQL持久化冷数据的策略。重点剖析了三大技术难点:1)数据结构序列化转换;2)双写顺序与事务一致性陷阱;3)AI生成代码的局限性。最终实现数据安全隔离、性能提升和架构清晰化
2026-03-13 11:41:53
474
原创 SpringAI基础对话机器人实现全攻略
本文介绍了基于SpringAI框架实现对话机器人的关键技术方案。主要内容包括: 环境配置:引入SpringAI依赖,对接云服务大模型API 参数设置:配置模型服务商地址、API密钥及温度参数 核心实现: 使用ChatMemory管理对话历史 通过ChatClient实现与AI模型交互 支持流式响应和角色设定 功能扩展: 会话ID管理实现多轮对话 跨域处理解决开发环境问题 历史记录存储与查询功能 实践要点:系统提示词优化、Token控制、日志监控等注意事项 该方案兼顾了开发效率和功能完整性,可作为智能对话系统
2026-03-08 16:35:54
531
原创 Redis分布式锁灵活运用:原理与误删问题解决
本文探讨了在分布式系统中实现Redis分布式锁的关键技术。首先分析了传统单机锁的局限性,提出了基于Redis的分布式锁解决方案。通过setnx命令的原子性操作实现锁获取,并设置超时时间防止死锁。文章详细展示了在Spring Boot项目中实现ILock接口和SimpleRedisLock类的过程,并重点解决了"锁误删"问题。通过引入UUID+线程ID的唯一标识机制,确保只有锁持有者才能释放锁,从而保证分布式环境下的数据一致性。
2026-03-02 08:00:00
908
原创 Java多线程项目操作:同步、通信与线程池精要
Java多线程核心要点摘要 本文总结了Java多线程编程的核心机制与实践经验。首先介绍了synchronized关键字实现线程同步的正确用法,包括锁对象选择和减小锁粒度;其次讲解了volatile变量的适用场景与限制。在通信机制方面,重点分析了wait/notify的正确使用方式。最后详细讲解了线程池的配置原则,包括参数设置和拒绝策略选择,特别强调避免使用Executors工厂方法。文章还指出了常见误区,如volatile不能保证原子性操作,并提供了生产环境中的最佳实践建议。
2026-03-01 07:30:00
851
原创 Spring Boot + Redis:高性能用户认证项目运用
摘要:本文提出了一种基于JWT+Redis的高性能用户认证方案,解决传统JWT方案存在的网络开销大和无法主动失效问题。通过JWT存储核心标识,Redis缓存完整用户信息并实现自动续期机制,确保活跃用户会话永不过期。采用双拦截器设计(RefreshTokenInterceptor负责无感续期,LoginInterceptor严格校验),结合ThreadLocal优化上下文传递,实现高效安全的认证流程。方案利用Redis的Hash结构和TTL机制,支持字段级更新和滑动窗口会话管理,显著提升系统性能。
2026-02-27 22:59:47
943
原创 Spring Boot 总结(4)配置与扩展方式
本文介绍了Spring Boot中配置与扩展的核心功能,主要包括:1)Profile多环境配置,通过不同环境配置文件实现灵活切换;2)自定义Starter开发流程,封装通用功能为可复用模块;3)使用@ConfigurationProperties实现类型安全的配置绑定;4)条件装配注解@ConditionalOn...实现按需加载;5)应用生命周期事件监听机制。这些特性体现了Spring Boot"约定大于配置"的设计理念,通过合理的配置管理、模块化开发和自动装配机制,帮助开发者构建高聚
2026-02-18 11:35:49
958
4
原创 Spring Data JPA实战:从入门到精通
本文介绍了面向接口编程的ORM技术,重点讲解了Spring Data JPA的核心概念和使用方法。主要内容包括:1) ORM的定义和JPA规范;2) 核心三要素:实体类、Repository接口和查询方法;3) Query Methods的原理和示例;4) 常用注解速查表;5) 从零开始构建JPA应用的完整步骤,包括依赖配置、实体类创建、Repository接口定义等。通过方法命名约定和注解,开发者可以快速实现数据库操作,减少样板代码。
2026-02-06 21:30:49
906
原创 Spring Boot 总结(2)Web开发
本文总结了SpringBoot Web开发的核心机制:1)统一异常处理,通过@RestControllerAdvice和@ExceptionHandler实现异常标准化响应;2)区分拦截器和过滤器的使用场景,业务逻辑用拦截器,协议处理用过滤器;3)跨域解决方案,开发用注解,生产配置全局或Nginx代理;4)文件上传下载的安全实践。整体体现了SpringBoot"约定优于配置"的设计哲学,通过标准化组件简化开发,让开发者更专注业务逻辑实现。(148字)
2026-02-02 15:22:40
975
原创 Spring Boot 总结(1)基础
Spring Boot 不是一个新框架,而是对 Spring 的封装和增强。它的目标是简化 Spring 应用的初始搭建和开发过程。传统 Spring 开发需要大量 XML 或 Java 配置,依赖管理复杂,部署时需打成 WAR 包放到外部 Tomcat。而微服务架构下,每个服务独立部署,这种模式变得笨重。Spring Boot 提出“应用即服务器”的理念:把 Web 服务器(如 Tomcat)内嵌到应用中,打包成可执行 JAR,直接通过java -jar启动,极大简化了部署流程。
2026-02-01 12:40:19
853
原创 Spring Boot异常处理与跨域实战
本文介绍了Spring Boot项目中三个关键功能模块的实现方法。首先讲解了统一异常处理机制,通过@RestControllerAdvice和@ExceptionHandler实现全局异常捕获,并推荐自定义业务异常和统一的返回格式。其次对比了Filter和Interceptor的区别,建议底层处理用Filter,业务逻辑用Interceptor,并给出了登录拦截器的实现示例。最后详细说明了CORS跨域问题的解决方案,包括局部注解和全局配置两种方式,并指出生产环境中推荐使用Nginx反向代理来彻底解决跨域问题
2026-01-31 22:44:01
813
原创 Java基础-I/O与File
本文总结了Java IO和文件操作的核心知识点:1) File类用于管理文件和目录元信息,但不能读写内容;2) 字符流和字节流的区别及应用场景,文本用字符流,二进制用字节流;3) 使用BufferedReader/BufferedWriter提高I/O效率;4) 大文件读取方法及注意事项;5) 序列化与反序列化的实现方式及关键细节。特别强调安全注意事项,如避免OOM和不信任数据的反序列化风险。
2026-01-24 22:15:11
497
原创 Java基础-异常
Java异常体系摘要:异常继承自Throwable,分为Error(JVM错误)和Exception(程序异常)。Exception又分为受检异常(必须处理,如IOException)和非受检异常(RuntimeException及其子类,如空指针异常)。throw用于抛出异常对象,throws声明可能抛出的异常类型。finally块通常都会执行,除非程序异常终止。建议自定义业务异常时继承RuntimeException,命名以Exception结尾。处理异常时应避免静默吞掉异常,至少要记录日志。面试常见问
2026-01-24 22:10:03
441
原创 Spring Boot AOP切面编程实战指南
本文详细介绍了Spring Boot中的AOP切面编程技术。主要内容包括:AOP概念及其核心价值,通过方法耗时统计案例展示AOP的优势,快速入门示例(依赖引入、切面类编写),AOP核心概念解析(连接点、通知、切入点等),基于动态代理的执行流程,五种通知类型对比及使用建议,公共切入点抽取优化方法,多切面执行顺序控制策略,以及一个完整的操作日志记录实战案例。文章强调AOP能有效解耦横切关注点,提升代码可维护性,并提供了从基础到进阶的实用技术指导。
2026-01-23 07:30:00
1585
原创 Swagger与Knife4j实战:接口文档搭建指南
本文介绍了Swagger和Knife4j在Java项目中的集成与应用。首先概述了Swagger作为RESTful API文档工具的优势,以及Knife4j作为其增强解决方案的特点。随后详细讲解了集成步骤,包括依赖配置、核心配置类编写和静态资源映射设置,并提供了管理端和用户端接口的分组配置示例。文章还总结了常用Swagger注解及其使用场景,对比了Yapi与Swagger的定位差异,最后分享了访问方式和常见问题解决方案。通过本文可以快速掌握如何在Java项目中集成使用Knife4j来生成和管理API文档。
2026-01-17 19:39:40
856
原创 SpringBoot入门:从入门到精通(1)
本文介绍了SpringBoot的核心概念与Web开发基础。SpringBoot通过自动配置和起步依赖简化了Spring应用开发,解决了传统Spring应用的依赖管理、配置复杂等问题。文章详细讲解了YAML配置文件的优势与语法,对比了@Value和@ConfigurationProperties两种配置读取方式。在Web开发部分,阐述了HTTP协议请求响应格式、RESTful风格设计,以及响应数据的封装方法。最后提及分层解耦思想和三层架构设计,强调单一职责原则。全文内容实用,适合快速掌握SpringBoot
2026-01-15 15:38:42
858
原创 Spring MVC核心原理与实战指南
本文深入探讨了Spring MVC的核心原理与实践应用。首先介绍了Spring MVC的五大特点:轻量级、高效、与Spring容器无缝集成、约定优于配置和功能丰富。重点解析了其基于前端控制器的核心原理,详细说明了DispatcherServlet处理请求的完整流程,包括请求接收、处理器查找、业务执行、结果处理和视图渲染等关键步骤。 文章还对比了传统接口实现和现代注解开发两种Controller创建方式,详细讲解了@Controller、@RequestMapping和@RestController等核心注解
2026-01-14 18:31:51
762
原创 从“记住登录“到JWT:一文看懂Web认证技术的演进与实战
本文介绍了Web认证技术的演进过程,从基础HTTP协议的无状态特性出发,详细讲解了Cookie、Session和JWT三种主流认证方案。重点分析了JWT的优势:无状态、跨域支持和集群友好性,并提供了SpringBoot集成JWT的实战指南,包括依赖引入、工具类编写和令牌生成/解析的核心代码实现。文章强调JWT已成为企业级开发的主流选择,同时指出生产环境中密钥管理的重要性。
2025-11-25 22:22:19
1017
原创 Maven分模块设计与高级特性
本文系统介绍Maven高级特性在企业级Java项目中的应用。重点阐述分模块设计的必要性(解决团队协作、代码复用等问题)及三种拆分策略,详解私服的仓库类型与配置方式。深入解析继承机制的统一版本管理价值与聚合工程的一键构建功能,对比两者差异并提供融合实践方案。通过Tlias案例展示模块化项目结构设计,推荐将继承与聚合结合的最佳架构模式,最终实现项目可维护性、协作效率和构建自动化的全面提升。
2025-11-18 23:42:06
702
原创 WebSocket技术解析与项目实战
本文介绍了WebSocket协议及其在实时交互场景中的应用。针对HTTP协议的局限性(短连接、单向通信、高延迟),WebSocket通过长连接实现全双工通信,解决了服务端主动推送的问题。文章对比了HTTP和WebSocket的核心差异,列举了弹幕、在线客服等典型应用场景,并以订单提醒为例,详细展示了Spring Boot集成WebSocket的实战步骤:添加依赖、创建服务端组件、配置WebSocket服务等关键实现。
2025-11-16 23:49:43
1004
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅