Java生成ID不同场景的实现方式

本文介绍了Java中生成ID的四种常见方式:数据库自增、UUID、单用户随机短信验证码以及生成有序的唯一ID。数据库自增方式在删除记录后可能导致ID不连续;UUID全局唯一但不连续且不可读;短信验证码适用于特定场景;自定义有序ID则结合时间戳和随机数,兼顾唯一性和可读性,但在高并发下可能效率降低。
摘要由CSDN通过智能技术生成

一:使用数据库自增的方式

这个对于业务不复杂的需求来说,直接设置主键自增的形式,往表里面插入数据时该字段会默认从1开始往上累加。
这种方式不存在连续性,也就是说若表中存有3行数据,ID字段为1,2,3 那么当删除字段2时就变为1,3不具有连续性.合并表会出现ID重复的情况,上面说个使用自增ID能够在单个表中保证ID字段唯一,但两个表何为1个表,时不具有这种性质的。

二:使用全球唯一的UUID()方式

UUID是一种通用唯一识别码,而且本机生成不耗费资源,目的是用于分布式环境中唯一生成标志码,是由32个16进制数组成,
主要包括三部分:
(1)当前日期和时间,UUID的第一个部分是当前日期和时间,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列
(3)全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)
目前很多公司都使用该方式获取唯一标识,但该方式存在浪费不必要的数据库资源,且完全没有可读性,具体实现方式可参考如下

public static String getUUID() {
   
return UUID.randomUUID().toString().replace("-", "");
}
public synchronized static final String buildID() {
   
		synchronized (IDGenerate.class) {
   
			return UUID.randomUUID().toString().replaceAll("-", "");
		}
	}

三:单用户随机短信验证码

在平时登录,修改密码,验证相关信息时,我们经常需要实时接收一个短信验证码,输入验证码校验通过过可进行下一步操作,已确保该操作通过该手机号持有人所操作。
生成短信验证码的方式只要确保单用户随机的即可,生成位数可自定义:

            //生成6位随机数字
            System.out.println((int)((Math.random()*9+1)*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值