java.util.UUID

行者 / 2024-08-28 / 原文

概述

  A class that represents an immutable universally unique identifier (UUID).  一个 不可变通用的唯一标识符 的class

  A UUID represents a 128-bit value.  一个uuid代表一个128位的值

 

UUID的版本

  UUID有多个版本,每个版本有不同的生成方式。常用的版本包括:

  • Version 1 (Time-based):基于时间戳和MAC地址生成。
  • Version 3 (Name-based):基于命名空间和名字生成。
    • UUID.nameUUIDFromBytes("Some unique string".getBytes()); // Static factory to retrieve a type 3 (name based) {@code UUID} based on the specified byte array.
  • Version 4 (Randomly generated):完全随机生成。
    • UUID.randomUUID()  // Static factory to retrieve a type 4 (pseudo randomly generated) UUID. 
  • Version 5 (Name-based):与Version 3类似,但使用SHA-1算法。

 

重复概率

  UUID有几种不同的版本,其中最常见的是版本4(随机生成)。版本4的UUID是通过伪随机数生成器创建的,其格式为8-4-4-4-12的32位十六进制数,例如550e8400-e29b-41d4-a716-446655440000

  对于版本4的UUID,每个部分都是随机生成的,所以理论上任何两个UUID完全相同的概率非常低。每个UUID包含122位随机数据,这意味着每个UUID有21222122种可能的状态。

  在实际应用中,使用Java的UUID生成器生成的版本4 UUID几乎不会出现重复,除非你在一天之内生成极其大量的UUID(如每天生成数十亿个),并且持续很长一段时间(几年甚至几十年)。即便如此,重复的概率仍然非常小。在大多数情况下,你无需担心UUID的重复问题。