短网址算法实现
短网址或微小的网址是用来表示长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 URL
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 URL into database
break loop1:
else
retrieve the stored URL 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,并重定向之。
3 楼 lz_cleaner 2010-01-25 引用
1.便于记忆,而不是记50个或多个字符的URL
2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。
1、便于记忆么?我倒不觉得,除非网址特别的长,再说了有多少人会专门记忆那么长的网址呢?
2、我觉得这个东西,也就是用于网址的压缩(数据压缩)有用处。
4 楼 chinalu 2010-01-25 lz_cleaner 写道引用
1.便于记忆,而不是记50个或多个字符的URL
2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。
1、便于记忆么?我倒不觉得,除非网址特别的长,再说了有多少人会专门记忆那么长的网址呢?
2、我觉得这个东西,也就是用于网址的压缩(数据压缩)有用处。
的确不是为了便于记忆
短地址的目的:像twitter之类的有字符限制,包括短信,
还有我看到过一本纸制的技术数,也写了短地址,方便读者把地址敲到地址栏上 5 楼 prowl 2010-01-25 urlrewriter 6 楼 renzhen 2010-01-25 网上应该有开源版本的短地址实现,可以参考吧,随即映射偷懒一下可以直接使用MD5或者sha吧,数据库可以使用key-value型,性能和未来的可扩展型可能会好些。 7 楼 JustDoNow 2010-01-25 目前国内的新浪微博(类twitter)就是用的短网址,不过你在写微博的时候是按长的字符计算字数,发表之后才会换算成短的url,感觉没起到缩短的作用,就是别人看的时候好看一些。
感觉md5算出来的还是长吧,短网址一般固定域名后面就是用5个字符区别网址 8 楼 zhanghaocool 2010-01-25 freesky110 写道
使用短网址的主要优点:
1.便于记忆,而不是记50个或多个字符的URL
2.当你想通过短信发送一个50个字符的URL给朋友,你只留下您的信息90个字符。
便于记忆不赞同,只是短了。比起来一长串有规律的字符串,它更不容易记忆。
域名申请短点,它就更短了。