当前位置: 首页 > 图灵资讯 > 技术篇> 【工具类用法】Hutool里的生成唯一Id唯的工具类

【工具类用法】Hutool里的生成唯一Id唯的工具类

来源:图灵教育
时间:2023-05-25 09:08:47

本文目录

一、介绍

二、使用

2.1 UUID

2.2 ObjectId

2.3 Snowflake

三、测试类

3.1 测试类

3.2 测试结果


一、介绍

在分布式环境中,唯一的ID生成应用广泛,生成方法多种多样。Hutool简单包装了一些常见的生成策略。

唯一的ID生成器工具类别包括:

  • UUID
  • ObjectId(MongoDB)
  • Snowflake(Twitter)
二、使用2.1 UUID

UUID全称通用唯一识别码(universally unique identifier),JDK通过java.util.提供UUID Leach-Salz 变体包装。在Hutool中生成UUID字符串的方法如下:

///生成的UUID是带-字符串,类似于a5c8a5e8-df2b-4706-bea4-08d09394 uuid = IdUtil.randomUUID();///生成不带-的字符串,类似于b17f24ff026d40949c85a24f4f375d42String simpleUUID = IdUtil.simpleUUID();

说明Hutool重写java.util.UUID的逻辑对应类为CN.hutool.core.lang.UUID,使生成不带-的UUID字符串不再需要更换字符,性能提高了一倍左右。

2.2 ObjectId

Objectid是MongoDB数据库中唯一的ID生成策略 详细介绍version1的变种:服务框架-分布式Unique 列出了ID的生成方法。

为此,Hutool包装了cn.hutool.core.lang.ObjectId,快速创建方法如下:

//生成类似:5b9e306a4df4cf8c54a39fb0cstring id = ObjectId.next();//方法2:从Hutool-4.1.14开始提供String id2 = IdUtil.objectId();

2.3 Snowflake

在分布式系统中,有一些场景需要使用全球唯一的ID。有时我们希望使用一个更简单的ID,并希望ID能够按时间有序地生成。TwitterSnowflake 算法就是这种生成器。

使用方法如下:

//参数1终端ID//参数2数据中心IDSnowflake snowflake = IdUtil.createSnowflake(1, 1);// longg有两种返回值类型 id = snowflake.nextId();String nextIdStr = snowflake.nextIdStr();

三、测试类3.1 测试类

public class Test {    public static void main(String[] args) {        String simpleUUID = IdUtil.simpleUUID();        System.out.println("simpleUUID ---------> " + simpleUUID);        String fastSimpleUUID = IdUtil.fastSimpleUUID();        System.out.println("fastSimpleUUID -----> " + fastSimpleUUID);        String fastUUID = IdUtil.fastUUID();        System.out.println("fastUUID -----------> " + fastUUID);        String objectId = IdUtil.objectId();        System.out.println("objectId -----------> " + objectId);        String randomUUID = IdUtil.randomUUID();        System.out.println("randomUUID ---------> " + randomUUID);        Snowflake snowflake = IdUtil.createSnowflake(1, 1);        String nextIdStr = snowflake.nextIdStr();        long nextId = snowflake.nextId();        System.out.println("nextIdStr ----------> " + nextIdStr);        System.out.println("nextId -------------> " + nextId);        Snowflake snowflake1 = IdUtil.getSnowflake(2, 2);        String nextidstr1 = snowflake1.nextIdStr();        long nextID1 = snowflake1.nextId();        System.out.println("nextidstr1 ---------> " + nextidstr1);        System.out.println("nextID1 ------------> " + nextID1);    }}

3.2 测试结果

simpleUUID ----------> 0b28df56e243eb5f198 fastSimpleUUID -----> 97ed264ecec4089799f414 fastUUID --------------> 9e6dfcb4-7701-4f3b-be00e-3e36af56d888 objectId ----------------> 5e8c61c590608c7d18cac8 randomUUID ---------> 2d62f0af-cbdc-4e3d-aa56-f3d4e274 nextIdStr --------------> 1247484152861822976 nextId ------------------> 1247484152861822977 nextidstr1 ------------> 1247484152920678400 nextID1 ----------------> 1247484152920678401

如图所示:

【工具类用法】Hutool里的生成唯一Id唯的工具类_开发工具

唯一的ID工具[参考资料]——IdUtil:https://www.bookstack.cn/read/hutoolbfd2d43bcada297.md