UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

导读:本篇文章讲解 UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

问题背景

因为需要用到唯一的requestId,所以使用唯一的UUID生成requestId
注意事项:

UUID生成

方式一(JDK自带方式)

    public static String getJdkUUID() {
        System.out.println(UUID.randomUUID());
        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
        return uuid;
    }

方式二(java-uuid-generator依赖方式)

<dependency>
    <groupId>com.fasterxml.uuid</groupId>
    <artifactId>java-uuid-generator</artifactId>
    <version>4.0</version>
</dependency>
    public static String getGeneratorUUID(){
        // 传入网卡信息,基于时间制作出生成器
        TimeBasedGenerator generator = Generators.timeBasedGenerator(EthernetAddress.fromInterface());
        UUID uuid = generator.generate();
        // 通过计算当前时间戳、随机数和机器MAC地址得到,由于使用了MAC地址,因此这个版本的随机数能够保证全球唯一
        //System.out.println(uuid.version()); // 1
        
		//UUID Version 1:基于时间的UUID(全球唯一)
		//UUID uuid1 = Generators.timeBasedGenerator().generate();
		
		//UUID Version 3:基于名字的UUID(相关名字重复)
		//UUID uuid3 = Generators.nameBasedGenerator().generate("sai");
		
		//UUID Version 4:随机UUID(java自带版本,极小概率重复)
		//UUID uuid4 = Generators.randomBasedGenerator().generate();
        
        return uuid.toString().replaceAll("-", "");
    }

1 pom依赖的引入

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.yg</groupId>
    <artifactId>uuid</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>uuid</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
<!--            <scope>test</scope>-->
        </dependency>

        <dependency>
            <groupId>com.fasterxml.uuid</groupId>
            <artifactId>java-uuid-generator</artifactId>
            <version>4.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

2 UUID工具类

package com.yg.uuid.utils;

import com.fasterxml.uuid.EthernetAddress;
import com.fasterxml.uuid.Generators;
import com.fasterxml.uuid.impl.TimeBasedGenerator;

import java.util.UUID;

/**
 * @Author suolong
 * @Date 2022/2/13 14:00
 * @Version 1.5
 */
public class UUIDUtils {

    public static String getJdkUUID() {
        System.out.println(UUID.randomUUID());
        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
        return uuid;
    }

    public static String getGeneratorUUID(){
        // 传入网卡信息,基于时间制作出生成器
        TimeBasedGenerator generator = Generators.timeBasedGenerator(EthernetAddress.fromInterface());
        UUID uuid = generator.generate();
        // 通过计算当前时间戳、随机数和机器MAC地址得到,由于使用了MAC地址,因此这个版本的随机数能够保证全球唯一
        //System.out.println(uuid.version()); // 1
        return uuid.toString().replaceAll("-", "");
    }
}

3 UUID测试类

package com.yg.uuid.springbootTest;

import com.yg.uuid.utils.UUIDUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

/**
 * @Author suolong
 * @Date 2022/2/13 14:01
 * @Version 1.5
 */


@Slf4j
@SpringBootTest
public class UUIDTest {


    @Test
    public void JdkUUIDTest() {
        String jdkUUID = UUIDUtils.getJdkUUID();
        log.info("jdkUUID: {}", jdkUUID);
    }

    @Test
    public void GeneratorUUIDTest(){
        String generatorUUID = UUIDUtils.getGeneratorUUID();
        log.info("generatorUUID: {}", generatorUUID);
    }
}

4 整体文件目录
UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

测试结果

1 JDK的uuid
UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)
UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)
2 Generator的UUID
UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)
UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

总结

  • 看要求使用哪种方式

作为程序员第 66 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)UUID的生成,JDK与java-uuid-generator依赖的两种方式(无限速源码下载)

Lyric:从不感疲惫

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110809.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!