首页 > 编程语言 > 第十一章《Java实战常用类》第5节:UUID类

第十一章《Java实战常用类》第5节:UUID类

时间:2023-01-02 12:00:53浏览次数:60  
标签:11 Java UUID 16 第十一章 生成 18 字符串

​有时候程序员需要用一个的字符串来给数据当作唯一标识。例如,很多大型电商系统每分钟就有可能产生上万条交易数据,如果每条数据都需要和其他数据区分开,程序员就要给每条数据设定一个属于它自己的唯一编号,就像每个人都有一个属于自己的唯一的身份证号码一样。

在高速产生数据的情况下,确保每条数据编号的唯一性并不是一件容易的事情。经过人们大量研究发现:如果能够把网卡的MAC地址、时间戳、名称空间、随机数或伪随机数、时序等因素都加入到字符串当中,再经过一系列合理的位运算操作,就能生成一个几乎不重复的字符串。根据个指导思想,研究者们提出了UUID的概念。UUID是“Universally Unique Identifier”的缩写,意为“全局唯一标识符”。为了适应不同的应用场景,研究者们又提出了5种UUID的生成算法,这些算法都比较复杂,为了能够让开发者能够快速的生成UUID,Java语言提供了一个专门生成UUID的类,这个类的名字就叫UUID,它位于java.util包下。​

生成UUID的方法有很多,但实际开发过程中人们一般都用randomUUID()静态方法来生成UUID,下面的【例11_18】展示了生成UUID的过程。​

【例11_18 生成UUID】

Exam11_18.java​

import java.util.UUID;
public class Exam11_18 {
public static void main(String[] args) {
for (int i=0;i<10;i++){
UUID uuid = UUID.randomUUID();//生成UUID
System.out.println(uuid);
}
}
}

【例11_18】用循环的形式生成了10个UUID类对象,并且把这些对象全部输出到控制台上。【例11_18】的运行结果如图11-16所示。​

 第十一章《Java实战常用类》第5节:UUID类_UUID

图11-16【例11_18】运行结果​

必须强调:UUID几乎没有重复的可能性,因此读者的运行结果与图11-16也不会相同。通过图11-16可以看到:每个UUID都是由5组十六进制数组成的,第一组的长度是8,中间3组长度是4,最后一组长度为12。每一组数字都由“-”隔开,数字和“-”总共为36位。如果希望把UUID类对象转换成字符串,只需要调用UUID对象的toString()方法即可。​

使用UUID的场景很多,例如给服务器上传文件时,人们所上传的文件难免有同名的情况发生,这会导致后上传的文件把先上传的文件覆盖掉。在这种情况下,程序员可以把用户文件的名称中再加上一个UUID字符串,这样就能很好的保证文件名的唯一性。由于UUID的长度过长,有时会导致存储数据时会出现一些问题,这种情况下可以对生成的UUID做适当的加工,例如可以适当的裁剪掉一部分字符串等。总之,只要能满足业务需求就可以,没必要一定使用那个最原始的UUID。

本文字版教程还配有更详细的视频讲解,小伙伴们可以点击这里观看。


标签:11,Java,UUID,16,第十一章,生成,18,字符串
From: https://blog.51cto.com/mugexuetang/5983574

相关文章