java.util.UUID
概述
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的重复问题。