Luke a Pro

Luke Sun

Developer & Marketer

🇺🇦
EN||

哈希与概率结构:概览

| , 1 minutes reading.

哈希与概率结构:指纹的艺术

记忆的悖论

在一个理想的世界里,我们会记住见过的每一个人的每一个细节。在数字世界里,这意味着将每一个用户 ID、每一个 URL 和每一条日志都存储在一个完美的、可搜索的列表中。

但当数据规模达到数十亿时,“完美记忆”就成了一种负担。它消耗太多的内存,搜索起来也太慢。

哈希 (Hashing) 就是解决方案。它是将海量信息浓缩为固定大小的“指纹”的行为。它让我们能从 O(N)O(N) 的搜索进化到 O(1)O(1)——即接近光速的查找。

妥协的策略

在本章中,我们超越了简单的排序与搜索,进入了权衡 (Trade-offs) 的世界:

概念灵魂 / 隐喻代表算法最佳应用场景
指纹化身份窃取者
将任何数据变为唯一的、固定长度的字符串。
MD5 / SHA / Murmur完整性与身份
校验文件是否被修改。
映射无限储物柜
一个能让你瞬间找到任何东西的存储系统。
HashMap速度
常数时间内的查找。
否定毒舌门卫
他可能会放过陌生人,但他绝不会对朋友说“不”。
布隆过滤器 (Bloom Filter)效率
在不存储内容的情况下判断是否存在。
估算统计先知
以 99% 的准确率猜出唯一项的数量。
HyperLogLog大数据基数统计
用 1.5KB 统计数十亿用户。
平衡和平之环
将数据分布在服务器上,新增一台机器不会引发崩溃。
一致性哈希分布式系统
集群中的负载均衡。

哈希的三大法则

  1. 确定性: 相同的输入必须永远产生相同的指纹。
  2. 效率: 计算必须快。一个需要一小时才能生成的指纹是毫无意义的。
  3. 均匀性: 指纹应该均匀散布。如果所有项都得到同一个“ID”(碰撞),系统就会崩溃。

小结

在本章中,我们将看到计算机科学如何处理“不可能的规模”。我们将明白:有时候,为了拯救系统,你必须愿意牺牲一点点准确性。你将学会热爱“指纹”,并尊重“碰撞”。

让我们从一切的基石开始:哈希函数