大大们,能不能支个招呢?
回复 (16)
X
存数据库咯,重复了再生成一个咯。
或者打乱的 Base62,然后一直加一咯。
R
搞一堆36进制的池子,然后随机从池子里取。
Q
H
来一个 无脑 的 0.0 :
L
引用 i5ting@leapon 不考虑重复?
@i5ting 是欠考虑。那就取个基数,每次递增吧
A
说下场景吧
Q
引用 alsotang说下场景吧
@alsotang 类似于uber的分享码,每个用户注册都会生成一个。用 @xadillax 的第二个方案,把用户的唯一id映射到打乱的base62
A
引用 qinyang912@alsotang 类似于uber的分享码,每个用户注册都会生成一个。用 @xadillax 的第二个方案,把用户的唯一id映射到打乱的base62
@qinyang912 如果 base62 的方案可以接受的话,还是用 base36 吧。base62有大小写问题
R
用部分时间戳数字倒排,然后一个计数器 精确到一定时间段,比如每小时不多于一万人注册,产生的数字就没有问题
A
不限长度的话UUID最好. 非要限制5位的话大概要36^5个占位槽, 可以分段生成, 拿一个队列保存, 用一个取一个,用完放回去, 如果是单线程模型这么做很简单.
K
前几天刚看到github上有个库,是能够用于游戏的,号称能日生成百万不重复
L
uuid 里截一下?
I
引用 leaponuuid 里截一下?
@leapon 不考虑重复?
X
引用 alsotang@qinyang912 如果 base62 的方案可以接受的话,还是用 base36 吧。base62有大小写问题
@alsotang 反正差不多意思啦。
如果想再乱序点的话,加长一点,后面几位留作当前时间戳。并且 Base36 的字典可以完全打乱,类似于:
"1zdai9eu3cj2hf8wbp4go5yq7m6vrksnxlt"
K
https://github.com/dylang/shortid 找到了,就是这货
Q
参与回复
登录后即可参与回复。登录