前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BloomFilter布隆过滤器

BloomFilter布隆过滤器

作者头像
名字是乱打的
发布2022-05-13 09:45:10
2370
发布2022-05-13 09:45:10
举报
文章被收录于专栏:软件工程

原理:

位数组与Hash函数的联合使用。是一个包含m位的位数组,每位初始化为0,有k个不同的Hash函数,可将集合元素映射到位数组的某一位。插入元素需根据k个hash函数得到k个位,置为1。查询时判断这k个位(有0则该元素肯定不在集合中,都为1则该元素有可能在集合中)

BloomFilter的准确性

尽管BloomFilter已经尽可能的减小hash碰撞的概率了,但是,并不能彻底消除,因此正如上面提到的: 如果对应的bit位值都为1,那么也不能肯定这个url一定存在 也就是说,BloomFilter其实是存在一定的误判的,这个误判的概率显然和数组的大小以及hash函数的个数以及每个hash函数本身的好坏有关

如何让BloomFilter过滤更准确

  • 多个hash,增大随机性,减少hash碰撞的概率
  • 扩大数组范围,使hash值均匀分布,进一步减少hash碰撞的概率。

BloomFilter的应用

  • 黑名单 比如邮件黑名单过滤器,判断邮件地址是否在黑名单中
  • 排序(仅限于BitSet) 仔细想想,其实BitSet在set(int value)的时候,“顺便”把value也给排序了。
  • 网络爬虫 判断某个URL是否已经被爬取过 K-V系统快速判断某个key是否存在
  • 典型的例子有Hbase,Hbase的每个Region中都包含一个BloomFilter,用于在查询时快速判断某个key在该region中是否存在,如果不存在,直接返回,节省掉后续的查询。

布隆过滤器的常用公式

为什么上面公式会有个计算真是失误率呢?

因为我们在计算开的bit位数组空间大小和哈希函数个数时候m和k都会向上取整,所以真实失误率数值就会变化

参考https://blog.csdn.net/wangpeng322/article/details/100883323

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理:
  • BloomFilter的准确性
    • 如何让BloomFilter过滤更准确
    • BloomFilter的应用
    • 布隆过滤器的常用公式
    相关产品与服务
    TDSQL MySQL 版
    TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档