2021-12-25 23:42

UUID与NanoID

码自答

JavaEE

(1330)

(0)

收藏

在Java中生成唯一标识,可以获得当前的系统时间,也可以使用UUID,和NanoID。

NanoID,利用统一算法,生成一个一个唯一的标识。

支持多种语言。Java C# JavaScript等 。

NanoID用UUID相比:

1 算法不同

   NanoID采用统一算法,相对UUID,效率更高

2 NanoID小

   UUID的字母表有36个字符

   NanoID的字母表只有21个字符

3 NanoID可以用户自定义字母表,自定义长度。


在Java中间实现NanoID

1 下载jar包

jnanoid.jar

2 代码

package com.wanmait;

import java.util.Random;
import java.util.UUID;

import com.aventrix.jnanoid.jnanoid.NanoIdUtils;

public class ID {
	
	public String getNanoID()
	{
		char c[] = {'a','b','c'};
		String nanoId = NanoIdUtils.randomNanoId();
		return nanoId;
	}
	
	public String getUUID()
	{
		String uuid =  UUID.randomUUID().toString();
		return uuid;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ID id = new ID();
		String uuid = id.getUUID();
		System.out.println("UUID:"+uuid);
		
		String nanoid = id.getNanoID();
		System.out.println("NanoId:"+nanoid);
	}

}

执行结果:

image.png


另外NanoID自定义字母表和长度,

例如:

package com.wanmait;

import java.util.Random;
import java.util.UUID;

import com.aventrix.jnanoid.jnanoid.NanoIdUtils;

public class ID {
	
	public String getNanoID()
	{
		char c[] = {'a','b','c'};
		String nanoId = NanoIdUtils.randomNanoId(new Random(),c,5);
		//c是提供的字母表   5是长度
		return nanoId;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ID id = new ID();
		String nanoid = id.getNanoID();
		System.out.println("NanoId:"+nanoid);
	}

}


image.png

image.png

之星两次,生成不同的标识


0条评论

点击登录参与评论