海量数据处理

位图 - BitMap

(二进制位数组,节省内存,速度O1)(只能处理有范围正整数)

如何从40亿个qq号中快速查找到一个qq号是否存在?

要求内存在1GB内,且响应速度在一秒内。

无法使用hashset(内存不够)、hashMape也不行他的key也是存在内存上的

使用一个二进制数组,开辟43亿二进制位数组,里面存的都是1.0.(占用512MB内存)

为啥要43亿呢,因为我们qq号是一个int类型,4个字节,4*8=32位,2的32次方=43亿

数组充当一个map:海量数据处理_第1张图片

海量数据处理_第2张图片 

 海量数据处理_第3张图片

外部排序:

借助磁盘文件的排序算法

内部排序:借助内存的排序算法

海量数据处理_第4张图片 海量数据处理_第5张图片

 

哈希分治:

海量数据处理_第6张图片

布隆过滤器:

提速但有一定误判率海量数据处理_第7张图片

 海量数据处理_第8张图片

海量数据处理_第9张图片 海量数据处理_第10张图片

 

 

海量数据处理_第11张图片 

总结海量数据处理_第12张图片

①:位图bitsmap 海量数据处理_第13张图片

 ② ③:手机号是11位的

海量数据处理_第14张图片

海量数据处理_第15张图片

 否则就需要用到哈希分治、或外部排序了

 ④:小顶堆

 

 

你可能感兴趣的:(数据结构刷题,c++,开发语言,linux,运维,服务器)