package com.aps.common.core.utils.uuid;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.concurrent.atomic.AtomicLong;
|
|
/**
|
* ID生成器工具类
|
*
|
* @author ruoyi
|
*/
|
public class IdUtils
|
{
|
/**
|
* 获取随机UUID
|
*
|
* @return 随机UUID
|
*/
|
public static String randomUUID()
|
{
|
return UUID.randomUUID().toString();
|
}
|
|
/**
|
* 简化的UUID,去掉了横线
|
*
|
* @return 简化的UUID,去掉了横线
|
*/
|
public static String simpleUUID()
|
{
|
return UUID.randomUUID().toString(true);
|
}
|
|
/**
|
* 获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID
|
*
|
* @return 随机UUID
|
*/
|
public static String fastUUID()
|
{
|
return UUID.fastUUID().toString();
|
}
|
|
/**
|
* 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID
|
*
|
* @return 简化的UUID,去掉了横线
|
*/
|
public static String fastSimpleUUID()
|
{
|
return UUID.fastUUID().toString(true);
|
}
|
|
private static AtomicLong id;
|
/**
|
* 生成Long 类型唯一ID
|
*/
|
public synchronized static Long getId() {
|
//如果需要更长 或者更大冗余空间, 只需要 time * 10^n 即可
|
//当前可保证1毫秒 生成 10000条不重复
|
Long time = Long.valueOf(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()))*10000;
|
if (id == null) {
|
id = new AtomicLong(time);
|
return id.get();
|
}
|
if (time <= id.get()) {
|
id.addAndGet(1);
|
} else {
|
id = new AtomicLong(time);
|
}
|
return id.get();
|
}
|
}
|