`
zxc3375
  • 浏览: 135964 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java、JavaScript、php、mysql、oracle生成uuid(32位)的方法

阅读更多

Java、JavaScript、php、mysql、oracle生成uuid(32位)的方法

一、Java:

 

[java] view plaincopy
 
  1. import java.net.InetAddress;  
  2.   
  3. public class IDGenerator {  
  4.   
  5.     private String sep = "";  
  6.   
  7.     private static final int IP;  
  8.   
  9.     private static short counter = (short0;  
  10.   
  11.     private static final int JVM = (int) (System.currentTimeMillis() >>> 8);  
  12.   
  13.     private static IDGenerator uuidgen = new IDGenerator();  
  14.   
  15.     static {  
  16.         int ipadd;  
  17.         try {  
  18.             ipadd = toInt(InetAddress.getLocalHost().getAddress());  
  19.         } catch (Exception e) {  
  20.             ipadd = 0;  
  21.         }  
  22.         IP = ipadd;  
  23.     }  
  24.   
  25.     public static IDGenerator getInstance() {  
  26.         return uuidgen;  
  27.     }  
  28.   
  29.     public static int toInt(byte[] bytes) {  
  30.         int result = 0;  
  31.         for (int i = 0; i < 4; i++) {  
  32.             result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];  
  33.         }  
  34.         return result;  
  35.     }  
  36.   
  37.     protected String format(int intval) {  
  38.         String formatted = Integer.toHexString(intval);  
  39.         StringBuffer buf = new StringBuffer("00000000");  
  40.         buf.replace(8 - formatted.length(), 8, formatted);  
  41.         return buf.toString();  
  42.     }  
  43.   
  44.     protected String format(short shortval) {  
  45.         String formatted = Integer.toHexString(shortval);  
  46.         StringBuffer buf = new StringBuffer("0000");  
  47.         buf.replace(4 - formatted.length(), 4, formatted);  
  48.         return buf.toString();  
  49.     }  
  50.   
  51.     protected int getJVM() {  
  52.         return JVM;  
  53.     }  
  54.   
  55.     protected synchronized short getCount() {  
  56.         if (counter < 0) {  
  57.             counter = 0;  
  58.         }  
  59.         return counter++;  
  60.     }  
  61.   
  62.     protected int getIP() {  
  63.         return IP;  
  64.     }  
  65.   
  66.     protected short getHiTime() {  
  67.         return (short) (System.currentTimeMillis() >>> 32);  
  68.     }  
  69.   
  70.     protected int getLoTime() {  
  71.         return (int) System.currentTimeMillis();  
  72.     }  
  73.   
  74.     public String generate() {  
  75.         return new StringBuffer(36).append(format(getIP())).append(sep).append(  
  76.                 format(getJVM())).append(sep).append(format(getHiTime()))  
  77.                 .append(sep).append(format(getLoTime())).append(sep).append(  
  78.                         format(getCount())).toString();  
  79.     }  
  80. }  

二、JavaScript:

 

 

[javascript] view plaincopy
 
  1. (function(window){  
  2.     //On creation of a UUID object, set it's initial value  
  3.     function UUID() {  
  4.         this.id = this.createUUID();  
  5.     }  
  6.   
  7.     // When asked what this Object is, lie and return it's value  
  8.     UUID.prototype.valueOf = function() {  
  9.         return this.id;  
  10.     };  
  11.     UUID.prototype.toString = function() {  
  12.         return this.id;  
  13.     };  
  14.   
  15.     //  
  16.     // INSTANCE SPECIFIC METHODS  
  17.     //  
  18.     UUID.prototype.createUUID = function() {  
  19.         //  
  20.         // Loose interpretation of the specification DCE 1.1: Remote Procedure Call  
  21.         // since JavaScript doesn't allow access to internal systems, the last 48 bits   
  22.         // of the node section is made up using a series of random numbers (6 octets long).  
  23.         //    
  24.         var dg = new Date(1582, 10, 15, 0, 0, 0, 0);  
  25.         var dc = new Date();  
  26.         var t = dc.getTime() - dg.getTime();  
  27.         var tl = UUID.getIntegerBits(t, 0, 31);  
  28.         var tm = UUID.getIntegerBits(t, 32, 47);  
  29.         var thv = UUID.getIntegerBits(t, 48, 59) + '1'// version 1, security version is 2  
  30.         var csar = UUID.getIntegerBits(UUID.rand(4095), 0, 7);  
  31.         var csl = UUID.getIntegerBits(UUID.rand(4095), 0, 7);  
  32.         // since detection of anything about the machine/browser is far to buggy,   
  33.         // include some more random numbers here  
  34.         // if NIC or an IP can be obtained reliably, that should be put in  
  35.         // here instead.  
  36.         var n = UUID.getIntegerBits(UUID.rand(8191), 0, 7)  
  37.                 + UUID.getIntegerBits(UUID.rand(8191), 8, 15)  
  38.                 + UUID.getIntegerBits(UUID.rand(8191), 0, 7)  
  39.                 + UUID.getIntegerBits(UUID.rand(8191), 8, 15)  
  40.                 + UUID.getIntegerBits(UUID.rand(8191), 0, 15); // this last number is two octets long  
  41.         return tl + tm + thv + csar + csl + n;  
  42.     };  
  43.   
  44.     //Pull out only certain bits from a very large integer, used to get the time  
  45.     //code information for the first part of a UUID. Will return zero's if there   
  46.     //aren't enough bits to shift where it needs to.  
  47.     UUID.getIntegerBits = function(val, start, end) {  
  48.         var base16 = UUID.returnBase(val, 16);  
  49.         var quadArray = new Array();  
  50.         var quadString = '';  
  51.         var i = 0;  
  52.         for (i = 0; i < base16.length; i++) {  
  53.             quadArray.push(base16.substring(i, i + 1));  
  54.         }  
  55.         for (i = Math.floor(start / 4); i <= Math.floor(end / 4); i++) {  
  56.             if (!quadArray[i] || quadArray[i] == '')  
  57.                 quadString += '0';  
  58.             else  
  59.                 quadString += quadArray[i];  
  60.         }  
  61.         return quadString;  
  62.     };  
  63.   
  64.     //Replaced from the original function to leverage the built in methods in  
  65.     //JavaScript. Thanks to Robert Kieffer for pointing this one out  
  66.     UUID.returnBase = function(number, base) {  
  67.         return (number).toString(base).toUpperCase();  
  68.     };  
  69.   
  70.     //pick a random number within a range of numbers  
  71.     //int b rand(int a); where 0 <= b <= a  
  72.     UUID.rand = function(max) {  
  73.         return Math.floor(Math.random() * (max + 1));  
  74.     };  
  75.       
  76.     //变成全局函数  
  77.     window.createUUID = function(type){  
  78.         var _type = (typeof type == 'undefined' || (type!='l'&&type!='u')) ? 'l' : type;  
  79.         if(_type=='u'){  
  80.             return new UUID().toString();  
  81.         }else {  
  82.             return new UUID().toString().toLowerCase();  
  83.         }  
  84.     };  
  85. })(window);  

三、PHP:

 

 

[php] view plaincopy
 
  1. class System {  
  2.     function currentTimeMillis() {  
  3.         list ($usec$sec) = explode("  ", microtime());  
  4.         return $sec . substr($usec, 2, 3);  
  5.     }  
  6. }  
  7. class NetAddress {  
  8.     var $Name = 'localhost';  
  9.     var $IP = '127.0.0.1';  
  10.     function getLocalHost() //  static     
  11.     {  
  12.         $address = new NetAddress();  
  13.         $address->Name = $_ENV["COMPUTERNAME"];  
  14.         $address->IP = $_SERVER["SERVER_ADDR"];  
  15.         return $address;  
  16.     }  
  17.     function toString() {  
  18.         return strtolower($this->Name . '/' . $this->IP);  
  19.     }  
  20. }  
  21. class Random {  
  22.     function nextLong() {  
  23.         $tmp = rand(0, 1) ? '-' : '';  
  24.         return $tmp . rand(1000, 9999) . rand(1000, 9999) . rand(1000, 9999) . rand(100, 999) . rand(100, 999);  
  25.     }  
  26. }  
  27. //  三段     
  28. //  一段是微秒  一段是地址  一段是随机数     
  29. class Guid {  
  30.     var $valueBeforeMD5;  
  31.     var $valueAfterMD5;  
  32.     function Guid() {  
  33.         $this->getGuid();  
  34.     }  
  35.     //     
  36.     function getGuid() {  
  37.         $address = NetAddress :: getLocalHost();  
  38.         $this->valueBeforeMD5 = $address->toString() . ':' . System :: currentTimeMillis() . ':' . Random :: nextLong();  
  39.         $this->valueAfterMD5 = md5($this->valueBeforeMD5);  
  40.     }  
  41.     function newGuid() {  
  42.         $Guid = new Guid();  
  43.         return $Guid;  
  44.     }  
  45.     function toString() {  
  46.         $raw = strtoupper($this->valueAfterMD5);  
  47.         return substr($raw, 0, 8) . substr($raw, 8, 4) . substr($raw, 12, 4) . substr($raw, 16, 4) . substr($raw, 20);  
  48.     }  
  49. }  
  50.   
  51. //生成32位uuid  
  52. function createUUID(){  
  53.     $Guid = new Guid();  
  54.     $uuid = $Guid->toString();  
  55.     return strtolower($uuid);  
  56. }  


四、MySql:

 

 

[sql] view plaincopy
 
  1. SELECT UUID();  //带“-”  
  2. SELECT REPLACE(UUID(), '-''');  //不带“-”  


五、Oracle:

 

 

[sql] view plaincopy
 
  1. select sys_guid() from dual;//大写  
[sql] view plaincopy
 
  1.  select LOWER(sys_guid()) from dual;//小写  
分享到:
评论

相关推荐

    java 生成32位UUID

    首先,我们可以从`UUID`类的`toString()`方法生成的128位UUID字符串开始,然后去除其中的短横线。以下是一个简单的示例: ```java import java.util.UUID; public class UUIDGenerator { public static String ...

    java生成8位UUID

    java 生成8位UUID,解决UUID2太长的问题,欢迎下载。后续代码,陆续放出

    Javascript生成UUID 三种方法

    ### JavaScript生成UUID的三种方法详解 #### 一、前言 在软件开发中,经常会遇到需要为特定的数据或对象分配唯一标识符的情况。UUID(通用唯一标识符)就是一种常用的解决方案,它能够确保生成的ID在空间和时间上...

    javaScript动态随即生成UUID

    下面,我们将深入探讨“javaScript动态随即生成UUID”的相关内容,包括UUID的基本概念、生成原理以及三种不同的生成方法。 ### UUID的基本概念 UUID,全称Universally Unique Identifier,即通用唯一识别码,是由...

    uuid生成16位的,唯一码

    uuid生成,可生成16个字符的唯一码。使用方法,见main函数

    uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid

    UUID由128位数字组成,通常用16进制表示,长度为36个字符,分为五段,形式为8-4-4-4-12的32个字符。 标题“uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid”表明这是一个关于使用C语言实现UUID生成的资源...

    32位UUID生成工具,16进制

    尽管128位的UUID标准形式由32个十六进制数字组成,这里提到的"32位"可能是指显示或输入时使用的简化形式,即用户仅需要关注和输入生成UUID的一部分。这种工具简化了用户与UUID交互的过程,尤其是对于那些需要大量...

    java生成唯一id(uuid)(不依赖jdk5,自己实现的)

    UUID是一种128位的数字,通常以32个字符的16进制形式表示,确保在全球范围内不会重复。本篇我们将深入探讨如何在不依赖JDK 5的新特性(如`java.util.UUID`类)的情况下,自行实现一个UUID生成器。 首先,我们需要...

    oracle数据库id为uuid类型时自动生成id

    oracle数据库id为uuid类型时自动生成id的工具类,不再依赖sequence自增长

    多种数据库下获得32位UUID的方法

    多种数据库下获得32位UUID的方法,包括MYSQL,SQLSERVER,Oracle ,以及mySQL 下使用当前时间的函数使用

    自动生成32位UUID的函数

    直接通过 dbo.[FunGetUUID32](NEWID())即可获取到32位UUID,非常简单方便。

    PB生成UUID.zip

    UUID有多种版本,包括时间戳、MAC地址、随机数等方法生成。在PB中,具体使用哪种方式取决于所使用的编程语言和PB库的支持。例如,在Python中,可以使用`uuid`模块的`uuid4()`函数生成一个基于随机数的UUID;而在Java...

    java UUID16的生成下载

    在Java中,UUID类提供了生成不同版本UUID的方法,包括版本1。 UUID版本1是基于时间的,它包含了时间戳、节点ID(通常为MAC地址)和一个随机或伪随机的数,以确保全局唯一性。具体生成过程如下: 1. **时间戳**:...

    javascript生成uuid的js库文件

    1. `uuid-js`库:这是一个基于RFC4122标准实现的JavaScript库,提供了V1到V5的所有版本UUID生成方法。其中,V1基于时间戳和MAC地址生成,V4完全是随机生成,V5则基于命名空间和SHA-1哈希算法。 2. `uuid`库(之前...

    浅谈java获取UUID与UUID的校验

    UUID 的格式是一个 32 位十六进制数字,通常以 5 个部分的形式表示,中间用连接符 "-" 分隔。例如:e65deb4c-a110-49c8-a4ef-6e69447968d6。其中,第一个部分是时域,第二个部分是时钟序列,第三个部分是节点 ID,第...

    java生成唯一索引,Long型,区别uuid

    java生成唯一索引,Long型,区别uuid

    java构造函数雪花算法生成uuid

    java构造函数雪花算法生成uuid,开始时间截、机器id所占的位数、数据标识id所占的位数、支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) 、支持的最大数据标识id,...

    唯一uuidid生成器

    在Java编程语言中,生成UUID非常简单,可以直接使用`java.util.UUID`类提供的静态方法。例如,`UUID.randomUUID()`会返回一个基于时间的UUID,这是最常用的类型。然而,如果要根据IP地址或其他自定义信息生成UUID,...

    Java生成UUID使用的第三方包

    Java生成UUID使用的第三方包,生成UUID的第三方包,

    UUID生成工具类

    UUID生成工具类

Global site tag (gtag.js) - Google Analytics