认识布隆过滤器-Java
Posted 做人,最重要的就是开心嘛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了认识布隆过滤器-Java相关的知识,希望对你有一定的参考价值。
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net
package live.every.day.ProgrammingDesign.CodingInterviewGuide.BigDataAndSpaceRestriction;
/**
* 认识布隆过滤器
*
* 【题目】
* 不安全网页的黑名单包含100亿个黑名单网页,每个网页的URL最多占用64B。现在想要实现一种网页过滤系统,可以根据网页的URL判
* 断该网页是否在黑名单上,请设计该系统。
*
* 【要求】
* 1.该系统允许有万分之一以下的判断失误率。
* 2.使用的额外空间不要超过30GB。
*
* 【难度】
* 中等
*
* 【解答】
* 如果把黑名单中所有的URL通过数据库或哈希表保存下来,就可以对每条URL进行查询,但是每个URL有64B,数量是100亿个,所以至
* 少需要640GB的空间,不满足要求2。
*
* 如果面试者遇到网负黑名单系统、垃圾邮件过滤系统、爬虫的网址判重系统等题目,又看到系统容忍一定程度的失误率,但是对空间要
* 求比较严格,那么很可能是面试官希望面试者具备布隆过滤器的知识。一个布隆过滤器精确地代表一个集合,并可以精确判断一个元素
* 是否在集合中。注意,只是精确代表和精确判断,到底有多精确呢?则完全在于你具体的设计,但想做到完全正确是不可能的。布隆过
* 滤器的优势就在于使用很少的空间就可以将准确率做到很高的程度,该结构由Burton Howard Bloom于1970年提出。
*
*
以上是关于认识布隆过滤器-Java的主要内容,如果未能解决你的问题,请参考以下文章