`
流浪鱼
  • 浏览: 1684844 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UUIDGenerator生成唯一编码

    博客分类:
  • java
 
阅读更多

生成唯一编码

 

import java.net.InetAddress;

public class UUIDGenerator {

    /** 
     * @param 通过处理Ip得到的整数值 
     */
    private static final int IP;

    static {
        int ipadd;
        try {
            ipadd = toInt(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);

    /** 
     * 或得该类加载时jvm的时间唯一的(除非加载该类在相同的四分之一秒-几乎不可能) 
     * 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();
    }

    public String generate() {
        return new StringBuffer(36).append(format(getIP())).append(format(getJVM())).append(format(getHiTime())).append(format(getLoTime())).append(format(getCount())).toString();
    }

    protected String format(int intValue) {
        String formatted = Integer.toHexString(intValue);
        StringBuilder buf = new StringBuilder("00000000");
        buf.replace(8 - formatted.length(), 8, formatted);
        return buf.toString();
    }

    protected String format(short shortValue) {
        String formatted = Integer.toHexString(shortValue);
        StringBuilder buf = new StringBuilder("0000");
        buf.replace(4 - formatted.length(), 4, formatted);
        return buf.toString();
    }

    public static int toInt(byte[] bytes) {
        int result = 0;
        for (int i = 0; i < 4; i++) {
            result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
        }
        return result;
    }
//    public static void main(String[] args) {
//        UUIDGenerator uuid = new UUIDGenerator();
//        for (int i = 0; i < 100; i++) {
//            System.out.println(uuid.generate());
//        }
//    }
}

 

分享到:
评论

相关推荐

    java生成UUID通用唯一识别码.docx

    Java中的UUID(Universally Unique Identifier)是一种用于生成全局唯一标识符的标准,由开源软件基金会(OSF)在分布式计算环境中提出。UUID的主要目的是确保在分布式系统中的任何元素都有其独特的识别信息,无需...

    java生成唯一id(uuid)(不依赖jdk5,自己实现的)

    在Java编程中,生成唯一的ID(Universal Unique Identifier,UUID)是一项常见的需求,特别是在数据库记录、分布式系统中的对象标识等方面。UUID是一种128位的数字,通常以32个字符的16进制形式表示,确保在全球范围...

    UUIDGenerator.java

    UUIDGenerator (生成32位uuid串) 用法: String abc = new UUIDGenerator().generate().toString();

    java 生成32位UUID

    在Java编程中,UUID(Universally Unique Identifier)是一种用于生成全局唯一标识符的标准。一个UUID由32个16进制数字组成,通常分为五段,用短横线分隔,形如`8-4-4-4-12`的36个字符。在32位UUID中,我们实际上是...

    自动生成主键uuid.zip

    在Java编程中,UUID(Universally Unique Identifier)是一种标准的128位的全局唯一标识符,用于生成不可预测、全局唯一的ID。UUID通常由32个16进制数字组成,中间用短横线分隔,形如“8-4-4-4-12”的格式。然而,在...

    java生成UUID通用唯一识别码[参照].pdf

    Java 生成 UUID 通用唯一识别码 UUID(Universally Unique Identifier,通用唯一识别码)是软件建构的标准,也是被开源软件基金会(Open Software Foundation, OSF)的组织在分布式计算环境(Distributed Computing...

    UUIDGenerator:使用C ++ 11的简单UUID生成器

    UUIDGenerator 一个使用C ++ 11的简单UUID生成器。 该程序是使用C ++ 11的简单128位UUID生成器。 请注意,这不是符合RFC4122的UUID。 有关符合RFC4122的UUID的更多信息,请参考 。 如果您正在寻找兼容RFC4122的...

    uuidgenerator

    UUID(Universally Unique Identifier)是一种在分布式计算环境中用于唯一标识对象的编码方式。在JavaScript中,`uuidgenerator`可能是用于生成UUID的库或工具。这个库可以帮助开发者在JavaScript应用程序中生成具有...

    apache-commons-id.jar和commons-discovery-0.2.jar

    这个库包括了多种ID生成器,如SequentialIdGenerator(顺序ID生成器)、UUIDGenerator(通用唯一识别码生成器)、RandomLongIdGenerator(随机长整型ID生成器)等。这些生成器在分布式系统、数据库记录或任何需要...

    JAVA UUID 生成.txt

    ### JAVA UUID 生成知识点 #### 一、UUID 概述 - **定义**: UUID (Universally Unique Identifier) 即全局唯一标识符,是一种用于在分布式系统中唯一标识信息的方法。 - **长度**: UUID 的标准形式为 128 位(16 ...

    Java UUID Generator-UUID 生成器 JUG 是一个纯 Java 的 UUID 生成器

    &lt;groupId&gt;com.fasterxml.uuid&lt;/groupId&gt; &lt;artifactId&gt;java-uuid-generator &lt;packaging&gt;bundle &lt;name&gt;Java UUID Generator &lt;version&gt;3.1.5&lt;/version&gt;

    java uuid jug实例(采用开源jug)

    然后,可以使用JUG提供的`UUIDGenerator`类来生成UUID。例如,生成一个基于时间的UUID: ```java import com.github.stephenc.uuid.jugg.JUG; import com.github.stephenc.uuid.jugg.JUGConfig; JUG uuidGen = ...

    数据库数据产生工具 DBMonster 应用详解

    例如,MersenneTwisterGenerator 和 UUIDGenerator 分别用于生成随机数和 UUID 字符串。用户可以根据需求自定义 Generator,以满足特定的数据生成规则。 DBMonster 提供了一些高级特性,如自定义事务大小、重试次数...

    java-uuid-generator:Java Uuid Generator(JUG)是一个用于在Java上生成所有(3)类型的UUID的库。 请参阅(http

    Java Uuid生成器(JUG) JUG是一组用于处理UUID的Java类:使用任何标准方法生成UUID,有效输出,排序等。 它根据生成UUID(有关更多说明,另请参见) JUG由Tatu Saloranta( )最初于2002年编写,并且经过多年的...

    UUID生成器「UUID generator」-crx插件

    轻松生成UUID 生成随机UUID并单击复制它们! 新功能即将推出! 支持语言:English

    java-uuid-generator-3.1.3.ja

    java-uuid-generator-3.1.3.jar 部分开源源代码用到这里面的类。

    Laravel开发-uuid

    接下来,我们将创建一个自定义的`UuidGenerator`助手类,用于生成和处理UUID。这个类可能包含以下方法: ```php namespace App\Utils; use Ramsey\Uuid\Uuid; use Ramsey\Uuid\Exception\UnsatisfiedDependency...

    uuidGenerator::key:这是UUID Generator的一个项目,我已经研究了NextJS和Tailwind CSS。 :grinning_face:

    :sparkles: UUID生成器 这是一个UUID生成器的项目,我已经研究了NextJS和Tailwind CSS。 :grinning_face: 该项目是由@ florinpop17创建的#30Days30Projects Challenge的一部分,该挑战包括:在30天内每天创建一个...

    struts2异步上传

    这可能是一个生成唯一标识符的类,通常用于在文件上传过程中为每个文件生成唯一的临时文件名,以防止重名问题。在服务器端,这个ID可以作为文件的存储路径或数据库记录的主键。 6. **实现步骤** - **前端**:使用...

Global site tag (gtag.js) - Google Analytics