社区
数据结构与算法
帖子详情
超大文件创建索引问题
lg_asus
2012-02-11 10:00:54
题目:假如有一个1TB大小的文件,每行的格式如下:
323828328,李武,男,广州市
323232332,小四,女,三藩市
.....
(1)请编写一个程序(假设名字是不重复的),得到一个索引文件,并且要保证这个索引文件尽量小,前提是内存只有1G的大小。
(2)请利用你的所得到的索引的文件,根据名字(假设名字是不重复的)搜索出该名字所对应的信息
...全文
332
10
打赏
收藏
超大文件创建索引问题
题目:假如有一个1TB大小的文件,每行的格式如下: 323828328,李武,男,广州市 323232332,小四,女,三藩市 ..... (1)请编写一个程序(假设名字是不重复的),得到一个索引文件,并且要保证这个索引文件尽量小,前提是内存只有1G的大小。 (2)请利用你的所得到的索引的文件,根据名字(假设名字是不重复的)搜索出该名字所对应的信息
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
boxer_tony
2012-03-02
打赏
举报
回复
如果一行的内容就是如下的话“323828328,李武,男,广州市”
那么1TB内容的东西里面,光存储名字就要上百个GB,一个索引文件能解决问题吗?
showjim
2012-02-16
打赏
举报
回复
索引文件尽量小 有什么意义?
lg_asus
2012-02-16
打赏
举报
回复
[Quote=引用 8 楼 just_swizard 的回复:]
构建一个字典树作为索引,把树保存到文件就是索引文件了
[/Quote]
看了trie树,但不知道如何保存,可以详细说下保存后的文件格式吗?
just_swizard
2012-02-16
打赏
举报
回复
构建一个字典树作为索引,把树保存到文件就是索引文件了
foreverlin1204
2012-02-15
打赏
举报
回复
利用名字的特性,构造一颗汉语字典树,字典树请问度娘,为提高内存利用率,兄弟节点均采用hash_map来映射,考虑到中文名字的特殊性,实际该树的高度<=3且常用字不超过2000,于是名字中字的重复率是很高的,那么最终树中每个节点可广义上看成是一个二维配对pair,$1代表当前名字在字典中的状态(可以理解为常用字典中第几页第几行),$2代表该名字在文件中的所在行所对应的磁盘物理偏移,理论内存不超过2^32*2.5*2 实际远远小于这个数字,(例小李,小王,实际只存了小,李,王)
cnmhx
2012-02-15
打赏
举报
回复
构造一个由姓名按位运算计算出的地址决定的一系列文件和文件记录。
将姓名转化为一个不重复的2^31(31字节,甚至更大)的整数(这个方法有很多,有的效率很高的)。
然后按照姓名对应的整数,按照位运算法则,直接得到生成两个整数。
其中前一个由高位字节产生——用于生成一系列文件的标识——文件名。
第二个整数由余下的低位字节生成——用于标识该姓名在指定的文件中的记录位置。
lg_asus
2012-02-14
打赏
举报
回复
[Quote=引用 2 楼 kamo54 的回复:]
名字不重复的话,按名字排序,省去相同字节后索引文件最小。
[/Quote]
按名字排序?文件太大,怎么可能排序?
后面那句没看懂什么意思,请详细说下
网迷
2012-02-13
打赏
举报
回复
名字不重复的话,按名字排序,省去相同字节后索引文件最小。
lg_asus
2012-02-11
打赏
举报
回复
我想到方法:
按姓氏创建多个索引文件,索引文件中的内容是 姓氏 前面内容的字节数
在搜索姓名的时候,根据姓去相应的索引文件中找,得到字节数,然后去那个大文件中直接跳过这些字节数,得到相应的那一行数据
另外问下:汉字的Unicode码是不是按汉字的首字母来分类的,如卫 未 魏 这些字的Unicode码是不是在一起的?
MongoDB
索引
的创建注意事项、以及建
索引
导致锁库的解决方案
MongoDB
索引
的创建注意事项 在数据量
超大
的情形下,任何数据库系统在创建
索引
时都是一个耗时的大工程。MongoDB也不例外。因此,MongoDB
索引
的创建有两种选择,一个是前台方式,一个是后台方式。那这两种方式有什么差异呢,在创建
索引
时是否能观察到
索引
完成的进度呢。本文将是基于此的描述,同时也描述了
索引
创建相关的注意事项。 ...
java
超大
文件上传方案
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox,360安全浏览器,并且刷新浏览器后仍然能够续传,重启浏览器(关闭浏览器后再打开)仍然能够继续上传,重启电脑后仍然能够上传 支持文件夹的上传,要求服务端能够保留层级结构,并且能够续传。需要支持10万个以上的文件夹上传。 支持低版本的系统和浏览器,因为这个项目的最
Springboot+WebUploader优雅实现
超大
文件的分片上传(二)
在软件工程里,在处理“大”的时候一直是一个痛点和难点,如并发大、数据量大、文件大,对硬件进行升级可以解决一些
问题
,但这并不最聪明的办法,而对于老板来说,这也不是成本最小的办法。作为开发人员来说,在面对类似极端的
问题
时,只可智取,不可硬刚,最大化利用好手上现有的资源,以更加优雅的办法来满足用户多样化的需求才是王道。今天的主题也是一个“大”的
问题
,就是
超大
文件如何上传和下载?其实在解决这个
问题
之前,有一个
问题
是绕不过去的:什么才是大文件?什么是
超大
文件?几十兆?几百兆?还是几个G?这其实是一个极具争议的
问题
,在
模拟一个10G
超大
文件的排序
超大
文件排序
问题
在面试中很常见,本人在面试中别卡了一次。所以经过一点时间的研究,终于写出了一种实现方式。因为10G的数字文件实在是不好搞,因此下面代码中我只是用了一个比较大点的文本文件来模拟整个排序。但是和10G文件的总体思路是一样的。 基本实现思路 1.创建子文件目录; 2.源文件每10行文件内容拆分为一个子文件; 3.构建一个小顶堆,将每个子文件的第一个数字放入小顶堆; 4.合并子文件: (1)堆顶就是最小的元素,弹出堆
Springboot+WebUploader优雅实现
超大
文件的分片上传(一)
在软件工程里,在处理“大”的时候一直是一个难点和难点,如并发大、数据量大、文件大,对硬件进行升级可以解决一些
问题
,但这并不最聪明的办法,而对于老板来说,这也不是成本最小的办法。作为开发人员来说,在面对类似极端的
问题
时,只可智取,不可硬刚,最大化利用好现有的资源,以更加优雅的办法来满足用户多样化的需求。今天的主题也是一个“大”的
问题
,就是大文件如何上传和下载?其实在解决这个
问题
之前,有一个
问题
是绕不过去的:什么才是大文件?几兆?几十兆?几百兆?这其实是一个极具争议的
问题
,在不同的业务场景下,对于大文件的“大”
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章