您的位置:首页 > 编程语言 > Java开发

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

2013-10-15 08:51 225 查看
// 初始化数据

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了。

所以告诫一下,各位开发同仁,如果用自我主键(程序控制),要力减主键作用域,缩小主键的使用范围。从而达到数据的唯一性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: