需求变了,选型也要变
同一个 choose,这次问的是「有序且增删频繁」。
阅读更多 →
写一个选型函数
补全 choose:按需求返回该用哪种结构。 四条对应关系:区间和还会改 → 树状数组;海量去重可误判 → 布隆过滤器;磁盘上少读盘 → B+树;有序且增删频繁 → 平衡树。 这次问的是「区间和还会改
阅读更多 →
磁盘上的索引选什么
同一张对照表。运行下面这段程序: PICK = {"区间和还会改": "树状数组", "海量去重可误判": "布隆
阅读更多 →
按需求挑一个
运行下面这段程序: PICK = {"区间和还会改": "树状数组", "海量去重可误判": "布隆过滤器&quo
阅读更多 →
要挡住海量重复请求
爬虫要判断"这个网址抓过没有",几十亿条,允许极小误判,选【0】。
阅读更多 →
要反复查区间和,还会改值
一个报表系统要反复查"某段时间的总额",数据还会随时更新,选【0】。
阅读更多 →
⚠️ 亲眼看见一次误判
同一个 check。这次查 13——它从来没被加过。 但 13 的两个哈希位(5 和 7)正好被 15 置上了,于是过滤器会说它"可能在"。这就是误判。
阅读更多 →
写 check:两位都是 1 才算"可能在"
补全 check:两个哈希位都是 1 才返回 可能在,否则返回 肯定不在。 查 15(它确实加过),输出结果。
阅读更多 →
写 add:把两位都置上
补全 add:把 k 的两个哈希位都置成 1。 加完 17、24、15 之后,输出一共有几位被置上了。
阅读更多 →
查一个从没加过的
同一个过滤器。运行下面这段程序: def h1(k): return k % 8 def h2(k): return (k * 3) % 8 def add(bits, k):
阅读更多 →