读书人

转载 URL余地址压缩算法 微博短地址原

发布时间: 2012-10-14 14:55:08 作者: rapoo

转载 URL短地址压缩算法 微博短地址原理解析

短网址应用已经在全国各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。

我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.cn/2hytQx

为什么要这样做的,原因我想有这样几点:

    ?现在可以直接使用该方法,可以等到下面四组值:

    ?

    ShortUrl(http://www.me3.cn)[0];? //得到值fAVfui??
    ShortUrl(http://www.me3.cn)[1];? //得到值3ayQry??
    ShortUrl(http://www.me3.cn)[2];? //得到值UZzyUr??
    ShortUrl(http://www.me3.cn)[3];? //得到值36rQZn

    ?

    在存放这个URL的数据方面,我个人推荐TTServer,有的朋友可以没有听说过,下面是这个数据库的介绍:

    Tokyo Cabinet 是日本人 Mikio Hirabayashi(平林雄)のペジ 开发的一款DBM数据库(注:大名鼎鼎的DBM数据库qdbm就是他开发的),该数据库读写非常快。insert:0.4sec/1000000 recordes(2500000qps),写入100万数据只需要0.4秒。search:0.33sec/1000000 recordes (3000000 qps),读取100万数据只需要0.33秒。

    可以看到对于字典类型的数据Key/Value的查询,这个数据库可以说是我目前见过效率非常高的,况且他如此的小巧,用来对short url/long url的配对再好不过。

    该系统使用6个短码字符来表示任何长度的网址。 有效的字符代码是ASCII 'A'到'Z'和'0'的'5',其中每个字符包含2 ^ 5(32)状态。? 6短码字符可用于绘制32 ^ 6(1073741824)的网址?

    首先,你需要一个数据库表来存储和检索你映射的网址。?

    MD5是128位hash码(4个整数,每个整数4个字节)。因此,一个url的MD5码,有2的128次方(即2e128)个可能。随意找出来的两个url的MD5码相等的可能性,是2e128分之一,即r=2e-128

    假如url经MD5后插入数据库,第一个url插入的不会发生重复,第二个MD5插入时,它跟第一条重复的概率是r。第三条url插入时,重复概率 是2×r,以此类推,第n条插入时发生重复的概率是(n-1)×r。n个MD5码,其中有两个重复的概率是这些概率加和。(1+2+3+...+(n- 1))×r = (1/2)×n×(n-1)×r

    对于n个MD5码的集合,存在重复的概率是(1/2)*(n/2e64)e2

    因此,只有n大到可以与2e64比拟,才需要考虑它的冲突问题。而2的64次方还是很大的。

    所以,只要不是恶意攻击,一般应用是不太会有collision的

读书人网 >互联网

热点推荐