布隆过滤器(Bloom Filter)是一种空间效率高的概率数据结构,用于测试一个元素是否属于一个集合。它可以告诉你一个元素“可能在集合中”或“肯定不在集合中”。布隆过滤器的主要优点是空间效率高,但它的缺点是有一定的误判率。
demo 图示
工作原理布隆过滤器由一个位数组和多个哈希函数组成。位数组初始化为0,哈希函数将输入元素映射到位数组的不同位置。
search url
1. 插入元素当一个元素被插入到布隆过滤器中时,它会被多个哈希函数处理,每个哈希函数都会生成一个索引。然后将位数组中对应索引的位置设置为1。
2. 查询元素当查询一个元素是否在布隆过滤器中时,它会被同样的多个哈希函数处理,生成多个索引。如果位数组中所有对应索引的位置都为1,则元素“可能在集合中”;如果任何一个索引位置为0,则元素“肯定不在集合中”。
查找策略 redis
误判率布隆过滤器的误判率(False Positive Rate)是指一个不在集合中的元素被错误地判断为在集合中的概率。误判率取决于位数组的大小、哈希函数的数量和插入元素的数量。
优缺点优点:空间效率高:布隆过滤器使用位数组存储信息,空间占用远小于其他数据结构。查询时间快:查询操作只需要计算哈希函数并检查位数组,时间复杂度为O(k),其中k是哈希函数的数量。缺点:误判率:存在一定的误判率,即可能将不在集合中的元素判断为在集合中。不支持删除:布隆过滤器不支持删除操作,因为删除一个元素会影响其他元素的判断。source codenice code
result 如下:
代码测试结果
未完待续,喜欢的点个关注 谢谢。
创作不易 点个关注 谢谢