+
 新版

那种算法能生成唯一值,短一点的,类似uuid

jack_jones 发布于 2022/08/31 13:10
阅读 1K+
收藏 0

想要生成唯一id,类似uuid一样,保证唯一

uuid太长了,想要短一些的

加载中
1
kakai
kakai

雪花算法,18位长整型

0
燃烧的时光
燃烧的时光

Uuid  md5  下,然后截取想要的长度

0
前_端

雪花比较好,长整

0
ArchitectureMaster
ArchitectureMaster

要短,又不能重复有个很简单的办法。

首先你要了解uuid或guid的字符组成。要知道无论是uuid还是guid都只有0-9,a-f。即16进制的字符串组成。

也就是他们肯定是不区分大小写而且只用到了16个字符!如果使用了大小写混合也可以将长度减一半而且不重复。

再加上a-z0-9A-Z 这样可选的范围就是26*2 + 10 也就是62个字符。

而base64正好合适。楼主可以想想36个区分大小写的字符不重复。那如果区分大小写是不是18个就可以了!

这样就可以实现变短而不会重复了。

 

 

0
d
dever2011

雪花算法

0
ArchitectureMaster
ArchitectureMaster

还有一种方法就是直接硬转,即把uuid转成字节数组,即序列化。

1.序列化后的uuid是16个字节。

2.然后把8个字节拆成8个字节的两组。

3.将两个8个字节数组转成long长整型。

4.转成字符串相加,这样得到两个18个长度的纯数字字符串。

5.接下来就非常好处理了将这36个10进制数字转为20进制,这样可得到一个18个长度20进制的字符。

这样18个字符是基于uuid的基础上的所以一定是不重复的。

一楼所谓的long类型雪花算法肯定是错的,用一半的容器去装百分百的数量内容怎么算都重。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部