有时我们不依赖于数据库中自动递增的字段产生唯一ID,比如多表同一字段需要统一一个唯一ID,这时就需要用程序来生成一个唯一的全局ID,然后在数据库事务中同时插入到多章表中实现同步.
在java中有个类工具很好的实现产生唯一ID(UUID),但是由数字和字母及中划线组成的,故数据库字段应该设置为char 并相应的建立索引.
UUID是128位整数(16字节)的全局唯一标识符(Universally Unique Identifier).
指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成UUID的API.UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址,纳秒级时间,芯片ID码和许多可能的数字.由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个 UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长.关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers).
在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx- xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字.而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)
,可以从cflib 下载CreateGUID() UDF进行转换.
使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显.
关于UUID的更多信息可以多google 一下.
Java生成UUID
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址,纳秒级时间,芯片ID码和许多可能的数字.由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长.
在Java中生成UUID主要有以下几种方式:
JDK1.5
如果使用的JDK1.5的话,那么生成UUID变成了一件简单的事,以为JDK实现了UUID:
java.util.UUID, 直接调用即可.
UUID uuid = UUID.randomUUID();
String s = UUID.randomUUID().toString();//用来生成数据库的主键id非常不错..
UUID是由一个十六位的数字组成,表现出来的形式例如: 9291d71a-0354-4d8e-acd8-64f7393c64ae
下面是Demo代码举例
// Source Filename: MakeUUID.java
import java.util.*;
class MakeUUID
{
public static void main(String[] args)
{
String[] ss = getUUID(1);
for(int i=0;i<ss.length;i++){
System.out.println(ss[i]);
}
}
public static String getUUID(){
String s = UUID.randomUUID().toString();
//去掉"-"符号
// return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24);
return s;
}
public static String[] getUUID(int number){
if(number < 1){
return null;
}
String[] ss = new String[number];
for(int i=0;i<number;i++){
ss[i] = getUUID();
}
return ss;
}
}
分享到:
相关推荐
Java中的UUID(Universally Unique Identifier)是一种用于生成全局唯一标识符的标准,由开源软件基金会(OSF)在分布式计算环境中提出。UUID的主要目的是确保在分布式系统中的任何元素都有其独特的识别信息,无需...
雪花ID(Snowflake ID)是一种被广泛采用的解决方案,由Twitter开源,其设计目标就是生成全局唯一的、时间序列的64位整数ID。以下我们将详细探讨这个话题。 首先,雪花ID的结构分为6部分,共64位: 1. **符号位**...
在Java中,UUID提供了标准的方法来生成全局唯一的标识符。UUID主要由三部分组成:时间戳、随机数和节点ID,这确保了其在全球范围内的唯一性。 首先,我们来看JDK自带的`java.util.UUID`类。这个类提供了多种生成...
在Java中,UUID是通过java.util.UUID类来生成和操作的。 UUID由16个字节组成,通常用16进制表示,分为5个部分,形式为8-4-4-4-12的32个字符,例如:`123e4567-e89b-12d3-a456-426655440000`。这五个部分分别代表...
在实际项目中,开发者可能会选择这样的库来代替标准的Java UUID生成,以便更好地满足项目特定的需求,比如在分布式系统中保持全局唯一性,同时提高生成ID的速度。 在使用Vesta-ID-Generator之前,开发者需要了解其...
在PB中生成UUID,通常是为了为每个消息或实体赋予一个全局唯一的标识。这在分布式系统中尤其有用,例如在多节点环境中,每个节点都需要生成自己的唯一ID,以避免冲突。生成UUID的过程可以通过PB提供的库函数实现,...
总的来说,UUID是Java中用于生成全局唯一标识的重要工具,其强大的唯一性保证了在大规模分布式系统中能够有效地管理和区分各个实体。使用UUID时,开发者可以根据具体需求选择合适的生成方式,以满足系统对标识的特定...
总之,UUID16是关于Java中生成全局唯一标识符的一种方式,它涉及到UUID的版本1生成机制,包含时间戳、节点ID和序列号,以确保在分布式环境中生成的标识符的唯一性。通过理解和使用UUID,我们可以有效地在各种场景下...
总结来说,"自动生成主键uuid.zip"中的内容可能涉及到如何在Java中使用UUID生成32位的无序和有序ID,这对于数据库主键或其他需要全局唯一标识的场景非常有用。通过理解UUID的生成机制和结合其他数据,开发者可以定制...
提供的“java生成UUID通用唯一识别码.docx”文档,可能是详细介绍了如何在Java项目中使用UUID,包括代码示例和具体应用场景,对初学者来说是一份很好的学习资料。而其他如“电子书频道.url”、“下载频道.url”、...
在Android中,我们可以使用Java的`java.util.UUID`类来生成UUID。这个类提供了`randomUUID()`方法,它会生成一个基于当前时间的随机UUID,保证在全局范围内的唯一性。 ```java UUID uniqueId = UUID.randomUUID(); ...
在Java编程中,自动生成ID是一项常见的需求,特别是在...综上所述,"java自动生成id策略"涉及到对时间戳和随机数的结合使用,以确保ID的唯一性和效率。实际应用中,还需要根据业务需求和系统规模选择适合的ID生成策略。
为了解决这个问题,可以使用分布式锁或者全局计数器服务,如Twitter的Snowflake算法,它结合了时间戳、工作节点ID和序列号,生成64位的唯一标识,但可以根据需求截取前32位。 另一种方法是基于时间戳和随机数的混合...
在Java中,`UUID.nameUUIDFromBytes(byte[] name)`方法用于生成名称基的UUID,它接受一个字节数组作为参数,并返回一个基于该数组的UUID。如果需要获取不带破折号的UUID字符串表示,同样可以进行字符串处理来去除...
在Java编程中,UUID(Universally Unique Identifier)是一种标准的128位的唯一标识符,通常用于生成不可预测的全局唯一ID。然而,标准的UUID由32个16进制数字组成,形式上类似于“123e4567-e89b-12d3-a456-...
3. **AtomicLong自增**:对于简单且不需要分布式环境的场景,你可以使用`java.util.concurrent.atomic.AtomicLong`类来生成连续的整数ID。这在单个应用内是安全的,但跨多个节点时可能会产生冲突。 4. **数据库自增...
对于特定的随机码生成需求,如UUID(全局唯一标识符),Java提供了`java.util.UUID`类,它可以生成128位的唯一标识符: ```java UUID uuid = UUID.randomUUID(); String uniqueId = uuid.toString(); ``` 此外,还...
`RandomGUID.java`可能是该博客提供的示例代码,可能包含了一个类,用于生成类似于`UUID.randomUUID()`的随机生成的唯一ID。 在Java中编写自己的GUID生成器,可以参考以下步骤: 1. 引入必要的库或依赖,如果使用`...
UUID4是UUID标准中的一个变种,它使用随机数生成器来创建128位的唯一ID,通常在分布式系统、数据库记录标识或对象持久化等场景中非常有用。 在这个项目中,我们主要关注的是UUID4的实现。UUID4通常由16字节的随机...