一:使用数据库自增的方式
这个对于业务不复杂的需求来说,直接设置主键自增的形式,往表里面插入数据时该字段会默认从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)*