<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ZFChan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ZFChan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ZFChan]]></copyright><item><title><![CDATA[并发深度解析】硬核手撕 ForkJoinPool + WorkStealing + CompletableFuture 底层源码与大厂面试演练]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161948569</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161948569</guid><author>ZFChan</author><pubDate>Sat, 13 Jun 2026 11:16:37 +0800</pubDate><description><![CDATA[本文深度撕开 Java 并发核心机制，聚焦 ForkJoinPool 与 CompletableFuture 底层源码。文章直击面试高频痛点：从传统线程池的共享队列锁竞争缺陷出发，详细剖析了 ForkJoinPool “独占双端队列” 与 “偷尾不偷头” 的工作窃取（Work-Stealing）算法底层流转；同时打通 CompletableFuture 默认线程池 commonPool 的性能陷阱，辅以电商详情页多接口异步编排实战与核心八股金句，助你全方位吃透高并发底层原理，秒杀面试官！]]></description><category></category></item><item><title><![CDATA[Java 并发进阶：JMM、volatile、CAS、Atomic、锁升级、ReentrantLock 一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161880022</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161880022</guid><author>ZFChan</author><pubDate>Thu, 11 Jun 2026 09:14:28 +0800</pubDate><description><![CDATA[本文全景解析 **Java 并发核心进阶知识**。从 **JMM 内存模型**出发，深入剖析 **volatile** 保证可见性与禁止重排序的原理；详解 **CAS 乐观锁**及 ABA 问题，对比 **AtomicInteger** 与高并发利器 **LongAdder**；最后梳理 **synchronized 锁升级**与 **ReentrantLock** 的核心区别。图文并茂，层层递进，助你一记搞定后端面试高频并发考点。]]></description><category></category></item><item><title><![CDATA[Java 并发基础：进程、线程、线程状态、synchronized、volatile 一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161838998</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161838998</guid><author>ZFChan</author><pubDate>Tue, 09 Jun 2026 21:09:16 +0800</pubDate><description><![CDATA[这是一篇针对 Java 后端面试高频考点的**并发基础核心指南**。文章采用循序渐进的逻辑，由浅入深地将零散的并发概念串联：首先厘清**进程与线程**的本质区别及多线程的利弊；接着剖析 **Java 6大线程状态**的流转逻辑，并对比了 `sleep` 与 `wait` 的底层差异；最后直击线程安全核心，深入解析**原子性、可见性、有序性**三大问题，并对比了 `synchronized` 重量级锁与 `volatile` 轻量级关键字的原理与适用场景，助你一篇文章搞定并发面试底层逻辑。]]></description><category></category></item><item><title><![CDATA[Java 集合 Queue 与并发容器：ArrayDeque、PriorityQueue、BlockingQueue、CopyOnWriteArrayList 一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161789092</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161789092</guid><author>ZFChan</author><pubDate>Mon, 08 Jun 2026 10:27:43 +0800</pubDate><description><![CDATA[本文介绍了 Java Queue 队列体系与常见并发容器，包括 Queue、Deque、ArrayDeque、PriorityQueue、BlockingQueue 和 CopyOnWriteArrayList。重点讲解了堆、阻塞队列、生产者消费者模型及写时复制机制，帮助读者掌握队列结构原理、应用场景和面试高频知识点。]]></description><category></category></item><item><title><![CDATA[Java 集合进阶：ConcurrentHashMap、HashSet、LinkedHashMap、TreeMap 和 fail-fast 一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161765362</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161765362</guid><author>ZFChan</author><pubDate>Sun, 07 Jun 2026 10:34:14 +0800</pubDate><description><![CDATA[本文总结了 Java 集合进阶知识：HashMap 线程不安全，多线程场景推荐使用 ConcurrentHashMap；JDK7 采用 Segment 分段锁，JDK8 使用 CAS+Synchronized 提升并发性能。HashSet 基于 HashMap 实现去重，依赖 equals 和 hashCode；LinkedHashMap 保持顺序，TreeMap 和 TreeSet 基于红黑树实现排序。最后介绍了 fail-fast 机制及安全删除元素的方法。
]]></description><category></category></item><item><title><![CDATA[Java 集合框架入门到面试：ArrayList、LinkedList、HashMap 底层原理一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161744489</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161744489</guid><author>ZFChan</author><pubDate>Sat, 06 Jun 2026 12:50:01 +0800</pubDate><description><![CDATA[本文系统梳理了 Java 集合框架的核心知识点。首先介绍 Collection 与 Map 两大体系，以及 List、Set、Queue、Map 的特点和常见实现类。随后深入分析 ArrayList 的数组结构、扩容机制及性能特点，对比 LinkedList 双向链表的底层实现与实际应用场景。重点讲解 HashMap 的数组+链表+红黑树结构、put 流程、哈希冲突处理、扩容机制、负载因子、哈希扰动以及链表树化条件。]]></description><category></category></item><item><title><![CDATA[Redis 数据类型底层原理：SDS、quicklist、intset、skiplist、Bitmap、HyperLogLog 一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161676831</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161676831</guid><author>ZFChan</author><pubDate>Thu, 04 Jun 2026 10:15:27 +0800</pubDate><description><![CDATA[本文系统梳理了 Redis 常见数据类型及其底层实现原理。从 String 的 SDS、Hash 的 listpack 与 hashtable、List 的 quicklist、Set 的 intset 与 hashtable，到 ZSet 的 skiplist 与 dict 组合，深入分析了 Redis 在性能与内存之间的优化策略。同时介绍了渐进式 Rehash、Bitmap、HyperLogLog、Geo 和 Pipeline 等核心机制及应用场景。]]></description><category></category></item><item><title><![CDATA[Redis 在项目里怎么用？验证码、Token、点赞、排行榜、限流、秒杀一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161644384</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161644384</guid><author>ZFChan</author><pubDate>Wed, 03 Jun 2026 10:00:07 +0800</pubDate><description><![CDATA[这篇文章系统梳理了 **Redis 在后端项目中的 9 大核心应用场景**（验证码、登录 Token、点赞收藏、排行榜、计数器、接口限流、秒杀库存、延迟队列、消息队列），并对比了 Redis Token 与 JWT 的差异。文章强调 Redis 不仅能做数据缓存，更应结合其 String、Set、ZSet 等丰富的数据结构与 Lua 脚本的原子性，去解决高并发下的状态存储与业务辅助问题，同时遵循“核心数据最终落库 MySQL”的原则，为面试与架构设计提供了一套标准、结构化的实战参考。]]></description><category></category></item><item><title><![CDATA[Redis 过期 Key 会立刻删除吗？内存淘汰、大 Key、热 Key 和慢查询一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161612203</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161612203</guid><author>ZFChan</author><pubDate>Tue, 02 Jun 2026 09:32:32 +0800</pubDate><description><![CDATA[这篇文章系统梳理了 Redis 的核心运维与面试痛点。内容指出，Redis 键过期并非立刻删除，而是通过惰性与定期删除结合处理，内存满时则依靠 LRU、LFU 等策略进行淘汰。同时，文章深入剖析了大 Key、热 Key 的定义、危害及其优化方案（如使用 `UNLINK` 异步删除），并针对 `KEYS` 和 `HGETALL` 等高危命令给出了安全替代方案，是一份全面的 Redis 性能调优指南。]]></description><category></category></item><item><title><![CDATA[Redis 宕机数据会丢吗？RDB、AOF、主从复制、哨兵和 Cluster 一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161582698</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161582698</guid><author>ZFChan</author><pubDate>Mon, 01 Jun 2026 09:41:08 +0800</pubDate><description><![CDATA[Redis 作为内存数据库，宕机面临数据丢失风险。为此，Redis 提供了 RDB 与 AOF 两种持久化机制，生产常搭配使用并开启 everysec 策略。
为解决单机可用性与性能瓶颈，Redis 演进出三大高可用架构：
主从复制： 实现读写分离与数据备份，但属于异步复制且无法自动故障转移；
哨兵（Sentinel）： 引入主客观下线判决，实现自动的主从切换；
集群（Cluster）： 采用 16384 个哈希槽实现数据分片，彻底解决单机内存容量与写并发的瓶颈。]]></description><category></category></item><item><title><![CDATA[Redis 和 MySQL 数据一致性怎么保证？缓存更新策略与分布式锁一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161562875</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161562875</guid><author>ZFChan</author><pubDate>Sun, 31 May 2026 12:34:03 +0800</pubDate><description><![CDATA[本文深度解析了 Redis 与 MySQL 双写一致性及分布式锁的核心机制。针对数据一致性，文章明确了 MySQL 的主数据地位，推荐采用“先更新数据库，再删除缓存”的策略，并结合延迟双删与 MQ 重试应对失效风险。面对并发写场景，详细剖析了 Redis 分布式锁通过 SETEX 原子加锁、防止误删的 Lua 脚本释放逻辑，以及 Redisson 看门狗的自动续期机制，助你全面掌握高并发场景下的缓存与锁实战。]]></description><category></category></item><item><title><![CDATA[Redis 入门到面试高频：数据结构、缓存流程、穿透击穿雪崩一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161536152</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161536152</guid><author>ZFChan</author><pubDate>Sat, 30 May 2026 10:54:32 +0800</pubDate><description><![CDATA[这是一篇专为 Java 后端开发者打造的 Redis 核心知识硬核总结。文章直击面试与项目落地痛点，开篇点透 Redis 基于内存、单线程及多路复用带来的高性能本质。随后逐一拆解 String、Hash、List、Set、ZSet 五大基础数据结构的绝佳应用场景与 Key 设计规范。最后，通过清晰的旁路缓存流程图，深度剖析缓存穿透、击穿、雪崩三大灾难性问题的触发根源，并给出了缓存空值、布隆过滤器、互斥锁及随机过期时间等企业级闭环解决方案，助你轻松攻克高并发缓存面试关卡。]]></description><category></category></item><item><title><![CDATA[MySQL InnoDB 内存结构与性能调优：Buffer Pool、脏页、刷盘、临时表和 filesort 一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161509918</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161509918</guid><author>ZFChan</author><pubDate>Fri, 29 May 2026 11:34:17 +0800</pubDate><description><![CDATA[MySQL InnoDB 引擎的内存管理与性能调优机制。InnoDB 以 16KB 数据页为单位，利用 Buffer Pool 缓存热点数据以减少磁盘 I/O。更新时通过 WAL 技术先顺序写 redo log 保证持久性，产生的数据脏页则由后台线程异步刷盘。串联了 Doublewrite Buffer、Change Buffer、LRU 淘汰及自适应哈希等核心组件，指出优化 GROUP BY 和 ORDER BY 索引能有效消除 Using temporary 和 Using filesort 的额外开销]]></description><category></category></item><item><title><![CDATA[MySQL 表设计与 SQL 优化：从字段类型、主键设计到深分页优化一篇讲清]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161476859</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161476859</guid><author>ZFChan</author><pubDate>Thu, 28 May 2026 10:32:20 +0800</pubDate><description><![CDATA[本文围绕 MySQL 表设计与 SQL 优化展开，系统总结了数据库表设计的核心原则与实战经验。内容涵盖主键选择、自增与趋势递增、字段类型优化、金额与状态字段设计、唯一索引和联合索引策略，以及 order by、group by、limit 深分页优化方法。通过合理设计表结构与索引，提升查询效率，降低磁盘 IO，提高缓存命中率，并保证数据一致性与可恢复性，帮助开发者写出高效 SQL，优化系统整体性能。]]></description><category></category></item><item><title><![CDATA[MySQL 一次 Update 背后发生了什么？日志系统、Buffer Pool、两阶段提交、主从复制一篇讲透]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161442499</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161442499</guid><author>ZFChan</author><pubDate>Wed, 27 May 2026 10:00:07 +0800</pubDate><description><![CDATA[文章重点介绍了 Buffer Pool 如何平衡磁盘 I/O 压力，并深度拆解了保证日志一致性的核心方案——两阶段提交（2PC）。针对分布式场景，系统梳理了主从复制的完整链路（Binary Log -> Relay Log）、读写分离的实现，以及如何解决棘手的“主从同步延迟”问题。最后，通过将所有知识点串联进“一条 Update 语句的执行全流程”，为求职者构建了从内存修改到日志落盘、再到主从同步的系统化知识图谱，是 Java 后端实习与校招大厂面试的进阶必备指南。]]></description><category></category></item><item><title><![CDATA[别再死记硬背了！一张图帮你串联 MySQL 核心面试题（从索引、事务到 MVCC 与锁机制）]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161414155</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161414155</guid><author>ZFChan</author><pubDate>Tue, 26 May 2026 10:29:48 +0800</pubDate><description><![CDATA[还在死记硬背 MySQL 的面试题吗？本文不聊枯燥的理论，直接用大白话和一条清晰的逻辑主线，把联合索引、最左前缀、ACID 特性、MVCC、锁机制以及慢 SQL 优化彻底串联起来，真正做到融会贯通。如果你在面试中总是被底层逻辑追问到懵圈，这篇文章将是你的终极攻略，帮你用一张逻辑图通关 MySQL 核心考点。]]></description><category></category></item><item><title><![CDATA[MySQL 索引到底怎么工作的？一篇讲清 B+ 树、联合索引、覆盖索引和回表]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161263826</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161263826</guid><author>ZFChan</author><pubDate>Wed, 20 May 2026 22:51:24 +0800</pubDate><description><![CDATA[围绕 MySQL 索引展开，重点讲解了 B+ 树索引原理、联合索引最左前缀原则、覆盖索引以及回表机制。文章首先说明了索引存在的意义，并分析 InnoDB 为什么选择 B+ 树作为索引结构：树高低、磁盘 IO 少、叶子节点有序且适合范围查询。随后介绍了聚簇索引和二级索引的区别，引出回表的执行过程，即通过二级索引找到主键后，再回到主键索引查询完整数据。接着说明覆盖索引如何避免回表，提高查询效率。最后结合联合索引的字段顺序、最左前缀原则和范围查询影响，帮助读者理解如何设计更合理的索引，并通过 EXPLAIN分析。]]></description><category></category></item><item><title><![CDATA[[已解决] 告别手写 SQL！MyBatis-Plus Query 全家桶保姆级教程，教你如何规避拼写错误的生产事故 (侧重避坑与新手保姆级引导)]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161198582</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161198582</guid><author>ZFChan</author><pubDate>Tue, 19 May 2026 10:00:00 +0800</pubDate><description><![CDATA[本文针对 MyBatis-Plus 核心查询方法（BaseMapper、IService、链式查询）进行全方位深度复盘。通过真实生产事故情景导入，直击硬编码字符串带来的运行期崩溃痛点。文章不仅多维对比了 QueryWrapper 与 LambdaQueryWrapper 的性能与安全差异，更独家拆解了 SerializedLambda 底层反射映射的源码级实现原理，帮助开发者实现从“满屏魔法值”到“编译期类型安全”的优雅蜕变。]]></description><category></category></item><item><title><![CDATA[一条 SELECT 语句在 MySQL 中是怎么执行的？看完这篇终于懂了]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161178516</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161178516</guid><author>ZFChan</author><pubDate>Mon, 18 May 2026 08:34:32 +0800</pubDate><description><![CDATA[本文通过一条简单的 `SELECT` 语句，详细讲解了 MySQL 的执行流程。文章从整体架构出发，将 Server 层与存储引擎层的职责区分开来，依次分析了连接器建立连接、权限校验、查询缓存（MySQL 8.0 已移除）、解析器词法和语法分析、预处理器检查表字段、优化器生成执行计划，以及执行器调用存储引擎读取数据的全过程。文中结合主键查询、全表扫描和索引下推案例，展示不同查询方式的内部执行差异，并总结了回表、索引选择等核心概念。理解这一流程有助于 SQL 优化、慢查询分析和索引设计.]]></description><category></category></item><item><title><![CDATA[Redis 常用数据类型命令总结：String、Hash、List、Set、SortedSet 一篇搞懂]]></title><link>https://blog.youkuaiyun.com/ZFChan/article/details/161168817</link><guid>https://blog.youkuaiyun.com/ZFChan/article/details/161168817</guid><author>ZFChan</author><pubDate>Sun, 17 May 2026 17:52:52 +0800</pubDate><description><![CDATA[本文围绕 Redis 常见数据类型展开，系统整理了 String、Hash、List、Set、SortedSet 五种核心结构的使用场景和常用命令。文章首先介绍了 Redis 中 key 的命名规范，建议使用“项目名:业务名:类型:id”的层级结构，方便后期维护。随后分别讲解了 String 的缓存与计数器用法、Hash 存储对象的优势、List 在消息队列和最新列表中的应用、Set 在去重和集合运算中的价值，以及 SortedSet 在排行榜、热榜等排序场景中的典型使用方式。通过命令表格、实际示例和流程图]]></description><category></category></item></channel></rss>