JAVA生成随机序列-之自我体验

// 初始化数据
List<Requirement> reqTemp = new ArrayList<Requirement>();
            for (Requirement req : reqList) {
                req.setReqId(StrUtil.numberUUID());
                req.setCreateDate(new Date());
                req.setUpdateDate(new Date());
                req.setIsSoftDel("1");

                req.setReqLevel(getLevel(req.getReqLevel()));                 

               req.setReqPerson(

this.getUserId(req.getReqPerson()));
                reqTemp.add(req);

            }


// 生成随机数
    public static String numberUUID() {
  String numTemp = String.valueOf(System.currentTimeMillis());
        return numTemp;
    }


该成静态资源后依旧不行:


public String strUUID() {
        return String.valueOf(System.currentTimeMillis());
    }

我们的主键生成机制是想用系统执行的当前时间点,所以用了System.currentTimeMillis的方法。以为用户在某一个毫秒时间点上不会有两个人同时操作。
今天做批量插入时,发现在一个循环里面,一毫秒是可以做完上述的几步操作的,现在的计算机运算速度真的让人汗颜呀。

后来还是不想放弃用时间点来做操作,查找jdk-1.6 api后发现还有一个System.nanoTime的方法,可以精确到纳秒。预先在控制台上运行发现还是会有重复,NND。看来只能用UUID.randomUUID了。

所以告诫一下,各位开发同仁,如果用自我主键(程序控制),要力减主键作用域,缩小主键的使用范围。从而达到数据的唯一性。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值