假设你要做一个类似微博短链接的短链接服务,短链接服务生成的URL很短例如:http://t.cn/E70Piib,大家应该都认为链接中的E70Piib对应的是存放长链接地址的数据记录的ID,但是这个由大小写字母和数字组成的唯一ID是如何生成的呢?我们在刚学编程的时候就用过方法尝试拼接一个足够唯一的字符串(比如时间戳加上用户ID等),然后用MD5或者SHA1哈希算法计算出一个哈希值。通过这种方法获得的唯一ID可能比原始链接更好。长度更长,那么如何优雅地生成一个足够短的字符串的唯一ID呢?我们先来看一道数学题。普通的数字身份证用十进制表示,十进制的每一位都有10种可能(0-9),所以一个5位十进制数最多可以表示10*10*10*10*10=100,000个身份证。现在用32进制表示一个5位数字需要多少位数?
