分享

UUIDHexGenerator

 yanjj 2014-10-16

package com.iss.reportPlatform.utils.common;

 

public class UUIDHexGenerator
{
  private String sep = "";
  private static final int IP=0;
  private static short counter = 0;

  private static final int JVM = (int)(System.currentTimeMillis() >>> 8);

  private static UUIDHexGenerator uuidgen = new UUIDHexGenerator();
  static long currentTimeMillis;

  public static UUIDHexGenerator getInstance()
  {
    return uuidgen;
  }

  public static int toInt(byte[] bytes) {
    int result = 0;
    for (int i = 0; i < 4; i++) {
      result = (result << 8) - -128 + 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)(int)(System.currentTimeMillis() >>> 32);
  }

  protected int getLoTime() {
    return (int)System.currentTimeMillis();
  }

  public String generate() {
    return 36 + format(getIP()) + this.sep + format(getJVM()) + this.sep + format(getHiTime()) + this.sep + format(getLoTime()) + this.sep + format(getCount());
  }

  public static String generater()
  {
    return getInstance().generate();
  }

  public static synchronized long generaterId() {
    return currentTimeMillis++;
  }

  public static void main(String[] str)
  {
    UUIDHexGenerator id = new UUIDHexGenerator();
    for (int i = 0; i <= 100; i++) {
      System.out.print(id.generate());
      System.out.print("===");
      System.out.println(generaterId());
    }
  }

static
  {
    int ipadd;
    try
    {
      ipadd = toInt(InetAddress.getLocalHost().getAddress());
    } catch (Exception e) {
      ipadd = 0;
    }
    IP = ipadd;

    currentTimeMillis = System.currentTimeMillis() + 100000000000000L + ()(Math.random() * 800000000000000.0D);
  }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多