自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis热点面试问题解答

持久化:将Redis内存中的数据保存到磁盘,防止服务器重启或故障导致数据丢失。原理:在指定时间间隔内生成数据快照(dump.rdb文件),可通过SAVE(阻塞)或BGSAVE(后台fork子进程)触发。优点单一文件,适合备份和灾难恢复。恢复大数据集时比AOF快。对主进程性能影响小(fork子进程处理I/O)。缺点可能丢失最后一次快照后的数据(取决于配置的save间隔)。fork进程可能耗时,导致服务短暂暂停(数据集大时)。原理。

2026-03-20 16:20:44 356

原创 Redis常出现的问题以及如何解决

在缓存前加一层布隆过滤器,将所有可能存在的数据哈希到一个足够大的位数组中,当一个请求到来时先通过布隆过滤器判断 key 是否可能存在,如果不存在直接返回,避免查询 DB。:先删除缓存,再更新 DB,休眠一小段时间(如 500ms)再次删除缓存,以应对并发读可能重建旧缓存的问题。if (redis.setnx(lockKey, "1", 10)) { // 获取锁成功。:大量 key 在同一时间过期,或者 Redis 节点宕机,导致所有请求都落到数据库上,引起数据库崩溃。// 获取连接最大等待时间。

2026-03-20 10:08:43 385

原创 深入 Spring AI 的 RAG(检索增强生成)实现

至此,你已经完成了一个完整的 RAG 系统搭建:学会了如何加载多种格式的文档;掌握了文档分割与向量化;实现了向量库的存储和相似度检索;将检索结果与大模型结合,生成增强的答案。这个模式可以广泛应用于企业知识库问答、智能客服、文档分析等场景。Spring AI 通过统一抽象,让你能够轻松替换各个组件(嵌入模型、向量库、大模型),而不必修改业务代码。

2026-03-13 17:09:32 582

原创 Spring AI的集成与搭建

通过这篇教程,你不仅学会了如何集成Spring AI,更重要的是理解了它“统一抽象”的核心思想。现在,你应该能够:理解Spring AI在AI应用开发中的定位。独立完成Spring AI与DeepSeek/OpenAI的集成。编写基础的同步和流式聊天接口。使用简单的提示词模板。这也印证了你之前的判断:掌握了Spring AI Alibaba的“地基”,再来理解和使用Spring AI本身,确实会感到轻车熟路,因为两者的核心理念和基础API是完全相通的。

2026-03-13 17:08:04 436

原创 Spring Cloud生态学习与搭建

Spring Cloud 不是一个单一的技术,而是一系列子项目的集合,它为微服务架构的各种问题提供了解决方案。,这是目前 Spring Boot 3.x 和 Spring Cloud 的主流选择,兼顾了稳定性和新特性。将各个服务的配置文件集中管理,并能实现配置的动态刷新,无需重启服务。:系统的“总门卫”,所有外部请求统一经过它,再由它路由到后端的各个微服务。:用 Docker 启动中间件,可以让你避免复杂的本地安装,保持电脑环境整洁。:每个服务应拥有自己独立的数据库和开发部署流程,减少对其他服务的依赖。

2026-03-11 15:15:00 410

原创 三种线程创建方式(继承Thread类,实现runnable接口,使用callable+futureTask)对比:返回值与异常处理

Java线程实现方式对比摘要:本文比较了三种Java线程实现方式。1)继承Thread类:简单但功能有限,需自定义字段存储结果和异常;2)实现Runnable接口:灵活性高但同样无法直接返回结果;3)Callable+FutureTask:支持返回值传递和异常处理,配合线程池使用效果最佳。对比显示,Callable方式提供了最完整的线程管理机制,适合需要返回值或异常传递的任务,推荐在实际开发中使用。

2025-12-23 20:14:16 707

原创 Map.merge()方法详解

摘要:Java 8引入的Map.merge()方法简化了Map中键值对的合并操作,特别适用于计数累加、条件更新等场景。该方法根据键是否存在自动处理值合并:键不存在时直接插入,存在时通过BiFunction合并新旧值,合并结果为null则移除键值对。其特点包括原子性操作(ConcurrentHashMap)、简化代码逻辑及对null值的明确处理。典型应用包括统计频率、合并映射等,相比手动get/put操作更简洁高效。使用时需注意合并函数调用条件和null值处理。替代方案包括compute系列方法,但merge

2025-12-13 15:22:34 910

原创 ConcurrentHashMap vs HashTable vs HashMap 全面对比

线程安全性HashMap非线程安全。多个线程同时读写同一个HashMap实例时,可能会导致数据不一致(如丢失更新)或抛出异常。适用于单线程环境或只读多线程环境。Hashtable线程安全。其实现方式是在所有公开的方法上添加关键字,进行方法级别的同步。这意味着同一时间只有一个线程能操作整个Hashtable。虽然保证了线程安全,但并发性能很差(高并发下会成为瓶颈)。线程安全。它采用了更精细的锁机制(在 Java 7 及之前主要是分段锁,在 Java 8 及之后主要是CAS +锁住单个桶)。

2025-12-13 14:22:22 665 1

空空如也

空空如也

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

TA关注的人

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