Java 如何生成 18 位的唯一 id

2017-06-07 12:00:32 +08:00
 skywalkboy

支付宝上领取的优惠券扫码使用的时候可以生成 18 位的数字 id,之前了解的都是 64 位的 id 或者 Guid/UUiD,请问这类 18 的 Id 如何生成

4582 次点击
所在节点    问与答
9 条回复
ihuotui
2017-06-07 12:18:00 +08:00
参考微信消息 id
skywalkboy
2017-06-07 13:22:36 +08:00
@ihuotui 微信消息的是 16 位的数字吧,请教这个如何生成
leejanfin
2017-06-07 14:06:23 +08:00
先生成 uuid 然后设计一个算法转成 16 位的数字 ID ?
skywalkboy
2017-06-07 17:26:01 +08:00
@leejanfin 这个可以直接生成 16 位吧,不需要再通过 uuid
honeycomb
2017-06-07 17:41:33 +08:00
可以看一下 UUID 的内部实现,JRE 的实现就是新建了一个 securerandom,导出 16 个字节,再把 UUID 格式 4 规定的 4 个比特替换成定值。

可以用类似的方法生成 18 位唯一 id
honeycomb
2017-06-07 17:42:39 +08:00
java.util.UUID.randomUUID()
ihuotui
2017-06-07 18:34:26 +08:00
@skywalkboy 参考思路啊,具体要什么自己变啊
yuhuan66666
2017-06-07 18:54:33 +08:00
@honeycomb 生产中发现有时候又很高几率重复。
samray
2017-06-07 18:55:30 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/366597

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX