- 博客(68)
- 收藏
- 关注
原创 详解java中的ConcurrentSkipListMap
ConcurrentSkipListMap是Java并发包中的线程安全有序映射实现,基于跳表数据结构。它支持自然排序或自定义比较器,提供高效的并发访问能力。核心特性包括:采用多层链表结构实现快速查找;使用CAS操作保证并发安全;查找、插入、删除操作均为O(logn)时间复杂度。适用于需要高并发有序访问的场景,如实时排行榜、范围查询等。相比TreeMap具有更好的并发性能,相比ConcurrentHashMap则提供有序性支持。使用时需注意禁止null键值、内存开销较大等限制。
2025-12-24 17:03:34
1036
原创 大模型学习笔记——学习前的基础准备:论文中常见的数学符号与函数回顾
本文系统梳理了Transformer模型中常见的数学符号与激活函数。详细介绍了求和符号Σ、偏导数∂、梯度∇等数学符号的读音和含义,并解释了sigmoid、softmax、ReLU、GELU等核心激活函数的特性与应用场景。特别对GELU函数进行了深入分析,包括其数学公式、近似计算方法以及在Transformer中的重要作用。此外还补充介绍了tanh、LeakyReLU、Swish等衍生函数的特性。这些数学工具是理解Transformer注意力机制和前馈网络的关键基础。
2025-12-23 20:43:00
888
原创 详解java中的线程间协作工具:CountDownLatch,Semaphore,CyclicBarrier(二)
Java并发编程中的三大同步工具类各有特点:CountDownLatch用于一次性线程同步,通过计数器实现主线程等待多个子线程完成;Semaphore通过许可证机制控制资源并发访问,支持动态调整许可证数量;CyclicBarrier则实现多线程循环同步,屏障触发后可重置复用。此外,Exchanger支持线程间数据交换,Phaser提供更灵活的多阶段同步能力。这些工具基于AQS实现,适用于不同并发场景,开发者可根据任务特性选择合适的同步机制。
2025-12-19 20:08:25
787
原创 详解java中的BlockingQueue阻塞队列
Java的BlockingQueue是并发编程中实现生产者-消费者模式的核心工具,提供线程安全的阻塞操作。主要实现类包括基于数组的ArrayBlockingQueue、链表的LinkedBlockingQueue、优先级的PriorityBlockingQueue等,各有适用场景。通过锁机制和条件变量保证线程安全,支持阻塞/非阻塞操作及超时控制。典型应用于线程池任务队列、消息传递和流量控制。使用时需注意死锁风险、无界队列的内存问题及性能优化。
2025-12-18 20:25:40
915
原创 大模型学习之——初步了解:量化、LoRA、QLoRA
量化是一种模型压缩技术,通过降低参数精度(如FP32→INT8)减小模型体积,而LoRA则是通过低秩适配器实现高效微调,仅训练少量新增参数。QLoRA结合二者优势,先对模型进行4-bit量化,再应用LoRA微调,使单卡GPU也能训练大模型。实战示例展示了如何使用LoRA微调代码生成模型,包括数据准备、模型配置、训练和推理全流程,并对比了不同场景下的超参数设置建议。三种技术形成了一套递进的模型瘦身+定制方案,显著降低了大规模模型微调的资源门槛。
2025-11-26 20:32:08
1039
原创 RAG系统学习之——基于LangChain+Milvus+Ollama+Streamlit搭建本地RAG系统
本文介绍了如何搭建一个完全本地化的RAG(检索增强生成)系统,结合LangChain、Milvus、Ollama和Streamlit等技术。系统具备文档处理、向量存储、本地大语言模型和友好交互界面,支持多种文件格式,确保数据隐私。文章详细说明了环境配置、核心代码实现、高级功能扩展和部署方案,提供了从开发到生产的一站式解决方案,适用于企业知识库、智能客服等场景,兼顾安全性和可扩展性。
2025-11-18 10:47:42
602
原创 RAG系统学习之——RAG技术详解与实战指南
本文全面介绍了RAG(检索增强生成)技术的背景、定义、优缺点及实战应用。RAG通过结合外部知识检索和大模型生成能力,有效解决了大语言模型的知识局限性和幻觉问题,成为企业知识管理的热门方案。文章详细阐述了RAG的技术架构、演进历程及适用场景,并提供了一个本地RAG系统的实战项目。RAG技术具有知识更新快、成本低、可解释性强等优势,但也面临检索质量依赖、文档处理复杂等挑战,特别适合企业知识库、专业咨询等场景。随着技术发展,RAG正在向模块化、图谱化等更高级形态演进。
2025-11-14 19:16:25
737
原创 Java中的Thread、ThreadLocalMap、ThreadLocal三者之间的关系,ThreadLocalMap.Entry的弱引用设计
ThreadLocal通过ThreadLocalMap实现线程隔离存储,每个线程持有独立的ThreadLocalMap,通过ThreadLocal的set/get方法存取数据。弱引用设计允许ThreadLocal实例被GC回收,但需配合remove()清理残留值,尤其在线程池场景中。相比同步锁,ThreadLocal以空间换时间实现无锁线程安全,适用于数据库连接、会话管理等场景。最佳实践包括及时清理和避免存储大对象,平衡线程安全与内存管理
2025-11-03 19:38:28
730
原创 SpringBoot web项目中使用@ExceptionHandler处理全局异常?或是使用HandlerExceptionResolver?哪种更合适
SpringBoot项目中处理全局异常时,@ExceptionHandler+@ControllerAdvice更适合RESTful API场景,配置简单且与SpringMVC深度集成;HandlerExceptionResolver适用于全局拦截和复杂处理逻辑,但配置复杂。最佳实践是混合使用,优先采用@ControllerAdvice处理Controller层异常,再通过HandlerExceptionResolver捕获未处理的全局异常。建议大多数项目优先选择@ExceptionHandler方式
2025-10-29 19:08:51
873
原创 <? 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
632
原创 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
1093
原创 从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
552
原创 详解web.xml中的listener与filter
本文系统介绍了Java Web中Listener和Filter两大核心组件。Listener用于监听Servlet容器事件(如应用启动/关闭、Session创建销毁),通过事件驱动模型实现回调;Filter采用责任链模式拦截请求/响应,实现权限控制、日志记录等功能。文章详细对比了两者的配置方式(web.xml/注解)、执行顺序、典型应用场景及注意事项,强调Listener适合全局资源管理,Filter侧重请求处理拦截,并指出在微服务架构中部分功能可迁移至网关层。最后总结了实现规范、线程安全和性能优化等最佳实
2025-06-18 17:12:16
965
原创 算法学习之——LRU最近最少使用
LRU缓存淘汰算法通过双向链表维护访问顺序,哈希表提供快速查找,实现O(1)时间复杂度的关键操作。当缓存满时,算法自动淘汰链表尾部最久未使用的数据,保持高效缓存管理。
2025-06-06 16:37:51
947
原创 发现一个挺好的项目,可以在springboot项目中快速接入DeepSeek API,有需要的可以尝试一下
Spring AI接入DeepSeek AI,SpringBoot2.x版本接入DeepSeek4J,调用DeepSeek API尝鲜AIGC
2025-02-18 20:11:08
812
原创 DeepSeek学习笔记:Java开发者视角的技术探索
DeepSeek作为国产AI工具,在代码生成、技术文档处理等方面展现出强大潜力。作为开发人员,可以结合自身项目需求,探索模型调优和私有化部署方案~
2025-02-11 16:51:47
1734
原创 DeepSeek学习笔记之——初识DeepSeek
DeepSeek是什么,DeepSeek-R1-Zero,DeepSeek-R1大模型,MoE(Mixture-of Experts),RL(Reinforcement Learning),KD(Knowledge Distillation)学习记录
2025-02-11 14:49:21
1704
原创 使用javaagent实现springboot工程中密码相关配置的统一化配置,避免密钥泄漏
项目中一般都会将密码等信息写在配置文件中,或者写在pom中,但是这种方式容易造成密码泄漏。本文主要是通过javaagent的方式,在项目启动时通过与密钥管理系统ssm交互实现了密钥数据的统一配置管理,从而避免了密钥泄漏的问题。
2025-01-20 17:01:28
1162
原创 聊一聊java中的main方法、premain方法、Instrumentation接口
java中的premain方法是做什么的,它和main有什么区别或联系,Instrumentaion API又是什么,和-javaagent有什么关系,如何在jvm启动应用程序之前插入自定义代码
2025-01-17 20:42:15
1408
原创 Redis学习笔记之——数据类型篇(一)
redis学习笔记,数据结构,5种基本数据类型:string,list,set,zset,hash,3种特殊类型:bitmap,HyperLoglog,Geo。概念、应用场景、实现原理、常用操作命令等
2024-12-27 19:26:19
780
原创 一个简单的Springboot+MybatisPlus+PageHelper+Thymeleaf小例子
springboot+mybatis-plus+pagehelper分页插件+thymeleaf的一个小例子,知道他们是什么,集成方式,以及pagehelper分页的实现原理
2024-12-26 15:51:12
910
原创 记我的Springboot2.6.4从集成swagger到springdoc的坎坷路~
在springboot2.6.4中集成swagger报错,项目无法正常启动,通过各种方法解决,但最后还是选择了springdoc~
2024-12-25 17:42:10
1347
原创 Redis学习笔记之——学习计划
redis,作为最常使用的一个nosql数据库,有必要对它进行一个系统的学习。这里我制定了一个学习计划,接下来将开启的redis学习之旅
2024-12-13 18:23:56
806
原创 设计模式学习之——工厂模式
设计模式学习,简单工厂模式、工厂方法模式、抽象工厂模式,工厂模式在spring框架中的应用,spring框架中的BeanFactory和FactoryBean
2024-12-10 14:52:31
1708
原创 设计模式学习之——单例模式
设计模式学习,单例模式,最常见的设计模式之了。懒汉式、饿汉式、静态内部类、双重检测锁、枚举等。单例模式的应用场景、注意事项。面试中经常问到的关于单例模式的问题有哪些
2024-12-09 11:18:17
1515
原创 Springboot项目集成Mybatis-Plus,多数据源配置,写主读从
springboot项目集成mybatis-plus,mybatis-plus多数据源,读写分离,写主读从,mybatis-plus中执行自定义sql
2024-11-29 17:25:49
1635
原创 设计模式学习之——观察者模式
设计模式学习-观察者模式,观察者模式的定义、实现原理、优缺点,应用场景,代码示例,以及观察者模式与发布订阅模式之前的区别与联系
2024-11-29 11:38:02
1103
原创 浅聊java中的枚举以及关于枚举的常见面试问题
枚举是通过关键字enum来定义的。枚举的每一个实例都是该枚举类型的一个对象,这些对象在编译时就已经被创建,并且不能被实例化。枚举类默认继承自类,但不能显式继承其他类也不能被继承,因为当枚举被编译为类时会被final修饰,但它可以实现接口)。
2024-08-28 17:38:52
1396
1
原创 Comfyui简直就是低配置机器的福音,1080显卡上也能轻松玩转
本文对比了StableDiffusionWebUI和ComfyUI两种AI图像生成工具。StableDiffusionWebUI界面简洁易用,适合新手快速生成基础图像;而ComfyUI功能更强大,提供高级参数调整和实时预览,更适合专业用户深度定制。两者都基于扩散模型技术,通过逐步去噪生成高质量图像,但ComfyUI对硬件要求更低。文章还解释了扩散模型的工作原理和训练过程。建议初学者选择WebUI入门,有经验者使用ComfyUI进行更复杂的创作。
2024-07-16 11:36:05
3070
原创 MapStruct与BeanUtils处理对象属性复制场景对比
使用MapStruct进行类型转换或对象间属性复制,与BeanUtils.copyProperties进行简单对比
2024-05-28 19:13:33
1305
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅