@
kernel uuid 不是 32 字节,是 128 位 16 字节。
上面说加变量、加毫秒的都属于歪门邪道,uuid 的格式是有标准的。自己改了就不叫 uuid 了,当然你也可以自定义一个 id 格式,只要能解决问题就行。实际上 version 1 的 time based uuid 本身就是网卡地址加时间,并且按照标准时间戳是 100 纳秒级别的(实际实现不一定)。
关于各种类型 UUID,其优缺点,冲突概率的计算,看看维基百科就都清楚了:
https://en.wikipedia.org/wiki/Universally_unique_identifier另外我觉得单纯依赖于随机数除了依赖于随机数生成器的质量,就完全看脸了。500 万概率虽小,2000 万还有人中呢。randomUUID() 重复的情况网上一搜就会发现有人遇到过,如果对唯一性有很高的要求的话还是可以优化一下,很多人提到的 snowflake 也是一个很好的方案。