首页 > 其他分享 >bitmap的特性和应用

bitmap的特性和应用

时间:2024-12-10 23:13:24浏览次数:7  
标签:hash 标记 自然数 特性 BitMap 应用 下标 bitmap

BitMap 是什么?

BitMap 简称位图,实际上是一个散列表,只不过这个散列表中各个槽是计算机存储中的最小单元bit.


那BitMap数据结构长什么样呢?

一个长度为8的BitMap是下面这样的:

状态 实际表示
初始化状态 00000000
使用后状态 00100000

BitMap 特性

  • 数据结构本身所占用的存储极小
  • 每个槽位上的值只能是0或者1

所以,上面的两个特性决定的它的使用场景。特别是在解决大数据中识别问题。具体0和1能表示什么,取决于业务上赋予它的值。比如有一下场景:

  1. 可以表示自然数是否存在问题。直接把自然数定位到数组下标,用1标记存在,用0标记不存在即可。
  2. 所知道的数组下标都只能是自然数,所以,可以将其他数据最终转换成自然数后,再使用BitMap进行标记。比如小明今天来上课的问题,就可以用学号直接替代自然数,标记用1或者0标记今天是否来上课问题。
  3. 网络爬虫中标记某一个url是否已经爬过了的问题。可以使用hash算法,将长url转换成自然数,然后用1或者0标记是否爬过。

BitMap在redis中应用

redis中除了list,set,zset,string,map这五种常用数据结构以外,还有hylog,geo,bitmap,sub/pub这四种数据结构。

其中,bitmap在redis中的应用,可以解决现在分布式服务器之间数据同步访问的问题。(注:redis4.0以上已经有bloomfilter插件了,可以配置开启)

Bloom Filter原理剖析

布隆过滤器原理就是使用BitMap来标记一个内容在map中是否存在。为了把其他的内容统一转换成自然数,也就是数组的下标,使用了hash算法,然后在对应的位置上标记是否存在。

关于hash算法

hash算法是指通过对数据的关键字进行某种运算,直接求出元素的地址。这里的地址指的是hashtable的下标位置。因为,hashtable本省就是一个数组结构。衡量hash算法好坏有两个重要指标。

  1. hash冲突尽可能的小,也就是尽可能的分散在各个槽内
  2. 装填因子=表中填充数据长度/hashtable.length 要尽可能的大

bloomfilter 在使用hash运算的时候也会产生hash冲突,解决hash冲突有两种方式:

  1. 扩大table的长度
  2. 解决hash冲突(它使用多次hash来解决该问题的)
对于连续的密集型的数据,可以使用下标位置代替数字本身,可以节省空间

这一特性在redisson中保存hashSlot就是典型的应用

标签:hash,标记,自然数,特性,BitMap,应用,下标,bitmap
From: https://www.cnblogs.com/euler-blog/p/18598192

相关文章

  • AI巨头不装了!企业侧应用的ROI出现了,最终还是“砍人”
    微软高管表示,一些AI工具是公司在去年裁员1万人后仍能保持销售增长率的原因之一,并鼓励销售人员使用这个例子吸引客户。首席营销官称,“我们能够通过Copilot将每位客户服务代理的处理能力提高12%。意味着我们不需要雇佣那么多人”。在AI领域的激烈角逐中,微软为了赢得客户甩出宣传......
  • 智创 AI 新视界 -- AI 在交通运输领域的智能优化应用(16 - 9)
           ......
  • 关于系统接入第三方应用之《顶层设计》
    什么情况下会需要这样的代码:传统的写法有什么优势:这样的写法有什么优势:实际案例:接入第三方应用,多数是通过接口实现的,还有一部份是配合使用消息通知实现的。但,大多数还是API实现的。所以,接下来介绍的就是我的设计,两者都存在的方式。首先就是调用接口,通过网关的时候都会有AK,SK,......
  • 电子应用设计方案-46:智能油烟机系统方案设计
    智能油烟机系统方案设计 一、引言随着人们生活品质的提高和对厨房环境要求的不断提升,智能油烟机作为厨房电器的重要组成部分,其性能和功能的智能化程度变得越来越重要。本方案旨在设计一款高效、智能、便捷且易于维护的油烟机系统。 二、系统概述1.系统目标   -......
  • 黄铜、紫铜、青铜和白铜的对比表格,展示了它们在主要特性上的区别:
    黄铜、紫铜、青铜和白铜是几种常见的铜合金,它们的主要区别在于组成成分(即铜的主要合金元素)和它们的物理化学性质。下面我将分别介绍它们的特点和区别:1. 黄铜(Brass)黄铜是铜与锌的合金,主要成分是铜和锌,锌的含量通常在5%-45%之间。根据锌的含量不同,黄铜可以分为不同的类型,如低锌黄......
  • 学无止境-Linux spi的应用
    备注:学习记录所用,若有高手不吝赐教,万分感谢!1、/sys/class/和/dev/spidevA.B设备文件的由来  1.1、/dev/spidevA.B       a、在/drivers/spi/spidev.c中注册,需要ids列表中的compatible与设备树中对应;       b、在menucongfig中使能DeviceDriv......
  • .Net Core中一种应用层各个项目工程自动注入(DI)的方式
    大家好,在DotNetCore开发中我们会用到DI也就是注入一般在Program.cs文件中使用IServiceCollection去添加要注入的对象,但在实际开发中我们不可能去频繁的修改Program.cs文件并且把所有业务相关的注入对象都暴露在Program中也是存在开发风险的,因此有必要封装一个自动注入的服务,在Pro......
  • 【探索Linux的奥秘:全面解析及其应用场景】
    本章目录探索Linux的奥秘:全面解析及其应用场景1.引言1.1Linux简介1.2Linux的历史和发展1.3为什么选择Linux1.4Linux的发行版概览1.5Linux的核心概念:内核、Shell与文件系统**图示:Linux核心概念的关系**![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f......
  • 全链路解析如何构建数据资产管理框架及落地实践丨袋鼠云“数智基建+数智应用”赋能分
    为了帮助企业更好的进行数字化转型升级,袋鼠云精心策划了一系列以“数字基建+数智应用”为核心的赋能分享活动,本系列直播共有四期,每期聚焦于不同的关键议题,深入分析企业数字化转型中的挑战与应对策略。我们期待通过这些直播活动,与业界同仁共同探讨数字化转型中的难点,并寻找切实可行......
  • 除了传统的GPU(图形处理单元),目前有几种不同的计算架构和硬件平台可以作为替代方案,用于
    除了传统的GPU(图形处理单元),目前有几种不同的计算架构和硬件平台可以作为替代方案,用于加速图形渲染、科学计算、机器学习和其他高并行计算任务。这些替代方案在某些应用场景下能够提供更高效的计算性能或更低的功耗。以下是一些主要的替代方案:1. FPGA(现场可编程门阵列,Field-Progr......