短网址或微小的网址是用来表示长URL的URL。 例如,http://tinyurl.com/y9nyxza
将重定向到http://www.iteye.com/topic/577820

使用短网址的主要优点:

1.便于记忆,而不是记50个或多个字符的URL
2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。

实现自己的短网址需要如下步骤:

1.定义您自己的网址映射算法。
2.有一个数据库来存储映射的网址。
3.从数据库的短网址的映射找到原始的URL

我不知道别人是如何创建URL映射算法,但在这里,我将告诉你们,我的简单而快速的短网址实现:

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

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

CREATE TABLE mappedURL (的CREATE TABLE mappedURL(
shortCode char(6) not null,
lognURL  text not null,
PRIMARY KEY  shortCodeInd (shortCode),
);

其次,你需要定义一个算法将长的URL映射到短的URL。 以下是建议的算法:

loop1: while true loop1:
calculate md5 of the
loop2: from 1st 4 bytes to 4th 4 bytes of md5 result loop2:
cast the 4 bytes to an integer
loop3: for shortCodeChar[0] to shortCodeChar[5]
use 1st 5 bits of the integer to find the value in codeMap
remove 5 bits from the integer
end loop3
save shortCodeChar as shortCode
if shorCode does not exist in database
insert the short code and original into database
break loop1:
else
retrieve the stored from database
if original URL equals to URL stored in database
break loop1:
end if
end if
end loop2
insert ‘-‘
end loop1
return shortCode

Note: codeMap contains value of valid characters from ‘a’ to ‘z’ (index 0 to 25) and ‘0’-‘5’ (index 26 to 31).

第三,你需要创建一个网页,从数据库的短网址的映射找到原始的URL,并重定向之。

 

算法原理
算法一
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算法,算法四可以算作是此算法的一种实现,此算法一般不会重复,但是如果是统计的话,就有很大问题,特别是对域名相关的统计,就抓瞎了.

随机文章

添加wordpress幻灯片插件FlippingBook WordPress Gallery Plugin实现相册
添加wordpress幻灯片插件FlippingBook WordPress Gallery Plugin实现相册

百度bae签名函数
百度bae签名函数

Firefox os和Tizen os将会怎样
Firefox os和Tizen os将会怎样

《 AngularJS深度剖析与最佳实践》安装front-jet失败
《 AngularJS深度剖析与最佳实践》安装front-jet失败

起凡被黑?咋做任务的空间几天都打不开啊
起凡被黑?咋做任务的空间几天都打不开啊

相关文章

“太阳能墨水”印在纸上就可以发电哦
“太阳能墨水”印在纸上就可以发电哦

Java基础第四讲:Java基本语法(三)
Java基础第四讲:Java基本语法(三)

wordpress3.5后台HTML编辑器添加快捷标签按钮
wordpress3.5后台HTML编辑器添加快捷标签按钮

PHP版Google People API的坑
PHP版Google People API的坑

百度新首页看法
百度新首页看法

百度与微软必应bing的合作
百度与微软必应bing的合作

内容分享:道招
本文链接:实现短网址功能
道招声明:除特别标注或作者不详外,本站所有文章均为原创,转载请注明。欢迎共同关注互联网!