src/main/java/com/mty/cc/util/uuid.java
(开头部分) 7KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
package com.mty.cc.util;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.MessageDigest;
import java.util.Random;
import java.util.UUID;
/**
* @description:用于生产各种各样的ID
* @author: mty
* @time: 2019/11/19 10:14
*/
public class uuid {
private static String middle = "";
static {
middle = MathUtils.makeUpNewData(Math.abs(NetworkUtils.getHostIP().hashCode()) + "", 4) + //4位IP地址hash
MathUtils.makeUpNewData(NetworkUtils.getPid(), 4); //4位PID进程hash
}
/**
* 以毫微秒做基础计数, 返回唯一有序增长ID
* <pre>System.nanoTime()</pre>
* <pre>
* 线程数量: 100
* 执行次数: 1000
* 平均耗时: 222 ms
* 数组长度: 100000
* Map Size: 100000
* </pre>
* @return ID长度32位
*/
public static String getIncreaseIdByNanoTime(){
return System.nanoTime()+ //时间戳-14位
middle+ //标志-8位
MathUtils.makeUpNewData(Thread.currentThread().hashCode()+"", 3)+ //3位线程标志
MathUtils.randomDigitNumber(7); //随机7位数
}
/**
* 以毫秒做基础计数, 返回唯一有序增长ID, 有几率出现线程并发
* <pre>System.currentTimeMillis()</pre>
* <pre>
* 线程数量: 100
* 执行次数: 1000
* 平均耗时: 206 ms
* 数组长度: 100000
* Map Size: 99992
* </pre>
* @return ID长度32位
*/
public static String getIncreaseIdByCurrentTimeMillis(){
return System.currentTimeMillis()+ //时间戳-14位
middle+ //标志-8位
MathUtils.makeUpNewData(Thread.currentThread().hashCode()+"", 3)+ //3位线程标志
MathUtils.randomDigitNumber(8); //随机8位数
}
/**
后面还有 132 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
