一道经典面试题

发布于 2021-11-09 00:57:10 字数 237 浏览 704 评论 9

要求完成文件读取,过滤,列印操作。
有一大小为1GB的源文件mail.log中记录以下格式的数据,将其中信箱为@sina.com的地址筛选出来。
要求程序占用的内存不能超过512MB,代码尽可能高效,在最短时间完成运算。
实际代码或伪代码或者写明思路都可以
July@sina.com.cn
Cross@hotmial.com
dana@gmail.com
mike@sina.com
jones@163.com

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

秋意浓 2021-11-13 19:55:22

引用来自#10楼“穿衣服比较麻烦”的帖子

MappedByteBuffer 分段读取 ,一次100M。

温柔少女心 2021-11-13 19:55:05

MappedByteBuffer 分段读取 ,一次100M。

无声静候 2021-11-13 19:54:46

引用来自#5楼“苏元元”的帖子

问题是打开的时候本身就会很慢...

归途 2021-11-13 19:53:49

至少要分两次读取,最好分3~4次为好。。。

虐人心 2021-11-13 19:43:08

引用来自#6楼“Aeolus”的帖子

先做文件切割,切小点,文件多点

然后分段读如内存

摘出符合条件的存入新文件

新文件中排序,剔除重复的

-------------------------

是这个思路么?

秉烛思 2021-11-13 19:42:23

先做文件切割,切小点,文件多点

然后分段读如内存

摘出符合条件的存入新文件

新文件中排序,剔除重复的

-------------------------

是这个思路么?

明媚如初 2021-11-13 19:41:52

BufferedReader bf=xxxx;

while ((line = bf.readLine()) != null){
     //直接处理一行的内容line,也可以一次读取100行或1000行再处理
   }

这样行不?

恋你朝朝暮暮 2021-11-11 12:00:56

看清楚 1G容量大小。

水水月牙 2021-11-09 22:17:02

直接用命令行不?:)

grep "sina.com$" mail.log

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文