UUID.randomUUID()生成唯一识别码

1、UUID 的概念
UUID(Universally Unique Identifier):通用唯一识别码,是一种软件建构的标准。

UUID 目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

2、UUID的组成
UUID由以下几部分组合:

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

(2)时钟序列。

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

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

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

3、UUID.randomUUID()使用

直接生成的ID中有“-”存在,如果不需要,可以使用replace()方法去掉。

import java.util.UUID;

public class UUIDTest {
  public static void main(String[] args) {
    String uId = UUID.randomUUID().toString();
    System.out.println(uId);
    System.out.println(uId.replace("-", ""));
  }
}

4. 我给他指点了一下可以简单的使用 uuid 来做,但是 uuid 产生的是一个不重复的字符串。用来当做订单编号,显然不太合适。但是我们可以变个魔术,来让它变成一组数字。原理其实很简单,就是借助 java 中 String 类的 hashcode() 方法即可。整个代码实现如下所示:


1

2

3

4

5

6

7

8

9

10

11

public static String createOrderId() {  

    int machineId = 1;//最大支持1-9个集群机器部署  

    int hashCodeV = UUID.randomUUID().toString().hashCode();  

    if(hashCodeV < 0) {//有可能是负数  

        hashCodeV = - hashCodeV;  

    }  

    // 0 代表前面补充0       

    // 4 代表长度为4       

    // d 代表参数为正数型  

    return machineId+String.format("%015d", hashCodeV);  

}

通过我对多线程的测试,结果是并发在2000左右都没有问题,可以放心的使用。

参考: https://blog.csdn.net/pro_fan/article/details/89219385

原文地址:https://www.cnblogs.com/xiaohuizhenyoucai/p/11647547.html

时间: 2024-10-20 15:03:19

UUID.randomUUID()生成唯一识别码的相关文章

利用Java.util.UUID来生成唯一ID(用来做数据库主键好用)

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

python使用uuid库生成唯一id

概述: UUID是128位的全局唯一标识符,通常由32字节的字符串表示. 它可以保证时间和空间的唯一性,也称为GUID,全称为: UUID -- Universally Unique IDentifier Python 中叫 UUID GUID -- Globally Unique IDentifier C# 中叫 GUID 它通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成ID的唯一性. UUID主要有五个算法,也就是五种方法来实现: 1.uuid1()--基于时间戳 由MAC地址

java uuid 随机生成唯一序列号

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

Python 标准库 —— uuid(生成唯一 ID)

1. 基础 UUID 是 128 位的全局唯一标识符,通常由 32 字节的字符串(十六进制)表示. 它可以保证时间和空间的唯一性,也称为GUID,全称为: UUID -- Universally Unique IDentifier Python 中叫 UUID GUID -- Globally Unique IDentifier C# 中叫 GUID 它通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成 ID 的唯一性. UUID主要有五个算法,也就是五种方法来实现: 1.uuid1(

通用唯一识别码UUID

UUID 概念:UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统.LUKS加密分区.GNOME.KDE.Mac OS X等等.另外我们也可以在e2fsprogs包中的UUID库找到实现. 组成: UUID由以下几部分的组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一

java UUID.randomUUID()自动生成主键作为Id或文件路径

UUID.randomUUID().toString()是javaJDK(1.5以上的版本)提供的一个自动生成主键的方法,它生成的是以为32位的数字和字母组合的字符,中间还参杂着4个 - 符号. 作用:它可以作为我们表的标识列来增加,比序列增长更加方便.当然还可以用来拼接作为路径,或者图片的前缀名等等. 使用原因: 文件命名或者其他使用时间命名对于高并发会存在风险,使用UUID会规避风险, import java.util.UUID: UUID.randomUUID().toString():

Django生成唯一字符串UUID与MD5

1 Python使用UUID库生成唯一ID UUID是128位的全局唯一标识符,通常由32字节的字符串表示,保证时间和空间的唯一性 通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成ID的唯一性 用法: uuid1()--基于时间戳 uuid3()--基于名字的MD5散列值 通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性, 和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid. uuid4()--基于随机数 由伪随机数得到,有一定的重复概率

c#获取机器唯一识别码

前言 在客户端认证的过程中,我们总要获取客户机的唯一识别信息,曾经以为MAC地址是不会变的,但是现在各种改,特别是使用无线上网卡,MAC地址插一次变一次,所以这样使用MAC就没有什么意义了,怎么办,又开始求助Google,最后找到一个折中的方案 原理 通过获取主板.处理器.BIOS.mac.显卡.硬盘等的ID生成唯一识别码 建议 1.使用那些不经常更换的模块来生成识别码. 2.如果经常更换MAC,显卡,硬盘,则不要使用这些ID. 3.确保使用static变量在整个应用来保存唯一识别码. 实现 u

java生成UUID通用唯一识别码

一.UUID概述 UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份. UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定.如此一来,每个人都可以建立不与其它人冲突的 U