可以估计每个文件的大小为5G*64=300G,远大于4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 遍历文件a,对每个url求取hash(url)%1000,然后根据所得值将url分别存储到1000个小文件(设为a0,a1,...a999)当中。这样每个小文件的大小约为 ...
问题:有 亿个 url,每个 url 大小小于 B,要求去重,内存只给你 G 思路: .首先将给定的url调用hash方法计算出对应的hash的value,在 亿的url中相同url必然有着相同的value。 .将文件的hash table 放到第value n台机器上。 .value n是机器上hash table的值。 将文件分布在多个机器上,这样要处理网路延时。假设有n台机器。 gt gt ...
2018-06-05 15:01 1 5966 推荐指数:
可以估计每个文件的大小为5G*64=300G,远大于4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 遍历文件a,对每个url求取hash(url)%1000,然后根据所得值将url分别存储到1000个小文件(设为a0,a1,...a999)当中。这样每个小文件的大小约为 ...
题目描述:给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url? 分析:我们先来看如果要把这些URL全部加载到内存中,需要多大的空间。 1MB = 2^20 = 10^6 = 100W 1GB = 2^30 = 10 ...
假如每个url大小为10bytes,那么可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G,所以不可能将其完全加载到内存中处理,可以采用分治的思想来解决。 Step1:遍历文件a,对每个url求取hash(url)%1000,然后根据所取得的值将url分别存储到1000 ...
问: linux的虚拟内存是4G,而每个进程都有自己独立的4G内存空间,怎么理解? 每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那么每个进程都有4G的话岂不都要运行内核了,这样是不是很浪费很低效? 答: 4G ...
问:每个进程所拥有的4G独立的虚拟内存空间是什么意思?linux系统的虚拟4G空间中,高位的1G是用于系统内核运行的,那么每个进程都有4G的话岂不都要运行内核了,这样是不是很浪费很低效? 答:Linux不大清楚,不过看你描述和Windows类似。32位的Windows,每个进程也有4G ...
题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的 空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。 分析: 既然要找中位数,很简单就是排序的想法。那么基于字节的桶排序是一个可行 ...