uuid生成唯一标识

1.JDK中使用

UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,

则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)

如果使用的JDK1.5的话,那么生成UUID变成了一件简单的事,以为JDK实现了UUID:


java.util.UUID,直接调用即可.
UUID uuid = UUID.randomUUID();
String s = UUID.randomUUID().toString();

UUID的唯一缺陷在于生成的结果串会比较长。

其格式为:xxxxxxxx-xxxx- xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-4-16)

Example: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6 )

 

 

 

 

2.spring boot中使用UUID

  UUID 简介

        百度百科:

           UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。

           其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。

           如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。

           目前最广泛应用的UUID,是微软公司全局唯一标识符GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。

           另外我们也可以在e2fsprogs包中的UUID库找到实现。

          参考博文:https://www.cnblogs.com/java-class/p/4727698.html

  UUID 组成

         UUID保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。

        按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

        UUID由以下几部分的组合:

          (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。

          (2)时钟序列。

          (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

                   UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。

                  标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)。

 

   项目实战

    UUID 来作为数据库数据表主键是非常不错的选择,保证每次生成的UUID 是唯一的。
    a.生成 UUID:

          

 

  b.生成指定数目的 UUID:

     

 

  c.springboot jpa 使用uuid生成id

   直接上代码记录备忘 :

   @Entity
   @Table(name="sys_f")
   @GenericGenerator(name = "jpa-uuid", strategy = "uuid")
   @NamedQuery(name="SysF.findAll", query="SELECT s FROM SysF s")
   public class SysF implements Serializable {
         private static final long serialVersionUID = 1L;

         @Id
         @GeneratedValue(generator = "jpa-uuid")
         @Column(name="F_ID")
         private String fId;

 

3.工具类(common-util)

   所属的包为 com.power.common.util

   获取 UUID:

       

 

  将字符串还原为 UUID 对象:

     

 

   将 UUID 转换成 BigInteger

        

 

 


   原文出自:www.hangge.com  转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2894.html

   

参考 :http://blog.csdn.net/some_man/article/details/52459957

           https://blog.csdn.net/vaingloryss/article/details/89408422

           https://blog.csdn.net/u013558123/article/details/89763695

           https://blog.csdn.net/cooledi/article/details/78182135

           --重点教你如何在代码中实现一整套UUID的mysql的ID生成配置

           https://blog.csdn.net/weixin_34375233/article/details/87946455   

            --多对多情况下,生成uuid策略

           https://blog.csdn.net/Simo_YiN/article/details/79890501 

           --基于uuid的Token验证登录讨论

           https://bbs.csdn.net/topics/392323766  

           --yml中配置

           https://blog.csdn.net/zhangyunsheng11/article/details/90900654

          工具类(common-util)

           https://www.hangge.com/blog/cache/detail_2894.html

posted @ 2020-08-24 10:10  小窝蜗  阅读(1013)  评论(0编辑  收藏  举报