知其然,知其所以然
MySQL / InnoDB 2026-09-25

BKA 批量键访问

本机真实开启batched_key_access=on,真实尝试了三种表结构组合(内表有索引、内表无索引、真实禁用hash join和block_nested_loop强制施压),EXPLAIN里真实从未出现过Batched Key Access——真实验证了现代MySQL优化器已经不太选择这个策略。

MySQL 真实验证 动画演示
MySQL / InnoDB 2026-09-25

Hash Join

本机真实对2000行JOIN 2000行、内表无索引的场景,验证优化器默认选择Hash Join真实只要0.0009秒,而真实禁用Hash Join和Block Nested Loop后退化成的裸嵌套循环,同样的join真实要0.3793秒——差了约421倍。

MySQL 真实验证 动画演示
MySQL / InnoDB 2026-09-25

半连接与反连接

本机真实对5万客户+30万订单跑IN和NOT IN子查询,EXPLAIN真实显示两者都走了Materialize with deduplication策略,真实测出IN耗时0.0553秒返回22487个客户,NOT IN耗时0.0468秒返回27513个客户——两者相加真实精确等于50000,互补验证结果正确。

MySQL 真实验证 动画演示
MySQL / InnoDB 2026-09-25

派生表条件下推

本机真实用一个GROUP BY派生表(30万订单聚合成5万客户汇总),验证derived_condition_pushdown=on时耗时只要0.0004秒,关闭后真实变成0.2554秒——差了约638倍,两次都返回同一个正确结果(500, 3398)。

MySQL 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 101. 对称二叉树

给定一棵二叉树,检查它是否轴对称。一个常见的简化写法是按层收集非空值检查回文,但这会漏掉空位信息:本文用一个具体反例和 30,000 组随机树的穷举测试,证明这种写法会把 34% 的非对称树误判为对称,再给出正确的镜像递归和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 102. 二叉树的层序遍历

给定一棵二叉树,按层返回结点值,每层一个子数组。BFS 的一个常见陷阱是内层循环没有先固定这一层的结点数,导致所有层被合并成一个:本文用真实反例和完全二叉树验证这个错误,再给出正确写法和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 103. 二叉树的锯齿形层序遍历

在层序遍历基础上,让每层交替从左到右、从右到左输出。一个常见陷阱是方向标记忘了在每层结束后切换,导致退化成普通层序遍历:本文用真实反例验证,再给出正确写法和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 104. 二叉树的最大深度

给定一棵二叉树,求它的最大深度。一个常见陷阱是用栈做迭代 DFS 时,把访问过的结点总数误当成树的高度:本文用真实的完全二叉树规模对比验证这个错误会有多大偏差,再给出正确写法和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 105. 从前序与中序遍历序列构造二叉树

给定前序遍历和中序遍历序列,重建这棵二叉树。一个真实会犯的错误是把两个参数顺序传反:本文用 2000 组随机树验证,超过一半的情况会直接崩溃,另外近三成会静静地重建出错误的树,再给出正确写法和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 106. 从中序与后序遍历序列构造二叉树

给定中序遍历和后序遍历序列,重建这棵二叉树。一个真实会犯的错误是照搬前序定根的思路,误把 postorder[0] 当成根:本文用 2000 组随机树验证,超过一半的情况会直接崩溃,再给出正确写法和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 107. 二叉树的层序遍历 II

和层序遍历一样按层分组,只是结果要从下往上排列。一个常见陷阱是把所有结点拍平成一个数组再整体反转,这样会丢掉层的分组,还会误把每层内部的从左到右顺序也反转掉:本文用真实反例验证,再给出正确写法和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
算法与数据结构 2026-09-25

LeetCode 108. 将有序数组转换为二叉搜索树

给定升序数组,构造一棵高度平衡的二叉搜索树。一个常见陷阱是把数组按顺序插入 BST,这样虽然满足 BST 性质但完全不平衡,会退化成一条链:本文用真实的规模对比验证这个规律,再给出正确的取中点分治写法和 5 种语言实现。

LeetCode 算法动画 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号