更新日志
每一节新课、功能与改进——最新在上。
2026年11月1日
- 新课矩阵乘法 — 用一行与一列的点积填入每个结果格,再交换两个矩阵,观察顺序可能带来的乘积形状变化。
2026年10月31日
- 新课前缀和 — 读取两个前缀值、相减就得到区间和,再修改一个元素,看后续哪些累计值需要修复。
2026年10月30日
- 改进9 月开始的动画复审已经完成:175 节课全部核对了计算结果、讲解文字、画布状态、代码高亮和 Quiz 答案,发现的错误均已修正。
- 改进又有 20 节带输入面板的课程支持“保存”和“已保存的输入”;过期或被手动改过的分享链接会回退到默认输入,不再载入无效的值。
- 改进整数输入会直接拒绝 1.5、1e2 这类值,不再悄悄当作 1 运行;输入错误提示跟随界面语言,屏幕阅读器也能读出。
- 改进调整窗口大小不再重置播放位置和速度,也不会退出 Quiz;揭晓答案后仍可点“回看”,把卡片从画布上移开。
2026年10月8日
- 功能控件和卡片默认采用手绘风格,新增设置页,可调整界面样式、语言、画布背景和日志面板显示。
- 改进课程、学习路线和个人库统一使用导航栏,桌面课程将画布、播放控制和代码、输入、日志卡片排在同一张纸上。
- 改进分享链接、嵌入、PNG 导出和视频导出集中到同一个分享菜单。
- 改进课程侧边栏记住展开状态和分类折叠状态,目录、侧边栏和学习路线只显示已完成的课程。
2026年10月7日
- 改进TCP 握手和 Big-O 的状态、颜色变化随步骤平滑过渡,先前状态逐渐退后,让当前状态更清楚。
- 改进修复网格与点阵纸边缘被截断、生产环境中手绘卡片边框消失,以及播放滑块缺少无障碍名称的问题。
- 改进修复中文、日文 Markdown 排版,并校正课程讲解、分类介绍和卡片描述。
2026年10月5日
- 改进Quiz 现在会等当前步骤的动画完成后再暂停,抽题不再受输入随机化影响,步骤日志保留描述相同的连续步骤,切换课程时侧边栏自动显示当前课程。
2026年10月4日
- 改进反馈入口迁移到 GitHub Issues,可以提交问题、提出建议并跟进处理进展。
2026年9月24日
- 改进启动课程动画的持续复审与优化,分批改进排序、字符串、回溯和搜索课程,并逐步推进其他课程。
2026年9月22日
- 新课单调栈 — 用值递减的索引栈解「下一个更大元素」;每个索引只入栈一次、最多出栈一次,所以嵌套的 `while` 仍是 O(n),相等值则继续等待严格更大的值。
2026年9月21日
- 新课从消息到分布式共识 — 跟着一条命令走过客户端投递、Raft 复制、提交和应用,再丢掉响应,看清一次成功写入为什么仍会以客户端超时收场。
- 新课从 SQL 查询到存储读取 — 把查询展开成执行计划、页请求、缓冲池检查和结果行;同一次查找首次需要 3 次冷读,页面进入缓存后再查不增加读取。
2026年9月20日
- 新课自编码器 — 分别用 2 维和 8 维潜在编码重建留出的手写数字,再把棋盘格交给只见过数字的解码器,证明编码更宽也无法保证恢复陌生模式。
2026年9月17日
- 改进视频导出调整为终身版权益;分享链接、嵌入和带水印 PNG 导出仍然免费。
- 改进开始录制前显示操作说明,录制时提供可取消的提示,移除播放器左下角的录制文案。
2026年9月12日
- 新课权限 — 在工具执行前处理 allow、ask 和 deny,deny 的优先级最高,ask 路径只有收到人的肯定答复才能到达执行。
2026年9月9日
- 新课词嵌入 — 在固定向量空间里移动单词,看相似语境如何形成相近方向、重复关系如何显为偏移,同时不把几何当成没有语料偏差的中立结果。
2026年9月8日
- 新课批归一化 — 用训练批次统计量标准化每个隐藏特征通道,再应用学到的 `γ` 和 `β`;固定的 6 层实验把第 50 轮激活峰值从 `64.35` 压到 `9.15`。
- 新课从手写数字到预测 — 把 28×28 图像变成 10 个得分、概率、一个预测数字和置信度门控的决策,而正确与否只能由之后的留出真值判定。
- 新课N-gram 语言模型 — 按固定长度的历史统计语料计数来预测下一 token,计数归零时用平滑得到合法的概率分布,但不把它当成新增的语境证据。
2026年9月6日
- 新课优化器:SGD、Momentum、Adam — 让 3 种更新规则在同样 20 步预算下竞赛:固定参考设置中,SGD 赢圆形盆地,Momentum 赢狭长山谷,Adam 赢高噪声场景。
2026年9月4日
- 新课B+ 树 — 点查时借内部页的引导键走到有序叶子页,范围查询则沿相链的叶子向前扫描,无需返回根。
- 新课窗口函数 — 在相关行上计算累计值和排名,同时保留每一条源行;这与把每组折叠成一行结果的 `GROUP BY` 不同。
- 新课多版本并发控制(MVCC) — 保留行的多个版本,让读者与写者重叠工作;读取时从新到旧扫描,返回第一个对当前快照可见的版本。
2026年9月3日
- 新课数据库索引 — 数一遍全表扫描、哈希索引、B+ 树和覆盖 B+ 树各自的冷逻辑页读取:同一次点查分别是 8、2、3、2 次,而选择率一低,非覆盖的树就以 12 输给扫描的 8。
- 新课梯度消失 — 在 sigmoid 和激活态 ReLU 两条路径上逐层相乘局部增益:深度 10、`w = 1` 时,输出端的单位梯度传到输入端只剩 `2.785e-7`,另一条仍是 `1`;换成 `w = 0.5`,连 ReLU 也跌到 `9.766e-4`。
- 新课GROUP BY 与聚合 — 每一行按它完整的分组键归入对应的组,再把每组压成一行聚合结果;同样 7 行随分组键变长形成 `1 → 3 → 6` 个组,而金额为 `NULL` 的行只让 `COUNT(*)` 加一,不进 `COUNT(amount)`。
2026年9月2日
- 新课SQL 连接 — 每一对匹配的行变成结果里的一行,同一批源数据在 INNER 下是 3 行、LEFT 是 5 行、FULL 是 6 行;3×3 预设把那种成倍放大的九行摊开给你看。
2026年8月30日
- 新课变基(Rebase) — 把只属于特性分支的提交按从旧到新重放到较新的 `main` 上,每个提交都拿到新 ID,而分支引用要等所有补丁都打成功才移动。
- 新课撤销修改 — 按每条命令究竟写了哪一层文件、哪个引用或哪个提交对象,来对比 `restore`、soft/mixed/hard `reset` 和 `revert`;hard reset 那个场景说明了 `ORIG_HEAD` 为什么救不回只存在于工作区的内容。
- 新课词法与语法分析 — 把 `12 + 3 * 4` 扫描成一条扁平的 token 带,再看递归下降的规则边界如何让 `*` 先在右侧的 term 里结算完,`+` 才能成为根。
- 改进Git 与版本控制整条学习路线现已全部免费,含 Tag 与版本发布、变基和撤销修改。
2026年8月25日
- 新课虚拟机 — 栈式虚拟机一次取一条字节码指令,所以 1 + 2 \* 3 是三次 push 再 MUL 再 ADD;把 ADD 提前发出去就会栈下溢。
- 新课AST → 代码生成 — 代码生成按后序遍历这棵树,先子节点后运算符,所以 1 + 2 _ 3 会先写 MUL 再写 ADD——因为 _ 在树里更深,而不是谁把文本重排了。
2026年8月20日
- 新课下一个 token 预测 — 问 GPT-2 "The capital of France is" 后面接什么," Paris" 只排第五,还在 " the" 后面,67.98% 的概率散在小到画不出来的 token 上;把笔交给它,连取十二次 argmax 就绕回了一个不折不扣的死循环。
- 新课RNN / LSTM — 同一个句子逐词喂给两种单元:RNN 答对了,可回传的学习信号只剩 8.9 × 10⁻⁶,而 LSTM 带门的记忆线还保有 0.427——直到你把每个遗忘门都按在 0.5,它一样消失。
- 新课Softmax 与交叉熵 — 一个真实手写的 3 被判成类别 2,置信度 99.86%;融合后的梯度化简成 `p − y`,穿过同一个饱和的 softmax,对真实 logit 的推力是 MSE 的 361 倍。
- 新课损失函数 — 均方误差和交叉熵从同一个"自信地答错"的 sigmoid 输出出发,但 MSE 多出来的 `p(1 − p)` 把梯度压小 25 倍,让那一轮在平台上爬。
2026年8月18日
- 新课TLS 握手 — 双方谁都没发过密钥,却导出了同一把;服务器再对本次连接的握手记录签名,证明自己确实持有证书上那把钥匙——中间人转发一张货真价实的证书,链、域名、有效期全过,栽在这一个签名上。
2026年8月17日
- 新课DNS 解析 — 根和顶级域服务器只会告诉你下一步该问谁,所以一次冷查询要八条消息,命中缓存只要两条;NXDOMAIN 预设照样把整条层级走完——只有该区自己的服务器才有资格说这个名字不存在。
2026年8月16日
- 新课线性回归 — 平方误差直接画成面积,于是那个一趟算完的闭式解看起来就是一条绕 (x̄, ȳ) 旋转的直线,正方形缩小 25 倍;接着把一个点拉到 y = −6,同一个公式就丢下另外八个点,只顾缩它那一个正方形。
2026年8月13日
- 新课跳跃游戏 (LeetCode #55) — "最多跳这么远"让可达集始终是一整块,于是一个数就扛起了整个搜索:默认输入跨得过那个 0,而漏斗预设把每段弧都堆到同一格上,卡死。
- 新课三数之和 (LeetCode #15) — 排一次序,定一个锚点,剩下两个数交给对撞的双指针:O(n³) 降到 O(n²),去重只需和邻居比一次,不用哈希集合。
2026年8月11日
- 新课Bellman-Ford — 每轮松弛全部边、共 V−1 轮,期间不锁定任何节点,所以第 2 轮会修掉第 1 轮留下的过期估计;最后再扫一遍,"还在变小"就坐实为一个红色的负环。
2026年8月10日
- 新课区间调度 — 按结束时间排序,逐个收下不冲突的区间;一条交换轨道把另一个最优方案改写成贪心解,一个名额都没少。
- 新课接雨水 (LeetCode #42) — 前缀最大值把两侧边界都摆出来,双指针则先结算较小的那一侧;专门有一拍来证明:还没扫到的柱子推翻不了这一列的结论。
2026年8月9日
- 新课LRU 缓存 (LeetCode #146) — 哈希表以期望 O(1) 找到节点,双向链表让每次命中都变成最近使用;把淘汰拆成两步,就能看出只摘链表节点、不删哈希表项会留下什么脏数据。
2026年8月7日
- 新课位运算技巧 — 独热掩码只改一位,`x & (x - 1)` 清掉最低的那个 1 用来数 1 的个数,而零值陷阱说明了二的幂判断为什么还得带上 `x > 0`。
2026年8月6日
- 新课N 皇后 — 三个约束键挡掉列冲突和对角线冲突,回溯时三个一起归还;一份搜索审计把 26 次候选检查和 4⁴ 种朴素行分配摆在一起。
2026年8月3日
- 新课拓扑排序 — Kahn 不断摘掉入度为零的源点,DFS 则在返回时倒着写出顺序;两组带环的对照说明了为什么"存在拓扑序"恰好等价于"图无环"。
2026年8月1日
- 新课位运算基础 — 布尔运算逐位就地决定输出的每一位,移位则让比特在固定的 8 位字里搬家;移满整个字宽,源比特一个不剩,只留 0。
2026年7月29日
- 新课最小生成树 — Prim 让一棵树长大,Kruskal 把若干连通块并起来;同一张带桥的图上,两种不同的选边顺序走到同一棵五条边、权重 19 的最小生成树。
2026年7月28日
- 新课AVL 树 — 在不改变键序的前提下,把最近一个失衡的祖先转回来;同样六次插入,和不旋转的 BST 一比:高度 2、查三次,对面是高度 4、查五次。
2026年7月27日
- 新课朴素贝叶斯 — 每个词独立投一张似然票,于是把相关的词重复一遍,等于同一份证据乘了两次——置信度涨了,信息一点没多。
- 新课K-Means 聚类 — 每个点归到最近的质心,每个质心挪到均值,重复到惯性不再下降;收敛是有保证的,但起始位置不同,落到的局部极小也不同。
2026年7月26日
- 新课红黑树 — 新节点插成红色,由叔节点的颜色决定是变色还是最多两次旋转;三角形那种情况少做第一次旋转,就会留下一条红红相连的边。
2026年7月23日
- 新课编辑距离 — 对每一对前缀选出代价最小的最后一步编辑,数出还原的 +1 操作序列,再回放一遍;位移陷阱把六处逐位不匹配还原成一次删除加一次插入。
2026年7月21日
- 新课最长公共子序列 — 填一张前缀表,再回溯出一段最优的有序公共部分;贪心开场把 a[0] 的 A 配给 b[3],烧掉 BDC,停在 ABA(3),而 DP 找回 BCBA(4)。
2026年7月16日
- 新课字典树 — 公共前缀共用一条路径,查询时每个字符走一条边;`startsWith("ca")` 和 `search("ca")` 的对照说明:没有结束标记,走得到的路径不等于存过的词。
2026年7月15日
- 新课KMP 字符串匹配 — 失配后复用已知最长的前后缀边界,对同一个文本字符再试一次;`advance i (bug)` 这个变体演示了一次过早的自增如何跳过真正的匹配。
- 新课Rabin-Karp — 指纹在每个定宽窗口上滚动,只有哈希相等时才去逐字符核对;碰撞场景证明哈希相等只是候选,不是匹配。
2026年7月14日
- 新课HTTP / HTTP/2 / HTTP/3 — HTTP/1.1 把四个文件排队发,HTTP/2 把它们叠在同一条 TCP 字节流上——一个丢包就把四个一起冻住,而 HTTP/3 把这次丢失关在它自己的 QUIC 流里。
- 新课逻辑回归 — sigmoid 把 `w·x + b` 变成概率,但同时放大 `w` 和 `b` 只会让置信度更陡;零分处的那条边界钉在原地不动。
2026年7月12日
- 新课变量与赋值 — 就地修改动的是共享对象,赋值动的只是某个名字的绑定;不可变整数上的 `+=` 证明:光看语法分不出发生了哪一种。
2026年7月11日
- 新课状态机 — 同一个 `push`,锁住时被拒、解锁时通过——因为行为属于 `(state, event)` 这一对,而不是事件本身。
2026年7月8日
- 新课OSI / TCP-IP 模型 — OSI 给七件事各起了名字,TCP/IP 把它们归成四层;一个 Ethernet + IP + TCP 的请求实际套三层壳,不是七层。路由器换掉链路层那层壳,从不打开里面的 HTTP 报文。
- 新课线程与同步 — `counter += 1` 拆成读、加、写三步,于是默认交错下六次自增只落到 4;加互斥锁能到 6,而两边反着加锁就死锁。
2026年7月3日
- 新课子智能体 — `Task` 在一份全新的 `messages[]` 上跑同一个智能体循环,于是四次嘈杂的检索只在主上下文里留下一张结果卡;也正是这堵墙,让子智能体错过了提示词没带上的那句澄清。
2026年7月2日
- 新课线性查找 — 从头到尾逐个比较,撞上第一个匹配就停,所以代价等于目标所在的位置,找不到则扫完全部 n 个;这是唯一不要求输入有序的查找。
2026年7月1日
- 新课树的遍历 — 前序、中序、后序是同一趟深度优先遍历,只有 `visit(node)` 放在哪里改变了输出顺序;退化成链的树让调用栈深度顶到 n。
2026年6月30日
- 新课滑动窗口 — 一个窗口右边界扩、左边界收,用 O(n) 走遍子数组;直到出现负数,贪心收缩就不成立了。
2026年6月29日
- 新课双指针 — 在有序数组两端各放一个下标往中间走,淘汰放不下的那一端;输入没排序时,它会悄悄跳过一对真实的答案。
- 功能排序、查找和数据结构课新增"场景"一栏——一键跳到值得一看的边界情况(一次真实的哈希碰撞、一棵退化成链的树、一次栈溢出)。
2026年6月27日
- 新课基数排序 — 一位一位把整数放进稳定的桶里,全程不比较任何两个值;宽键场景让 O(d·n) 这个代价不至于被说得太漂亮。
2026年6月25日
- 新课动态数组 — 连续存储换来 O(1) 下标访问,代价是插入和删除时的整体搬移。
- 改进"预测下一步"测验上线 两数之和 (LeetCode #1),覆盖暴力解和哈希表两种解法。
2026年6月23日
- 新课零钱兑换 — 贪心与 DP 画在同一条数轴上,看贪心那一抓把自己卡在哪里。
2026年6月20日
- 新课0/1 背包 — 一行行填出 DP 表,再回溯出到底装了哪些物品。
2026年6月19日
- 新课CPU 流水线 — 五条指令在 IF、ID、EX、MEM、WB 上重叠推进;不做前递时,两次写后读冲突把理想的 9 个周期拖到 13 个,每个丢掉的周期都以气泡的形式看得见。
- 新课浮点数 (IEEE 754) — binary16 把 0.1 存成最近的那一档,因为它的二进制小数无限循环;指数每进一档,相邻可表示值之间的间隔就翻一倍。
2026年6月16日
- 新课URL → 渲染页面 — 一门综合课,跟着一次页面加载穿过 DNS、TCP、TLS、HTTP、缓存直到渲染。
2026年6月15日
- 新课Dijkstra
- 功能MNIST 数字分类器 和 训练循环 新增播放 / 暂停 / 重置和视频录制。
- 改进录制式课程、可交互数据结构和实时神经网络之间,播放行为统一。
2026年6月14日
- 新课Transformer 块 — 残差流一路穿过注意力和 MLP 向上传递,被不断修正,但从不被替换。
- 功能分享与嵌入——复制一个链接,按你当时的输入重新打开这节课;或者把可交互的播放器嵌进自己的页面。
- 功能导出——从 ⋯ 菜单把当前帧存成 PNG,或者把整段讲解录成视频。
- 功能新增联系页——怎么嵌入课程、导出片段,或者把 VizLearn 用在课堂上。
- 改进冒泡排序 新增边界预设——最好、最坏、近乎有序、全相同,一键切换。
2026年6月13日
- 功能"预测下一步"测验——先在 冒泡排序 上免费试用;每次作答都重新摇一个数组,逼你在脑子里跑一遍算法,而不是回忆答案。
- 功能功能页重做——每项能力都配一幅手绘小图。
- 改进ReAct 循环和工具调用改用真实录制的模型 trace,不再是脚本。
- 改进冒泡排序的讲解重新剪过,镜头运动更连贯。
2026年6月12日
- 新课工具调用
- 新课ReAct 循环
- 新课RAG:检索增强生成
- 新课上下文与记忆
- 功能内容保护——屏蔽 AI 训练爬虫、声明 TDM 保留、chunk 文件名加哈希。
2026年6月10日
- 新课感知机
- 新课数步骤理解 Big-O
- 改进AI 课统一补齐现象标准——每课一组对照实验加一个失败案例。
2026年6月9日
- 功能提示浮层、键盘快捷键、分享链接,以及课程之间平滑的视图过渡。
2026年6月5日
- 新课广度优先搜索
- 功能新增 Radix luma 界面主题,以及画布背景切换。
2026年6月1日
- 功能免费即用的进度延续——书签、保存的输入和学习进度,登录后跨设备同步。
- 功能/library 提供分页式资料库,存放你保存的输入和进度。
- 改进移动端布局——播放器、面板和画布在手机上能干净地堆叠和缩放。
- 改进服务条款与隐私政策重新设计,加了章节导航。
2026年5月20日
- 新课前向传播 — 一个真实训练过的 MLP,逐层推进:加权求和 → ReLU。
- 新课MNIST 数字分类器 — 在浏览器里手写一个数字,看网络怎么判。
2026年5月17日
- 新课堆
- 功能"讲解"标签页——每节课在动画旁配一份文字讲解。
- 功能反馈——在任意课程里直接发送文字或截图。
2026年5月11日
- 新课两数之和 (LeetCode #1) — 同一个数组,暴力解和哈希表并排跑。
- 新课二叉搜索树
- 功能服务条款和隐私政策页面。
2026年5月8日
2026年5月4日
- 新课链表
- 改进数据结构课里的箭头和指针移动更顺滑。
2026年5月1日
- 功能第一版公开首页——主题展示、功能巡览和路线图预告。
2026年4月8日
- 功能代码 / 可视化 / 日志面板可调整大小。
2026年3月29日
- 功能代码面板同步——动画播放时当前行高亮,步骤日志同步填入。
2026年3月17日
- 新课选择排序
- 功能整个界面支持 English、中文和日本語。
- 功能Google 登录。
2026年3月14日
- 新课冒泡排序 — VizLearn 的第一节课。
2026年2月
- 功能VizLearn 开工——第一个提交。