布隆过滤器(Bloom Filter)

布隆过滤器说某个元素存在,小概率会误判。布隆过滤器说某个元素不在,那么这个元素一定不在。

优点

占用空间更少并且效率更高(位数组中的每个元素都只占用 1 bit ,并且每个元素只能是 0 或者 1,100w 个元素约122kb )

缺点

1.其返回的结果不是精确的,理论情况下添加到集合中的元素越多,误报的可能性就越大。
2.并且存放在布隆过滤器的数据不容易删除。

增强

bitmap更换成数组,当数组某位置被映射一次时就+1,当删除时就-1,这样就避免了普通布隆过滤器删除数据后需要重新计算其余数据包Hash的问题,但是依旧没法避免误判。

布隆过滤器使用场景

  • 海量数据处理,判断一个数字是否存在于包含大量数字的数字集中(数字集很大,5 亿以上!)
  • 防止缓存穿透(判断请求的数据是否有效避免直接绕过缓存请求数据库)
  • 邮箱的垃圾邮件过滤
  • 黑名单功能
  • 去重(比如爬给定网址的时候对已经爬取过的 URL 去重)
  • 【Redis 中的布隆过滤器、Google 开源的 Guava 中自带的布隆过滤器】

布谷过滤器(Cuckoo Filter)

因为布隆顾虑器无法删除,导致后续精确性不断的降低,为了解决布隆过滤器不能删除元素的问题,布谷鸟过滤器横空出世。

布谷鸟过滤器和布谷鸟哈希结构一样,它也是一维数组,但是不同于布谷鸟哈希的是,布谷鸟哈希会存储整个元素,而布谷鸟过滤器中只会存储元素的指纹信息(几个bit,类似于布隆过滤器)。这里过滤器牺牲了数据的精确性换取了空间效率。正是因为存储的是元素的指纹信息,所以会存在误判率,这点和布隆过滤器如出一辙。

布隆过滤器、布谷过滤器相关推荐

  1. Cuckoo Filter(布谷过滤器)

    Cuckoo Filter(布谷过滤器) 布谷过滤器是布隆过滤器的改进. 布隆过滤器:适用于高效地测试成员集且空间利用率高,但存在小概率错误正向的输出(即对象不在某个集合里面但布隆过滤器却输出存在), ...

  2. 布隆过滤器 布谷鸟过滤器 Redis 安装布隆过滤器

    布隆过滤器 &布谷鸟过滤器 & Redis 安装布隆过滤器 1.布隆过滤器 1.1 简介 百度百科:布隆过滤器(Bloom Filter)是1970年由布隆提出的.它实际上是一个很长的 ...

  3. php中怎么过滤器_PHP 过滤器

    PHP 过滤器 PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入. 什么是 PHP 过滤器? PHP 过滤器用于验证和过滤来自非安全来源的数据. 测试.验证和过滤用户输入或自定义数据是 ...

  4. gateway中的局部过滤器_vue 过滤器

    vue 过滤器 1 关于 vue 过滤器 在vue1.0的时候其实是内置了过滤器的,但是考虑到好多过滤器并不一定会被开发所调用,所以把原本内置的过滤器就给去掉了,但是过滤器还是比较普遍的,所以我们从v ...

  5. filter过滤器_Java过滤器Filter讲解(Java基础)

    Java过滤器Filter讲解(Java基础)    双体的小伙伴们,Java过滤器Filter讲解(Java基础).初学JAVA的的学者们,今天满满的干货,跟随我一起学习吧.      超能就在这里 ...

  6. 全局过滤器/局部过滤器

    1.事件对象 谁触发这个事件,事件对象就指向谁 $event 2.事件修饰符 语法:@事件.按键修饰符="函数()" 按键修饰符 .up .down .ctrl .enter .s ...

  7. 布隆(Bloom Filter)过滤器——全面讲解,建议收藏

    本文已收录于专栏 ❤️<Redis之大厂必备技能包>❤️ 欢迎各位关注.三连博主的文章及专栏,全套Redis学习资料,大厂必备技能! 目录 1.什么是布隆过滤器 2.布隆过滤器的使用场景 ...

  8. 布隆(Bloom Filter)过滤器入门

    文章目录 1.什么是布隆过滤器 布隆过滤器的优缺点 布隆过滤器的优点 布隆过滤器的缺点 2.布隆过滤器的使用场景 3.布隆过滤器的原理 3.1 数据结构 3.2 空间计算 3.3 增加元素 3.4 查 ...

  9. php中怎么过滤器_PHP 过滤器(Filter)

    过滤多个输入 表单通常由多个输入字段组成.为了避免对 filter_var 或 filter_input 重复调用,我们可以使用 filter_var_array 或 the filter_input ...

最新文章

  1. ERP实施过程中的十个“拦路虎”
  2. struts2从action向jsp传参数
  3. 王道计算机考研 数据结构 (查找-上)
  4. 前端项目 开发者环境 和 正式环境 区别
  5. Sklearn的聚类算法以及聚类评价指标
  6. matlab plv,脑电脑网络分析代码使用流程介绍
  7. mysql 最大建议行数2000w,靠谱吗?
  8. log4j错误log4j:WARN No appenders could be found for logger
  9. 刷题42-m升水倒入n个杯子(动态规划)
  10. MSC-VO: 基于曼哈顿和结构约束的视觉里程计(CVPR 2021)
  11. ADS1115的使用教程(IIC)
  12. 虚拟电厂 3D 可视化,节能减排绿色发展
  13. JS 中的 False 与空值
  14. dojo框架的基本认识
  15. PaddleOCR学习(一)PaddleOCR安装与测试
  16. 微信小程序—相关配置
  17. aws beanstalk 使用eb cli配置和启动环境
  18. 一直想学的Synchronized,原来是这样的底层原理
  19. DACE-Kriging 模型用法
  20. java学习 8.7

热门文章

  1. 求CrazyBox路由器用的四川校园电信破解的固件
  2. R语言相关性分析及通过corrplot函数画出一些好看的相关关系图
  3. IOS获取手机设备运行内存的方法
  4. Nginx日志文件清理
  5. 我倒要看看你葫芦里装的是什么事药
  6. git保存用户名和密码,不用每次输入账号
  7. 弘辽科技:淘宝怎么看转化率提升销量?一般提升几天有效果?
  8. 极路由虚拟服务器怎么设置,教你怎么设置极路由
  9. android string.xml中使用占位符
  10. 鸿蒙系统是否能投屏,华为鸿蒙系统是否能真正迎来春天?