56.随机产生的id重复问题

    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.效果

012311_oXEI_3015807.png

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

    }

}
 

转载于:https://my.oschina.net/springMVCAndspring/blog/1579632

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值