布隆过滤器:减少跟踪内容的内存占用
1. 引言
在计算机科学中,有一些不太常见的数据结构却能解决常见的问题,布隆过滤器就是其中最突出的例子之一。它在大多数行业中被广泛应用,但知名度却不如人们预期的那样高。本文将详细介绍布隆过滤器,包括其原理、应用场景以及与其他数据结构的对比。
2. 字典问题:跟踪事物
假设你在一家拥有自己电子邮件服务的大公司工作。该服务是遗留系统,仅提供基本功能。经过重组后,新的首席技术官(CTO)决定重塑电子邮件服务,要求开发一个带有联系人列表等功能的全新现代客户端。当你添加新收件人时,应用程序需要检查该收件人是否已在联系人列表中,如果不在则弹出提示框询问是否添加。
由于项目资源有限,无法每次检查联系人时都调用数据库,也没有预算搭建远程分布式缓存。因此,你决定在登录时异步获取联系人列表,将其保存到网页的会话存储空间中,每次查找现有联系人时检查本地副本。
这种在列表中查找特定条目的问题在计算机科学中被称为字典问题。
3. 实现字典的替代方案
我们的联系人网页应用需要完成以下操作:
- 从服务器下载联系人列表
- 创建本地副本以实现快速查找和存储
- 允许查找联系人
- 如果查找失败,提供添加新联系人的选项
- 当添加新联系人或修改现有联系人时与服务器同步
为了解决这些问题,我们需要一种专门的数据结构,它要支持快速插入,同时能通过值查找条目。
3.1 普通数组
使用普通数组时,没有高效的方法来获取元素的索引,也没有高效(如亚线性)的方法来判断元素是否在数组中。唯一的
超级会员免费看
订阅专栏 解锁全文
3391

被折叠的 条评论
为什么被折叠?



