zoukankan      html  css  js  c++  java
  • 布隆过滤器

    布隆过滤器

    一个数据通过布隆过滤器查重,如果返回不存在,则该数据一定不存在,如果返回存在,则数据可能存在

    转载: https://www.toutiao.com/i6744864151429972488/

    1.原理

    布隆过滤器底层是一个位数组,1代表有,0代表无

    hash算法,是把一个数从较大范围的值,映射到较小范围值。

    概念:布隆过滤器就是把一个数据通过多个hash函数映射到位数组中,一个hash函数映射一个位数组下标,只有所有hash函数映射对照在位数组中存在时,才能说这个数据可能存在于集合中。

    2.注意

    布隆过滤器不能删除,因为一旦删除(即将相应的位置为0),就很大可能会影响其他元素。

    布隆过滤器适合于一些需要去重,但不一定要完全精确的场景。比如:

    • 判断一个用户访问了一篇文章
    • 判断一个ip访问了本网站
    • 判断一个key是否被访问过
    • 处理redis的缓存击穿问题

    布隆过滤器不适合一些要求零误差的场景,比如:

    • 判断一个用户是否收藏了一篇文章
    • 判断一个用户是否订购了一个课程

    3.使用技巧

    空间越大,hash函数越多,结果就越精确,但空间效率和查询效率就会越低。

    空间大小和集合大小不变的情况下,增加hash函数可以显著减小误差。但一旦集合大小达到空间大小的25%左右后,增加hash函数带来的提神效果并不明显。这个时候应该增加空间大小

    Don't just say it. Show me your code.
  • 相关阅读:
    移动运营四:如何优化页面布局
    移动运营三:如何进行场景洞察
    移动运营二:如何更加了解你的用户
    移动运营一:如何进行运营效果分析
    操作系统的系统调用
    从图灵机到操作系统的启动
    伸展树(splay tree)
    AVL树
    二叉搜索树
    表达式树
  • 原文地址:https://www.cnblogs.com/bigbeardhk/p/13638241.html
Copyright © 2011-2022 走看看