golang 实现bloom filter

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

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

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

https://github.com/lujinda/simplebloom

猜你喜欢

转载自my.oschina.net/tuxpy/blog/1673383