直接回答
布隆过滤器是一个位数组加 k 个独立哈希函数的概率型结构:添加元素时把 k 个哈希位置置 1;查询时若 k 个位全为 1 则"可能存在",任一为 0 则"一定不存在"。它用极小空间换查询效率,局限是存在误报(假阳性)、且不支持删除。
展开解析
误判只出现在"存在"判断上:多个元素的哈希位恰好覆盖了查询元素的 k 个位置。误报率随元素增多上升,需按预期容量 n 和可接受误报率 p 预定位数组大小 m 与哈希个数 k,有标准公式(最优 k ≈ (m/n)·ln2)。不支持删除的原因是多个元素可能共享某些位,清位会误伤其他元素;变体计数布隆过滤器用计数器代替位,支持删除但空间翻倍。典型应用:缓存穿透防护(不存在的 key 直接拦截)、爬虫 URL 去重、LevelDB/RocksDB 减少磁盘读、推荐系统去重。易错点:把"可能存在"当成"一定存在"做业务决策;哈希函数不够独立导致误报率恶化(可用一个哈希加步长派生 k 个)。追问:误判率估算、与哈希表的空间对比、布谷鸟过滤器。