UUID是什么?
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:
- 当前日期和时间:UUID的第一个部分,与时间有关。如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
- 时钟序列。
- 全局唯一的IEEE机器识别号:如果有网卡,从网卡获得,没有网卡以其他方式获得,
UUID的唯一缺陷在于生成的结果串会比较长。
UUID经由一定的算法机器生成,具有相对唯一性,之所以这样说是因为UUID重复的可能性极小,基本不考虑重复的可能性。
UUID是不能人工指定的,除非你冒着UUID重复的风险。UUID的复杂性决定了“一般人“不能直接从一个UUID知道哪个对象和它关联。
UUID现在有很多版本,我们现在在实际的项目开发当中经常sh使用的是第四版本。
UUID Version 4:随机UUID
根据随机数,或者伪随机数生成UUID。这种UUID产生重复的概率是可以计算出来的,但随机的东西就像是买彩票:你指望它发财是不可能的,但狗屎运通常会在不经意中到来。
具体的使用方法如下
import java.util.UUID;
public class Test {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println(uuid);
}
}
运行结果:07022d5e-c0a5-4fb5-8995-52ea91824684
还可以使用它生成一个号称全球唯一的ID
import java.util.UUID;
public class Test {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
String GUID =uuid.toString().trim().replace("-", "");
System.out.println("GUID :"+GUID);
}
}
运行结果:GUID :ce6f021bb2414296a18aa4e4b96df6d1
这个GUID可以用来拼接作为路径,或者图片的前缀名,以避免命名冲突。或实现为数据库获取一个唯一的主键id,这个非常有用!