作者HYL (@Seattle)
看板Oversea_Job
标题Re: 请教一些面试问题
时间Fri Aug 24 19:33:13 2007
※ 引述《[email protected] (michaelz)》之铭言:
: ※ 引述《[email protected] (遗憾太常。)》之铭言:
: : 我会设计的方法:
: : URL的有效字元 A-Z a-z 加上一些符号,大概总共算是60个symbol,
: : n0*60^0+n1*60^1+n2*60^2+n3*60^3+n4*60^4+...+ni*60^i
: : 不过这个数字大的一塌糊涂,所以不是什麽好方法;
: : 如果不想要collision的话,资料量可能就是那麽大。
: : 至於partition的话,用开头字母就可以作uniform dist.了。
: 用开头字母的话大概会看到一堆http, www之类的东西..然後所有的东西都要放在同一个
: partition, 用整个url算hash code可能会好一点
理论上要产生两个有一样MD5 Hash Code的"有意义"文字是不可能的,
,可以把碰撞的状况省下来,顺便也不用存原始的 url进hashtable中
如果是我,会用 MD5-128来把 url编码。一个 url指占 16 byte 的空
间,四十亿个网页大概是 59GByte , 还塞得下硬碟空间。
考虑到读取的效益,所以会把资料割成 1MB大小的档案( 一个档案存2^16
个 hashcode ),总共有59,000 个;再考量到 file system对同一目
录底下若有大量档案,开档的效率会下降,所以分目录除存
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 67.183.24.112
※ 编辑: HYL 来自: 67.183.24.112 (08/24 19:34)
1F:推 willieliao:如果这个问题真的是用来作search engine的话还要存上次 08/24 23:40
2F:→ willieliao:抓的时间,不然yahoo.com的内容会停在199x年xd 08/24 23:42