bitmap的java原理_布隆算法的原理及JAVA实现

Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。

Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。

比如10亿个int类型的数,如果用int数组存储的话,那么需要大约4G内存,浪费内存。如果用bitmap解决,就比较方便。java语言中没有bitmap结构,我们采用byte模拟。一个byte占8个bit,如果每一个bit的值是1或0,代表有或没有。下图所示:

3ddce63483b741edd83ff8c64942a017.png

0105aec75e326dac84625655b90b6691.png

构建特定长度的byte数组(new byte[capacity/8 + 1]),其中capacity为整数数组长度(如:1000个数字,就是1000/8)

计算数字num在byte[]中的位置索引(num/8和num >> 3一样),也就是说num在byte[k]中的索引,计算索引k

计算数字num在byte中的位置,就是在byte的第几位,每个byte有8位(num % 8),采用二进程与计算

找到该数字存储位置后,将bit中的0变成1,即表示该数已存在bitmap中,如图

8d9f5ca93e93a69e3bf95cb26ce4acbf.png

判断指定数字num是否存在数组中

完整代码:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是语音复用设备?

语音复用设备是一种小容量、多业务的复用及传输设备,它能为用户提供综合的通信功能,满足用户对电话、数据以及计算机网络连接的实际需要。它的多种传输方式使其能灵活的应用在各种通信网络中:可以作为光电一体化综合通信业务接入设备&#xf…

截断整型提升算数转换

文章目录 🚀前言🚀截断🚀整型提升✈️整型提升是怎样的 🚀算术转换 🚀前言 大家好啊!这里阿辉补一下前面操作符遗漏的地方——截断、整型提升和算数转换 看这一篇要先会前面阿辉讲的数据的存储否则可能看不…

java如何通过grpc连接etcd_grpc通过 etcd 实现服务发现与注册-源码分析

介绍下面介绍 jupiter-0.2.7 版本中 grpc 通过 etcd 实现服务发现与注册。服务发现与注册的实现解析服务注册服务注册的流程图:etcd的服务注册代码模块在 jupiter/pkg/registry/etcdv3 中。下面让我们来看看实际的代码// Registry register/unregister service// re…

spring jms 事务_Spring JMS:处理事务中的消息

spring jms 事务1.引言 这篇文章将向您展示使用JMS异步接收消息期间使用者执行过程中的错误如何导致消息丢失。 然后,我将解释如何使用本地事务解决此问题。 您还将看到这种解决方案在某些情况下可能导致消息重复(例如,当它将消息保存到数据…

使用AWS Lambda,S3和AWS CloudFront进行动态内容缓存

快速提供内容对于任何网站或应用程序具有更好的客户体验至关重要。 如果您将网站或应用程序托管在AWS Cloud中,那么无论从何处访问应用程序,都可以以较低的延迟快速提供内容。 AWS提供了CloudFront服务,用于将内容缓存在每个用户地理位置本地…

数据光端机设备性能指标介绍

作为安防监控工程,设备的可靠性应该是第一考虑要素。而数据光端机设备的可靠性是设备厂商在产品设计时就必需考虑的,但是,有些厂商可能会因为某些原因而不愿做或不知道怎么做这方面的工作,在这里着重从工程的角度简单地讨论以下问…

光电转换器有什么作用?光纤收发器如何保养?

光电转换器可以使原来的快速以太网平滑升级,并能充分保护用户原来的网络资源,它也可以称为光纤收发器。光电转换器可以实现交换机和计算机之间的互联,也可以作为传输中继,还可以进行单多模转换。光纤收发器在应用过程中&#xff0…

html中输出PHP的下拉列表,html中关于下拉列表select的图文代码详解

HTML中的下拉列表:Html代码VolvoSaabOpelAudi其中select是显示一个下拉列表(drop down list)出来,option是下拉列表中的项目(item),而option的文本内容(text content)是下拉列表项目中显示到页面上的值,value是真正需要提交到服务…

光纤收发器tx和rx的区别?

光纤收发器,是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元,在很多地方也被称之为光电转换器(Fiber Converter)。产品一般应用在以太网电缆无法覆盖、必须使用光纤来延长传输距离的实际网络环境中…

光纤收发器元件级和整机测试内容介绍

对光纤收发器的测试可分为元件级和整机测试,元件级测试主要包括对光纤收发器内部关键器件在电工作的电性能测试。整机测试主要指将光纤收发器接入到以太局域网中,测试整机的功能、性能和特性。那么,具体要怎样测试光纤收发器才是一次完整的测…

如何判断光纤收发器是否有问题?

一般情况下,光纤收发器或光模块的发光功率如下:多模在10db--18db之间;单模20公里在-8db--15db之间;而单模60公里则在-5db--12db之间。但如是光纤收发器的发光功率出现在-30db--45db之间,那么,很有可能这个光…

activemq 实例_在一台计算机上运行多个ActiveMQ实例

activemq 实例几周前,我再次通过Mule ESB解决方案将Apache ActiveMQ用作JMS提供程序。 由于使用ActiveMQ已经有几年了,所以我认为最好检查一些(新)功能,例如故障转移传输和其他群集功能 。 为了能够测试这些最后的东西…

什么是光纤收发器?光纤收发器作用是什么?

许多朋友一听到光纤收发器这五个大字总会有困惑,比如说什么是光纤收发器,光纤收发器又有什么作用等等疑问。那么,什么是光纤收发器呢?光纤收发器又有什么作用呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧&…

在15分钟内使用Spring Boot和Spring Security构建一个Web应用程序

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 开发人员知道保护Web应用程序安全可能会很麻烦。 正确地做是很难的。 最糟糕的是&…

音频光端机的必备要素有哪些?

音频光端机就是发射端把传统的音频模拟信号转换成光信号,通过光纤传输到接收端,在接收端再转换成模拟信号的一种音频设备。那么,音频光端机有哪些必备要素呢?音频光端机的原理是什么呢?接下来我们就一起来详细了解下吧…

16路开关量光端机产品功能及接线图

飞畅科技生产的16路开关量光端机,可以使开关量信号通过光缆在光纤上传输双向控制。全数字光传输通道,确保高质量的信号传输。面板上有电源指示灯、光信号指示灯数据信号指示灯,可以直观的检测电源、光信号、数据信号状态。单向系列开关量光端…

matlab查找替换指令,使用matlab GUI在.txt文件中编辑特定数字使用搜索/替换

使用matlab GUI在.txt文件中编辑特定数字使用搜索/替换 我有一堆不同的模板.txt文件,我想由Matlab中的用户访问。这些模板看起来像这样,但是有一些主要的区别,我将解释:LOAD BOX 1 SUBJ M1_299633_D295158_JUN191910_Aut_ERROR2 E…

电话光端机安装步骤详解

光端机是光信号传输的终端设备,其主要作用是把传统的电话信号转换成光信号并在光纤上传输的设备,是随着光线技术的发展而出现的光端机产品。那么,电话光端机是怎么安装的呢?今天就由飞畅科技的小编来为大家介绍下电话光端机的详细…

php 站内搜索引擎,淘特站内搜索引擎For PhoCmsV9.4

一、产品特点:该产品是淘特站内搜索引擎For PhpCmsV9特别定制版,系统安装后,就可以索引、模糊查询PhpCmsV9的文章数据了(无需连接数据库哦)二、产品下载:三、使用说明:提示:本系统已和tomcat7打包&#xff…

交换机组网常见九大故障问题

交换机是一种用于电信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。其他常见的还有电话语音交换机、光纤交换机等。那么,交换机组网常见九大故障问题有哪些呢?接下来我们就跟随飞畅科技…