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

布隆过滤器

时间:2023-08-07 17:11:27浏览次数:33  
标签:hash 误判 布隆 该值 过滤器 bloomFilter

布隆过滤器

1. 作用

判断某一个值是否存在

2. 组成

很长的二进制数组和一系列hash函数

3. 使用

使用hash函数对该值进行hash运算,并将布隆过滤器中相应的位置设置为1

4. 判断某一个数据在布隆过滤器中是否存在

对该值使用布隆过滤器的一系列hash函数进行hash运算,然后判断对应的位置是否都为1。
如果某一个位置不为1,就说明该值在布隆过滤器中一定是不存在的。
如果进行hash运算后所有的位置都为1,不能说明该值在布隆过滤器中一定存在。存在误判的可能。
数组长度越短,误判率越高;数组越大误判率越低,但存在更多的内存消耗。

5. 布隆过滤器不支持数据删除,解决方法:重建新的布隆过滤器

6. 布隆过滤器的使用

  1. 在pom.xml文件中加入布隆过滤器的依赖
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.1-jre</version>
</dependency>
  1. 入门案例
/**
         * funnel:指定布隆过滤器中存储的数据的类型
         * expectedInsertions:指定布隆过滤器中存储的数据的个数
         * fpp:误判率
         */
        // 创建布隆过滤器
        BloomFilter<Long> bloomFilter = BloomFilter.create(Funnels.longFunnel(), 1000000, 0.000001);

        // 向布隆过滤器中添加数据
        bloomFilter.put(48L);
        bloomFilter.put(49L);
        bloomFilter.put(50L);

        // 判断布隆过滤器中的数据是否存在
        boolean b1 = bloomFilter.mightContain(48L);
        boolean b2 = bloomFilter.mightContain(50L);
        boolean b3 = bloomFilter.mightContain(51L);

        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);

标签:hash,误判,布隆,该值,过滤器,bloomFilter
From: https://www.cnblogs.com/insilently/p/17608396.html

相关文章

  • 老杜 JavaWeb 讲解(十九) ——Filter过滤器
    (十七)Filter过滤器Filter过滤器当前的OA项目存在什么缺陷?DeptServlet、EmpServlet、OrderServlet。每一个Servlet都是处理自己相关的业务。在这些Servlet执行之前都是需要判断用户是否登录了。如果用户登录了,可以继续操作,如果没有登录,需要用户登录。这段判断用户是否登录......
  • SpringBoot学习笔记--过滤器Filter
    一、普通过滤器Filter是Servlet规范中的过滤器,可以处理请求,对请求的参数、属性进行调整。常常在过滤器中处理字符编码。1、创建自定义过滤器类packagecom.cqjtu.vo;importjavax.servlet.*;importjava.io.IOException;//自定义过滤器类publicclassMyFilterimplements......
  • django开发的safe过滤器适用
    django_safe在自己开发的博客系统当中,如果使用django框架,那么在发布博客内容的时候,希望可以发布一些被渲染过的样式文本,比如说图片等。下面是发布文章用到的代码#views.pydefarticle_detail(request,username,article_id):user=UserInfo.objects.filter(username=use......
  • jQuery--过滤器
    过滤器就是过滤条件,对已经定位到数组中的dom对象根据一些条件进行过滤筛选,过滤条件不能单独使用,必须和选择器一起使用基本过滤器1、选择第一个,保留数组中第一个DOM对象$("选择器:first")2、选择最后一个,保留数组中最后的DOM对象$("选择器:last")3、选择数组中指定对象$("选......
  • Spring Boot中过滤器
    SpringBoot中过滤器过滤器是什么Filter也称之为过滤器,过滤器是对数据进行过滤,预处理。开发人员可以对客户端提交的数据进行过滤处理,比如敏感词,也可以对服务端返回的数据进行处理。还有就是可以验证用户的登录情况,权限验证,对静态资源进行访问控制,没有登录或者是没有权限时是不......
  • 过滤器拦截器,Interceptor+Filter 理解
    在我们springMVC项目中,一个客户端请求到达DispatcherServlet前会依次经过过滤器(Filter)和拦截器(Interceptor),所以有必要了解下过滤器和拦截器分别做了啥以及项目中该如何配置。 一.Filterpackagejavax.servlet 1.三个方法1.1init():初始化参数,在创建Filter调用,当我......
  • Python高级过滤器:掌握filter函数从入门到精通
    简介在Python中,filter()是一个非常有用的内置函数,它能够根据指定的函数来筛选出可迭代对象中满足条件的元素,返回一个迭代器。filter()函数的使用能够简化代码,并提高程序的可读性。本文将从入门到精通,全面介绍filter()函数的用法和相关知识点。1.filter()函数的基本用法filter(......
  • 过滤器
    一、过滤器(Filter)1.概念:Filter过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。2.过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。3.过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。二、Filter执行流程请求-->放行前逻辑-->放......
  • 自定义过滤器写法示例
    点击查看代码@Component@Slf4j@RequiredArgsConstructorpublicclassCustomFilterextendsOncePerRequestFilter{privatefinalObjectMapperobjectMapper;/***指定要放行的接口路径*/privatestaticfinalString[]ALLOWED_PATHS={......
  • 布隆过滤器
    在做数据新增和插入操作时,往往需要先写一个查询语句查询数据库是否存在该条数据,若存在则只做更新,若不存在则插入 但这样容易增加数据库的负担,若表的数据量比较大,查询速度会很慢,且可能超出数据库的连接池最大数量可通过布隆过滤器进行优化数据新增逻辑1、什么是布隆过滤器以......