Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >布隆过滤器原理以及应用_bitmap与布隆过滤器

布隆过滤器原理以及应用_bitmap与布隆过滤器

作者头像
全栈程序员站长
发布于 2022-11-10 08:03:25
发布于 2022-11-10 08:03:25
2490
举报

1.先说下背景,肯定遇到这种情况,判断元素在不在一个集合里面,如果,集合里面的元素非常大,这个判断过程是非常耗时的,而且集合占用空间也很大。

2.应用场景,网页黑名单,垃圾邮件过滤,电话黑名单,url去重,内容推荐等。

3.原理:布隆过滤器实际上就是一个字节数组,字节数组的值是0或1,在添加元素的时候,对值通过多个hash函数的计算,得到多个0,1然后在字节数组里面在相应的位置设置值。这样处理完所有的值之后,一个完整的布隆过滤器就完成了。之后就进入应用阶段了,判断值在不在布隆过滤器里面了,如果新输出的对象是之前处理放在布隆过滤器里面的,那就一定是存在,因为两次计算得到的hash值是一样的,肯定在,那对于新的对象了,这时就有可能会出现误杀了,新的值的hash值可能与老的值hash一样,于是布隆过滤器就认为,这个值是黑名单里的了,会造成误杀的结果。相当于就是宁愿杀错一k,不愿放过一个。

4.改进:通常误杀的话,可以通过两个方法去补救,再建立一个白名单,从布隆器本身去优化,降低误杀率。

5.再举例,头条给你推荐内容的时候,肯定要去查询一个的你的历史阅读记录,你看过的内容,一定是存在你的记录中的,新内容会有很小的机率认为是你之前看过的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184884.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月7日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
布隆过滤器原理简介视频_布隆过滤器误判怎么办
布隆过滤器(Bloom Filter)是由一个很长的bit数组和一系列哈希函数组成的。本质上是一种数据结构,比较巧妙的概率型数据结构。它的特点是高效地插入和查询,并且根据查询结果可以知道某样东西一定不存在或者可能存在。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的,同时布隆过滤器还有一个缺陷就是数据只能插入不能删除。
全栈程序员站长
2022/11/08
7230
布隆过滤器原理简介视频_布隆过滤器误判怎么办
布隆过滤器原理及应用场景分析_布隆过滤器 数据更新怎么办
https://www.cnblogs.com/qdhxhz/p/11237246.html
全栈程序员站长
2022/11/08
9890
布隆过滤器原理及应用场景分析_布隆过滤器 数据更新怎么办
使用BloomFilter布隆过滤器解决缓存击穿、垃圾邮件识别、集合判重
Bloom Filter是一个占用空间很小、效率很高的随机数据结构,它由一个bit数组和一组Hash算法构成。可用于判断一个元素是否在一个集合中,查询效率很高(1-N,最优能逼近于1)。
天涯泪小武
2019/01/17
1.5K0
详解布隆过滤器原理,及分布式运用方法_布隆过滤器最小误差
布隆过滤器是一个叫“布隆”的人提出的,本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure)。它本身是一个很长的二进制向量,特点是高效地插入和查询,可以用来确定 “某一条数据一定不存在或者可能存在一个集合中”。
全栈程序员站长
2022/11/08
1.4K0
详解布隆过滤器原理,及分布式运用方法_布隆过滤器最小误差
一文搞懂布隆过滤器
在开发软件时,我们经常需要判断一个元素是否在一个集合中,比如,如何判断单词的拼写是否错误(判断单词是否在已知的字典中);在网络爬虫里,如何确认一个网址是否已经爬取过;反垃圾邮件系统中,如何判断一个邮件地址是否为垃圾邮件地址等等。
somenzz
2021/09/14
3430
从位图原理到布隆过滤器的实现
假设一个int占4个字节(32位),40个亿个整数就是160亿个字节,大概相当于16GB,假设一台计算机只有2GB内存,则16GB一次加载不完,需要分8次加载,从磁盘加载数据是磁盘io操作,是非常慢的(比内存中的操作要慢100倍),每次加载这么大的数据,并且要8次,那么查找的时间可以达到分钟甚至小时级别。
evenleo
2020/06/07
9360
布隆过滤器:原理与应用
这个时候,布隆过滤器(Bloom Filter)就派上了用场。 作为一种空间高效的概率型数据结构,布隆过滤器能够快速有效地检测一个元素是否属于一个集合。其应用广泛,从网络爬虫的网页去重,到数据库查询优化,乃至比特币网络的交易匹配,都离不开它的身影。
BookSea
2023/10/12
4630
BloomFilter布隆过滤器
位数组与Hash函数的联合使用。是一个包含m位的位数组,每位初始化为0,有k个不同的Hash函数,可将集合元素映射到位数组的某一位。插入元素需根据k个hash函数得到k个位,置为1。查询时判断这k个位(有0则该元素肯定不在集合中,都为1则该元素有可能在集合中)
名字是乱打的
2022/05/13
2500
BloomFilter布隆过滤器
布隆过滤器 原理及优缺点分析_布隆过滤器误判怎么办
百度百科解释他可以判断一个元素是否在集合中,后面还说了他的效率呀什么的都很好,那既然如此,我们再想象一下为什么需要它!
全栈程序员站长
2022/11/08
7190
布隆过滤器 原理及优缺点分析_布隆过滤器误判怎么办
Bitmap 和 布隆过滤器傻傻分不清?你这不应该啊
有个兄弟私下跟我说,他在面试狗东时,有一道面试题没回答上来:Redis 的Bitmap和布隆过滤器啥区别与关系?
程序员小富
2024/10/21
1540
布隆过滤器
布隆过滤器本质上是一种概率型的数据结构,用于检索一个元素是否在集合中,它将告诉你一个数据“一定不存在或可能存在。
不作声
2020/07/06
5150
聊聊布隆过滤器
布隆过滤器作为一个精巧且实用的数据结构,对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。希望通过这篇文章让更多人了解布隆过滤器的原理,并且会实际去使用它!
架构狂人
2023/08/16
2710
聊聊布隆过滤器
布隆过滤器Bloom Filter简介
当需要判断一个元素是否存在于海量数据集合中,不仅查找时间慢,还会占用大量存储空间,接下来看一下布隆过滤器如何解决这个问题
全栈程序员站长
2022/06/29
4740
布隆过滤器Bloom Filter简介
布隆过滤器原理和使用场景
Bloom Filter 会使用一个较大的 bit 数组来保存所有的数据,数组中的每个元素都只占用 1 bit ,并且每个元素只能是 0 或者 1(代表 false 或者 true),用于检索元素是否存在于大集合中的数据结构。
卷福同学
2025/02/19
1540
布隆过滤器解读(Java实现)
布隆过滤器:(布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量(位图)和一系列随机映射函数(哈希函数)。
一个风轻云淡
2023/12/13
4780
数学之美:布隆过滤器
如果一个黑名单网站包含100亿个黑名单网页,每个网页最多占64B,设计一个系统,判断当前的URL是否在这个黑名单当中,要求额外空间不超过30GB,允许误差率为万分之一。
算法工程师之路
2019/08/05
1.4K0
布隆过滤器介绍
我们知道检查一个元素是否在某一个集合中,使用HashSet是比较好的选择,因为在不发生Hash碰撞的情况下它的时间复杂度为常数级别,但是在数据量比较大的情况下,使用HashSet将会占用大量的内存空间。举个例子,长城防火墙有100亿个需要屏蔽的网址,来自计算机的每一次请求都要经过防火墙的过滤判断请求URL是否在黑名单中,如果我们使用HashSet来实现过滤的话,我们假设每个URL的大小为64B,那么100亿个就至少需要大约640GB的内存空间,这显然是不符合实际情况的。另一种解决方案是我们可以将URL存入关系型数据库,每次计算机发起请求我们对数据库进行exits查询,然而这种方案适用于并发量比较小的情况,若并发量较大,那么我们就需要对数据库进行集群。
夹胡碰
2020/08/20
4690
布隆过滤器介绍
浅析布隆过滤器
布隆过滤器 (Bloom Filter) 是 1970 年由布隆提出的。它可以检索一个元素是否存在于集合中。它的优点是空间效率高,查询时间极快,缺点是有一定的误判率,而且删除困难。
仁扬
2023/06/29
1520
Redis之布隆过滤器(Bloom Filter)解读
在实际开发中,会遇到很多要判断一个元素是否在某个集合中的业务场景,类似于垃圾邮件的识别,恶意ip地址的访问,缓存穿透等情况。类似于缓存穿透这种情况,有许多的解决方法,如:redis存储null值等,而对于垃圾邮件的识别,恶意ip地址的访问,我们也可以直接用 HashMap 去存储恶意ip地址以及垃圾邮件,然后每次访问时去检索一下对应集合中是否有相同数据。
一个风轻云淡
2023/10/15
7560
Redis之布隆过滤器(Bloom Filter)解读
最牛一篇布隆过滤器详解
我们之前讲了Redis的缓存雪崩、穿透、击穿。在文章里我们说了解决缓存穿透的办法之一,就是布隆过滤器,但是上次并没有讲如何使用布隆过滤器。
公众号 IT老哥
2020/10/27
7.8K1
最牛一篇布隆过滤器详解
相关推荐
布隆过滤器原理简介视频_布隆过滤器误判怎么办
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文