zoukankan      html  css  js  c++  java
  • Java生成UUID

    什么是UUID?
    UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符。UUID具有以下涵义:

    经由一定的算法机器生成
    为了保证UUID的唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。UUID的复杂特性在保证了其唯一性的同时,意味着只能由计算机生成。

    非人工指定,非人工识别
    UUID是不能人工指定的,除非你冒着UUID重复的风险。UUID的复杂性决定了“一般人“不能直接从一个UUID知道哪个对象和它关联。

    在特定的范围内重复的可能性极小
    UUID的生成规范定义的算法主要目的就是要保证其唯一性。但这个唯一性是有限的,只在特定的范围内才能得到保证,这和UUID的类型有关(参见UUID的版本)。

    UUID是16字节128位长的数字,通常以36字节的字符串表示,示例如下:

    3F2504E0-4F89-11D3-9A0C-0305E82C3301

    其中的字母是16进制表示,大小写无关。

    GUID(Globally Unique Identifier)是UUID的别名;但在实际应用中,GUID通常是指微软实现的UUID。

    UUID的版本

    UUID具有多个版本,每个版本的算法不同,应用范围也不同。

    首先是一个特例--Nil UUID--通常我们不会用到它,它是由全为0的数字组成,如下:

    00000000-0000-0000-0000-000000000000

    Java源码:

    package tools.uuid;
    
    
    import java.util.UUID;
    
    public class MyUUID {
        public static String getUUID() {
            UUID uuid = UUID.randomUUID();
            String str = uuid.toString();
            System.out.println("原始UUID: " + str);
            // 去掉"-"符号
            String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);
            System.out.println("去掉"-"符号: " + temp);
            return temp;
        }
    
        //获得指定数量的UUID
        public static String[] getUUID(int number) {
            if (number < 1) {
                return null;
            }
            String[] uuids = new String[number];
            for (int i = 0; i < number; i++) {
                uuids[i] = getUUID();
            }
            return uuids;
        }
    
        public static void main(String[] args) {
            System.out.println("---- 获取单个UUID ----");
            String uuid = getUUID();
            System.out.println("---- 获取多个UUID ----");
            String[] uuids = getUUID(5);
            for (int i = 0; i < uuids.length; i++) {
                System.out.println("uuids[" + i + "]=====" + uuids[i]);
            }
        }
    
    }

    运行结果:

    ---- 获取单个UUID ----
    原始UUID: f4958b2a-bdc8-4ea5-bed8-1246381c116a
    去掉"-"符号: f4958b2abdc84ea5bed81246381c116a
    ---- 获取多个UUID ----
    原始UUID: f1791418-6eb5-4538-bd2b-9f6547d8a967
    去掉"-"符号: f17914186eb54538bd2b9f6547d8a967
    原始UUID: e3b6451e-6073-4c11-9f35-b24b49b8fdab
    去掉"-"符号: e3b6451e60734c119f35b24b49b8fdab
    原始UUID: 9d53efac-d85e-486c-8bef-3009bb0654b0
    去掉"-"符号: 9d53efacd85e486c8bef3009bb0654b0
    原始UUID: 3c911454-034e-4b17-8daa-dd616b502744
    去掉"-"符号: 3c911454034e4b178daadd616b502744
    原始UUID: 9a634db6-b68b-4fa5-8389-b3ee35fc5992
    去掉"-"符号: 9a634db6b68b4fa58389b3ee35fc5992
    uuids[0]=====f17914186eb54538bd2b9f6547d8a967
    uuids[1]=====e3b6451e60734c119f35b24b49b8fdab
    uuids[2]=====9d53efacd85e486c8bef3009bb0654b0
    uuids[3]=====3c911454034e4b178daadd616b502744
    uuids[4]=====9a634db6b68b4fa58389b3ee35fc5992
  • 相关阅读:
    Sublime text追踪函数插件:ctags
    上传项目后服务器的一些设置
    svg可缩放矢量图形
    定时备份mysql
    phpstudy配置ssl
    thinkphp数据表操作恐怖事件。
    把一个数组和另一个数组放进同一个数组
    mysql数据库备份与还原命令
    mysql一些有用的链接
    MySQL各版本的区别
  • 原文地址:https://www.cnblogs.com/gongxr/p/13914299.html
Copyright © 2011-2022 走看看