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