JAVA工具类(14)----UUID工具类,产生随机字符串主键

来源:互联网 发布:安全的聊天软件 编辑:程序博客网 时间:2024/06/06 19:41
package com.gcloud.common;import java.net.InetAddress;import java.util.UUID;/** * uuid工具类 * Created by charlin on 2017/9/9. */public class UUIDUtil {    private String sep = "";    private static int IP = 0;    private static short counter = (short) 0;    private static int JVM = (int) (System.currentTimeMillis() >>> 8);    static {        try {            IP = toInt(InetAddress.getLocalHost().getAddress());        } catch (Exception e) {        }    }    private static UUIDUtil instance = new UUIDUtil();    public static UUIDUtil getInstance() {        return instance;    }    /**     * byte转int     *     * @param bytes     * @return     */    public static int toInt(byte[] bytes) {        int result = 0;        for (int i = 0; i < 4; i++) {            result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];        }        return result;    }    protected String format(int intval) {        String formatted = Integer.toHexString(intval);        StringBuffer buf = new StringBuffer("00000000");        buf.replace(8 - formatted.length(), 8, formatted);        return buf.toString();    }    protected String format(short shortval) {        String formatted = Integer.toHexString(shortval);        StringBuffer buf = new StringBuffer("0000");        buf.replace(4 - formatted.length(), 4, formatted);        return buf.toString();    }    protected int getJVM() {        return JVM;    }    protected synchronized short getCount() {        if (counter < 0) {            counter = 0;        }        return counter++;    }    protected int getIP() {        return IP;    }    protected short getHiTime() {        return (short) (System.currentTimeMillis() >>> 32);    }    protected int getLoTime() {        return (int) System.currentTimeMillis();    }    public String generate() {        return new StringBuffer(36).append(format(getIP())).append(sep).append(                format(getJVM())).append(sep).append(format(getHiTime()))                .append(sep).append(format(getLoTime())).append(sep).append(                        format(getCount())).toString();    }    // 得到一个序号    public static String getUUID() {        String s = UUID.randomUUID().toString();        return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);    }    /**     * 一次得到多个序号     *     * @param number int 需要获得的序号数量     * @return String[] 序号数组     */    public static String[] getUUID(int number) {        if (number < 1) {            return null;        }        String[] ss = new String[number];        for (int i = 0; i < ss.length; i++) {            ss[i] = getUUID();        }        return ss;    }    public static void main(String[] str) {        // 得到一个序号        System.out.println(getUUID());        System.out.println("----------------------------");        // 一次得到多个序号        String[] UUID_s = getUUID(10);        for (int i = 0; i < UUID_s.length; i++) {            System.out.println(UUID_s[i]);        }    }}

—————————————————————————————————————————————————–

java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万

下载地址:

https://item.taobao.com/item.htm?spm=686.1000925.0.0.4a155084hc8wek&id=555888526201

01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)

01内容详情:
这里写图片描述
—————————————————————————————————————————————————–

原创粉丝点击