精华内容
下载资源
问答
  • ​ 使用UUID生成 唯一、不重复 的字符串。 import java.util.UUID; public class UUIDUtils { public static String getUUID(){ return UUID.randomUUID().toString().replace("-",""); } } 什么是UUID: ​ ...

    [文章标题:_02_使用UUID获取唯一标识] [202012-29 03:39:00]
    需求:

    ​ 很多时候我们会需要用到 生成不重复的唯一标识的 的功能,如数据库表中的主键等。

    实现:

    ​ 使用UUID生成 唯一、不重复 的字符串。

    import java.util.UUID;
    public class UUIDUtils {
        public static String getUUID(){
            return UUID.randomUUID().toString().replace("-","");
        }
    }
    

    什么是UUID:

    ​ UUID 通用唯一识别码(Universally Unique Identifier),UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息。UUID是 国际标准化组织 ISO 提出的一个概念。UUID是一个128比特的数值,这个数值可以通过一定的算法计算出来。目前最广泛应用的UUID,是微软公司微软公司的全局唯一标识符(GUID)。

    UUID在发展过程中,为了适应不同的需要,产生了5个版本:

    • uuid1: 基于时间戳、机器MAC地址生成。由于使用MAC地址,可以保证全球范围的唯一性。
    • uuid2: 只基于时间戳,不常用。
    • uuid3: 基于namespace和一个自定义字符串,不常用。
    • uuid4: 只基于随机数,最常用,但不推荐,重复几率不太能让人接受。
    • uuid5: 只基于namespace,不常用。

    UUID组成:

    UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

    UUID由以下几部分的组合:

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

    (2)时钟序列。

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

    标准的UUID格式为:xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx (8-4-4-4-12)。

    A那个位置,代表版本号,由于UUID的标准实现有5个版本,所以只会是1,2,3,4,5
    B那个位置,只会是8,9,a,b

    展开全文
  • JAVA UUID 生成唯一标识

    2021-03-17 23:28:57
    UUIDJDK API 是这么说的:​ “表示通用唯一标识符 (UUID) 的类。 UUID 表示一个 128 位的值。”1个UUID是1个16字节(128位)的数字;为了方便阅读,通常将UUID表示成如下的方式:123e4567-e89b-...

    需求

    项目在用户未登录状态下,根据问题回答答案来进行修改密码。我们需要保证当前用户的身份。对用户状态进行唯一的记录,用于对用户接下来的修改密码操作进行判断。

    UUID

    JDK API 是这么说的:

    ​ “表示通用唯一标识符 (UUID) 的类。 UUID 表示一个 128 位的值。”

    1个UUID是1个16字节(128位)的数字;为了方便阅读,通常将UUID表示成如下的方式:

    123e4567-e89b-12d3-a456-426655440000

    1个UUID被连字符分为五段,形式为8-4-4-4-12的32个字符。

    UUID由以下几部分的组合:

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

    (2)时钟序列

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

    代码实现

    public static void main(String[] args) {

    UUID uuid = UUID.randomUUID();

    System.out.println(uuid);

    }

    没错其实就是这么简单的一行就生成了。

    打印一下:

    d57f476a-696e-416f-bbf8-48973a47c2b5

    这就是唯一标志码。但显得冗长,不够友好。如果在URL后面做参数,更加不够友好。还有存储一个UUID要花费更多的空间。获取的时间倒不必考虑太多。看看有多糟心

    cdaa8a5fd54b08f2619bd27531b81a09.png

    长token

    从网上大牛那里找到的解决办法

    public static String[] chars = new String[] {

    "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",

    "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",

    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V","W", "X", "Y", "Z"

    };

    public static String getShortUuid() {

    StringBuffer stringBuffer = new StringBuffer();

    String uuid = UUID.randomUUID().toString().replace("-", "");

    for (int i = 0; i < 8; i++) { // 32 -> 8

    String str = uuid.substring(i * 4, i * 4 + 4);

    // 16进制为基解析

    int strInteger = Integer.parseInt(str, 16);

    // 0x3E -> 字典总数 62

    stringBuffer.append(chars[strInteger % 0x3E]);

    }

    }

    跑一下测试用例1000个。查重,没有。解决

    展开全文
  • UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码...

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

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

    /**

    * 产生一个32位的GUID

    * @return

    */

    public static String newGUID()

    {

    UUID uuid = UUID.randomUUID();

    return uuid.toString();

    }

    展开全文
  • uuid通用唯一识别码

    2020-12-20 13:45:30
    UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) ...

    UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft’s Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。

    import java.util.UUID;( 导入包)

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

    System.out.println("GUID :"+UUID.randomUUID().toString().trim().replace("-", ""));
    

    // 生成了32位长度的字符串
    GUID :00c20a09d3074824b668ea4300a54df4
    可以用来拼接作为路径,或者图片的前缀名

    以下是具体生成UUID的例子:

    [java] view plain copy

    package test;  
    
    import <a href="http://lib.csdn.net/base/java" class='replace_word' title="Java 知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.util.UUID;  
    
    public class UUIDGenerator {  
        public UUIDGenerator() {  
        }  
    
        public static String getUUID() {  
            UUID uuid = UUID.randomUUID();  
            String str = uuid.toString();  
            // 去掉"-"符号  
            String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);  
            return str+","+temp;  
        }  
        //获得指定数量的UUID  
        public static String[] getUUID(int number) {  
            if (number < 1) {  
                return null;  
            }  
            String[] ss = new String[number];  
            for (int i = 0; i < number; i++) {  
                ss[i] = getUUID();  
            }  
            return ss;  
        }  
    
        public static void main(String[] args) {  
            String[] ss = getUUID(10);  
            for (int i = 0; i < ss.length; i++) {  
                System.out.println("ss["+i+"]====="+ss[i]);  
            }  
        }  
    }  
    

    结果:

    [java] view plain copy

    在这里插入代码片ss[0]=====4cdbc040-657a-4847-b266-7e31d9e2c3d9,4cdbc040657a4847b2667e31d9e2c3d9  
    ss[1]=====72297c88-4260-4c05-9b05-d28bfb11d10b,72297c8842604c059b05d28bfb11d10b  
    ss[2]=====6d513b6a-69bd-4f79-b94c-d65fc841ea95,6d513b6a69bd4f79b94cd65fc841ea95  
    ss[3]=====d897a7d3-87a3-4e38-9e0b-71013a6dbe4c,d897a7d387a34e389e0b71013a6dbe4c  
    ss[4]=====5709f0ba-31e3-42bd-a28d-03485b257c94,5709f0ba31e342bda28d03485b257c94  
    ss[5]=====530fbb8c-eec9-48d1-ae1b-5f792daf09f3,530fbb8ceec948d1ae1b5f792daf09f3  
    ss[6]=====4bf07297-65b2-45ca-b905-6fc6f2f39158,4bf0729765b245cab9056fc6f2f39158  
    ss[7]=====6e5a0e85-b4a0-485f-be54-a758115317e1,6e5a0e85b4a0485fbe54a758115317e1  
    ss[8]=====245accec-3c12-4642-967f-e476cef558c4,245accec3c124642967fe476cef558c4  
    ss[9]=====ddd4b5a9-fecd-446c-bd78-63b70bb500a1,ddd4b5a9fecd446cbd7863b70bb500a1  
    
    
    

    UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。

    使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用惟一标识符有非常大的区别。

    通用惟一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球惟一标识符(GUID),这也是通用惟一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用惟一标识符是在网罗计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。

    展开全文
  • UUID生成唯一标志

    2020-12-20 19:16:34
    UUID.java UUID ...UUID保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。 U
  • # use machine specific uuid, last 16 char will be the same if machine is the samemid = uuid.uuid1().get_hex()[16:]1 uuid的其他模块 概述: UUID是128位的全局唯一标识符,通常由32字节的字符串表示。...
  • MySQL 的 UUID() 函数中,前三组数字从时间戳中生成,第四组数字暂时保持时间戳的唯一性,第五组数字是一个 IEEE 802 节点标点值,保证空间唯一。使用 UUID() 函数,可以生成时间、空间上都独一无二的值。 MySQL 5.1...
  • UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,它使用某种规则,而不是某种中心化的自增方式,来保证这个识别码的全局唯一性。UUID 有非常多的使用场景,比如在分布式系统中,需要生成全局唯一 ...
  • 对于App云平台系统,如何唯一标识移动设备非常重要. 否则,每次用户在设备上卸载并重新安装应用程序时,后端系统只能将用户视为全新用户.在Android上识别设备的唯一性. 因为这个圆圈太乱了,所以设备本身的任何标识...
  • 原文地址:http://my.oschina.net/snowsalt/blog/3495 UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的...
  • 为了保证UUID唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素。 含义 经由一定的算法机器生成 为了保证UUID唯一性,规范定义了包括网卡MAC地址、时间戳、...
  • import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Random;import java.util.concurrent..../*** 提供通用唯一识别码(...
  • UUID:通用唯一识别码 (Universally Unique Identifier)UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太...
  • 前言:最近,在做用redis存储用户消息的时候,采用的结构如下:Key ...也就是说只是在key后面加时间我的时间格式是yyyy-MM-ddHH:mm:ss,这样子万一有重复key怎么办,消息就会被覆盖了于是想到在后面加uuid,但是uuid...
  • UUID(UniversallyUniqueIdentifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和...
  • UDID在iOS6的时候被弃用,使用UUID来作为设备的唯一标识。获取到UUID后,如果用归档存储,当程序被卸载后重装时,再获得的UUID和之前就不同了(因为会重新生成一个新的)。使用keychain存储可以保
  • UUID的生成策略:UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。UUID的底层是由...
  • UUID是通用唯一识别码(Universally Unique Identifier)的缩写, 其目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,就不需考虑数据库建立时的名称重复...
  • 并且保证生成的id是全局唯一的。 ID生成规则要求: 全局唯一 趋势递增 单调递增 信息安全 含时间戳 ID生成系统的可用性要求: 高可用 低延迟 高QPS 通用解决方案及其问题 UUID 无序的UUID会导致入库性能变差,为...
  • MySQL UUID做主键

    2021-02-03 18:55:36
    唯一还算熟悉的数据库就算是MySQL了,大概使用MySQL的人,百分之九九以上的人会使用Autoincrement ID做主键,这是可以理解的,因为MySQL的自增ID效率很高,使用也很方便。那么剩下的百分之一的人使用什么做主键呢...
  • UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。 2、UUID的组成 UUID由以下几部分组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成...
  • UUID

    2021-10-14 06:11:42
    UUID,是Universally Unique Identifier的缩写,UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息; GUID,是Globally Unique Identifier的缩写,跟UUID是同一个东西,...
  • MySQL生成UUID

    2021-01-18 19:01:46
    UUID函数在MySQL中,可以用uuid()函数来生成一个UUID,如下图:replace函数默认生成的uuid含有'-',我们可以使用replace函数替换掉'-',SQL如下:select replace(uuid(),"-","") as uuid;结果如下:Insert语句中使用...
  • 前言 我们开发的时候,数据库表总会有一个主键,以前我们...UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用
  • Java生成UUID

    2021-03-03 12:10:17
    UUID具有以下涵义:经由一定的算法机器生成为了保证UUID唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。UUID的复杂特性在保证了其...
  • 在开发过程中,我们经常会被要求获取每个设备的唯一标示,以便后台做相应的处理。我们来看看有哪些方法来获取设备的唯一标示,然后再分析下这些方法的利弊。具体可以分为如下几种:UDIDIDFAIDFVMACkeychain下面我们...
  • JS生成UUID

    2021-03-03 15:22:52
    它是把硬件地址、时间以及随机数结合在一起,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和...
  • Oracle 生成uuid,查询uuid

    2021-05-07 04:46:04
    Oracle 生成uuid,查询uuid发布时间:2020-03-03 05:30:04来源:51CTO阅读:298作者:wx5dcc1bb1ac912如果还没有创建表,那么使用下面的方式创建就可以了。create table testuu(id varchar2(2000) default sys_guid()...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,842
精华内容 13,936
关键字:

uuid怎么保证唯一