学爬虫和大数据程序员建议必看算法,源码放送了~
文章目录
一、算法简介
本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构
,特点是高效地插入和查询
。根据查询结果可以用来告诉你 某样东西一定不存在或者可能存在
这句话是该算法的核心。
相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的,同时布隆过滤器还有一个缺陷就是
数据只能插入不能删除
。
如需删除可以使用改进的布隆过滤算法,不过不用担心,正常需求已经可以满足了哦。
二、数据如何存入布隆过滤器
布隆过滤器是由一个很长的bit数组和一系列哈希函数组成的
。
数组的每个元素都只占1bit空间,并且每个元素只能为0或1。
布隆过滤器还拥有k个哈希函数,当一个元素加入布隆过滤器时,会使用k个哈希函数对其进行k次计算,得到k个哈希值,并且根据得到的哈希值,在维数组中把对应下标的值置位1。
判断某个数是否在布隆过滤器中,就对该元素进行k次哈希计算,得到的值在位数组中判断每个