zoukankan      html  css  js  c++  java
  • Java的Guid生成

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

    import java.util.UUID;
    public class Test {
        public static void main(String[] args) {
            for (int i=0;i<100;i++){
                UUID uuid = UUID.randomUUID();
                System.out.println (String.valueOf(uuid).length());
            }
        }
    }
    

      

    第二种:自定义工具类

    package com.gaohang.test;
     
    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 RandomGUID extends Object {
     
    	public String valueBeforeMD5 = "";
    	public String valueAfterMD5 = "";
    	private static Random myRand;
    	private static 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 RandomGUID() {
    		getRandomGUID(false);
    	}
     
    	public RandomGUID(boolean secure) {
    		getRandomGUID(secure);
    	}
     
    	private void getRandomGUID(boolean secure) {
    		MessageDigest md5 = null;
    		StringBuffer sbValueBeforeMD5 = new StringBuffer();
     
    		try {
    			md5 = MessageDigest.getInstance("MD5");
    		} catch (NoSuchAlgorithmException e) {
    			System.out.println("Error: " + e);
    		}
     
    		try {
    			long time = System.currentTimeMillis();
    			long rand = 0;
     
    			if (secure) {
    				rand = mySecureRand.nextLong();
    			} else {
    				rand = myRand.nextLong();
    			}
     
    			sbValueBeforeMD5.append(s_id);
    			sbValueBeforeMD5.append(":");
    			sbValueBeforeMD5.append(Long.toString(time));
    			sbValueBeforeMD5.append(":");
    			sbValueBeforeMD5.append(Long.toString(rand));
     
    			valueBeforeMD5 = sbValueBeforeMD5.toString();
    			md5.update(valueBeforeMD5.getBytes());
     
    			byte[] array = md5.digest();
    			StringBuffer sb = new StringBuffer();
    			for (int j = 0; j < array.length; ++j) {
    				int b = array[j] & 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();
    		StringBuffer sb = new StringBuffer();
    		sb.append(raw.substring(0, 8));
    		sb.append("-");
    		sb.append(raw.substring(8, 12));
    		sb.append("-");
    		sb.append(raw.substring(12, 16));
    		sb.append("-");
    		sb.append(raw.substring(16, 20));
    		sb.append("-");
    		sb.append(raw.substring(20));
     
    		return sb.toString();
    	}
    }
    

      

  • 相关阅读:
    MySql设计表中的create_time和update_time字段
    java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V
    Hbase问题:java.lang.RuntimeException: HRegionServer Aborted
    Elasticsearch 7.6.2 简单的api(springboot)
    idea + springboot 热部署
    kibana Elasticsearch cluster did not respond with license information.
    Elasticsearch7.6.2 搭建的坑
    数据库账号密码加密
    pg数据库,插入数据,若已存在则更新数据
    org.postgresql.util.PSQLException:这个 ResultSet 已经被关闭。
  • 原文地址:https://www.cnblogs.com/hahayixiao/p/14927990.html
Copyright © 2011-2022 走看看