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


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

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

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

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

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

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

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

    除阅读文章外,各位小伙伴还可以点击这里观看我在本站的视频课程学习Java!

  • 相关阅读:
    【定时开关机】windows 10 如何设置定时开关机
    使用标准信号检测 VM振弦采集模块测量精度
    AGV|RGV小车RFID传感读卡器CK-G06A开发与用户手册技术说明
    软件测试经典面试题【必备100道】
    多线程指南:探究多线程在Node.js中的广泛应用
    31、学习 Java 中的枚举类型
    计算机毕业论文java毕业设计选题源代码javaweb企业门户网站官网
    C++中地递增递减运算符和指针
    Apache HttpClient 5 使用详细教程
    强化学习
  • 原文地址:https://blog.csdn.net/shalimu/article/details/128082721