UUID解析
来源:互联网 发布:java中的引用类型 编辑:程序博客网 时间:2024/06/07 14:08
今天第一次写博客,有不足的地方,还望大家指出,谢谢。
UUID作为 UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF);
接下来看源码
private final long mostSigBits; // 高字节private final long leastSigBits; // 低字节private static class Holder { // 内部类static final SecureRandom numberGenerator = new SecureRandom(); // 加密的强随机数生成器 }private UUID(byte[] data) { long msb = 0; long lsb = 0; assert data.length == 16 : "data must be 16 bytes in length"; for (int i=0; i<8; i++) msb = (msb << 8) | (data[i] & 0xff); // 使前八个字节依次向前移动8位,得到高字节 for (int i=8; i<16; i++) lsb = (lsb << 8) | (data[i] & 0xff); // 使后八个字节依次向前移动8位,得到低字节 this.mostSigBits = msb; this.leastSigBits = lsb; } public static UUID randomUUID() { SecureRandom ng = Holder.numberGenerator; byte[] randomBytes = new byte[16]; ng.nextBytes(randomBytes); // 为16位字节数组随机生成数值 randomBytes[6] &= 0x0f; /* clear version */ randomBytes[6] |= 0x40; /* set to version 4 */ randomBytes[8] &= 0x3f; /* clear variant */ randomBytes[8] |= 0x80; /* set to IETF variant */ return new UUID(randomBytes); } public String toString() { return (digits(mostSigBits >> 32, 8) + "-" + digits(mostSigBits >> 16, 4) + "-" + digits(mostSigBits, 4) + "-" + digits(leastSigBits >> 48, 4) + "-" + digits(leastSigBits, 12)); } /** Returns val represented by the specified number of hex digits. */ private static String digits(long val, int digits) { long hi = 1L << (digits * 4); return Long.toHexString(hi | (val & (hi - 1))).substring(1); }
阅读全文
0 0
- UUID解析
- UUID解析与使用
- 深入解析UUID及其应用
- 深入解析UUID及其应用
- UUID
- UUID
- UUID
- uuid
- UUID
- uuid
- UUID
- uuid
- uuid
- uuid
- UUID
- UUID
- uuid
- UUID
- 点云地图投影-3
- Unity文件读取总结及各种应用平台路径读取
- makefile模板
- 反向建图+SPFA—— [USACO14OPEN]GPS的决斗Dueling GPS's
- 网站调用数据库
- UUID解析
- mysqldump导出注意timestamp类型
- 如何安装MySQL5.7.20
- html5初学4
- MySQL Explain Type列
- 机器学习基石-06-3-Bounding Function- Inductive
- redis之数据结构
- 链表
- Spring Cloud学习-服务注册与发现