博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java Hibernate UUID代码
阅读量:4621 次
发布时间:2019-06-09

本文共 2387 字,大约阅读时间需要 7 分钟。

package mypack;import java.io.Serializable;  import java.net.InetAddress;  /** * 唯一主键生成办法。从Hibernate中提取出来。 */  public class UUIDGenerator {   private static final int IP;  public static int IptoInt( byte[] bytes ) {   int result = 0;   for (int i=0; i<4; i++) {    result = ( result << 8 ) - Byte.MIN_VALUE + (int) bytes[i];   }   return result;  }  static {   int ipadd;   try {    ipadd = IptoInt( InetAddress.getLocalHost().getAddress() );   }   catch (Exception e) {    ipadd = 0;   }   IP = ipadd;  }  private static short counter = (short) 0;  private static final int JVM = (int) ( System.currentTimeMillis() >>> 8 );   public UUIDGenerator() {  }   /**  * Unique across JVMs on this machine (unless they load this class  * in the same quater second - very unlikely)  */  protected int getJVM() {   return JVM;  }   /**  * Unique in a millisecond for this JVM instance (unless there  * are > Short.MAX_VALUE instances created in a millisecond)  */  protected short getCount() {   synchronized(UUIDGenerator.class) {    if (counter<0) counter=0;    return counter++;   }  }   /**  * Unique in a local network  */  protected int getIP() {   return IP;  }   /**  * Unique down to millisecond  */  protected short getHiTime() {   return (short) ( System.currentTimeMillis() >>> 32 );  }  protected int getLoTime() {   return (int) System.currentTimeMillis();  }    private final static String sep = "";   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();  }   public Serializable 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 void main(String args[]) throws Exception {

UUIDGenerator t=new UUIDGenerator();
System.out.println(t.generate().toString()); //4028be81421ea40a01421ea40aea0000
}

 

 

转载于:https://www.cnblogs.com/HCCZX/p/3405705.html

你可能感兴趣的文章
也谈智能手机游戏开发中的分辨率自适应问题
查看>>
关于 IOS 发布的点点滴滴记录(一)
查看>>
《EMCAScript6入门》读书笔记——14.Promise对象
查看>>
CSS——水平/垂直居中
查看>>
Eclipse连接mysql数据库jdbc下载(图文)
查看>>
Python中Selenium的使用方法
查看>>
三月23日测试Fiddler
查看>>
20171013_数据库新环境后期操作
查看>>
poj 1654 && poj 1675
查看>>
运维派 企业面试题1 监控MySQL主从同步是否异常
查看>>
Docker 版本
查看>>
poj 1753 Flip Game
查看>>
在深信服实习是怎样的体验(研发测试岗)
查看>>
Linux免密码登陆
查看>>
SpringMVC中文件的上传(上传到服务器)和下载问题(二)--------下载
查看>>
Socket & TCP &HTTP
查看>>
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>