pom.xml<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.0-jre</version>
转载
2023-06-15 03:51:50
167阅读
一、简述关于布隆过滤器的详细介绍,我在这里就不再赘述一遍了我们首先知道:BloomFilter使用长度为m bit的字节数组,使用k个hash函数,增加一个元素: 通过k次hash将元素映射到字节数组中k个位置中,并设置对应位置的字节为1。查询元素是否存在: 将元素k次hash得到k个位置,如果对应k个位置的bit是1则认为存在,反之则认为不存在。Guava 中已经有具体的实现,而在我们实际生产环
转载
2023-11-19 18:08:57
150阅读
这一篇是我重写的,之前写过一篇发现面试的时候问的问题虽然大概能解决,但是有几个点没有整理到位,所以自己给自己列出了很多面试常见的问题,准备一篇一篇去解决。本文整体思路是延续之前的那篇文章,在此基础之上添加了几个点而已。布隆过滤器主要是在redis中问的比较多,因此像这种数据结构类的,主要是考原理以及使用场景。下面一点一点开始逐步介绍。一、认识布隆过滤器1、概念布隆过滤器其实就是加快判定一个元素是否
转载
2023-10-01 12:26:27
81阅读
谈谈布隆过滤器(Bloom Filter)?我们都知道布隆过滤器对于缓存穿透是一个很好的解决方案。那什么是布隆过滤器呢?布隆过滤器是一个用一定的误判率来换取空间效率的概率性数据结构。它本身是一个很长的二进制数组,只存储0和1,主要用于判断某个元素是否存在:0代表不存在,1代表存在。布隆过滤器存入数据的过程1.通过K个哈希函数计算,然后返回K个已经计算出的hash值;2.这这K个hash值映射到对应
转载
2024-04-17 15:23:14
37阅读
布隆过滤器适合大数据判重的场景,如网络爬虫中判断一个URL是否已经爬取过,判断一个用户是否在黑名单中,判断一个邮件是否是垃圾邮件,等等。优点:占用空间小,效率高,简而言之,就是以正确率换空间和时间。缺点:有一定的误判率,一个URL经过布隆过滤器判断没爬取过,那么一定没爬取过,一个URL经过布隆过滤器判断爬取过,可能并没有爬取过,这种情况会有误判。布隆过滤器本身是基于位图的,是对位图的一种改进,位图
转载
2023-06-19 21:39:35
120阅读
目录 一、概述二、详解三、实现四、适用业务场景一、概述简单讲布隆过滤器就是判断一个列表中是否存在某个元素。一般在JAVA判断是否存在,我们可以Map,Set等容器。但是当数据量特别大的时候,用Map和Set会占用过多的内存。这个时候就会考虑用布隆过滤器了。二、详解要创建一个布隆过滤器首选需要在内存中声明一个Bit数组,假设数组的长度为L,初始值全部为0。 &nb
转载
2024-03-28 12:24:55
53阅读
算法(3)---布隆过滤器原理
开发一个电商项目,因为数据量一直在增加(已达亿级),所以需要重构之前开发好的秒杀功能,为了更好的支持高并发,在验证用户是否重复购买的环节,就考虑用布隆过滤器。也顺便更加深入的去了解下布隆过滤器的原理,感觉还是蛮有意思的,这一连串的公式不静下心来思考,很容易被绕晕。 一、概述1、什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据
转载
2023-10-12 22:29:13
40阅读
布隆过滤器一般用来判断一个数据是否在一个很大的数据集合里面。当然可以用数组,集合,树等数据结构和各种查找法都可以做同样的事情,但是布隆过滤器有更好的时间效率和空间效率。比特币实现SPV节点时使用了布隆过滤器来查询交易。布隆过滤器可以判断一个数在不在集合里,但存在一定的误判率。布隆过滤器的核心是一个超大的位数组和几个哈希函数。假设位数组的长度为m,哈希函数的个数为k。 &nbs
转载
2023-08-10 12:57:26
73阅读
文章目录布隆过滤器 - Redis 布隆过滤器,Guava 布隆过滤器 BloomFilter1、布隆过滤器的起源,用途2、布隆过滤器的概
原创
2022-05-26 08:23:00
1336阅读
大批量数据去重,特别的占用内存。但是用布隆过滤器(Bloom Filter)会非常的省内存。亲测了一遍,果然是不错的。现将测试代码发出来,一来给自己做个笔记,二来希望大家一起学习。一:布隆过滤器介绍 介绍:布隆过滤器的主要是由一个很长的二进制向量和若干个(k个)散列映射函数组成。因为每个元数据
转载
2023-08-21 15:43:13
95阅读
最近搞NLP爬了点数据,有地方需要判断一些字符串是否在一个大集合里面出现过,联想到了此前的经历过的一个面试题。问:在做网络爬虫的时候,经常会有URL重复出现,怎么规避这种情况? 答:Java里面可以用HashSet保存已经访问过的URL。 问:如果这个URL的量很多呢?比如十亿条? 答:如果能够忍受一定错误率的话,可以使用布隆过滤器,balabala…一、基本概念上面已经介绍了布隆过滤器的一个常用
转载
2023-07-18 21:28:48
43阅读
概述布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数,布隆过滤器可以用于检索一个元素是否在一个集合中。如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn
转载
2023-08-08 08:47:35
106阅读
通过在优锐课的java学习分享中,对于Redis有了更深的理解。了解如何通过Redis Java客户端Redisson在Java和Redis中使用Bloom过滤器。我们可以看到,码了很多专业的相关知识, 分享给大家参考学习。 布隆过滤器是一种概率数据结构,用于有效测试集合中是否存在元素。 使用Bloom筛选器可以帮助减少键/值对的昂贵磁盘查找次数。 使用Java编程语言,开发人
转载
2023-06-02 21:15:46
222阅读
目录1、布隆过滤器的作用2、布隆过滤器原理3、使用场景4、三种实现方式4.1 自定义实现4.1.1 需要实现以下功能:4.1.2 代码:4.1.3 测试:4.2 GoogleGuava实现4.2.1 添加Guava 依赖4.2.2 BloomFilter构造方法4.2.3 判定基本数据类型4.2.4 判定自定义类4.3 Redis实现4.3.1 使用redis的module功能4.3.2 利用r
转载
2023-10-12 06:54:14
61阅读
文章目录前言第一节 什么是布隆过滤器?第二节 布隆过滤器的原理1. 当一个元素添加到布隆过滤器中的时候,会进行如下操作2. 当我们需要判断一个元素是否存在于布隆过滤器得时候,会进行如下操作3. 布隆过滤器的使用场景第三节 BloomFilter的实现方式有很多1. 手动实现Bloom过滤器2. Guava实现布隆过滤器2.1 使用Guava布隆过滤器2.2 其它类型的数据2.3 Guava的缺点
转载
2023-11-15 22:30:47
286阅读
你在么?在!一定在么?不在!一定不在么?你想要100%的准去性,还是99%的准确性附带较高的速度和较小的资源消耗。任何算法都是时间效益、资源消耗、准确性的平衡(1天的时间 10元的投入 生产10个单位的产品,还是 0.6天的时间 6元的投入 生产9个单位的产品)存在即合理,只是在不同场景下的不同选择。1.布隆过滤器百度百科
布隆过滤器(Bloom Filter)是1970年由布隆提出的
转载
2023-08-11 20:24:44
151阅读
速记为什么使用布隆过滤器? 1.为了省内存,提高速率 2.因为1所以布隆过滤器不需要百分百正确 3.说存在不一定存在,说不存在一定不存在 4.在解决缓存穿透的问题时,拦截了大部分的请求,只有小部分携带了大量信息的恶意请求访问到了数据库 5.不准确的原因是可能会和别的key发生冲突,所以位数组越大精确度越高,但是占用内存越多。所以在设置布隆过滤器的时候,这个容错率是多少是百分之一还是百分之十,是否牺
转载
2023-08-20 18:40:48
282阅读
布隆过滤器的作用就是判断元素,在某个元素集中是否存在。 hashmap的问题实际上hashmap也能达到同样的效果,但与布隆过滤器的区别如下:hashmap的大致原理就是,把所有装入的键值对都存到一个Entry对象里,然后根据key值hash出一个常数,作为该键值对的索引值,并把键值对存入与索引值相同下标的数组,下次寻找该键值对时,直接hash传入key值,然后查找数组下标与hash结果
转载
2019-05-14 21:33:00
148阅读
------------------------------------------------------------------------------------------------------慢慢来,一切都来得及 介绍布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合
转载
2023-08-02 00:26:45
119阅读
也可以看看这篇文章: 常见URL过滤方法1 直接查询比较 即假设要存储url A,在入库前首先查询url库中是否存在 A,如果存在,则url A 不入库,否则存入url库。这种方法准确性高,但是一旦数据量变大,占用的存储空间也变大,同时,由于要查库,数据一多,查询时间变长,存储效率下降。2 基于hash的存储 对于给定的url,通过建立的hash函数,来获得对应的hash值,并将该值存入库中。当
转载
2023-08-08 14:21:03
144阅读