RoaringBitmap位图

RoaringBitmap位图前言Bitmap 常用场景Bitmap缺陷RoaringBitmap主要思想Roaring 数据结构后记前言Bitmap目前是一种比较常见的计数统计模型,Bitmap的数据结构是二进制类型的按位统计,每一位都有两种状态(0,1)。举个例子:比如我们要使用Bitmap记录当前系统的在线人数,假设我们系统有1000个用户(包含在线和不在线的用户),那么我们设定状态...
摘要由CSDN通过智能技术生成

前言

Bitmap目前是一种比较常见的计数统计模型,Bitmap的数据结构是二进制类型的按位统计,每一位都有两种状态(0,1)。

举个例子:比如我们要使用Bitmap记录当前系统的在线人数,假设我们系统有1000个用户(包含在线和不在线的用户),那么我们设定状态0为不在线, 1为在线状态,每一位的顺序代表用户id,初始化Bitmap(1000位)
那么此时模型:000000000… (1000个0)
假设用户id为7的用户登录,那么我们的Bitmap的第7位设置成1代表用户id为7的用户是在线状态。
此时模型:000000100…
因为二进制的特性我们可以进行一些与或非运算以及将二进制转换成十进制。
比如

  • 每周在线的人数统计,将本周每天的Bitmap进行 | 运算 1|1 = 1。
  • 当前日活总数,将二进制转为十进制就是目 000000100… = 1(十进制)

Bitmap 常用场景

  • 快速排序(计数排序)
  • 快速去重
  • 快速查询(如刚刚提到的在线人数查询等)

Bitmap缺陷

Bitmap是一种非常好的数据结构,但是也存在着空间浪费的问题,比如我系统的在线人数是1,整个系统有1000w用户,那么

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值