- 博客(63)
- 收藏
- 关注
原创 RAG系统学习之——基于LangChain+Milvus+Ollama+Streamlit搭建本地RAG系统
本文介绍了如何搭建一个完全本地化的RAG(检索增强生成)系统,结合LangChain、Milvus、Ollama和Streamlit等技术。系统具备文档处理、向量存储、本地大语言模型和友好交互界面,支持多种文件格式,确保数据隐私。文章详细说明了环境配置、核心代码实现、高级功能扩展和部署方案,提供了从开发到生产的一站式解决方案,适用于企业知识库、智能客服等场景,兼顾安全性和可扩展性。
2025-11-18 10:47:42
537
原创 RAG系统学习之——RAG技术详解与实战指南
本文全面介绍了RAG(检索增强生成)技术的背景、定义、优缺点及实战应用。RAG通过结合外部知识检索和大模型生成能力,有效解决了大语言模型的知识局限性和幻觉问题,成为企业知识管理的热门方案。文章详细阐述了RAG的技术架构、演进历程及适用场景,并提供了一个本地RAG系统的实战项目。RAG技术具有知识更新快、成本低、可解释性强等优势,但也面临检索质量依赖、文档处理复杂等挑战,特别适合企业知识库、专业咨询等场景。随着技术发展,RAG正在向模块化、图谱化等更高级形态演进。
2025-11-14 19:16:25
685
原创 Java中的Thread、ThreadLocalMap、ThreadLocal三者之间的关系,ThreadLocalMap.Entry的弱引用设计
ThreadLocal通过ThreadLocalMap实现线程隔离存储,每个线程持有独立的ThreadLocalMap,通过ThreadLocal的set/get方法存取数据。弱引用设计允许ThreadLocal实例被GC回收,但需配合remove()清理残留值,尤其在线程池场景中。相比同步锁,ThreadLocal以空间换时间实现无锁线程安全,适用于数据库连接、会话管理等场景。最佳实践包括及时清理和避免存储大对象,平衡线程安全与内存管理
2025-11-03 19:38:28
705
原创 SpringBoot web项目中使用@ExceptionHandler处理全局异常?或是使用HandlerExceptionResolver?哪种更合适
SpringBoot项目中处理全局异常时,@ExceptionHandler+@ControllerAdvice更适合RESTful API场景,配置简单且与SpringMVC深度集成;HandlerExceptionResolver适用于全局拦截和复杂处理逻辑,但配置复杂。最佳实践是混合使用,优先采用@ControllerAdvice处理Controller层异常,再通过HandlerExceptionResolver捕获未处理的全局异常。建议大多数项目优先选择@ExceptionHandler方式
2025-10-29 19:08:51
846
原创 <? extends T>是什么,<? super T>又是什么,PECS是指什么
Java泛型通配符<? extends T>和<? super T>分别用于生产者(只读)和消费者(只写)场景。<? extends T>表示元素类型为T或其子类,确保安全读取但禁止写入;<? super T>表示元素类型为T或其父类,允许安全写入但读取时类型信息丢失。PECS法则(Producer Extends, Consumer Super)指导这两种通配符的应用,如集合拷贝和栈操作,通过编译期类型检查保证安全性,避免运行时类型错误。
2025-10-27 14:43:24
618
原创 Spring生态HTTP客户端技术演进:RestTemplate、RestClient与WebClient深度解析
Spring框架的HTTP客户端经历了三代技术演进:RestTemplate(同步阻塞)、WebClient(异步非阻塞)和RestClient(过渡方案)。RestTemplate适合低并发场景但存在线程资源消耗问题;WebClient基于响应式编程,在高并发下性能优异;RestClient则在保持兼容性的同时提供异步能力。测试显示WebClient吞吐量达12,000req/s,远优于RestTemplate的2,800req/s。建议传统系统采用渐进式迁移策略,新项目首选WebClient。
2025-10-17 11:19:06
1006
原创 从MyBatis3.4.5中的PropertyNamer看属性名称定义
文章分析了MyBatis中PropertyNamer类对属性命名的处理机制,指出当使用Lombok自动生成getter/setter方法时,若属性名第二个字母大写(如uType),会导致MyBatis无法正确映射字段。原因在于PropertyNamer.methodToProperty()方法会保留第二个字母大写状态,而Lombok生成的getUType()方法与之不匹配。解决方案包括:1)修改属性名前两个字母为小写;2)手动生成符合MyBatis命名规范的getter/setter方法
2025-10-10 12:14:59
543
原创 详解web.xml中的listener与filter
本文系统介绍了Java Web中Listener和Filter两大核心组件。Listener用于监听Servlet容器事件(如应用启动/关闭、Session创建销毁),通过事件驱动模型实现回调;Filter采用责任链模式拦截请求/响应,实现权限控制、日志记录等功能。文章详细对比了两者的配置方式(web.xml/注解)、执行顺序、典型应用场景及注意事项,强调Listener适合全局资源管理,Filter侧重请求处理拦截,并指出在微服务架构中部分功能可迁移至网关层。最后总结了实现规范、线程安全和性能优化等最佳实
2025-06-18 17:12:16
920
原创 算法学习之——LRU最近最少使用
LRU缓存淘汰算法通过双向链表维护访问顺序,哈希表提供快速查找,实现O(1)时间复杂度的关键操作。当缓存满时,算法自动淘汰链表尾部最久未使用的数据,保持高效缓存管理。
2025-06-06 16:37:51
926
原创 发现一个挺好的项目,可以在springboot项目中快速接入DeepSeek API,有需要的可以尝试一下
Spring AI接入DeepSeek AI,SpringBoot2.x版本接入DeepSeek4J,调用DeepSeek API尝鲜AIGC
2025-02-18 20:11:08
784
原创 DeepSeek学习笔记:Java开发者视角的技术探索
DeepSeek作为国产AI工具,在代码生成、技术文档处理等方面展现出强大潜力。作为开发人员,可以结合自身项目需求,探索模型调优和私有化部署方案~
2025-02-11 16:51:47
1710
原创 DeepSeek学习笔记之——初识DeepSeek
DeepSeek是什么,DeepSeek-R1-Zero,DeepSeek-R1大模型,MoE(Mixture-of Experts),RL(Reinforcement Learning),KD(Knowledge Distillation)学习记录
2025-02-11 14:49:21
1670
原创 使用javaagent实现springboot工程中密码相关配置的统一化配置,避免密钥泄漏
项目中一般都会将密码等信息写在配置文件中,或者写在pom中,但是这种方式容易造成密码泄漏。本文主要是通过javaagent的方式,在项目启动时通过与密钥管理系统ssm交互实现了密钥数据的统一配置管理,从而避免了密钥泄漏的问题。
2025-01-20 17:01:28
1136
原创 聊一聊java中的main方法、premain方法、Instrumentation接口
java中的premain方法是做什么的,它和main有什么区别或联系,Instrumentaion API又是什么,和-javaagent有什么关系,如何在jvm启动应用程序之前插入自定义代码
2025-01-17 20:42:15
1351
原创 Redis学习笔记之——数据类型篇(一)
redis学习笔记,数据结构,5种基本数据类型:string,list,set,zset,hash,3种特殊类型:bitmap,HyperLoglog,Geo。概念、应用场景、实现原理、常用操作命令等
2024-12-27 19:26:19
757
原创 一个简单的Springboot+MybatisPlus+PageHelper+Thymeleaf小例子
springboot+mybatis-plus+pagehelper分页插件+thymeleaf的一个小例子,知道他们是什么,集成方式,以及pagehelper分页的实现原理
2024-12-26 15:51:12
879
原创 记我的Springboot2.6.4从集成swagger到springdoc的坎坷路~
在springboot2.6.4中集成swagger报错,项目无法正常启动,通过各种方法解决,但最后还是选择了springdoc~
2024-12-25 17:42:10
1328
原创 Redis学习笔记之——学习计划
redis,作为最常使用的一个nosql数据库,有必要对它进行一个系统的学习。这里我制定了一个学习计划,接下来将开启的redis学习之旅
2024-12-13 18:23:56
779
原创 设计模式学习之——工厂模式
设计模式学习,简单工厂模式、工厂方法模式、抽象工厂模式,工厂模式在spring框架中的应用,spring框架中的BeanFactory和FactoryBean
2024-12-10 14:52:31
1652
原创 设计模式学习之——单例模式
设计模式学习,单例模式,最常见的设计模式之了。懒汉式、饿汉式、静态内部类、双重检测锁、枚举等。单例模式的应用场景、注意事项。面试中经常问到的关于单例模式的问题有哪些
2024-12-09 11:18:17
1485
原创 Springboot项目集成Mybatis-Plus,多数据源配置,写主读从
springboot项目集成mybatis-plus,mybatis-plus多数据源,读写分离,写主读从,mybatis-plus中执行自定义sql
2024-11-29 17:25:49
1586
原创 设计模式学习之——观察者模式
设计模式学习-观察者模式,观察者模式的定义、实现原理、优缺点,应用场景,代码示例,以及观察者模式与发布订阅模式之前的区别与联系
2024-11-29 11:38:02
1094
原创 浅聊java中的枚举以及关于枚举的常见面试问题
枚举是通过关键字enum来定义的。枚举的每一个实例都是该枚举类型的一个对象,这些对象在编译时就已经被创建,并且不能被实例化。枚举类默认继承自类,但不能显式继承其他类也不能被继承,因为当枚举被编译为类时会被final修饰,但它可以实现接口)。
2024-08-28 17:38:52
1372
1
原创 Comfyui简直就是低配置机器的福音,1080显卡上也能轻松玩转
本文对比了StableDiffusionWebUI和ComfyUI两种AI图像生成工具。StableDiffusionWebUI界面简洁易用,适合新手快速生成基础图像;而ComfyUI功能更强大,提供高级参数调整和实时预览,更适合专业用户深度定制。两者都基于扩散模型技术,通过逐步去噪生成高质量图像,但ComfyUI对硬件要求更低。文章还解释了扩散模型的工作原理和训练过程。建议初学者选择WebUI入门,有经验者使用ComfyUI进行更复杂的创作。
2024-07-16 11:36:05
2957
原创 MapStruct与BeanUtils处理对象属性复制场景对比
使用MapStruct进行类型转换或对象间属性复制,与BeanUtils.copyProperties进行简单对比
2024-05-28 19:13:33
1284
原创 JDK8:用java.nio.file.Files.lines方法读取大型文件
使用jdk8中java.nio.file.Files.lines方法读取大型文件内容
2024-05-23 17:54:58
1533
原创 关于Broken pipe异常的一点学习记录
Broken pipe是什么,什么情况下会出现Broken pipe错误,应该如何规避或处理这类问题
2024-05-22 15:12:37
6027
原创 聊一聊java中的SortedMap,TreeMap,以及SortedSet和TreeSet
聊一聊java框架中的SortedMap,TreeMap,SortedSet和TreeSet
2024-04-10 17:32:24
1532
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅