你放心吧, 
 用到了 MAC、时间戳、随机数等因素生成

解决方案 »

  1.   

    UUID 是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字UUID由以下几部分的组合:  (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。  (2)时钟序列  (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
      

  2.   

    不会重复!重复就不叫UUID了。
      

  3.   

    但是,很多情况下,是不会使用UUID的,这个太长了。
      

  4.   

    Universally Unique Identifier如果重复了,就不能用Unique来修饰了
      

  5.   

    不会,JDK 中的 UUID 是随机数的版本,是采用 Random 子类 SecureRandom 强伪随机数据类产生的。
      

  6.   

    如果你可以去试图产生重复的,是可以的,但也没那么容易。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码等内容,大致可以理解如下(实际上不同实现所采用的具体规则还是有差异的):MAC地址:故意情况下可重复;
    机器标识:Java下就是JVM标识,故意情况下可重复;
    纳秒级当前时间:故意情况下可重复;
    随机数:小概率重复;
    自增序列数(或时钟序列):循环溢出时重复;总的来说,你需要大量机器运行海量JVM同时生成UUID,才能有很低概率得到重复的UUID。以上是我凭理解瞎掰,也可以看看稍微专业点的说法:http://zh.wikipedia.org/wiki/UUID与被陨石击中的机率比较的话,已知一个人每年被陨石击中的机率估计为170亿分之1[1],也就是说机率大约是0.00000000006 (6 x 10-11),等同于在一年内建立数十兆笔UUID并发生一次重复。换句话说,每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%。如果地球上每个人都各有6亿笔UUID,发生一次重复的机率是50%。
      

  7.   

    哪位大牛知道,如果只取uuid的前8位,重复的可能性有多大。
      

  8.   

    建议MD5后再取前8位,UUID的前8位MS是日期和时间
      

  9.   

    晕,不靠谱,我们的就重复了,还不只一次。写法
    StringUtils.replace(UUID.randomUUID().toString(), "-", ""),统计
    SELECT t.id , COUNT(T.id) c FROM RV_PAYMENTNOTE T GROUP BY T.id having count(t.id) > 1;
    1 57ba98c0e34342bfa34d0e88e4aed536 3
    2 39bc3b65e12641e49612bba4a9b38a04 2明细
    select t.id ,t.create_date from RV_PAYMENTNOTE t 
    where t.id in('57ba98c0e34342bfa34d0e88e4aed536', '39bc3b65e12641e49612bba4a9b38a04');
    1 39bc3b65e12641e49612bba4a9b38a04 2012-01-11 14:53:07
    2 39bc3b65e12641e49612bba4a9b38a04 2012-01-11 14:57:01
    3 57ba98c0e34342bfa34d0e88e4aed536 2011-10-25 18:14:30
    4 57ba98c0e34342bfa34d0e88e4aed536 2011-11-01 12:59:44
    5 57ba98c0e34342bfa34d0e88e4aed536 2011-11-01 12:37:55
      

  10.   

    可能你们数据库插入的时候出的问题。@ITFreeMan
      

  11.   


    主要是在虚拟环境中MAC地址有可能重复,这个问题不好解决。在部署时都需要检查一遍。或应用程序把所有机器的MAC地址汇总到一个地方,发生有重复的时间就报告给系统管理员,让他们人为地修改MAC地址。
      

  12.   

    不应该像22楼那样使用UUID,UUID是标识,其目的在于交换信息,其实是系统对系统的交换信息,而不是在系统内大量对象间标识,像楼主那样的,最好使用自定义的序列。