import java.io.Serializable;
import java.net.InetAddress;
public class UUIDGenerator {
/**
* Description:生成形如‘2c9081261d50d1c4011d50d1c4320000’的32位uuid串
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
UUIDGenerator uuidGenerator = new UUIDGenerator();
System.out.println(uuidGenerator.generate().toString());
}
private static final int IP;
public static int IptoInt( byte[] bytes ) {
int result = 0;
for (int i=0; i<4; i++) {
result = ( result << 8 ) - Byte.MIN_VALUE + (int) bytes[i];
}
return result;
}
static {
int ipadd;
try {
ipadd = IptoInt( InetAddress.getLocalHost().getAddress() );
}
catch (Exception e) {
ipadd = 0;
}
IP = ipadd;
}
private static short counter = (short) 0;
private static final int JVM = (int) ( System.currentTimeMillis() >>> 8 );
public UUIDGenerator() {
}
/**
* Unique across JVMs on this machine (unless they load this class
* in the same quater second - very unlikely)
*/
protected int getJVM() {
return JVM;
}
/**
* Unique in a millisecond for this JVM instance (unless there
* are > Short.MAX_VALUE instances created in a millisecond)
*/
protected short getCount() {
synchronized(UUIDGenerator.class) {
if (counter<0) counter=0;
return counter++;
}
}
/**
* Unique in a local network
*/
protected int getIP() {
return IP;
}
/**
* Unique down to millisecond
*/
protected short getHiTime() {
return (short) ( System.currentTimeMillis() >>> 32 );
}
protected int getLoTime() {
return (int) System.currentTimeMillis();
}
private final static String sep = "";
protected String format(int intval) {
String formatted = Integer.toHexString(intval);
StringBuffer buf = new StringBuffer("00000000");
buf.replace( 8-formatted.length(), 8, formatted );
return buf.toString();
}
protected String format(short shortval) {
String formatted = Integer.toHexString(shortval);
StringBuffer buf = new StringBuffer("0000");
buf.replace( 4-formatted.length(), 4, formatted );
return buf.toString();
}
public Serializable generate() {
return new StringBuffer(36)
.append( format( getIP() ) ).append(sep)
.append( format( getJVM() ) ).append(sep)
.append( format( getHiTime() ) ).append(sep)
.append( format( getLoTime() ) ).append(sep)
.append( format( getCount() ) )
.toString();
}
}
用法: String abc = new UUIDGenerator().generate().toString();
分享到:
相关推荐
这段代码会生成一个128位的UUID,然后通过正则表达式`replaceAll("-","")`移除所有短横线,得到32位的UUID字符串。 然而,32位的UUID实际上可能不满足全局唯一性的要求,因为128位UUID提供了足够的熵(随机性)来...
UUIDGenerator (生成32位uuid串) 用法: String abc = new UUIDGenerator().generate().toString();
在Java中,生成UUID主要通过`java.util.UUID`类提供的静态方法。`UUID.randomUUID()`是生成一个随机的UUID实例,它满足全局唯一性。然而,生成的UUID字符串通常是36个字符,包括16进制数字和短横线。为了得到32位的...
时间戳是自特定时刻以来的毫秒数,节点ID用于标识生成UUID的设备,序列号用于在同一毫秒内生成多个UUID,变种和版本则提供了UUID的类型信息。 在Java中,我们可以通过以下步骤实现一个简单的UUID生成器: 1. **...
<groupId>com.fasterxml.uuid</groupId> <artifactId>java-uuid-generator <packaging>bundle <name>Java UUID Generator <version>3.1.5</version>
该程序是使用C ++ 11的简单128位UUID生成器。 请注意,这不是符合RFC4122的UUID。 有关符合RFC4122的UUID的更多信息,请参考 。 如果您正在寻找兼容RFC4122的UUID,请尝试或从util-linux尝试 。 该UUID生成器的...
这个类提供了多种生成UUID的方法。例如,`UUID.randomUUID()`方法可以生成一个基于时间的UUID,这是最常见的类型,它结合了当前时间戳、随机数和机器标识,确保生成的ID在全球范围内是唯一的。 以下是一个简单的...
#### 二、Java 中 UUID 的生成 ##### JDK 1.5 版本 - **引入**: 自 Java 5 开始,Java 提供了 `java.util.UUID` 类来生成 UUID。 - **实例化**: ```java UUID uuid = UUID.randomUUID(); ``` ##### 实现代码...
这个示例代码使用 Java 的 UUID 类生成随机的 UUID,并将其转换为字符串格式。然后,使用 substring 方法将 UUID 字符串分割成五部分,并将其连接起来形成一个新的字符串。 UUID 的优点是可以让分布式系统中的所有...
然后,可以使用JUG提供的`UUIDGenerator`类来生成UUID。例如,生成一个基于时间的UUID: ```java import com.github.stephenc.uuid.jugg.JUG; import com.github.stephenc.uuid.jugg.JUGConfig; JUG uuidGen = ...
轻松生成UUID 生成随机UUID并单击复制它们! 新功能即将推出! 支持语言:English
JUG是一组用于处理UUID的Java类:使用任何标准方法生成UUID,有效输出,排序等。 它根据生成UUID(有关更多说明,另请参见) JUG由Tatu Saloranta( )最初于2002年编写,并且经过多年的更新。 此外,其他许多人也...
在JavaScript中,`uuidgenerator`可能是用于生成UUID的库或工具。这个库可以帮助开发者在JavaScript应用程序中生成具有唯一性的字符串,这对于数据库记录、临时ID、或者任何需要唯一标识符的场景都非常有用。 UUID...
UUID是一个128位的数字,通常以36个字符的16进制字符串形式表示,如“123e4567-e89b-12d3-a456-426655440000”。由于其设计,UUID几乎可以确保全局唯一性,无需中央协调机构。 在Laravel项目中引入UUID,首先需要...
====================== 返回长度为 32 的字符串的 UUIDGenerator,该字符串仅包含十六进制数字。 可选地,可以在 UUID 的每个组件之间使用分隔符生成字符串。 如果你想像使用这个工具一样使用这个工具: ...
例如,MersenneTwisterGenerator 和 UUIDGenerator 分别用于生成随机数和 UUID 字符串。用户可以根据需求自定义 Generator,以满足特定的数据生成规则。 DBMonster 提供了一些高级特性,如自定义事务大小、重试次数...
:sparkles: UUID生成器 这是一个UUID生成器的项目,我已经研究了NextJS和Tailwind CSS。 :grinning_face: 该项目是由@ florinpop17创建的#30Days30Projects Challenge的一部分,该挑战包括:在30天内每天创建一个...
MyBatis-Plus支持多种主键生成策略,如ID_WORKER(雪花算法)、UUIDGenerator(UUID)等,可以根据业务需求选择合适的策略。 8. **分页插件(PageHelper)** 虽然MyBatis-Plus自身不包含分页功能,但可以配合...
- **2.1.16 UUIDGenSample**:此示例程序展示了如何使用 `UUIDGenerator` 类生成全局唯一标识符 (UUID),这对于需要唯一标识的数据项非常有用。 ##### XML 样例 - **2.2.1 DOMParserSample**:此示例程序展示了...