2019独角兽企业重金招聘Python工程师标准>>>
1.产生的id不会重复的原因
(1)uuid每次产生重复的概率 10亿分之一
(2) 两个uuid拼接 这样重复的概率为 100亿分之一
(3) 纳秒级别时间戳 1纳秒=0.00000 0001秒
java中System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意时间,甚至可能是负数……按照API的说明,nanoTime主要的用途是衡量一个时间段,比如说一段代码执行所 用的时间,获取数据库连接所用的时间,网络访问所用的时间等。另外,nanoTime提供了纳秒级别的精度,但实际上获得的值可能没有精确到纳秒。
ns(nanosecond):纳秒, 时间单位。一秒的10亿分之一,即等于10的负9次方秒。
常用作 内存 读写速度的单位,其前面数字越小则表示速度越快。
1纳秒=1000 皮秒
1纳秒 =0.001 微秒
1纳秒=0.000001 毫秒
1纳秒=0.00000 0001秒
2.效果
3.代码
package timeStamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
public class TestTimeStamp {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
StringBuffer sb = new StringBuffer();//
String random1 = UUID.randomUUID().toString().replaceAll("-", "");// uuid产生的随机数字 重复的机会10亿分之一
String random2 = UUID.randomUUID().toString().replaceAll("-", "");// uuid产生的随机数字
// 获取当前时间戳
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String time = sdf.format(date);
// 纳秒时间戳 怕出现负号
String nanotime = String.valueOf(System.nanoTime()).replaceAll("-", "1");
sb.append(random1);
sb.append(random2);
sb.append(time);
sb.append(nanotime);
System.out.println(sb.toString());
System.out.println();
}
}
}