UUID分析
UUID:通用唯一识别码 (Universally Unique Identifier),是一个软件建构的标准,是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算(Distributed Computing Environment, DCE) 领域的一部分。
UUID 目的是让分布式系统中的所有元素,都能有唯一的辨识,而不需要透过中央控制端来做辨识资讯的指定。
UUID是指在一台机器上生成的数字,保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照OSF制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
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-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。
应用
UUID的标准型式包含32个16进位数字,以连字号分为五段,形式为8-4-4-4-12的32个字符,加上“-”一共是36位,所以可以先取出uuid,再把“-”去掉
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
import java.util.UUID; import org.apache.commons.lang3.RandomStringUtils; public class RandomUtils { public RandomUtils() { } public static String generateTicket() { String ticket = UUID.randomUUID().toString(); return ticket.replaceAll("-", ""); } public static String generateRandomString(int count) { return RandomStringUtils.random(count, true, true); } public static String generateRandomNum(int count) { return RandomStringUtils.random(count, false, true); } public static String generateRandomFileName() { return String.join("", generateTicket(), generateRandomString(6)); } }
UUID由32 个字母数字字符组成(没有包括连字符),每一个字符是一个16进制的数字(0-f)。UUID 有一定的结构:

注意:16进制用 半个字节 表示,1个字节等于两个半字节,1个字节等于8位,半字节等于4个位。
UUID产生方式:
“版本1” UUID 是根据时间和节点 ID(通常是MAC地址)生成;
“版本2” UUID是根据标识符(通常是组或用户ID)、时间和节点ID生成;
“版本3” 和 “版本5” 确定性UUID 通过散列 (hashing) 名字空间 (namespace) 标识符和名称生成;
“版本4” UUID 使用随机性或伪随机性生成。
1、long转16进制
long x=15L; String temp=Long.toHexString(x);
2、byte数组转16进制
byte[] randomBytes={15,14,12,11,-6}; System.out.println(DatatypeConverter.printHexBinary(randomBytes));
立志如山 静心求实
浙公网安备 33010602011771号