6空间限制-布隆过滤器
题目是一个占用64B的URL,查找其是否存在在100亿个黑名单网页中。允许万分之一的判断失误率,空间限制为30GB。
布隆过滤器常用的场景是黑名单系统、垃圾邮件过滤系统、爬虫的网址判重系统,并且对失误率有一定的容忍度,但是对空间的要求比较严格。
哈希函数(散列函数):输入域是非常大的范围,但是输出域是固定的范围,假设为S,并具有以下的性质:
- 典型的哈希函数都有无限的输入值域
- 当给哈希函数传入相同的输入值时,返回值一样
- 当给哈希函数传入不同的输入值时,返回值有可能不一样
- 最重要的性质是很多不同的输入值所得到的返回值会均匀的分布在S上
其中第4点是判断一个哈希函数优劣的关键(aaa1,aaa2,aaa3比较相似的,但是计算后分布比较大)。一些优秀的哈希函数的实现:MD5、SHA1。
布隆过滤器: 长度为m的bit类型数组,bit的状态是0或者1,有k个哈希函数,这些函数的输出域都等于或者大于m,URL经过k个哈希函数进行计算,取余后的结果在数组上将其涂黑,最后得到一个部分被涂黑的bitmap数组,检查的时候就是对这个URL进行k个哈希函数的计算,每一个值都在这个数组上进行比较,都为黑,那就是大概率是黑名单的URL,但是有及小的误差率,可以用改善哈希函数或者添加到白名单的方式进行避免。
根据样本个数n,失误率p,样本大小64B
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构