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 积分,解读结果公开显示在下面。

还没有人解读过这个文件。