字符串间不能冲突以及字符串中字母大小写不敏感
|
1
自增ID -> 无限
6位字符串 -> 有限 把无限集映射到有限集这种事。。 |
|
qiayueJul 26, 2013
2
数字 0-9 10个
字母 a-z 26个 字母 A-Z 26个 字符 _和- 2个 用以上字符按照 64 (10 + 26 + 26 +2 = 64) 进制与自增 ID 进行一一对应 另外,64^6 = 68719476736 ,最多 687 亿数据 要想更多数据,增大进制,也就是增多字符即可 |
|
qiayueJul 26, 2013
3
没看清楚字母大小写不敏感,那么,就只能是去掉大写字母,成了 38 进制了
|
|
jyboxJul 26, 2013
6
MD5取前6位...
|
|
rrfengJul 26, 2013
9
我估计你的自己设计算法了……
|
|
13
微博短链接貌似很符合我的要求,谁能把短链接算法跟我说说,麻烦了
|
|
binuxJul 26, 2013
15
将6位字符按照一定的规律选出一定量,随机洗牌,存下来
不够了,再选一定的量,随机洗牌,存下来 |
|
msg7086Jul 27, 2013
17
@leonwong http://ra.gg/!iMD4o 我实现的。
|
|
79bxh9bJul 28, 2013
21
id转成字符串,前面用0补足位数,再把id字符串反转,再一步base58编码
想更随机只要给base58的字典做随机乱序就行 |
|
shinyJul 28, 2013
24
@leonwong 如果短网址代码就能满足需求,有个好处是足够简单,能够直接互转。以下是我写的 PHP 版本和 python 版本,最初生成的 PHP 算法来源于 phurl。
http://gist.github.com/shiny/6097499 http://gist.github.com/shiny/6097505 |
|
shinyJul 28, 2013
27
|
|
79bxh9bJul 28, 2013
31
@leonwong 其实楼上shiny贴的代码就是base算法,只是用了54个字符。
base58就是用了58个字符的版本,123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ |
|
manoonJul 28, 2013
32
mongodb 不就是这样的么?
|