Java产生唯一的随机数
2016-03-28 19:44
369 查看
Java产生唯一的随机数
说起唯一的随机数,可能很容易想到java.util.UUID,如下,可以产生32位长度的字符串。String str = UUID.randomUUID().toString().replaceAll("-", "");
但是这样并不是一定没问题的,单机多线程的情况下也可能出现重复的情况。
UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)。
为确保产生的字符串唯一,可在uuid后加一个随机数,如果再能加唯一用户名,电话xxx的就更加万无一失了。
String str = UUID.randomUUID().toString().replaceAll("-", "") + new Random().nextLong(); // 产生的字符串太长,浪费存储,再进行MD5 // 可以使用apache的org.apache.commons.codec.digest.DigestUtils // 也可以是使用java.security.MessageDigest进行加密 // 注意返回的是长度为16的byte数组,使用Hex转换成32的char数组,在转成字符串 String uuid = new String(Hex.encodeHex(DigestUtils.md5(str)));
相关文章推荐
- Java Integer比较
- 简析散列和散列码
- java第三周随笔
- java源码分析之ArrayList
- JavaWeb学习笔记——XML简介
- SPRING的事务传播特性
- spring websocket源码分析
- Eclipse导入工程中文乱码问题
- java第三次作业 io流
- Java千百问_03基本语法(004)_java中的运算符都有哪些
- javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题
- spring mvc 的@ResponseBody与@JsonIgnore实现json传值
- Floyd算法的java实现
- 白话Spring(中级篇)---注解(4)
- JavaWeb学习笔记——JavaEE基础知识
- spring mvc路径匹配原则
- SpringMVC拦截器(资源和权限管理)
- java对象属性和方法的引用
- Java第三次实验
- Java学习笔记2-JDBC存储过程