首页 > 其他分享 >布隆过滤器

布隆过滤器

时间:2023-06-28 17:23:06浏览次数:28  
标签:hash 误判 布隆 数组 过滤器 id

一、作用

布隆过滤器(BloomFilter)可以用于检索一个元素是否存在于一个集合中。

二、底层数据结构

bitmap(位图):相当于是一个以bit位为单位的数组,数组中每个单元只能存储二进制数0或1。

  • 存储数据:通过多个hash函数,根据hash计算数组对应的位置改为1。
  • 查询数据:使用相同hash函数获取到多个hash值,判断对应位置是否全都为1。

三、误判问题

布隆过滤器会存在误判问题。某个本不存在的KEY被认为是存在的。

如下图所示:id=1命中位置0,3,6,id=3命中位置8,11,14。id=3命中位置6,8,11,尽管id=3是不存在的,但是布隆过滤器会误认为id=3是存在的。

 

误判率:数组越小误判率越大,数组越大误判率越小,但是同时带来了更多的内存消耗。

 

四、优缺点

  1. 优点:(1)高效的插入和查询。因为不需要进行网络IO操作。(2)不存储具体的数据,所以占用空间小。
  2. 缺点:(1)查询可能存在误差,但是误差可控。(2)不支持删除操作。

五、使用方法

  1. 全量存储
  2. 请求拦截匹配
  3. 增量数据通过异步或同步方式存储到布隆过滤器中

六、布隆过滤器实现方案

1、Redisson:RBloomFilter

可以设置误判率,默认是0.03。

2、Guava:BloomFilter

可以设置误判率,默认是0.03。

 

标签:hash,误判,布隆,数组,过滤器,id
From: https://www.cnblogs.com/aleda-territory/p/17415868.html

相关文章

  • wireshark 过滤器 过滤规则
    wireshark过滤器wireshark有两种过滤器,一种是抓包过滤器,一种是显示过滤器,注意两种过滤器的过滤规则不一样。抓包过滤器定义得当,就可以抓少量的包而达到目的,抓的包太多,wireshark会卡顿。抓包过滤器抓包过滤器,顾名思义是用来抓包的,抓包过滤器抓取数据包,显示过滤器过滤前者抓取的数......
  • 布谷鸟过滤器核心代码
    privatebooleanwriteBits(longcurIndex,longtag,BooleanbitValue){CommandBatchServiceexecutorService=newCommandBatchService(commandExecutor);RBitSetAsyncbs=redisUtils.createBitSet(executorService);//判断curIndex出是否已有......
  • 通过网关添加过滤器【SpringCloud】
    spring:application:name:gateway#服务名称cloud:nacos:server-addr:localhost:8848#nacos地址gateway:routes:#网关路由配置-id:itemservice#路由id,自定义,只要唯一即可#uri:http://127.0.0.1:8081#路由......
  • 过滤器和拦截器 (持续更新)
     实现拦截器的前置postHandle和后置处理器 如果postHandler抛了异常。threadlocal的clear方法就无法实现,所以可以放在后指处理器里面使用从代码可以看出,拦截器接口有三个方法,分别的作用是:preHandle方法:叫做预处理方法,本方法在控制器方法(MyController的方法)之前执行,用户......
  • 路由过滤器GatewayFilter
    GatewayFilter:是网关中提供的一种过滤器,可以对进入网关的请求和微服务返回的响应做处理: 过滤器工厂GatewayFilterFactory,Spring提供了31种不同的路由过滤器工厂。例:给所有进入userservice的请求添加一个请求头:Truth=itcastisfreakingawesome!server:port:10010spr......
  • 过滤器执行顺序
    请求进入网关会碰到三类过滤器:当前路由的过滤器、DefaultFilter、GlobalFilter请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器           每一个过滤器都必须指定一个int类型的order值,order......
  • 聊聊布隆过滤器
    聊聊布隆过滤器前言布隆过滤器作为一个精巧且实用的数据结构,对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。希望通过这篇文章让更多人了解布隆过滤器的原理,并且会实际去使用它!什么是布隆过滤器?布隆过滤器(BloomFilter)是由BurtonHowardBloom于1970年提出,我......
  • SpringMVC中接收前端传递的参数,设置了编码过滤器filter,但在控制台中还是出现乱码问题
    SpringMVC中接收前端传递的参数,设置了编码过滤器filter,但在控制台中还是出现乱码问题。 在SpringMVC中遇到乱码问题不要慌,先配个SpringMVC的自带编码过滤器试试 <filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.spr......
  • 浅析布隆过滤器
    最后更新时间2021-10-05.布隆过滤器(BloomFilter)是1970年由布隆提出的。它可以检索一个元素是否存在于集合中。它的优点是空间效率高,查询时间极快,缺点是有一定的误判率,而且删除困难。1.背景编程中,经常会有判断一个元素是否存在一个集合中:网络爬虫程序:判断一个地址......
  • 全局过滤器------GlobalFilter
    前言SpringCloud的网关提供了31中过滤器,但这些过滤器作用都是固定的。如果我们希望拦截请求,做自己的业务逻辑就需要用到全局过滤器。全局过滤器作用全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。区别在于GatewayFilter通过配置定义,处理......