首页 > 其他分享 >什么是布隆过滤器(Bloom Filter)?以及布隆过滤器的详细说明。

什么是布隆过滤器(Bloom Filter)?以及布隆过滤器的详细说明。

时间:2024-03-15 16:14:54浏览次数:20  
标签:误判 哈希 元素 布隆 Filter 数组 过滤器

什么是布隆过滤器(Bloom Filter)?以及布隆过滤器的详细说明。

布隆过滤器(Bloom Filter):

​ 是一种空间效率高、时间复杂度低的数据结构,用于判断一个元素是否属于一个集合。它通过使用多个哈希函数和位数组来实现快速的成员存在性检测,但有一定的误判率。

结构:

  • 位数组(Bit Array):布隆过滤器使用一个位数组,通常初始化为全0。位数组的长度取决于预期存放数据量和允许的误判率。
  • 多个哈希函数(Hash Functions):布隆过滤器需要选择多个不同的哈希函数,用于将输入的元素映射到位数组中的多个位置。

添加元素:

  • 将要添加的元素经过多个哈希函数的计算,得到多个哈希值。
  • 根据这些哈希值,在位数组中将对应的位置设为1。

查询元素:

  • 将待查询的元素经过多个哈希函数的计算,得到多个哈希值。
  • 检查这些哈希值对应的位数组位置是否都为1,若有任何一个位置为0,则可确定该元素不在集合中;若全部为1,则可能在集合中(存在一定的误判率)。

优点:

  • 空间效率高:相比于传统的数据结构,布隆过滤器占用的空间较小。
  • 查询速度快:由于布隆过滤器只涉及位运算,查询速度很快。

缺点:

  • 误判率:存在一定的误判率,即可能判断元素属于集合但实际不属于。
  • 无法删除元素:一旦元素被加入到布隆过滤器中,就无法从中删除。

应用场景:

  • 网络爬虫中的URL去重
  • 分布式系统中的缓存击穿/缓存雪崩问题的缓解
  • 数据库查询前的快速预判

标签:误判,哈希,元素,布隆,Filter,数组,过滤器
From: https://www.cnblogs.com/My-knowledge/p/18075632

相关文章

  • Gateway过滤器中调用OpenFeign时出现循环依赖问题
    为了保证JWT随机生成的密钥一致,我设计了一个token服务,专门获取JWT,和生成token。在网关使用client调用服务时,出现了bean循环依赖Thedependenciesofsomeofthebeansintheapplicationcontextformacycle:┌─────┐|gateWayGlobalFilterdefinedinfile[C:\Us......
  • 拦截器和过滤器(原理&区别)
    目录一、拦截器拦截器是什么拦截器的使用拦截器的实现导入依赖实现HandlerInterceptor接口注册拦截器拦截器的生命周期拦截器的执行顺序拦截器的生命周期多个拦截器的执行流程拦截器的实际使用拦截器实现日志记录实现接口幂等性校验拦截器的性能优化二、过滤器......
  • netfilter: iptable的使用
    netfilter相关网址官网:netfilter/iptablesprojecthomepageiptables基础知识详解_LarryHai6的博客-CSDN博客_iptables使用iptables进行端口转发-云+社区-腾讯云(tencent.com)原理图iptables1.原理叙述iptables具有Filter,NAT,Mangle,Raw四种内建表:1.Filter......
  • GEE C12 Filter,Map,Reduce
    目录一、Filter二、Map三、Reduce一、Filter1.1 FilterDate 1.用法ImageCollection.filterDate('2010-01-01','2010-01-01')//varimgCol=ee.ImageCollection('LANDSAT/LT05/C02/T1_L2');//HowmanyTier1Landsat5imageshaveeverbeenc......
  • 异常过滤器
    ​一.ExceptionFilter作用将未处理的异常以特定的方式返回给前端二.ExceptionFilter使用1.实现IAsyncExceptionFilter接口(异步)2.实现IExceptionFilter接口(同步)2.1常用属性1.context.Exception代表异常信息对象2.设置context.ExceptionHandled=true;就不会在执行后......
  • 探索Flutter中的模糊毛玻璃滤镜效果:ImageFilter介绍使用和深入解析
    在Flutter中,模糊效果不仅可以增加应用的视觉吸引力,还可以用于多种场景,如背景模糊、图像处理等。通过BackdropFilter和ImageFilter.blur,Flutter使得添加和调整模糊效果变得异常简单。本文将深入探讨如何在Flutter中实现动态模糊效果,并通过TileMode参数调整模糊效果的边缘行为......
  • installEventFilter、eventFilter函数理解
    installEventFilter函数如下:voidQObject::installEventFilter(QObject*filterObj)Qt助手的解释如下:在对象上安装一个事件过滤器filterObj。如下:monitoredObj->installEventFilter(filterObj);其中monitoredObj、filterObj都是QObject的子类。上面代码意思是:在monitoredObj......
  • 海量用户注册整合布隆过滤器实现用户名唯一功能
    布隆过滤器介绍布隆过滤器可以理解为一个固定大小的数组,数组的大小初始化时自定义,每个元素都占用1bit,每个元素都是0或者1,所以可以对海量的数据进行判断,原理图如图所示根据原理图可以得出信息,布隆过滤器说某个元素存在,小概率会误判。布隆过滤器说某个元素不在,那么这个元素一定......
  • 过滤器和拦截器的辨析
    过滤器和拦截器的辨析介绍过滤器和拦截器都是为了在请求到达目标处理器(Servlet或Controller)之前或者之后插入自定义的处理逻辑过滤器:遵循AOP(面向切面编程)思想实现,基于Servlet规范提供的Filter接口,它是位于客户端请求与服务器响应之间的一个组件,依赖于Servlet容器。当......
  • spring-security源码-FilterChainProxy
    FilterChainProxy内部存储了我们各个HttpSecurty生成的SecurityFilterChain。FilterChainProxy实现了ServletFilter接口。只真正的入口org.springframework.security.web.FilterChainProxy.doFilterpublicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,F......