现在你有10个接口访问日志文件,每个日志文件的大小约为300MB,每个文件里的日志都是按照时间戳从小到大的顺序排序的。你希望将这10个较小的日志文件,合并成一个日志文件,合并后的日志文件仍然按照时间戳的由小到大的顺序排列。如果处理上述排序任务的机器内存之哟1GB,你有什么好的解决思路,能“快速”地将这十个日志文件合并?
首先我们应该想到,每次从各个日志文件中选取最小的时间戳调入内存进行比较,在内存中将时间戳最小的写入硬盘,每次在内存中进行十个数的比较,依此写入硬盘,做完全部比对的时间为10*x其中x为10个日志文件中时间戳的个数。