排序算法
先看排序专题,再决定从哪篇切入
把 TimSort、pdqsort、radix sort、external sort、parallel sort 串成一条工程化阅读路径。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
第一次访问时先按主题切入,比直接沿着时间线翻文章更快。
排序算法
把 TimSort、pdqsort、radix sort、external sort、parallel sort 串成一条工程化阅读路径。
密码学
先理解量子威胁,再顺着 FHE、迁移工程与 TLS 实践继续往下读。
io_uring
适合想快速理解 io_uring 为什么重要、什么场景值得上、怎么开始写代码的读者。
Libevent
如果你关心 Reactor、协议栈集成和生产级事件驱动代码,这条线更适合长期阅读。
把已经形成系列阅读闭环的主题集中在首页,减少在 400 多篇文章里盲找的成本。
按最近更新时间排序;如果你想系统性阅读一个主题,优先回到上面的专题入口。
信息检索类比 → Bahdanau 到 Q/K/V 的演化 → 为什么要分开 Q/K/V → softmax($QK^\top$/$\sqrt{d_k}$)V 公式逐项拆解 → 维度走查 → 三 token、d_k=2 的玩具示例手算 → additive vs multiplicative 取舍 → 自注意力时 Q/K/V 同源的特殊性。这是整个系列最重要的一篇。
从 cross-attention 到 self-attention 的退化路径 → 为什么 self-attention 是 O(1) 跳数 → 为什么它对位置完全无知(permutation-equivariant) → 「The cat sat on the mat. It was tired.」中 it→cat 的共指消解 → 为什么需要位置编码 → attention 不等于解释(向第 52 篇预告)。
单头注意力一次只能学一种关系,但语言里同时存在句法、指代、语义、位置等多重模式。Multi-Head Attention 把 d_model 切成 h 份并行做 attention,让模型在不增加参数量的前提下,同一步内同时形成多个独立的注意力分布。本文从直觉、数学、代码、可视化四个层面讲清楚为什么 Transformer 一定要多头。
自回归语言模型的核心约束是:预测 t 时刻只能用 t 之前的信息。Causal Mask 用一个上三角的 -∞ 矩阵让 softmax 之后未来位置的权重恒为零,使得模型在训练时能并行计算所有时间步、推理时严格自回归。本文从 teacher forcing 到 attention sink,把 causal mask 在训练、推理、长上下文中的所有面相讲清楚。
为什么 attention 是 O(n²),O(n²) 到底贵在哪里,5 类降复杂度方案的优劣,FlashAttention 不是 O(n) 这件事,长上下文是怎么把架构师逼疯的。
把 18 篇文章里讲过的所有零件——QKV、多头注意力、causal mask、位置编码、FFN、残差、归一化——拼成一张完整的 Transformer 图。跟随一个 token 走完从输入到输出的全部旅程,建立对架构的「身体记忆」。
从「self-attention 是排列等变的」这件几乎被忽视的事实出发,推导出位置编码不是装饰、不是工程小技巧,而是结构性必需。原论文为什么选正弦、那个奇怪的 10000 是怎么来的、PE 与 embedding 是相加还是拼接、可学习位置和 sinusoidal 的本质差别在哪、为什么训练 512 推理 2048 会让模型崩溃——这一篇把这些问题一次讲完,并把读者交到现代位置编码(RoPE、ALiBi)的门口。
把 Transformer block 里那个看起来最不起眼的两层 MLP 真正讲清楚——4 倍扩张比的来历、逐位置而不是跨位置的设计、Geva 等人 2021 年提出的「键值记忆」视角、SwiGLU/GLU/GeGLU 的现代变体、参数量分布、可解释性研究、量化时的瓶颈,以及它和 MoE 的关系。
把 2017 年 Transformer 原论文的训练配方完整复现一遍——数据集、硬件、优化器、学习率公式、warmup、label smoothing、dropout、batching by tokens、beam search 推理。重点解释那个看起来很神秘的学习率公式 lr = d^(-0.5) · min(step^(-0.5), step · warmup^(-1.5)),以及为什么 warmup_steps=4000 这个魔法常数不能去掉。
RNN 三难(长程依赖、梯度稳定、训练并行)的系统分析;attention 如何作为补丁逐步把 RNN 推向极限;Vaswani 2017 抛弃循环的范式革命
把 Bahdanau, Cho, Bengio 2014 那篇「Neural Machine Translation by Jointly Learning to Align and Translate」逐项拆开。固定 context vector 的瓶颈、双向 RNN 编码、additive attention 公式 vᵀtanh(W₁s + W₂h)、与 Luong 2015 multiplicative attention 的取舍,以及为什么这是 Q/K/V 的雏形。
从人类阅读时的眼动出发,把「注意力」拆成视觉生理、翻译对齐、加权平均三件事。讲清楚为什么权重必须满足非负与和为一、为什么 softmax 不是审美选择而是可微优先的工程结果,以及为什么我们要选连续概率选择而不是 argmax。
在 Transformer 出现之前,序列建模属于 RNN 的世界。本文从 Vanilla RNN 讲起,经过 BPTT、梯度消失爆炸、LSTM、GRU,到 Sutskever 2014 的 Seq2Seq 框架,完整讲述 RNN 时代的故事和它留下的工程经验。
每一次网络请求的背后,都隐藏着建立连接的成本。当应用服务器需要与数据库通信时,一次完整的连接建立过程可能消耗数十毫秒;在高并发场景下,频繁创建和销毁连接会迅速耗尽系统资源,成为整个架构中最容易被忽视的性能瓶颈。连接池(Connection Pool)技术通过预先创建并复用连接,将单次连接获取的时间从毫秒级压缩到微秒级,…
Active-Passive、Active-Active、N+1 冗余——不同模式的故障检测与切换机制有何差异?本文拆解高可用的度量体系、冗余模型、故障转移机制、脑裂问题与 Fencing 策略,结合 VIP 漂移与 DNS 切换的工程实现,讨论主备切换中的数据一致性,最后以某支付系统数据库高可用架构为例,给出模式选型的完整对比。