java 生成20位唯一ID,生成不会重复的20位数字
来源:互联网 发布:网络直播的弊端例子 编辑:程序博客网 时间:2024/06/06 16:54
由于开发的需要,需要生成20位的长度的数字组成的id,首先要满足唯一性,那样的话就需要使用到时间戳来生成,java生成的时间戳是毫秒级的,理论上还是会发生产生相同的id,这是一件很头疼的一件事。
1、解决思路一:
在生成的13位长度的时间戳上面加上3位的自曾数
2017+1492764117143+XXX
代码如下:
package my;import java.text.SimpleDateFormat;/** * 获取20位随机数 * 4位年份+13位时间戳+3位随机数 * @author yuyu */public class GetTime {public static void main(String[] args) {//调用生成id方法System.out.println(getGuid()); }/** * 获取20位长度的数字id * @return */public static int Guid=100;public static String getGuid() {Common.Guid+=1;long now = System.currentTimeMillis(); //获取4位年份数字 SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy"); //获取时间戳 String time=dateFormat.format(now);String info=now+"";//获取三位随机数 //int ran=(int) ((Math.random()*9+1)*100); //要是一段时间内的数据连过大会有重复的情况,所以做以下修改int ran=0;if(Common.Guid>999){Common.Guid=100; }ran=Common.Guid;return time+info.substring(2, info.length())+ran; }}
输出如下:
201714927652216431002017149276542292210120171492765429776102*但是这样还是会有重复调用的时候随机数一样的情况,但是这样的概率会很小很小,但是理论上是有可能出现的,但在实际开发中不会达到如此高的运行速度,这样产生的id也是可以唯一的
1 0
- java 生成20位唯一ID,生成不会重复的20位数字
- Java生成32位全局唯一id
- 生成32位唯一ID
- java生成10位不重复的字母+数字组合
- 生成唯一32位ID编码代码Java(GUID)
- 【JAVA】生成一个32位的随机数。防止重复,保留唯一性
- 生成四位随机数,数字不重复
- 生成8位随机不重复的数字编号
- 【生成8位随机不重复的数字编号】
- java生成六位随机数,并且唯一。
- 随机生成id,不会重复
- java 生成随机6位每位都不重复的数字
- 生成唯一32位ID编码代码,以满足对ID编号的唯一性加资源性解决问题
- java中生成32位随机ID
- [Java]生成32位随机字符ID
- [Java]生成32位随机字符ID
- java生成32位随机ID
- java中生成32位随机ID
- mybatis问题org.apache.ibatis.binding.BindingException: Parameter 'loginId' not found.
- Java IO
- Tomcat 7最大并发连接数的正确修改方法
- Problem D: 字符类的封装
- BUG 记录
- java 生成20位唯一ID,生成不会重复的20位数字
- javaweb 中读取文件路径问题
- webpack开发和生产两个环境的配置详解
- mybatis 下载最新jar网站
- 字符串(含特殊符号)入库mesql报错:Incorrect string value: '\xF0\x90\x8D\x83...' for column
- intellij idea破解方法
- 搜索框,当点击回车键时,执行搜索操作
- PAT 1003. Emergency (25)
- Js中文参数传递到Php