Skip to content

Latest commit

 

History

History
31 lines (17 loc) · 918 Bytes

README.md

File metadata and controls

31 lines (17 loc) · 918 Bytes

1个bit位保存一个数据

数组的下标表示具体数据;bit的值只能是1或者0;1表示存在,0表示不存在

作用

  1. 快速查询
  2. 快速去重
  3. 快速排序

应用场景

可以使用的业务

  1. 黑白名单类

如各种业务检查用户id、请求ip是否在黑白名单中。

42亿的数据只需要:(2^32 * 4) / 32 / 1024 / 1024 = 512MB

那么机器就算 8核16G的基础配置也是能够全量加载这部分数据,并进行 O(1) 时间复杂度的查询。并且还可以根据hash,让固定业务请求打到指定机器,那么每台机器可只加载自己的数据到内存即可。

  1. 用户签到

每个用户开一个bitmap,保存一年每天的记录。每天占用1位

(365 * 4) / 32 = 45.625KB 全年用户占用空间

  1. 资源是否使用

经常会有检查某个资源是否使用了,比如:用户是否在线;原理与黑白名单类似