论坛首页 综合技术论坛

微薄短域名原理及作用

浏览 28080 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (13) :: 隐藏帖 (11)
作者 正文
   发表时间:2011-03-30  
arust 写道
denger 写道
風一樣的男子 写道
主要是因为微薄140限制,如果没限制,谁那么无聊搞个映射?

如果只是字数问题的话,照我说直接 <a href="http://bjwb.bjd.com.cn/html/2011-03/23/content_382746.htm" target="_blank"><url></a>, 象这样统一处理就 OK了,还搞什么短域名。


应该不仅仅是140限制,可能也是为了避免同样的链接被大量用户引用,缩短链接长度以便节省存储空间,微薄的用户关注的都是一些热点话题,用户发的不同微薄中出现同样的链接是比较常见的。


恩恩,提醒我啦。有这方面原因!受教啦!
0 请登录后投票
   发表时间:2011-03-30   最后修改:2011-03-30
chan.d 写道
楼主显然对这个问题没有怎么研究


能力不够不知道怎么去研究人家的实现。只能自己在这里猜想一下实现的原理。提出来。供大家指正。

看来你很有想法呀。提出来分享一下呀。我欢迎!!

  ps:看来javaeye的高手真的很多呀。竟然有人投我是新、手帖!!看了得向大家学习啦。竟然有这么多高手就出来分享一下呀。
0 请登录后投票
   发表时间:2011-03-30  
shorturl的算法其实很简单的
就是先对地址做运算生成一个唯一串
然后用唯一串和源地址做key value映射即可
解析的时候 通过唯一串找到原地址 然后通过跳转
0 请登录后投票
   发表时间:2011-03-30  
这个其实最主要的不是为了长度,而是为了中国特色的过滤机制,要把某些链接XX
0 请登录后投票
   发表时间:2011-03-30  
lotusk 写道
这个其实最主要的不是为了长度,而是为了中国特色的过滤机制,要把某些链接XX

??说的详细一些。

我怎么感觉不是你说的意思呢。
0 请登录后投票
   发表时间:2011-03-30  
核心只是一个进制转换算法。比如 PHP 实现:

function shorten($url, $salt = '') {
    $base62_units = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $base2_unit30 = (('0x' . substr(md5($url . $salt), 0,) * 1) & 0x3fffffff;
    $base62_unit6 = '';
    while ($base2_unit30 > 0) {
        $base62_unit6 .= $base62_units[$base2_unit30 & 61];
        $base2_unit30 >>= 5;
    }
    return $base62_unit6;
}

for ($i = 0; $i < 100; $i++) {
    echo shorten($i) . '<br />';
}

生成的短地址做 key,原地址做 value,存到一个 kv 数据库里。
0 请登录后投票
   发表时间:2011-03-30   最后修改:2011-03-30
晕,代码变成表情了。表情部分是“8 )”。
这样生成的空间理论上有 2^30 约10亿个,不过随着量的增多,肯定会出现碰撞。
0 请登录后投票
   发表时间:2011-03-30  
还有一个重要作用是做统计和挖掘。每一次点击和引用服务提供方都有记录和跟踪。
0 请登录后投票
   发表时间:2011-03-30  
liuyf 写道
还有一个重要作用是做统计和挖掘。每一次点击和引用服务提供方都有记录和跟踪。


好,这个说法有道理。赞成。不知道。sina和腾讯用到这个功能没。哈哈!
0 请登录后投票
   发表时间:2011-03-30  
diogin 写道
核心只是一个进制转换算法。比如 PHP 实现:

function shorten($url, $salt = '') {
    $base62_units = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $base2_unit30 = (('0x' . substr(md5($url . $salt), 0,) * 1) & 0x3fffffff;
    $base62_unit6 = '';
    while ($base2_unit30 > 0) {
        $base62_unit6 .= $base62_units[$base2_unit30 & 61];
        $base2_unit30 >>= 5;
    }
    return $base62_unit6;
}

for ($i = 0; $i < 100; $i++) {
    echo shorten($i) . '<br />';
}

生成的短地址做 key,原地址做 value,存到一个 kv 数据库里。


恩恩。具体的算法就不想在讨论啦。怎么弄的可以。我相信sina和腾讯的算法也不一定一样!

关键是总体思路。 key,value这样方式是肯定的。但是最终落地是不是数据库就两说啦。

有可能是nosql 的实现。还有就是缓存!

另外我还比较关注。短域名的好处!!大家提了一些。大家继续补充。。。。。过几天我整理汇总哟!!!
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics