GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID。
UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft’s Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。
UUID的唯一缺陷在于生成的结果串会比较长。
public static void main(String[] args)
{
System.out.println(generateGUID());
//生成唯一id
String id= UUID.randomUUID().toString();
//替换uuid中的"-"
id=id.replace("-", "");
System.out.println(id);
}
或者可以集成为单个功能,方便下步调用。
public static final String generateGUID()
{
UUID uuid=UUID.randomUUID();
return uuid.toString();
}
自己的一点小想法就是,这个唯一码或者可以说自定义生产,不一定说完全唯一,只能说重复的几率极低,极大的实现其唯一这个特性。该功能实现的是长度可变的随机数,当你的位数达到18以上,基本重复的概率就十分的小了,近视看做零吧,不能保证完全唯一,但是确实十分低。而且这串编码客观性较好,让人理解的较为快捷!
public static String getRandomString(int length){
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(62);
sb.append(str.charAt(number));
}
return sb.toString();
}
希望可以给大家带来一些帮助!!!
参考站点:cnblogs.com/chenfeifen/p/9556922.html
https://blog.csdn.net/weixin_33304896/article/details/114229593