判断某个元素是否在一个集合中

    解决的是什么问题
    有100亿的url黑名单,每个链接是64字节

    优点:空间效率和查询效率的优势远远超过一般的算法
    缺点是有一定的失误率和删除困难

    判断不在的是是100%不在,判断在的话有可能会不在

    使用hashset的话至少需要有640G的空间,单台难以负载,还需要分布式

    有失误率
    宁可错杀3000,绝不放过一个
    长期期望

    image.png
    image.png

    1. int[] arr = new int[1000];
    2. 描黑
    3. int index = 30000;
    4. int intIndex = index/32;
    5. int bitIndex = index%32;
    6. arr[intIndex] = (arr[intIndex] | (1 << bitIndex))

    ```

    image.png

    https://hur.st/bloomfilter
    https://zhuanlan.zhihu.com/p/43263751
    https://juejin.cn/post/6844903982209449991

    数据如何填充