布隆过滤器
布隆过滤器是名叫bloom的家伙在1970年发明的一个过滤器,核心思想是告诉你说不存在就一定不存在,说存在不一定存在,现在多用于把数据放入内存,减少网络和磁盘的io 底层是利用长度为n的为二进制位数组,上面有k个哈希算法,每次增加需要多个哈希算法判断多个数组位置,然后修改为1;查找也是一样,通过多个哈希算法查找数组位置是否为1.如果有一个为0,表示不存在 ==这里就涉及到一个问题,哈希算法必然存在哈希冲突。一个值的数组位置为0 ,但是被其他值的哈希算法标识为1 ,所以查找时候说存在就不一定存在。== 1换算一下存储100万个元素。就是100万/8/1024≈122千字节 ,还不到1Mb 添加数据通过多个布隆过滤器函数计算,找到相应的多个二进制数组位,修改为1 查找同添加一样, 通过多个布隆过滤器函数计算二进制位数组的位置是否为1,如果都是1,说明有可能存在如果都不为1,说明一定不存在 删除因为一个二进制位数据的元素位可能被很多元素共享,所以删除不能实现 12345678910111213141516171819202122...





