现在的位置: 首页 > 综合 > 正文

给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url

2013年10月22日 ⁄ 综合 ⁄ 共 292字 ⁄ 字号 评论关闭

 可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G,不可能将其完全加载到内存中处理,考虑采取分而治之的方法。

  • 第一步:遍历文件a,使用Hash函数将a文件中的url分别存储到1000个小文件中,这样每个小文件的大约为300M;遍历文件b,使用相同的Hash函数,将每个url存储到1000个小文件中。这样,所有可能相同的url都存在对应的小文件中。
  • 第二步:求每对小文件中相同的url,可以把其中一个小文件的url存储到hash_set中。然后遍历另一个小文件的每个url,看其是否在刚才构建的hash_set中,如果是,那么就是共同的url,存到文件里面就可以了。

抱歉!评论已关闭.