uuid 生成主键

来源:互联网 发布:阿里云 按流量计费 编辑:程序博客网 时间:2024/05/18 18:19

 

UUID(全球唯一编号)

 

UUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复。 
 
    UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID.

 

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

 

 

Java代码
import java.util.UUID;   
  1.   
  2. /**  
  3.      * @Title: generaterPrimaryKey  
  4.      * @Description: 以UUID的方式生成主键  
  5.      * @return String : 主键值  
  6.      */  
  7.     public static synchronized String generaterPrimaryKey() throws Exception{   
  8.            
  9.         UUID uuid = UUID.randomUUID();   
  10.            
  11.         if (null==uuid || "".equals(uuid.toString())){   
  12.             throw new NullPointerException("uuid is null");   
  13.         }   
  14.            
  15.         String primaryKey = String.valueOf(uuid);   
  16.            
  17.         if (null!=primaryKey && primaryKey.contains("-")){   
  18.             primaryKey = primaryKey.replaceAll("-""");   
  19.         }   
  20.            
  21.         return primaryKey;   
  22.     }  
  23. 转自http://xurichusheng.iteye.com/blog/1096644
原创粉丝点击