Java 解决long类型数据在前后端传递失真问题

最近项目从Mysql数据库换成了PostgressSQL导致以前用的很舒服的id自增不能用了,pgsql想自增还要创建序列比较麻烦,所以换成了UUID和雪花算法,因此遇到long类型id传递失真。

雪花算法生成的分布式ID长度为19位,前端JS接收数字能够达到的最大精度为16位,因此导致前端得到的ID不是真正的ID。

1、UUID

优点:对于所有的UUID它可以保证在时间和空间上的唯一性,它通过MAC地址,时间戳,命名空间,随机数,伪随机数来保证生成ID的唯一性,有着固定的大小(128bit)。它的唯一性和一致性特点使得可以无需注册过程就能够产生一个新的UUID。

缺点:UUID无序,且UUID在意外情况下(mac地址等其他生成UUID的因素相同的情况)可能会出现UUID相同,且存在隐私安全问题(mac地址)。

2、雪花算法SnowFlake

算法结构:符号位+时间戳+工作进程位+序列号位,一个64bit的整数,8字节,正好为一个long类型数据。

优点:所有生成的id按时间趋势递增,整个分布式系统内不会产生重复id。
缺点<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值