基础知识---微博中,短链接的生成方法

转载 2015年07月07日 14:57:03

 短网址(Short URL),顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。

例如:http://t.cn/SzjPjA  表示http://hi.baidu.com/cubeking/

  短网址服务,可能很多朋友都已经不再陌生,现在大部分微博、手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场。估计很多朋友现在也正在使用。 

       看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个想到的就是原来公司写的一个游戏激活码规则,也就是下面的算法2,

26个大写字母 26小写字母,10个数字,随机生成6个然后插入数据库对应一个id,短连接跳转的时候,根据字符串查询到对应id,即可实现相应的跳转!不过2的62次方,不知道有没有重复的,小概率可以,但是对应不是很大的网站应该足够了

自从twitter推出短网址(shorturl),继之国内各大微博跟风,google公开goo.gl使用API,短网址之风愈演愈烈.不得不说这是一个新兴又一大热门web2.0服务.现整理一下,包括完整短网址网站,短网址生成原理,算法举例,以及优劣比较,同时还介绍几个phper个人实现的.

算法原理
算法一
1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;

这种算法,虽然会生成4个,但是仍然存在重复几率,下面的算法一和三,就是这种的实现.

算法二
a-zA-Z0-9 这64位取6位组合,可产生500多亿个组合数量.把数字和字符组合做一定的映射,就可以产生唯一的字符串,如第62个组合就是aaaaa9,第63个组合就是aaaaba,再利用洗牌算法,把原字符串打乱后保存,那么对应位置的组合字符串就会是无序的组合。
把长网址存入数据库,取返回的id,找出对应的字符串,例如返回ID为1,那么对应上面的字符串组合就是bbb,同理 ID为2时,字符串组合为bba,依次类推,直至到达64种组合后才会出现重复的可能,所以如果用上面的62个字符,任意取6个字符组合成字符串的话,你的数据存量达到500多亿后才会出现重复的可能。
具体参看这里彻底完善新浪微博接口和超短URL算法,算法四可以算作是此算法的一种实现,此算法一般不会重复,但是如果是统计的话,就有很大问题,特别是对域名相关的统计,就抓瞎了.

简单生成短网址方法

<?php

02 function base62($x)
03 {
04     $show= '';
05     while($x> 0) {
06         $s= $x% 62;
07         if($s> 35) {
08             $s= chr($s+61);            
09         } elseif($s> 9 && $s<=35) {
10             $s= chr($s+ 55);
11         }
12         $show.= $s;
13         $x= floor($x/62);
14     }
15     return $show;    
16 }
17   
18 function urlShort($url)
19 {
20     $url= crc32($url);
21     $result= sprintf("%u", $url);
22     return base62($result);
23 }
24   
25 echo urlShort("http://hi.baidu.com/cubeking/");
?>





http://blog.csdn.net/oicqvc/article/details/7356355

相关文章推荐

微博短链接的生成算法(Java 版本)

最近看到微博的短链接真是很火啊,新浪、腾讯、搜狐等微博网站都加入了短链接的功能。之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少。短链接的主要职责...

微博短链接的生成算法(Java版本)

800x600 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ...

java高仿新浪微博短链接地址生成工具ShortUrlGenerator.java

仿新浪微博 短链接地址生成工具 ShortUrlGenerator.java 源代码下载地址:http://www.zuidaima.com/share/1550463378934784.htm...

javascript生成新浪微博短链接

生成长链接和端链接 长链接: 短链接: 生成
  • lifa1
  • lifa1
  • 2014年11月24日 12:02
  • 1877

新浪微博短链接的生成算法(Java版本)

最近看到微博的短链接真是很火啊,新浪、腾讯、搜狐等微博网站都加入了短链接的功能。之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少。短链接的主要职责...

仿新浪微博短链接生成短链接(使用62进制)

说仿新浪其实算是个嚼头,吸引人们的眼球,对于常规的进制算法可以去参看数据结构一书  通过取模方式计算出对应的n进制数  Java代码   int nv = 2; //进制  ...
  • sxhong
  • sxhong
  • 2014年02月18日 09:47
  • 1695

微博短链接原理

1. 什么是短链接  顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。短链接主要用在诸如微博,BB...

微博短链接解析ShortUrl

1.为什么用短链 短网址应用已经在各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如...

SEO基础知识:什么是nofollow的链接

nofollow的链接,介绍了早在2005年,最初是作为一种方法来对付垃圾评论,博客上。作为一个博客的人都知道,垃圾评论是活得很好。但由于引进的nofollow的链接属性的目的已经改变成为识别付费链接...
  • newcnzz
  • newcnzz
  • 2012年07月30日 03:31
  • 666

Web基础知识四之图像、链接、表格和列表

Chrome浏览器审查元素F12; 区分块级元素: display:block 块级元素 display:inline 行内元素 扩展: 1、嵌套问题 1、p 标记...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基础知识---微博中,短链接的生成方法
举报原因:
原因补充:

(最多只允许输入30个字)