认识布隆过滤器-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年提出。
 *
 *

你可能感兴趣的:(#,Coding,Interview,Guide,认识布隆过滤器)