布隆过滤器

原理

        布隆过滤器主要由一个很长的二进制向量(即位数组)和一系列随机映射函数(即哈希函数)组成。当一个元素被加入布隆过滤器时,它会通过多个哈希函数生成多个哈希值,并将这些哈希值对应的位数组中的位置设置为1。当需要检查一个元素是否存在于布隆过滤器中时,同样通过多个哈希函数生成哈希值,并检查这些位置是否全部为1。如果全部为1,则元素可能存在;如果有任何一个位置不为1,则元素一定不存在。

优缺点

优点

  1. 空间效率高:布隆过滤器通过哈希函数将元素映射到位数组中,不存储元素本身,只存储哈希结果的位标记,因此节省了大量空间。
  2. 查询速度快:由于只需要对位数组进行简单的位运算,因此查询效率非常高。
  3. 适合大数据集:布隆过滤器特别适合于在大数据集中进行快速查找。

缺点

  1. 误判率:由于哈希冲突的存在,布隆过滤器存在误判的可能性,即可能将不存在的元素判断为存在。
  2. 删除困难:布隆过滤器不支持元素的删除操作,因为删除元素可能会导致误判率增加。
  3. 无法获取元素本身:布隆过滤器只能判断元素是否存在,不能获取元素本身的值。

布隆过滤器可以用于解决缓存穿透的问题,同样的因为哈希冲突的存在,会有误判的情况但是误判仅仅是例如不存在放行不会出现存在但是拦截的情况的

添加元素

        将要添加的元素分别通过k个哈希函数计算得到k个哈希值,这k个hash值对应位数组上的k个位置,然后将这k个位置设置为1。

        我们添加一个data1素根据三个hash算法函数计算出的值,需要说明一点三个值可能会存在相同的值。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值