返回

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

发布时间:2023-01-05 00:17:50 330
# java# 服务器# 研究# 数据# 服务器

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

在高速产生数据的情况下,确保每条数据编号的唯一性并不是一件容易的事情。经过人们大量研究发现:如果能够把网卡的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。

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


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线