一道经典面试题
要求完成文件读取,过滤,列印操作。
有一大小为1GB的源文件mail.log中记录以下格式的数据,将其中信箱为@sina.com的地址筛选出来。
要求程序占用的内存不能超过512MB,代码尽可能高效,在最短时间完成运算。
实际代码或伪代码或者写明思路都可以
July@sina.com.cn
Cross@hotmial.com
dana@gmail.com
mike@sina.com
jones@163.com
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
引用来自#10楼“穿衣服比较麻烦”的帖子
MappedByteBuffer 分段读取 ,一次100M。
MappedByteBuffer 分段读取 ,一次100M。
引用来自#5楼“苏元元”的帖子
问题是打开的时候本身就会很慢...
至少要分两次读取,最好分3~4次为好。。。
引用来自#6楼“Aeolus”的帖子
先做文件切割,切小点,文件多点
然后分段读如内存
摘出符合条件的存入新文件
新文件中排序,剔除重复的
-------------------------
是这个思路么?
先做文件切割,切小点,文件多点
然后分段读如内存
摘出符合条件的存入新文件
新文件中排序,剔除重复的
-------------------------
是这个思路么?
BufferedReader bf=xxxx;
while ((line = bf.readLine()) != null){
//直接处理一行的内容line,也可以一次读取100行或1000行再处理
}
这样行不?
看清楚 1G容量大小。
直接用命令行不?:)
grep "sina.com$" mail.log