布隆过滤器
2016-07-06 14:03
281 查看
可运用于 网页黑名单系统 垃圾邮件过滤系统 爬虫的网址判重系统等数据量很大的问题
--好的哈希函数能将很多输入均匀地分布在bit array上,将所有值%m,可以分布到0~m-1上。处理过程如上图所示,一个对象经过k个哈希函数处理后,得到k个值,根据这k个值将对应的bit做标记。处理完所有输入之后,一个布隆过滤生成结束。
--检查阶段,对于一个输入a,如果,经过哈希处理后有一个bit没有被标记,那么该输入就不存在测试集合中,反之,则存在。
但是,如果测试集合很多,那么bit array 可能大部分被标记,即使某一个输入并不是测试集合中的记录,但是很有可能他所对应的bit都是标记过的。要排除这种情况,就要合理地设计bit array 的大小m,哈希函数的个数k,针对给定的失误率p,就有以下公式:
m = -(n*lnp)/(ln2)2
k = ln2 * (m/n) 其中n为测试集合中记录条数
--好的哈希函数能将很多输入均匀地分布在bit array上,将所有值%m,可以分布到0~m-1上。处理过程如上图所示,一个对象经过k个哈希函数处理后,得到k个值,根据这k个值将对应的bit做标记。处理完所有输入之后,一个布隆过滤生成结束。
--检查阶段,对于一个输入a,如果,经过哈希处理后有一个bit没有被标记,那么该输入就不存在测试集合中,反之,则存在。
但是,如果测试集合很多,那么bit array 可能大部分被标记,即使某一个输入并不是测试集合中的记录,但是很有可能他所对应的bit都是标记过的。要排除这种情况,就要合理地设计bit array 的大小m,哈希函数的个数k,针对给定的失误率p,就有以下公式:
m = -(n*lnp)/(ln2)2
k = ln2 * (m/n) 其中n为测试集合中记录条数
相关文章推荐
- 使用jdbc的基本步骤
- 处理大并发之二 对epoll的理解,epoll客户端服务端代码
- @OneToMany或@ManyToOne的用法-annotation关系映射篇(上)
- java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结
- ListView Item多种布局优化
- Linux后台进程管理
- 怎样用ZBrush雕刻人体造型
- 腾讯管家与本地运行的jquery冲突,影响页面请求速度
- 三星将提升资本支出 维持手机业务复兴势头
- docker小用有感
- Java类型限界
- python for 循环
- 百度搜索Spider3.0对于网站优化有什么利好
- 解决QCombobox调用clear()崩溃的问题
- OZ工具安装使用
- linux中字符串转换函数 simple_strtoul
- 搞IT技术的人是处在夕阳还是朝阳中?
- oracle JOB 查询 添加 修改 删除 运行
- ToLua学习笔记(五) Example 05 LuaCoroutine
- Android刮刮卡特效