最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 布隆过滤器

    正文概述 掘金(我妻礼弥)   2021-02-24   563

    原文

    简介

    布隆过滤器(Bloom Filter) 是 1970 由布隆提出,它是一种多哈希函数映射的快速查找算法 (存储结构),可以实现用很小的空间和运算代价,来实现海量数据的存在与否的记录(黑白名单判断)。特点是高效的插入和查询,可以判断出一定不存在和可能存在

    布隆过滤器

    布隆过滤器是一个 bit 向量或者 bit 数组
    布隆过滤器

    "添加"元素

    如果要将一个"添加"射到布隆过滤器中,需要使用多个 hash 函数生成多个 hash 值,每个 hash 值对应位数组上的一个点,然后将位数组对应的位置标记为 1。

    如下图,字符串 'hello' 就通过 3 种 hash 函数生成了哈希值 1,3,9

    布隆过滤器

    字符串‘word’就生成了 1,5,7

    布隆过滤器

    注:由于 hello 和 word 都返回了 bit 位 1,所以前面的 1 会被覆盖

    查询元素

    查询元素是否存在集合中的时候,同样的方法将元素通过哈希映射到位数组上的 3 个点。

    如果 3 个点的其中有一个点不为 1,则可以判断该元素一定不存在集合中。

    如果 3 个点都为 1,则该元素可能存在集合中。注意:此处不能判断该元素是否一定存在,可能存在一定的误判率。 因为新增的元素越来越多,被置为 1 的 bit 位也会越来越多,这样即使某个元素没有被存储过,但是万一哈希函数算出来的三个 bit 位都被其他元素置为 1 了,那么 布隆过滤器(Bloom Filter) 还是会判断这个元素存在。

    比如:单词 flink 三个 hash 值为 1,3,7, 就能说明 flink 一定存在于集合中吗?

    优缺点

    优点
    相比于传统的 List、Set、Map 等数据结构,布隆过滤器(Bloom Filter) 更高效、占用空间更少,能确切判断出元素不在集合中

    缺点

    1. 只能判断出元素有概率在集合中,因此使用 布隆过滤器(Bloom Filter) 判断元素出元素在集合中的结果是不可靠的
    2. 已经加入集合中的元素被删除时, 布隆过滤器(Bloom Filter) 无法"刷新"该元素对应的hash位置的值。因为这些位置有概率也是其他元素的hash位置。因此使用 布隆过滤器(Bloom Filter) 的集合无法删除元素。

    如何减少误差

    • 加大布隆过滤器的长度,否则很容易就所有的 bit 位都为 1 了

    • 哈希函数的个数要考虑,个数越多则布隆过滤器 bit 位置位 1 的速度越快,且布隆过滤器的效率越低;但是如果太少的话,那我们的误差会变高。


    起源地下载网 » 布隆过滤器

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元