问题描述
【问题】一台10G内存的服务器如何解析30G的文件,同时把文件里面不同的数据统计出来。
解决方案
解决方案二:
该回复于2013-12-24 21:15:55被版主删除
解决方案三:
缓存到硬盘。
解决方案四:
引用2楼u010684923的回复:
缓存到硬盘。
没拉?
解决方案五:
应该是不一次性载入整个文件吧,一次只读取文件中的一部分读下一部分的时候关闭之前打开的部分。不过具体实现不太清楚
解决方案六:
每次读取固定大小
解决方案七:
引用3楼u011128470的回复:
Quote: 引用2楼u010684923的回复:
缓存到硬盘。没拉?
还要什么呀,数据都缓存出来了,那你不是想怎么用就怎么用了?还要啥?至于什么把文件里面不同的数据统计出来?这不就是if()esle么?
解决方案八:
类似计算机系统中的虚拟内存,小内存怎么运行大程序。引用:我们都知道,虽然在运行速度上硬盘不如内存,但在容量上内存是无法与硬盘相提并论的。当运行一个程序需要大量数据、占用大量内存时,内存就会被“塞满”,并将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存
解决方案九:
文件30G,但是30G的文件不会是一下子装载进去的。对于30G的文件分批读,分批分析,内存保存分析结果就行了。最后对分批分析的结果进行统计。
解决方案十:
该回复于2013-12-24 21:15:45被版主删除
解决方案十一:
解决方案十二:
解决方案十三:
该回复于2013-12-24 21:16:11被版主删除
解决方案十四:
该回复于2013-12-24 21:16:25被版主删除
解决方案十五:
不懂,还有这样的面试题?
其他方案:
感觉还是一点一点的读,一点一点的解析
其他方案:
读取文件跟内存没关系,考官可能是想考分块读取文件。byte[]tempbytes=newbyte[1000];while((byteread=in.read(tempbytes))!=-1){System.out.write(tempbytes,0,byteread);}这样可以读取文件