JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征
java8新特征详解
java文件操作专题教程

知识点

相关文章

更多

最近更新

更多

java.util.UUID 工具类详解

2019-03-12 23:47|来源: 网路

java.util.UUID是jdk1.5之后新增的一个工具类,在java.util下,用它可以产生一个号称全球唯一的ID

1、一个UUID表示一个128位的值,,一般用16进制表示。

2、UUID是一个128位长的数字算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复。

3、它是用于创建随机文件名,在Web应用程序的会话ID,事务ID等

4、还有UUID四种不同的基本类型:基于时间,DCE安全性,基于名称,并随机生成的UUID


示例:
import java.util.UUID;
public class Test {
   public static void main(String[] args) {
       UUID uuid = UUID.randomUUID();
       System.out.println (uuid);
   }
}


帮助文档说明:

java.util
类 UUID

java.lang.Object继承者 java.util.UUID
所有已实现的接口:
Serializable, Comparable<UUID>

表示通用唯一标识符 (UUID) 的类。 UUID 表示一个 128 位的值。

这些通用标识符具有不同的变体。此类的方法用于操作 Leach-Salz 变体,不过构造方法允许创建任何 UUID 变体(将在下面进行描述)。

变体 2 (Leach-Salz) UUID 的布局如下: long 型数据的最高有效位由以下无符号字段组成:

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi
 
long 型数据的最低有效位由以下无符号字段组成:
 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node
 

variant 字段包含一个表示 UUID 布局的值。以上描述的位布局仅在 UUID 的 variant 值为 2(表示 Leach-Salz 变体)时才有效。

version 字段保存描述此 UUID 类型的值。有 4 种不同的基本 UUID 类型:基于时间的 UUID、DCE 安全 UUID、基于名称的 UUID 和随机生成的 UUID。 这些类型的 version 值分别为 1、2、3 和 4。

有关用于创建 UUID 的算法的更多信息,请参阅 RFC 4122: 通用唯一标识符 (Universally Unique Identifier) (UUID) URN Namespace, section 4.2 ";创建基于时间的 UUID" 的算法。


构造方法摘要
UUID(long mostSigBits, long leastSigBits)
         使用指定的数据构造新的 UUID
方法摘要
int clockSequence()
         与此 UUID 相关联的时钟序列值。
int compareTo(UUID val)
         将此 UUID 与指定的 UUID 比较。
boolean equals(Object obj)
         将此对象与指定对象比较。
static UUID fromString(String name)
         根据 toString() 方法中描述的字符串标准表示形式创建 UUID
long getLeastSignificantBits()
         返回此 UUID 的 128 位值中的最低有效 64 位。
long getMostSignificantBits()
         返回此 UUID 的 128 位值中的最高有效 64 位。
int hashCode()
         返回此 UUID 的哈希码。
static UUID nameUUIDFromBytes(byte[] name)
         根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。
long node()
         与此 UUID 相关的节点值。
static UUID randomUUID()
         获取类型 4(伪随机生成的)UUID 的静态工厂。
long timestamp()
         与此 UUID 相关联的时间戳值。
String toString()
         返回表示此 UUIDString 对象。
int variant()
         与此 UUID 相关联的变体号。
int version()
         与此 UUID 相关联的版本号。


     

相关问答

更多
  • 区别详解,没法详解,数据结构就够研究几个月的,不过要是把目标放在会用上,就容易多了,也无需了解底层,看看API文档,知道什么方法是干什么的会用就行了。 集合类巨多无比,其实常用的也就这么几个,其他的都不用太看,你就看看:ArrayList、LinkedList、HashMap、TreeMap、HashSet 就行了,我理解也有限,简单说一下这几个: Collection下面有List和Set,List有ArrayList、LinkedList,ArrayList底层以Object类型数组实现,特点是查找很快 ...
  • 首先,您提到的文档是指DataStax Java驱动程序的旧版本,您应该升级到3.0.0版 。 也就是说,DataStax Java驱动程序附带了一个实用程序类com.datastax.driver.core.utils.UUIDs 。 它有三种有用的方法来处理基于时间的UUID: timeBased() ; 为当前时间戳创建新的基于时间的UUID; 此方法生成的时间戳适合作为timeuuid值插入到Cassandra中。 startOf(long)和endOf(long) :这些方法分别为给定时间戳提供最 ...
  • 不是一个理想的解决方案,但在Adobe内部修复内存泄漏之前,您可以访问coldfusion.util.Key对象上的私有成员ConcurrentHasMap并手动清除它。 我们已经设置了一个计划任务来执行这个每晚,然后立即做一个GC。 将其编译为JAR文件,并将其放在ColdFusion类路径的某个位置。 import coldfusion.util.Key; import java.lang.reflect.Field; import java.util.Map; import java.util.con ...
  • 读取已在以下DSE版本中修复的UUID类型存在已知问题:4.7.4,4.8.0 单通道查询不适用于UUID,TimeUUID,Inet,Decimal和Varint类型。 (DSP-6443) 请参阅以下DSE4.8发行说明 There is a known issue with reading UUID types that's been fixed in the following DSE releases: 4.7.4, 4.8.0 Single pass queries do not work wi ...
  • 从数英里之外可以看到SHA1的比赛。 像这样更改代码: -SHA1.reset(); +MessageDigest SHA1= (MessageDigest) OminitureWSUtil.SHA1.clone(); 重置不是你需要的; 克隆适用于此类情况。 顺便说一句,在类init(static {})中抛出任何异常会导致类和部分引用该类的任何其他类(因此整个[web]应用程序)。 这是一个不好的做法,因为异常(java.lang.ExceptionInInitializerError)可能会被困在某 ...
  • 我确实理解为什么Google Api JSON解析器试图将UUID解析为原语,但至少我找到了解决此问题的方法。 在我的模型类中,我将字段保存为UUID,但更改了getter以返回String,现在它看起来像这样: public String getId() { return id.toString(); } 它已经为我解决了这个问题。 I do understand why Google Api JSON parser was attempting to parse UUID as prim ...
  • 请参阅http://saxonica.com/documentation/index.html#!extensibility ,如果您想使用Saxon 9并具有该功能(称为反射扩展功能),则需要PE或EE许可证。 See http://saxonica.com/documentation/index.html#!extensibility, if you want to use Saxon 9 and have that feature (called reflexive extension functio ...
  • 操作系统将生成的UUID保留从机器中混合信息以及时间信息的权利。 (事实上,早期的Microsoft UUID生成器会获取网卡信息,这实际上非常不安全,因为可以从生成的UUID中支持它!)。 所以使用你最喜欢的UUID生成器是不合适的。 你可以做的是基本上增强用于创建哈希码的方法,将其扩展到128位。 将该字节数组转换为UUID格式,您就完成了。 The UUID that an operating system will generate reserves the right to blend in in ...
  • 编辑:此解决方案需要PostgreSQL 8.4或更高版本,相应的JDBC驱动程序8.4-703或更高版本和Hibernate 3.6(对于内置的pg-uuid类型,自定义UserType应该适用于以前的Hibernate版本) 刚刚发现您不需要自定义UserType来将java.util.UUID映射到PostgreSQL uuid 。 从Hibernate 3.6开始,您可以使用内置类型pg-uuid ,这是org.hibernate.type.PostgresUUIDType的快捷方式(请参阅有关基本 ...