<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xuziang13的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xuziang13</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xuziang13]]></copyright><item><title><![CDATA[还在为后台权限管理头疼？基于RBAC+SpringSecurity自定义注解方案，让权限控制变得简单又安全]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/157988576</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/157988576</guid><author>xuziang13</author><pubDate>Thu, 12 Feb 2026 03:33:32 +0800</pubDate><description><![CDATA[本文探讨了企业级后台管理系统中精细化权限控制的实现方案。基于RBAC模型理论，结合Spring AOP技术，构建了操作权限与数据权限双重控制体系：1) 操作权限通过@PreAuthorize注解控制功能访问；2) 数据权限采用5种范围模式(全部/自定义/部门/部门及以下/仅本人)，通过动态SQL注入实现。系统采用注解驱动设计，实现业务与权限解耦，通过PermissionContextHolder保证权限一致性，并解决了异步任务中的权限传递问题。该方案有效解决了大规模用户权限管理难题，在保证系统性能的同时，提]]></description><category></category></item><item><title><![CDATA[ MinIO 分布式存储实践：如果那年没嘻哈(磁盘IO),乃亮至少有个家(通过minio)]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/157961603</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/157961603</guid><author>xuziang13</author><pubDate>Wed, 11 Feb 2026 01:04:19 +0800</pubDate><description><![CDATA[本文介绍了基于若依(RuoYi)框架实现MinIO分布式文件存储的技术方案，解决了本地磁盘存储的单点故障、扩展困难等问题。方案采用配置化存储策略，通过动态选择本地/MinIO存储实现平滑迁移，关键设计包括：1) 条件化装配优化资源使用；2) 自动初始化存储桶简化运维；3) 流式上传保障大文件处理；4) 统一抽象层实现业务解耦。该方案显著提升了系统可用性(达99.9%)和扩展性，支持PB级存储，同时通过工程化设计确保了长期可维护性，为智慧园区项目提供了可靠的文件存储解决方案。]]></description><category></category></item><item><title><![CDATA[基于模版方法+MQ智能派单机制：重构多格式文档向量化单一工厂架构]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/157924167</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/157924167</guid><author>xuziang13</author><pubDate>Tue, 10 Feb 2026 02:11:23 +0800</pubDate><description><![CDATA[本文提出了一种基于模版方法模式与工厂模式组合设计的智能文档向量化处理方案。该方案通过RabbitMQ消息驱动架构，实现了PDF、TXT等多种格式文档的动态向量化处理。核心创新点包括：1）采用模版方法模式定义标准化处理流程，确保不同类型文档处理的一致性；2）结合工厂模式实现动态路由，解决多实现类的依赖注入问题；3）引入智能派单机制，根据文件后缀自动选择处理逻辑。该架构显著提升了系统的可维护性和扩展性，新增文档类型只需实现特定处理逻辑而无需修改核心流程，验证了设计模式的工程实践价值。]]></description><category></category></item><item><title><![CDATA[RabbitMQ 驱动下的工厂模式：AI 对话式向量化架构的“消息派单”实战]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/157907241</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/157907241</guid><author>xuziang13</author><pubDate>Mon, 09 Feb 2026 17:47:05 +0800</pubDate><description><![CDATA[本文介绍了在campusai智慧园区项目中，如何通过工厂模式结合消息队列实现后台公告管理与AI向量化服务的解耦方案。针对后台管理系统版本低、业务类型多样化的挑战，设计了基于RabbitMQ的消息驱动架构：后台操作通过标准消息格式{&quot;ids&quot;:&quot;&quot;,&quot;operation&quot;:&quot;&quot;,&quot;type&quot;:&quot;&quot;}异步通知AI服务，由VectorServiceFactory工厂模式根据业务类型动态路由到对应]]></description><category></category></item><item><title><![CDATA[解决Spring AI聊天记录丢失：自定义Advisor实现持久化存储]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/157797595</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/157797595</guid><author>xuziang13</author><pubDate>Fri, 06 Feb 2026 01:07:46 +0800</pubDate><description><![CDATA[本文分析了SpringAI中MessageWindowChatMemory导致数据丢失的问题及解决方案。核心问题在于其默认设计会截断超限的历史消息，导致数据库永久丢失早期对话记录。通过源码分析发现，process方法会物理删除超出的旧消息。文章提出采用AOP思想，通过自定义ChatHistoryRecordAdvisor拦截请求响应，实现对话记录的持久化存储，同时保留ChatMemory的短期记忆管理功能。方案包含数据库设计、优先级设置、流式响应处理等关键实现，实现了业务日志与AI框架的解耦，既保证模型上下]]></description><category></category></item><item><title><![CDATA[Spring AI 会话记忆持久化：从入门到彻底搞懂的 MySQL 实战指南]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/157694573</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/157694573</guid><author>xuziang13</author><pubDate>Fri, 06 Feb 2026 00:54:34 +0800</pubDate><description><![CDATA[SpringAI通过ChatMemory和ChatMemoryRepository实现智能对话记忆功能，前者管理短期记忆（最近50条对话），后者持久化存储完整历史到MySQL数据库。配置仅需三步：引入依赖、配置数据源、设计表结构。这种分层设计让AI既能流畅对话又保留完整记录，业务层只需简单调用API即可管理聊天历史。系统自动处理序列化、查询等复杂操作，使开发者能专注于业务逻辑。后续还可扩展实现永久历史存储功能。]]></description><category></category></item><item><title><![CDATA[深入浅出：具体场景下的redis分布式锁原理，实现与优化]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/154960278</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/154960278</guid><author>xuziang13</author><pubDate>Mon, 17 Nov 2025 23:04:32 +0800</pubDate><description><![CDATA[本文介绍了Redis分布式锁的实现原理与优化方案。首先阐述了分布式锁的基本要求：互斥性、可见性、高可用、高性能和安全性。对比了MySQL、Redis和Zookeeper三种实现方式，重点讲解Redis基于setnx命令的实现方案。 文章详细说明了初级版本实现过程，包括获取锁和释放锁的核心逻辑，并指出存在的两个问题：误删锁和原子性问题。针对误删问题，提出通过线程标识校验的解决方案；针对原子性问题，引入Lua脚本确保&quot;比较锁标识+删除锁&quot;操作的原子性。 最后总结Redis分布式锁的特性：利用]]></description><category></category></item><item><title><![CDATA[你一定不能错过的高并发场景下的redis解决方案（优惠券下单秒杀 库存超卖 一人一单 集群下的线程安全）]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/154958069</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/154958069</guid><author>xuziang13</author><pubDate>Mon, 17 Nov 2025 23:03:30 +0800</pubDate><description><![CDATA[本文探讨了分布式系统中优惠券秒杀业务的实现方案。首先介绍了全局唯一ID生成器的设计，采用64位结构（时间戳+序列号）解决数据库自增ID的安全性和分表问题。针对秒杀业务，分析了库存超卖和一人一单的并发问题，提出乐观锁（CAS）和悲观锁（synchronized）两种解决方案，并详细说明了锁粒度控制和事务一致性的处理方法。最后指出在集群环境下synchronized锁会失效，需要引入分布式锁机制。文章通过具体代码示例展示了优惠券管理和订单创建的完整流程，包括Redis全局ID生成、库存扣减等核心逻辑。]]></description><category></category></item><item><title><![CDATA[Redis缓存 更新策略 双写一致 缓存穿透 击穿 雪崩 解决方案... 一篇文章带你学透]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/154850435</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/154850435</guid><author>xuziang13</author><pubDate>Sat, 15 Nov 2025 21:53:22 +0800</pubDate><description><![CDATA[本文系统介绍了Redis缓存的核心概念及应用实践。首先阐述了缓存的基本原理，即通过快速存储层加速数据访问。然后详细讲解了缓存应用场景（如网页浏览、数据库查询）及优势（减轻服务器压力）。文章重点分析了三种缓存更新策略：内存淘汰、超时剔除和主动更新，并提出了数据库与缓存一致性解决方案（旁路缓存模式）。针对缓存三大问题：穿透（空值缓存/布隆过滤）、雪崩（随机TTL/集群部署）、击穿（互斥锁/逻辑过期），给出了具体解决思路和代码实现。最后介绍了封装Redis工具类的最佳实践，提升代码复用性。全文通过理论结合实战的方]]></description><category></category></item><item><title><![CDATA[小白也能懂的最详细之Spring Bean的生命周期 Spring循环依赖 如何解决循环依赖 Spring三级缓存 依赖限制...一篇文章一网打尽]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/154125987</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/154125987</guid><author>xuziang13</author><pubDate>Thu, 30 Oct 2025 17:13:00 +0800</pubDate><description><![CDATA[本文深入解析了Spring框架中的核心机制：首先详细阐述了Spring Bean的生命周期全过程，包括实例化、属性注入、初始化及销毁等关键阶段；其次重点讲解了Spring如何通过三级缓存（singletonObjects/earlySingletonObjects/singletonFactories）巧妙解决循环依赖问题，特别分析了AOP代理对象在循环依赖中的处理策略；最后指出解决方案的限制条件（仅支持单例模式且不适用于构造器注入），并提供了@Lazy注解等应对方案。全文系统揭示了Spring容器启动和依]]></description><category></category></item><item><title><![CDATA[一篇文章带你了解：SpringAI 竟然如此好玩(二)]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/150640767</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/150640767</guid><author>xuziang13</author><pubDate>Sat, 23 Aug 2025 16:21:09 +0800</pubDate><description><![CDATA[文章摘要：本文介绍了SpringAI开发框架的三种主要模式：纯Prompt开发、FunctionCalling和RAG。纯Prompt模式通过设定系统提示词实现功能，如哄女友模拟器；FunctionCalling模式结合AI意图理解与传统Java功能，实现智能客服等复杂业务；RAG模式通过外挂知识库解决大模型知识限制问题，使用向量数据库进行相似度检索。文章详细讲解了各模式的实现原理和代码示例，展示了SpringAI的强大功能和灵活性。]]></description><category></category></item><item><title><![CDATA[一篇文章带你了解：SpringAI 竟然如此好玩(一)]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/150640140</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/150640140</guid><author>xuziang13</author><pubDate>Sat, 23 Aug 2025 14:21:43 +0800</pubDate><description><![CDATA[本文介绍了大模型应用开发的四种主流技术架构：1. 纯Prompt模式：通过精心设计的提示词引导模型输出理想答案；2. Function Calling：将传统应用功能封装为函数，实现与大模型的协同工作；3. RAG（检索增强生成）：结合信息检索技术解决模型知识局限性问题；4. Fine-tuning（模型微调）：基于预训练模型使用领域数据进行二次训练。文章重点演示了如何利用SpringAI框架快速搭建对话机器人，包括基础对话实现、System设定、日志记录、跨域处理以及会话记忆功能开发，详细说明了如何通过C]]></description><category></category></item><item><title><![CDATA[Spring全家桶知识点总结（二）]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/150393263</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/150393263</guid><author>xuziang13</author><pubDate>Thu, 14 Aug 2025 17:40:18 +0800</pubDate><description><![CDATA[Spring框架提供了多个Bean扩展点，包括BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor等，在Bean生命周期中会调用9次后置处理器。Spring Bean是由IoC容器管理的对象，可通过XML、注解、JavaConfig等方式配置，有单例、原型等作用域。单例Bean的优势包括减少实例创建开销、降低GC压力和提高访问速度。Spring Bean线程安全取决于是否使用成员变量，无状态的单例Bean是线程安全的。实例化方式包括构造器反]]></description><category></category></item><item><title><![CDATA[从Spring容器的启动开始，一篇文章带你搞懂SpringIOC加载过程]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/150385832</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/150385832</guid><author>xuziang13</author><pubDate>Thu, 14 Aug 2025 14:42:54 +0800</pubDate><description><![CDATA[Spring容器启动的核心是创建ApplicationContext对象，它负责加载配置、创建BeanDefinition（存储类配置信息）并管理Bean生命周期。容器启动时首先读取配置信息（如XML或注解），扫描带有@Component等注解的类生成BeanDefinition。获取Bean时，容器检查单例池，若不存在则通过反射实例化对象，处理依赖注入（@Autowired），最终将完整Bean存入单例池。整个过程涉及懒加载处理、循环依赖解决等机制，最终通过ApplicationContext提供Bean]]></description><category></category></item><item><title><![CDATA[Spring全家桶知识点总结（一）]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/150347059</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/150347059</guid><author>xuziang13</author><pubDate>Wed, 13 Aug 2025 16:42:52 +0800</pubDate><description><![CDATA[什么是spring核心解释控制反转1OC:面向切面编程AOP:容器:包含并管理应用对象的生命周期。]]></description><category></category></item><item><title><![CDATA[保姆级教学带你拿下Java中的锁机制（下 ）]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/149503403</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/149503403</guid><author>xuziang13</author><pubDate>Mon, 21 Jul 2025 17:25:48 +0800</pubDate><description><![CDATA[Java并发编程中的AQS与锁机制详解 摘要：本文深入解析了Java并发编程的核心组件AQS(AbstractQueuedSynchronizer)及其在锁实现中的应用。AQS通过volatile状态变量和CLH队列实现线程同步，支持独占锁(如ReentrantLock)和共享锁(如Semaphore)。重点分析了可重入锁的实现原理，包括公平锁与非公平锁的区别：公平锁严格按队列顺序获取，非公平锁允许插队提高吞吐量。同时探讨了分段锁、锁粗化和锁消除等优化技术。文章还详细解读了Condition接口的线程协作机]]></description><category></category></item><item><title><![CDATA[保姆级教学带你拿下Java中的锁机制（上）]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/149355063</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/149355063</guid><author>xuziang13</author><pubDate>Wed, 16 Jul 2025 07:17:15 +0800</pubDate><description><![CDATA[Java中的锁分为乐观锁和悲观锁两大类。乐观锁基于CAS机制，通过比较交换实现无锁并发，包括自旋锁、AtomicXXX类、LongAdder等实现，适用于低竞争场景。悲观锁以synchronized为代表，采用对象头MarkWord实现锁升级（无锁→偏向锁→轻量级锁→重量级锁），重量级锁通过Monitor实现线程阻塞与唤醒。二者在内存可见性、线程阻塞、适用场景等方面存在显著差异：乐观锁避免线程阻塞但可能引起CPU空转，悲观锁保证安全性但可能带来性能开销。JVM通过锁升级、自旋优化等机制平衡性能与安全性。]]></description><category></category></item><item><title><![CDATA[Springboot仿抖音app开发之Nacos 分布式服务与配置中心（进阶）]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/148762305</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/148762305</guid><author>xuziang13</author><pubDate>Fri, 20 Jun 2025 21:20:08 +0800</pubDate><description><![CDATA[本文总结了基于SpringBoot的仿抖音App开发过程中多个功能模块的后端实现经验，重点介绍了RabbitMQ异步解耦和Nacos配置管理的应用。文章详细阐述了Nacos的核心功能：服务注册发现、动态配置管理、命名空间隔离和负载均衡，并形象地将Nacos比作"服务电话簿+配置管理员"。通过实际项目案例，展示了如何利用Nacos实现数值同步入库、动态配置变更和服务集群管理。特别讲解了IP漂移技术中的双机热备和双主热备模式的区别及应用场景，为构建高可用微服务系统提供了实用方案。文中还包含具体的技术实现代码和配]]></description><category></category></item><item><title><![CDATA[Springboot仿抖音app开发之RabbitMQ 异步解耦（进阶）]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/148746303</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/148746303</guid><author>xuziang13</author><pubDate>Thu, 19 Jun 2025 00:55:11 +0800</pubDate><description><![CDATA[的方法，并将返回值注册到Spring容器中。对于RabbitMQ组件，Spring AMQP会自动检测这些Bean并在RabbitMQ服务器上创建对应的实体。如果没有中间件（微信群）生产者给消费者发消息需要逐个去发送对应的消息，有了中间件之后只需要 统一发送就行，消费者去找自己对应的消息。其他相关的操作也同样进行异步解耦即可，我们已经在消费者模型中做了if判断处理。：记录用户行为 → 发送消息通知 → 更新推荐算法数据。：用户下单 → 扣减库存 → 生成订单 → 扣款。]]></description><category></category></item><item><title><![CDATA[Springboot仿抖音app开发之消息业务模块后端复盘及相关业务知识总结]]></title><link>https://blog.youkuaiyun.com/xuziang13/article/details/148651586</link><guid>https://blog.youkuaiyun.com/xuziang13/article/details/148651586</guid><author>xuziang13</author><pubDate>Sat, 14 Jun 2025 22:42:56 +0800</pubDate><description><![CDATA[这是一个在Repository接口中定义的方法，Spring Data会根据方法名自动生成查询实现。]]></description><category></category></item></channel></rss>