• java 生成GUID,可以用UUID类来生成GUID


      全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符,一般用16进制表示。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复

    第一种:可以用UUID类来生成GUID

    复制代码
    import java.util.UUID;
    public class GuidTest {
        public static void main(String[] args) {
            UUID uuid = UUID.randomUUID();
            System.out.println (uuid);
        }
    }
    复制代码

    输出:

    第二种:直接生成

    复制代码
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;
    import java.util.Random;
    public class GUID {
        public String valueBeforeMD5 = "";
        public String valueAfterMD5 = "";
        private static final Random myRand;
        private static final SecureRandom mySecureRand;
        private static String s_id;
        static {
            mySecureRand = new SecureRandom();
            long secureInitializer = mySecureRand.nextLong();
            myRand = new Random(secureInitializer);
            try {
                s_id = InetAddress.getLocalHost().toString();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
        }
        public GUID() {
            getRandomGUID(false);
        }
        public GUID(boolean secure) {
            getRandomGUID(secure);
        }
        private void getRandomGUID(boolean secure) {
            MessageDigest md5 = null;
            StringBuilder sbValueBeforeMD5 = new StringBuilder();
            try {
                md5 = MessageDigest.getInstance("MD5");
            } catch (NoSuchAlgorithmException e) {
                System.out.println("Error: " + e);
            }
            try {
                long time = System.currentTimeMillis();
                long rand = myRand.nextLong();
                if (secure) {
                    rand = mySecureRand.nextLong();
                }
                sbValueBeforeMD5.append(s_id);
                sbValueBeforeMD5.append(":");
                sbValueBeforeMD5.append(time);
                sbValueBeforeMD5.append(":");
                sbValueBeforeMD5.append(rand);
                valueBeforeMD5 = sbValueBeforeMD5.toString();
                md5.update(valueBeforeMD5.getBytes());
                byte[] array = md5.digest();
                StringBuilder sb = new StringBuilder();
                for (byte value : array) {
                    int b = value & 0xFF;
                    if (b < 0x10) sb.append('0');
                    sb.append(Integer.toHexString(b));
                }
                valueAfterMD5 = sb.toString();
            } catch (Exception e) {
                System.out.println("Error:" + e);
            }
        }
        public String toString() {
            String raw = valueAfterMD5.toUpperCase();
            return raw.substring(0, 8) +
                    "-" +
                    raw.substring(8, 12) +
                    "-" +
                    raw.substring(12, 16) +
                    "-" +
                    raw.substring(16, 20) +
                    "-" +
                    raw.substring(20);
        }
        public static void main(String[] args) {
            GUID guid = new GUID();
            System.out.println(guid);
        }
    }
    复制代码

    输出:

    https://www.cnblogs.com/hzzjj/p/15741060.html
  • 相关阅读:
    每日博客
    每日博客
    预开发软件书 新
    laravel的优点
    Laravel 自己创建ServiceProvider 与 yansongda/laravel-pay 支付服务
    laradock
    普通静态绑定与后期静态绑定
    phpstorm和xdebug的配置 变量的单步调试
    phpstorm 连接远程docker
    docker php-fpm安装xdebug 与phpstorm firefox联调
  • 原文地址:https://www.cnblogs.com/sunny3158/p/16771742.html
Copyright © 2020-2023  润新知