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(); }}
}