Hot 100 --- 腐烂的橘子
本文以LeetCode题目"腐烂的橘子"为例,讲解多源BFS的思路——所有腐烂橘子同时扩散,每轮加1分钟,最后用新鲜橘子计数判断是否全部腐烂
Hot 100 --- 实现 Trie (前缀树)
本文以LeetCode题目"实现 Trie (前缀树)"为例,讲解前缀树的结构设计——节点含 isWord 字段和 HashMap 邻接表,以及 insert/search/startsWith 三个核心操作
Hot 100 --- 岛屿数量
本文以LeetCode题目"岛屿数量"为例,从二叉树的递归视角迁移到二维网格的四方向递归,讲解DFS和BFS两种标记岛屿的方法
Hot 100 --- 二叉树中的最大路径和
本文以LeetCode题目"二叉树中的最大路径和"为例,讲解"拐点"视角的思路,每个节点作为拐点更新全局最大值,同时只传单边最大路径给父节点
Redis 缓存一致性全解:从 Cache Aside 到延迟双删、Canal+MQ 的进阶之路
引入 Redis 缓存层后,"数据库更新了缓存却没跟上"就成了绕不开的一致性难题。本文按"问题 → 朴素方案为何失败 → Cache Aside → 先删 vs 后删 → TTL 兜底 → 延迟双删 + MQ 重试 → Canal + MQ → 分布式锁 → 何时放弃缓存"的进阶路线,系统讲透更新缓存与删除缓存的取舍、并发读写场景下的脏数据窗口、ACK 时序、Canal 痛点以及强一致业务的选型逻辑,并配多张流程图辅助理解。
Hot 100 --- 二叉树的最近公共祖先
本文以LeetCode题目"二叉树的最近公共祖先"为例,讲解后序遍历+回溯汇总的思路,重点说明三种返回值情况的处理
Hot 100 --- 路径总和 III
本文以LeetCode题目"路径总和III"为例,讲解二叉树上的前缀和+哈希表方法,重点说明与数组版560题的区别——多路径导致需要回溯哈希表
Redis 缓存三大经典问题:雪崩、击穿、穿透从原理到方案
Redis 缓存层一旦失效,请求就会瞬间穿透到数据库,把数据库冲垮,进而拖垮整个系统。本文按"问题 → 成因 → 预防层 → 响应层"的结构,系统讲透缓存雪崩(大面积失效)、缓存击穿(热点单点失效)、缓存穿透(查询不存在数据)三大经典问题,涵盖 TTL 随机偏移、逻辑过期、缓存预热、互斥锁双重确认、线程池异步重建、降级/等待策略、重试+MQ 兜底、定时任务巡检、布隆过滤器等核心机制。
Hot 100 --- 从前序与中序遍历序列构造二叉树
本文以LeetCode题目"从前序与中序遍历序列构造二叉树"为例,详细讲解如何把"分治构造"的想法转化为递归代码,重点说明递归的出口和参数传递
Hot 100 --- 二叉树展开为链表
本文以LeetCode题目"二叉树展开为链表"为例,讲解如何原地将二叉树按先序遍历展开为链表,通过"左子树最右节点接右子树"的迭代技巧实现O(1)空间

