V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
skywalkboy
V2EX  ›  问与答

Java 如何生成 18 位的唯一 id

  •  
  •   skywalkboy · Jun 7, 2017 · 5332 views
    This topic created in 3247 days ago, the information mentioned may be changed or developed.

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

    9 replies    2017-06-07 18:55:30 +08:00
    ihuotui
        1
    ihuotui  
       Jun 7, 2017 via iPhone
    参考微信消息 id
    skywalkboy
        2
    skywalkboy  
    OP
       Jun 7, 2017
    @ihuotui 微信消息的是 16 位的数字吧,请教这个如何生成
    leejanfin
        3
    leejanfin  
       Jun 7, 2017 via iPhone
    先生成 uuid 然后设计一个算法转成 16 位的数字 ID ?
    skywalkboy
        4
    skywalkboy  
    OP
       Jun 7, 2017
    @leejanfin 这个可以直接生成 16 位吧,不需要再通过 uuid
    honeycomb
        5
    honeycomb  
       Jun 7, 2017 via Android
    可以看一下 UUID 的内部实现,JRE 的实现就是新建了一个 securerandom,导出 16 个字节,再把 UUID 格式 4 规定的 4 个比特替换成定值。

    可以用类似的方法生成 18 位唯一 id
    honeycomb
        6
    honeycomb  
       Jun 7, 2017 via Android
    java.util.UUID.randomUUID()
    ihuotui
        7
    ihuotui  
       Jun 7, 2017 via iPhone
    @skywalkboy 参考思路啊,具体要什么自己变啊
    yuhuan66666
        8
    yuhuan66666  
       Jun 7, 2017 via Android
    @honeycomb 生产中发现有时候又很高几率重复。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5582 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 07:26 · PVG 15:26 · LAX 00:26 · JFK 03:26
    ♥ Do have faith in what you're doing.