• java Hibernate UUID代码


    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
    }

     
  • 相关阅读:
    别再乱升级 MySQL 驱动了。。
    Spring Boot + MyBatis + MySQL 实现读写分离
    多线程环境下,HashMap 为什么会出现死循环?
    亿级流量架构怎么做资源隔离?写得太好了!
    refdeveloptools for developers
    how to setup ppc2003 or smartphone 2003 to connect to internet
    转载:一篇java与C#的对比文章(英文)
    在sqlexpress中添加DB和在sql analyzer中操作DB.
    windows 2003下配置IIS6为iis5方式的隔离模式运行
    开源的pop3和smtp组件(支持中文及SSL)
  • 原文地址:https://www.cnblogs.com/HCCZX/p/3405705.html
Copyright © 2020-2023  润新知