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

    参考文章

    布隆过滤器redis缓存

    https://www.cnblogs.com/zhanggguoqi/p/10571225.html

    布隆过滤器(bloom filter)介绍以及php和redis实现布隆过滤器实现方法

    http://imhuchao.com/1271.html

    借助Redis Bitmap实现简单的布隆过滤器

    https://www.jianshu.com/p/c2defe549b40

    bloom filter 布隆过滤器介绍

    作用:判断一个元素是否在集合中。

    异点:和java中的collection中的contain有很大的不同,

       java中一般都是会,先把元素存储起来,但是布隆过滤器不用存储元素

    原理:每个元素,通过k中不同的hash算法,计算出k个不同的index,把这个index存储位置都设置为1,

      (二进制序列的index)

       如果一个一个元素计算出所有index上都为1,则存在;一遇到index为0的,元素就不存在。

    感觉:有点好玩,有点不可思议,有点不相信。

    特点:判断不存在的,肯定不存在;判断存在的,可能是误判。

      (为什么会误判呢?参考文章中说,二进制序列中1越来越多的时候,就会把不存在的元素,判断成存在)

       (那么,我觉得是不是可以,定时重新更新序列呢!从而减少误判情况)

    <借助Redis Bitmap实现简单的布隆过滤器>

    Guava中BloomFilterStrategies实现了布隆过滤器

    上面那篇redis实现布隆过滤器的思路:

    1. 创建一个布隆过滤器,重要参数,hash函数个数,redis中bitmap位图长度
    2. 最重要的实现getBitIndices(element),就是根据传入的元素,返回hash后的,二进制序列为1的位置的数组
    3. 然后就是应用阶段。保存元素位图信息,和,判断元素是否存在
      1. 保存元素信息:getBitIndices返回的index集合,都设置为true
      2. 判断元素存在:getBitIndices返回的index集合,判断是否存在false,有false则不存在;否则,存在。
  • 相关阅读:
    CF263E Rhombus
    AtCoder Grand Contest 034
    Docker C/S 架构逻辑图
    使用filledeat modules配置
    filebeat分别收集多个类型日志
    ELK部署收集日志
    ES界面
    Django下的post请求访问出现403错误
    Django配置(urls.py)
    Day-1 python
  • 原文地址:https://www.cnblogs.com/windy13/p/12638177.html
Copyright © 2011-2022 走看看