长度短点的uuid_更短且不失高效的UUID生成算法

Java原生的UUID长度为36位,嫌长

这里自己实现了一套自己的算法,来生成较短的UUID

由雪花算法启发而来,

大致原理是利用时间戳+随机值做值,然后转换成62进制(当然这个进制数你也可以搞成更多)

有一些参数可以控制一些行为,都在注释里了

你可以自己修改digits数组,乱乱序啥的,混淆一下,随机性可能更好一些

/**

* Java 原生的UUID为36位 or 32位,太长. 这里提供一个位数较短的UUID.

*

* UUID生成规则,当前时间减去'零时'的毫秒数 + N位随机数,转变成62进制的String类型.

*

* 当前配置可满足30年内每毫秒10^9分之一的碰撞.

*

* 实测现在长度为13位,想要更短的话可以调整下方的几个参数

*

* @author libing02 , on 11月 20, 2019.

*/

public class ShortUUID {

/**

* digits还可以扩,但是不要包含下面的SEPARATOR

*

* 也可以替换一个"乱序"digits排列,最终使uuid看起来不是有序的.

*

* 一旦用到生产环境,digits就不要再变动了,否则会出现重复

*

*/

private static final char[] digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值