golang 实现bloom filter

今天下午不知怎么了,忽然脑子里出现了bloom filter这个东西。作爬虫这么久了,还没找到过应用场景,就想着本身实现一个玩玩。原理很简单. 先定义一个n长的数组, 每位都为0, 添加记录时进行k次hash, 再将hash出的int % n做为index, 将对应index位设置成1. 每次判断时都去作一样的操做,判断是否每一位都是1,只要有一位不是1,则这条记录确定不存在. 但若是全是1也不必定是存在的。git

bloom filter原理描述网上太多,直接上连接 https://blog.csdn.net/hguisu/article/details/7866173github

根据原理实现了简单的支持redis, 内存, 文件三种工做模式的bloom filter.redis

https://github.com/lujinda/simplebloom数组

相关文章
相关标签/搜索