同一条SQL为何执行计划会突然变化:从参数嗅探到多计划缓存的技术突围

想象这样一个场景:你的生产环境中有一个存储过程,平时执行只需几百毫秒,突然某天开始,同样的调用却需要几分钟甚至更长时间。你检查了服务器资源——CPU、内存、磁盘IO都正常。你把存储过程中的SQL语句单独拎出来执行,发现跑得飞快。你尝试ALTER一下存储过程(什么代码都没改),问题竟然消失了。 ...

13 min · 6089 words

被吊销的HTTPS证书为何仍然可信?从软失败陷阱到CRLite的二十年技术突围

2014年4月,Heartbleed漏洞震惊全球。这个OpenSSL库中的缓冲区越界读取漏洞可能导致服务器私钥泄露,理论上需要立即撤销并重新签发所有受影响的证书。然而,马里兰大学的研究团队在三周后发现:超过73%的易受攻击证书未被重新签发,超过87%未被撤销。更令人担忧的是,撤销率在周末会显著下降——仿佛攻击者也会休息。 ...

10 min · 4865 words

DNS缓存投毒为何能在二十年间反复复活:从Kaminsky到SAD DNS的技术博弈

2011年11月,巴西数百万互联网用户在访问Google、Gmail、YouTube时被重定向到一个要求安装"Google Defence"软件的页面。这个所谓的安全软件实际上是一个银行木马。攻击者并未入侵Google的服务器——他们只是修改了几家ISP的DNS缓存记录。这个事件揭示了DNS缓存投毒攻击的恐怖之处:攻击者不需要攻破目标服务器,只需要欺骗DNS解析器。 ...

12 min · 5556 words

跳表:概率如何击败确定性复杂度

title: “跳表:概率如何击败确定性复杂度” date: “2026-03-07T04:35:05+08:00” description: “从William Pugh 1990年的原始论文出发,深入解析跳表的概率平衡原理、Redis与LevelDB的技术选型逻辑、与红黑树的权衡分析,以及为什么这种"用随机换简单"的设计哲学在高性能系统中持续发光。” draft: false categories: [“数据结构”, “算法”, “系统设计”] tags: [“跳表”, “Skip List”, “Redis”, “红黑树”, “概率数据结构”, “并发编程”, “LevelDB”] 1989年,马里兰大学的William Pugh向 Communications of the ACM 投递了一篇仅四页的论文。这篇论文提出了一个看似荒谬的问题:能不能用掷硬币的方式,替代红黑树中那些令人头疼的旋转操作? ...

10 min · 4737 words

一行正则如何拖垮全球服务:从Cloudflare事故看回溯灾难的技术本质

2019年7月2日,Cloudflare的全球网络在27分钟内完全瘫痪。原因不是黑客攻击,不是硬件故障,而是一行正则表达式:(?:(?:\"|'|\]|\}|\\|\d|(?:nan|infinity|true|false|null|undefined|symbol|math)|\|-|+)+[)];?((?:\s|-|~|!|{}||||+).(?:.=.*)))`。 ...

10 min · 4692 words

OAuth 2.0的隐形陷阱:为什么这个授权标准让无数开发者踩坑

2012年7月,OAuth 2.0规范的主要作者Eran Hammer宣布辞职。他在博客中写道:“OAuth 2.0是一个坏协议。“这不是一时冲动——作为OAuth 1.0的创建者和OAuth 2.0的首席编辑,他在三年间目睹了协议在商业利益博弈中逐渐失去安全初心。十多年后,OAuth已成为互联网授权的事实标准,每月处理着数以十亿计的登录请求。但Hammer的警告正在被验证:OAuth本身是安全的,但实现OAuth的人总是犯错。 ...

11 min · 5210 words

为什么Netflix放弃了Hystrix?从断路器模式到自适应并发限制的十五年演进

2018年11月,Netflix在GitHub上发布了一则简短公告:Hystrix不再处于活跃开发状态,进入维护模式。这个曾经在微服务容错领域占据统治地位的库,在经历了七年的生产验证后,被它的创造者亲手画上了句号。 ...

10 min · 4789 words