<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ize250917的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ize250917</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ize250917]]></copyright><item><title><![CDATA[秒杀超卖难题：悲观锁与乐观锁终极对决]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/169848451</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/169848451</guid><author>ize250917</author><pubDate>Mon, 02 Nov 2026 20:22:35 +0800</pubDate><description><![CDATA[本文深入解析高并发场景下的超卖问题，通过复现库存扣减冲突，对比悲观锁（FOR UPDATE）与乐观锁（版本号、CAS、时间戳）的原理与实现。悲观锁强一致但性能差，适合写多场景；乐观锁无锁高并发，适用于读多写少如秒杀。结合分布式锁、Redis预扣库存等方案，全面解决集群下超卖问题。核心：原子操作+冲突检测，选型依业务并发与一致性需求而定。]]></description><category></category></item><item><title><![CDATA[缓存击穿破解：互斥锁与逻辑过期实战]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/169460361</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/169460361</guid><author>ize250917</author><pubDate>Thu, 29 Oct 2026 16:35:41 +0800</pubDate><description><![CDATA[本文详解Redis缓存击穿问题：热点Key过期时高并发请求导致大量穿透数据库。解决方案一为互斥锁，保证单线程重建缓存，强一致但有阻塞风险；方案二为逻辑过期，不设TTL，通过异步线程重建缓存，提升可用性与性能。两者均需注意锁防死锁、双重检查及释放时机，推荐结合预热使用，有效应对高并发场景。]]></description><category></category></item><item><title><![CDATA[缓存雪崩终极解决方案揭秘]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/169267781</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/169267781</guid><author>ize250917</author><pubDate>Wed, 28 Oct 2026 01:30:00 +0800</pubDate><description><![CDATA[本文详解缓存雪崩问题：因大量缓存键集中过期或Redis宕机，导致请求瞬间冲击数据库。提出五种解决方案：TTL加随机值（打散过期时间）、缓存永不过期+异步更新、多级缓存（本地+分布式）、Redis高可用集群、服务降级与限流熔断。推荐组合使用TTL随机+高可用集群为标配，核心数据叠加多级缓存兜底，保障系统稳定性。]]></description><category></category></item><item><title><![CDATA[Redis缓存穿透终极解决方案揭秘]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/169267605</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/169267605</guid><author>ize250917</author><pubDate>Tue, 27 Oct 2026 20:55:04 +0800</pubDate><description><![CDATA[本文深入解析Redis缓存穿透问题，涵盖其成因与四大解决方案：缓存空值（最常用）、布隆过滤器（防恶意攻击）、接口校验+限流、互斥锁（兜底）。结合代码示例与选型建议，强调合理设置空值过期时间及组合使用方案以提升系统稳定性。]]></description><category></category></item><item><title><![CDATA[MyBatis-Plus指南：从入门到面试]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/166351216</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/166351216</guid><author>ize250917</author><pubDate>Tue, 22 Sep 2026 11:23:29 +0800</pubDate><description><![CDATA[MyBatis-Plus是MyBatis的增强工具，旨在简化单表CRUD开发。它通过BaseMapper实现零SQL操作，用Wrapper（推荐Lambda版）链式构造动态条件，支持分页、逻辑删除、自动填充、乐观锁等企业级功能，且与原生MyBatis完全兼容。适用于后台管理系统等单表场景，复杂查询仍可结合手写XML。核心优势：提升开发效率，降低出错率，是MyBatis的“自动挡升级版”。]]></description><category></category></item><item><title><![CDATA[苍穹外卖实战：WebSocket如何实现实时通知]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/165120811</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/165120811</guid><author>ize250917</author><pubDate>Sat, 12 Sep 2026 20:30:00 +0800</pubDate><description><![CDATA[本文详解WebSocket在苍穹外卖项目中的应用，从轮询痛点引出需求，对比HTTP与WebSocket核心差异（全双工、长连接、低开销），解析握手升级、数据帧传输与心跳机制。结合实战，演示后端通过@ServerEndpoint管理会话并广播订单提醒，前端实现自动连接与消息处理，完成实时通知功能。重点总结面试高频考点：协议区别、生命周期注解、断线重连及与SSE/轮询的选型逻辑。]]></description><category></category></item><item><title><![CDATA[Spring Task定时任务全解析：从入门到实战]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/165120435</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/165120435</guid><author>ize250917</author><pubDate>Sat, 12 Sep 2026 16:05:56 +0800</pubDate><description><![CDATA[本文介绍了SpringTask定时任务的使用，涵盖核心注解、三种配置方式（固定延迟、固定速率、Cron表达式），重点解析Cron表达式语法及常见用法，并结合苍穹外卖项目展示实际应用场景。通过完整代码示例与注意事项说明，帮助开发者快速上手。最后提供多线程优化方案，适用于高并发场景。适合初学者系统学习定时任务开发。]]></description><category></category></item><item><title><![CDATA[ThreadLocal内存泄漏原因及解决方案]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/163926758</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/163926758</guid><author>ize250917</author><pubDate>Thu, 20 Aug 2026 21:48:21 +0800</pubDate><description><![CDATA[ThreadLocal内存泄漏问题解析与正确使用指南 摘要：ThreadLocal通过线程私有Map实现线程隔离，但存在内存泄漏风险。核心问题在于：key是弱引用会被回收，而value是强引用，当线程池复用线程时，未清理的value会持续占用内存。解决方案：1) 使用static final修饰ThreadLocal；2) 必须用try-finally包裹并在finally中remove()；3) 避免存储大对象。JDK虽提供清理机制（set/get/remove时清理过期条目），但无法覆盖所有场景。正确使]]></description><category></category></item><item><title><![CDATA[Nginx反向代理：接口对不上为何能通？]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/163888421</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/163888421</guid><author>ize250917</author><pubDate>Wed, 19 Aug 2026 14:50:35 +0800</pubDate><description><![CDATA[本文探讨了Nginx反向代理在前后端分离项目中的关键作用。当前端请求地址与后端接口路径不一致时，Nginx通过重写URL实现请求转发，使通信得以正常进行。文章详细解析了Nginx反向代理的三大优势：隐藏后端服务提升安全性、统一入口解决跨域问题、实现负载均衡提高系统性能。重点介绍了轮询和权重两种负载均衡策略及其适用场景。通过Nginx的中间协调，不仅简化了开发调试过程，更为系统架构提供了安全防护和性能优化方案，使其成为现代Web开发中不可或缺的基础组件。]]></description><category></category></item><item><title><![CDATA[Vue3+ElementPlus前后端分离项目实战]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/163395620</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/163395620</guid><author>ize250917</author><pubDate>Sat, 01 Aug 2026 16:30:55 +0800</pubDate><description><![CDATA[本文以Tlias智能学习辅助系统为例，详细讲解了Vue3+ElementPlus前后端分离项目的开发流程。文章首先介绍了项目结构，重点分析了Vite代理配置、API请求层和Vue组件三层的协作关系。通过部门管理模块的增删改查功能，展示了从用户操作到数据存储的完整调用链路，包括代理转发、RESTful API设计和组件交互逻辑。最后总结了开发中的常见问题及最佳实践，强调分层架构中各司其职的重要性，帮助开发者理解前后端分离项目的运行机制。文章内容详实，对初学者具有很好的指导意义。]]></description><category></category></item><item><title><![CDATA[解决MyBatis查询结果映射null问题]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/162530159</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/162530159</guid><author>ize250917</author><pubDate>Fri, 03 Jul 2026 00:04:45 +0800</pubDate><description><![CDATA[本文分享了开发Tlias智能学习辅助系统时遇到的一个典型问题：学员管理分页查询中班级名称无法显示。通过排查发现，SQL查询结果字段名为&quot;className&quot;，而Java对象属性名为&quot;clazzName&quot;，导致MyBatis无法正确映射而返回null值。作者最终意识到SQL中的as别名是给数据库结果集使用的，MyBatis会严格按结果集列名匹配Java对象属性。解决方案是保持SQL查询结果字段名与Java对象属性名一致。文章提醒开发者注意数据库字段与Java属性的命名一]]></description><category></category></item><item><title><![CDATA[编程异常处理全攻略]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/160959102</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/160959102</guid><author>ize250917</author><pubDate>Sun, 10 May 2026 18:42:19 +0800</pubDate><description><![CDATA[本文介绍了编程中的异常处理机制。首先定义了异常是程序运行时错误的表示形式，包含错误类型和位置等信息。然后通过学生年龄设置的代码示例展示了异常的实际应用。重点讲解了异常处理的两种方式：JVM默认处理和开发者捕获处理（try-catch），并详细说明了捕获异常的注意事项和使用细节。最后介绍了如何自定义异常类，包括命名规范、继承关系和构造方法设置，目的是使错误信息更清晰易懂。全文系统性地讲解了异常处理的基础知识和实践技巧。]]></description><category></category></item><item><title><![CDATA[Java IO流核心知识点全解析]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/160384503</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/160384503</guid><author>ize250917</author><pubDate>Wed, 22 Apr 2026 00:24:52 +0800</pubDate><description><![CDATA[本文介绍了Java IO流的核心知识点，包括字节流、字符流、缓冲流等关键内容。主要涵盖：1）字节输入/输出流的基本操作与文件拷贝；2）字符流的读写操作与缓冲区原理；3）缓冲流的高效处理方式；4）转换流、序列化流等特殊流的使用场景；5）文件压缩/解压缩操作；6）第三方工具类Commons-io和Hutool的应用。文章通过具体代码示例演示了各种IO操作，特别强调了流使用后必须关闭的重要细节，并提供了文件排序等实用案例。这些IO流技术是Java开发中处理文件和数据传输的基础模块，需要重点掌握。]]></description><category></category></item><item><title><![CDATA[Java方法引用：Stream流编程利器]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/159699938</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/159699938</guid><author>ize250917</author><pubDate>Wed, 01 Apr 2026 01:00:14 +0800</pubDate><description><![CDATA[本文介绍了Java中方法引用的基本规则和使用方法。方法引用必须满足四个条件：必须是函数式接口、被引用方法已存在、形参返回值一致、功能满足需求。文章详细展示了五种方法引用类型：1）静态方法引用（如Integer::parseInt）；2）成员方法引用（包括本类和其他类）；3）构造方法引用（如Student::new）；4）类名引用成员方法（如String::toUpperCase）；5）数组构造方法引用（如Integer[]::new）。通过对比传统写法和方法引用写法，展示了方法引用如何简化Stream流操作]]></description><category></category></item><item><title><![CDATA[Java Stream流操作全解析]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/159479085</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/159479085</guid><author>ize250917</author><pubDate>Thu, 26 Mar 2026 00:32:10 +0800</pubDate><description><![CDATA[本文介绍了Java中Stream流的使用方法，主要包括：1. Stream流的获取方式（单列/双列集合、数组、零散数据）；2. 中间操作方法（map、distinct等）的特点和使用注意事项；3. 终结方法（toArray、collect）的具体应用，包括收集到List、Set、Map等集合的操作。文章通过代码示例详细演示了各种Stream操作，并提供了Lambda表达式的简化写法。最后强调了Stream流的一次性使用特性及中间操作不会影响原始数据的特点。]]></description><category></category></item><item><title><![CDATA[Java Map集合：键值对操作全解析]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/159285825</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/159285825</guid><author>ize250917</author><pubDate>Fri, 20 Mar 2026 16:44:24 +0800</pubDate><description><![CDATA[本文介绍了Java中Map集合的基本概念和使用方法。Map是一种双列集合，以键值对形式存储数据，具有键不可重复、值可重复的特点。文章详细讲解了Map的三种遍历方式（键找值、键值对、Lambda表达式）以及三种实现类（HashMap、LinkedHashMap、TreeMap）的特性。其中HashMap无序，LinkedHashMap有序，TreeMap可排序。最后通过统计字符串字符出现次数的案例，演示了TreeMap的实际应用，并指出排序时需要注意获取集合值的技巧。文章内容实用，适合Java初学者学习Map]]></description><category></category></item><item><title><![CDATA[Java集合Set全解析：从HashSet到TreeSet]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/158936713</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/158936713</guid><author>ize250917</author><pubDate>Thu, 12 Mar 2026 00:03:26 +0800</pubDate><description><![CDATA[本文介绍了Java中Set集合的三种实现：HashSet、LinkedHashSet和TreeSet。HashSet基于哈希表实现，具有无序、不重复特性，JDK8后引入红黑树优化性能；LinkedHashSet在HashSet基础上通过双向链表维护元素插入顺序；TreeSet基于红黑树实现，支持自然排序和自定义排序（通过Comparable或Comparator接口）。文章还对比了不同数据类型的默认排序规则，并详细说明了自定义对象的两种排序方式实现。最后预告了下期将讲解栈、队列、链表等数据结构知识。]]></description><category></category></item><item><title><![CDATA[Java List集合详解：ArrayList && LinkedList]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/158936143</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/158936143</guid><author>ize250917</author><pubDate>Wed, 11 Mar 2026 23:43:42 +0800</pubDate><description><![CDATA[本期视频介绍了Java中List集合的使用方法，重点讲解了ArrayList和LinkedList两种实现。主要内容包括：1）List集合的索引操作方法，通过示例演示了remove方法的两种使用方式；2）新增的列表迭代器遍历方式，可在遍历过程中添加元素；3）LinkedList集合的双链表特性及其首尾操作优势。视频内容简明易懂，为后续学习Set集合和数据结构打下基础。]]></description><category></category></item><item><title><![CDATA[Java集合入门：从零掌握三大遍历技巧]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/158934970</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/158934970</guid><author>ize250917</author><pubDate>Wed, 11 Mar 2026 22:43:23 +0800</pubDate><description><![CDATA[本文介绍了Java集合框架的基础知识。主要内容包括：1）集合与数组的区别（长度可变、数据类型等）；2）集合创建方式（一维/二维ArrayList）；3）集合体系结构（单列Collection和双列Map）；4）Collection常用方法（add/remove等）；5）三种集合遍历方式：迭代器（不依赖索引）、增强for循环（底层迭代器）和Lambda表达式；6）各种遍历方式的特点和使用注意事项。文章为后续学习List集合奠定了基础，适合Java初学者了解集合框架的基本概念和操作方法。]]></description><category></category></item><item><title><![CDATA[Java泛型入门：从基础到实战]]></title><link>https://blog.youkuaiyun.com/ize250917/article/details/158856171</link><guid>https://blog.youkuaiyun.com/ize250917/article/details/158856171</guid><author>ize250917</author><pubDate>Tue, 10 Mar 2026 00:15:00 +0800</pubDate><description><![CDATA[本文介绍了Java中泛型的基础知识与应用。首先说明了没有泛型时集合存储数据的问题：默认Object类型导致无法使用特有行为。泛型的优势在于统一数据类型，将运行时问题提前到编译期。文章详细讲解了泛型类、方法和接口的使用方式，以及泛型不具备继承性但数据具备继承性的特点。重点介绍了泛型通配符(? extends E和? super E)的使用场景，可以限定类型范围。最后总结了泛型在定义不确定数据类型时的应用价值，建议在已知继承体系的情况下使用通配符。全文通过代码示例生动展示了泛型的各种用法和注意事项。]]></description><category></category></item></channel></rss>