青岛达内it培训 > 达内新闻
如何高效的处理亿万级数据?(13)
- 发布:青岛达内
- 来源:青岛达内
- 时间:2019-03-20 14:14
青岛达内的小编总结, 在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数
方案1
采用2-BitMap,每个数分配2bit
00表示不存在
01表示出现一次
10表示多次
11无意义
共需内存2^32 * 2 bit=1 GB,尚可接受
然后扫描这2.5亿个整数,查看BitMap中相应位,如果是00变01,01变10,10保持不变。
扫荡完毕后,查看BitMap,把对应位是01的整数输出即可
方案2
也可采用与第1题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素
40亿个不重复的非负int的整数,没排过序,然后再给一个数,如何快速判断这个数是否在那40亿个数当中
申请512M内存,一个bit位代表一个int非负值。读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在。
秘技四 Trie树/数据库/倒排索引
Trie树
适用范围
数据量大,重复多,但数据种类少可放入内存
基本原理及要点
实现方式,节点孩子的表示方式
扩展
压缩实现

一个文本文件,大约一万行,每行一个词,要求统计出其中最频繁出现的前10个词
用trie树统计每个词出现的次数,时间复杂度是O(n*le)(le表示单词的平准长度),然后找出出现最频繁的10个
数据库索引
适用范围
大数据量的增删改查
基本原理及要点
利用数据的设计实现方法,对海量数据的增删改查
倒排索引(Inverted index)
适用范围
搜索引擎,关键字查询
基本原理及要点
为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。
以英文为例,下面是要被索引的文本:
T0 = “it is what it is”
T1 = “what is it”
T2 = “it is a banana”
我们就能得到下面的反向文件索引
“a”: {2}
“banana”: {2}
“is”: {0, 1, 2}
“it”: {0, 1, 2}
“what”: {0, 1}
检索的条件“what”,“is”和“it”将对应集合的交集。
以上就是青岛达内给大家做的内容详解,更多关于UI的学习,请继续关注青岛达内
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 哈尔滨
- 济南
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 长沙
- 昆明
- 太原
- 无锡
- 石家庄
- 南宁
- 佛山
- 珠海
- 宁波
- 保定
- 呼和浩特
- 洛阳
- 烟台
- 运城
- 潍坊
如何高效的处理亿万级数据?(13)
- 发布:青岛达内
- 来源:青岛达内
- 时间:2019-03-20 14:14
青岛达内的小编总结, 在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数
方案1
采用2-BitMap,每个数分配2bit
00表示不存在
01表示出现一次
10表示多次
11无意义
共需内存2^32 * 2 bit=1 GB,尚可接受
然后扫描这2.5亿个整数,查看BitMap中相应位,如果是00变01,01变10,10保持不变。
扫荡完毕后,查看BitMap,把对应位是01的整数输出即可
方案2
也可采用与第1题类似的方法,进行划分小文件的方法。然后在小文件中找出不重复的整数,并排序。然后再进行归并,注意去除重复的元素
40亿个不重复的非负int的整数,没排过序,然后再给一个数,如何快速判断这个数是否在那40亿个数当中
申请512M内存,一个bit位代表一个int非负值。读入40亿个数,设置相应的bit位,读入要查询的数,查看相应bit位是否为1,为1表示存在,为0表示不存在。
秘技四 Trie树/数据库/倒排索引
Trie树
适用范围
数据量大,重复多,但数据种类少可放入内存
基本原理及要点
实现方式,节点孩子的表示方式
扩展
压缩实现

一个文本文件,大约一万行,每行一个词,要求统计出其中最频繁出现的前10个词
用trie树统计每个词出现的次数,时间复杂度是O(n*le)(le表示单词的平准长度),然后找出出现最频繁的10个
数据库索引
适用范围
大数据量的增删改查
基本原理及要点
利用数据的设计实现方法,对海量数据的增删改查
倒排索引(Inverted index)
适用范围
搜索引擎,关键字查询
基本原理及要点
为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。
以英文为例,下面是要被索引的文本:
T0 = “it is what it is”
T1 = “what is it”
T2 = “it is a banana”
我们就能得到下面的反向文件索引
“a”: {2}
“banana”: {2}
“is”: {0, 1, 2}
“it”: {0, 1, 2}
“what”: {0, 1}
检索的条件“what”,“is”和“it”将对应集合的交集。
以上就是青岛达内给大家做的内容详解,更多关于UI的学习,请继续关注青岛达内
最新开班时间
- 北京
- 上海
- 广州
- 深圳
- 南京
- 成都
- 武汉
- 西安
- 青岛
- 天津
- 杭州
- 重庆
- 厦门
- 哈尔滨
- 济南
- 福州
- 沈阳
- 合肥
- 郑州
- 长春
- 苏州
- 大连
- 长沙
- 昆明
- 温州
- 太原
- 南昌
- 无锡
- 石家庄
- 南宁
- 中山
- 兰州
- 佛山
- 珠海
- 宁波
- 贵阳
- 保定
- 呼和浩特
- 东莞
- 洛阳
- 潍坊
- 烟台
- 运城