java 生成objectid_【Java】唯一ID的几种生成方案

本文列举了多种在Java中生成唯一ID的方案,包括UUID、UUID变种、Zookeeper、数据库自增ID、批量生成、Redis、Twitter的Snowflake算法、百度UidGenerator以及美团Leaf。每种方案都有其优缺点,例如UUID简洁但长度过长,Snowflake算法高性能但依赖时钟。
摘要由CSDN通过智能技术生成

在互联网的业务系统中,涉及到各种各样的ID,订单id,支付id,退款id,下面我一一来列举一下,不一定全部适合,这些解决方案仅供你参考,或许对你有用。

方案:

1.UUID

算法的核心思想是结合机器的网卡、当地时间、一个随记数来生成UUID。

优点:本地生成,生成简单,性能好,没有高可用风险

缺点:长度过长,存储冗余,且无序不可读,查询效率低

2.UUID的变种

1)为了解决UUID不可读,可以使用UUID的变种,示例代码:

1import java.util.UUID;

2

3public class T {

4        public static String getOrderIdByUUId() {

5            int machineId = 1;//最大支持1-9个集群机器部署

6            int hashCodeV = UUID.randomUUID().toString().hashCode();

7            if(hashCodeV 

8                hashCodeV = - hashCodeV;

9            }

10            // 0 代表前面补充0

11            // 4 代表长度为4

12            // d 代表参数为正数型

13            return machineId + String.f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值