- 问题
- 如果用散列表存储这1千万的数据,数据是32位的整型数,也就是需要4个字节的存储空间,那总共至少需要40MB的存储空间
- 如果是位图(BitMap), 数字范围在1到1亿之间,只需要1个2进制位,也就是12MB左右的存储空间
- 那么如果数字范围很大,比如上面的问题,数字范围不是1到1亿,而是1到10亿,那位图大小就是10亿个二进制位,也就是120MB大小,消耗空间,不降反增?
- 布隆过滤器的作用
- 问题
- 数据个数是1千万,数据范围是1亿到10亿
- 作用
- 仍然使用一个1亿个二进制大小的位图,然后通过哈希函数,对数字进行处理,然后落在这1到1亿范围内
- 比如我们把哈希函数设计成f(x) = x % n, 其中, x表示数字,n表示位图的大小(1亿)。也就是数字跟位图的大小进行取模求余
- 冲突解决
- 哈希函数会存在冲突问题,1亿零一和1两个数字,经过刚才取模求余的哈希函数处理后,最后结果都是,怎么区分存储的是1亿零一,还是 1
- 问题解决
- 数据误判
- 问题
bitmap
Directory actions
More options
Directory actions
More options
bitmap
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||

