栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

布隆过滤器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

布隆过滤器

布隆过滤器是一种基于 Hash 的高效查找结构,能够快速回答“某个元素是否在一个集合内”的问题,布隆过滤器因为其高效性大量应用于安全和隐私保护领域,例如信息检索、注册等。 布隆过滤器采用了多个 Hash 函数来提高空间利用率,对于一个给定输入来说,通过多个Hash 函数计算出多个地址,并分别在位串的这些地址上标记为 1。当需要进行查找时,则进行同样的哈希计算,并查看对应元素,若是都为 1,则说明较大概率是存在该输入的。布隆过滤器相对于单个 Hash 算法的查找,大大提高了空间利用率,可以使用较少的空间来表示较大集合的存在关系。 具体地,假设存在 k 个哈希函数{h1,h2,…,hk}和一组元素{x1,x2,…,xk},通过这 k 个 Hash 函数将这一组元素映射到布隆过滤器中,并将对应位置设为 1,具体操作如图 2.4 所示。

元素的添加:如图 2.4 所示,将元素组中的元素 x1 经过 k 次哈希得到 k 个哈希值{h1(x1),h2(x1),…,hk(x1)},然后根据这些值找到对应位置,并将相应位置设为 1  。 元素的查询:经过上一步骤,x1 已经被添加到布隆过滤器中,接下来要查询 x1 是否已经存在于布隆过滤器中。首先,按照相同的方式计算该元素的 k 个哈希值,并将其表示为{h1(x1),h2(x1),…,hk(x1)},随后找到相应位置并检查该位置是否已经全部置 1。如果其中有 0 存在,则说明该元素不曾被添加到布隆过滤器中,否则,可以证明 x1 已被存储在布隆过滤器中。

图一

图二

上图一为增加,查询过程,比方说增加你好,或者查询你好,图二为删除查询过程,删除你好,缺导致删除hello。
缺点:没有更新  优点:二进制数据存储比较小,查询比较块,查询复杂度是O(K),K为哈希函数的个数
 

哈希函数越多,误差率越小,占用空间越大,误差率越小

解决redis 缓存穿透

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314972.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号