zoukankan      html  css  js  c++  java
  • java开发_UUID(Universally Unique Identifier,全局唯一标识符)和GUID(Globally Unique Identifier,全球唯一标识符)

    GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。

    所以GUID就是UUID。

    GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。

    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。

    下面是一个demo:

    package com.mytest;
    
    import java.util.UUID;
    /**
      * JDK1.5以上
      *
      */
    public class UUIDTest {
        public static void main(String[] args) {
            UUID uuid = UUID.randomUUID();
            System.out.println(uuid);
        }
    }

    输出结果:

    1 fd61384b-05a5-4030-885e-a6bd3b60ef1a

    下面是去除UUID中的"-"

     1 /**
     2  * 
     3  */
     4 package com.b510;
     5 
     6 import java.util.UUID;
     7 
     8 /**
     9  * @date 2012-11-7
    10  * @author xhw
    11  * 
    12  */
    13 public class UUIDTest {
    14     /**
    15      * 获得一个去掉"-"符号的UUID
    16      * 
    17      * @return String UUID
    18      */
    19     public static String getUUID() {
    20         String s = UUID.randomUUID().toString();
    21         // 去掉"-"符号
    22         return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
    23     }
    24 
    25     /**
    26      * 获得一个去掉"-"符号的UUID
    27      * 
    28      * @return
    29      */
    30     public static String getUuid() {
    31         String s = UUID.randomUUID().toString();
    32         // 去掉"-"符号
    33         return s.replace("-", "");
    34     }
    35 
    36     /**
    37      * 获得指定数目的UUID
    38      * 
    39      * @param number
    40      *            int 需要获得的UUID数量
    41      * @return String[] UUID数组
    42      */
    43     public static String[] getUUID(int number) {
    44         if (number < 1) {
    45             return null;
    46         }
    47         String[] ss = new String[number];
    48         for (int i = 0; i < number; i++) {
    49             if (i % 2 == 0) {
    50                 ss[i] = getUuid();
    51             } else {
    52                 ss[i] = getUUID();
    53             }
    54         }
    55         return ss;
    56     }
    57 
    58     public static void main(String[] args) {
    59         String[] ss = getUUID(10);
    60         for (int i = 0; i < ss.length; i++) {
    61             System.out.println(ss[i]);
    62         }
    63     }
    64 
    65 }

    输出结果:

     1 /**
     2 ca31b9c6bff04ecfb5dfd1675905338d
     3 78af094061c04fc6b578a0f62aa09373
     4 51f228083c6e4dcb855a8e733efded7c
     5 fceca14fdc194d889c05c1dcf8ccaf3b
     6 4c7695ed08494b978fa9737dfe36f6a5
     7 b7573dbadfe84ba2b3659d1e49f8bf08
     8 f4391ba40f114ad19711a507971a994b
     9 6e1d576301c749bcb7b7943c1782a920
    10 fb60bd4fe28d47c3975bb0eb6834e84e
    11 5238ba7d27c7452698e075f64472fadf
    12 */

    上面提供了两种方法,去除UUID中的"-"

     1 /**
     2      * 获得一个去掉"-"符号的UUID
     3      * 
     4      * @return String UUID
     5      */
     6     public static String getUUID() {
     7         String s = UUID.randomUUID().toString();
     8         // 去掉"-"符号
     9         return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
    10     }
    11 
    12     /**
    13      * 获得一个去掉"-"符号的UUID
    14      * 
    15      * @return
    16      */
    17     public static String getUuid() {
    18         String s = UUID.randomUUID().toString();
    19         // 去掉"-"符号
    20         return s.replace("-", "");
    21     }

    UUID由以下几部分的组合:

      (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同

      (2)时钟序列

      (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得

    缺点:UUID的唯一缺陷在于生成的结果串会比较长

  • 相关阅读:
    fedora29 安装mongodb 4.0,6问题记录
    乱花渐入迷人眼------从解决jqueryEasyUI上传插件提交ajax请求谈网页调试
    thinkphp5权限仿制
    基于tornado python pandas和bootstrap上传组件的mongodb数据添加工具
    tornado下pandas ndarray乱试
    一个tornado框架下的文件上传案例
    一例tornado框架下利用python panda对数据进行crud操作
    PHP 基础语法实例及注意事项
    转:github使用教程(重装系统后遇到问题该文章帮我解决了)
    ubuntu同步系统时间命令
  • 原文地址:https://www.cnblogs.com/hongten/p/java_uuid_guid.html
Copyright © 2011-2022 走看看