需求变了,选型也要变

需求变了,选型也要变

同一个 choose,这次问的是「有序且增删频繁」。

阅读更多 →
写一个选型函数

写一个选型函数

补全 choose:按需求返回该用哪种结构。 四条对应关系:区间和还会改 → 树状数组;海量去重可误判 → 布隆过滤器;磁盘上少读盘 → B+树;有序且增删频繁 → 平衡树。 这次问的是「区间和还会改

阅读更多 →
磁盘上的索引选什么

磁盘上的索引选什么

同一张对照表。运行下面这段程序: PICK = {"区间和还会改": "树状数组", "海量去重可误判": "布隆

阅读更多 →
按需求挑一个

按需求挑一个

运行下面这段程序: PICK = {"区间和还会改": "树状数组", "海量去重可误判": "布隆过滤器&quo

阅读更多 →
要挡住海量重复请求

要挡住海量重复请求

爬虫要判断"这个网址抓过没有",几十亿条,允许极小误判,选【0】。

阅读更多 →
要反复查区间和,还会改值

要反复查区间和,还会改值

一个报表系统要反复查"某段时间的总额",数据还会随时更新,选【0】。

阅读更多 →
⚠️ 亲眼看见一次误判

⚠️ 亲眼看见一次误判

同一个 check。这次查 13——它从来没被加过。 但 13 的两个哈希位(5 和 7)正好被 15 置上了,于是过滤器会说它"可能在"。这就是误判。

阅读更多 →
写 check:两位都是 1 才算

写 check:两位都是 1 才算"可能在"

补全 check:两个哈希位都是 1 才返回 可能在,否则返回 肯定不在。 查 15(它确实加过),输出结果。

阅读更多 →
写 add:把两位都置上

写 add:把两位都置上

补全 add:把 k 的两个哈希位都置成 1。 加完 17、24、15 之后,输出一共有几位被置上了。

阅读更多 →
查一个从没加过的

查一个从没加过的

同一个过滤器。运行下面这段程序: def h1(k): return k % 8 def h2(k): return (k * 3) % 8 def add(bits, k):

阅读更多 →