Java、JavaScript、php、mysql、oracle生成uuid(32位)
2012-11-27 16:43
621 查看
Java、JavaScript、php、mysql、oracle生成uuid(32位)的方法
一、Java:
四、MySql:
五、Oracle:
欢迎大家指正和补充!
一、Java:
import java.net.InetAddress; public class IDGenerator { private String sep = ""; private static final int IP; private static short counter = (short) 0; private static final int JVM = (int) (System.currentTimeMillis() >>> 8); private static IDGenerator uuidgen = new IDGenerator(); static { int ipadd; try { ipadd = toInt(InetAddress.getLocalHost().getAddress()); } catch (Exception e) { ipadd = 0; } IP = ipadd; } public static IDGenerator getInstance() { return uuidgen; } 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(); } }二、JavaScript:
(function(window){ //On creation of a UUID object, set it's initial value function UUID() { this.id = this.createUUID(); } // When asked what this Object is, lie and return it's value UUID.prototype.valueOf = function() { return this.id; }; UUID.prototype.toString = function() { return this.id; }; // // INSTANCE SPECIFIC METHODS // UUID.prototype.createUUID = function() { // // Loose interpretation of the specification DCE 1.1: Remote Procedure Call // since JavaScript doesn't allow access to internal systems, the last 48 bits // of the node section is made up using a series of random numbers (6 octets long). // var dg = new Date(1582, 10, 15, 0, 0, 0, 0); var dc = new Date(); var t = dc.getTime() - dg.getTime(); var tl = UUID.getIntegerBits(t, 0, 31); var tm = UUID.getIntegerBits(t, 32, 47); var thv = UUID.getIntegerBits(t, 48, 59) + '1'; // version 1, security version is 2 var csar = UUID.getIntegerBits(UUID.rand(4095), 0, 7); var csl = UUID.getIntegerBits(UUID.rand(4095), 0, 7); // since detection of anything about the machine/browser is far to buggy, // include some more random numbers here // if NIC or an IP can be obtained reliably, that should be put in // here instead. var n = UUID.getIntegerBits(UUID.rand(8191), 0, 7) + UUID.getIntegerBits(UUID.rand(8191), 8, 15) + UUID.getIntegerBits(UUID.rand(8191), 0, 7) + UUID.getIntegerBits(UUID.rand(8191), 8, 15) + UUID.getIntegerBits(UUID.rand(8191), 0, 15); // this last number is two octets long return tl + tm + thv + csar + csl + n; }; //Pull out only certain bits from a very large integer, used to get the time //code information for the first part of a UUID. Will return zero's if there //aren't enough bits to shift where it needs to. UUID.getIntegerBits = function(val, start, end) { var base16 = UUID.returnBase(val, 16); var quadArray = new Array(); var quadString = ''; var i = 0; for (i = 0; i < base16.length; i++) { quadArray.push(base16.substring(i, i + 1)); } for (i = Math.floor(start / 4); i <= Math.floor(end / 4); i++) { if (!quadArray[i] || quadArray[i] == '') quadString += '0'; else quadString += quadArray[i]; } return quadString; }; //Replaced from the original function to leverage the built in methods in //JavaScript. Thanks to Robert Kieffer for pointing this one out UUID.returnBase = function(number, base) { return (number).toString(base).toUpperCase(); }; //pick a random number within a range of numbers //int b rand(int a); where 0 <= b <= a UUID.rand = function(max) { return Math.floor(Math.random() * (max + 1)); }; //变成全局函数 window.createUUID = function(type){ var _type = (typeof type == 'undefined' || (type!='l'&&type!='u')) ? 'l' : type; if(_type=='u'){ return new UUID().toString(); }else { return new UUID().toString().toLowerCase(); } }; })(window);三、PHP:
class System { function currentTimeMillis() { list ($usec, $sec) = explode(" ", microtime()); return $sec . substr($usec, 2, 3); } } class NetAddress { var $Name = 'localhost'; var $IP = '127.0.0.1'; function getLocalHost() // static { $address = new NetAddress(); $address->Name = $_ENV["COMPUTERNAME"]; $address->IP = $_SERVER["SERVER_ADDR"]; return $address; } function toString() { return strtolower($this->Name . '/' . $this->IP); } } class Random { function nextLong() { $tmp = rand(0, 1) ? '-' : ''; return $tmp . rand(1000, 9999) . rand(1000, 9999) . rand(1000, 9999) . rand(100, 999) . rand(100, 999); } } // 三段 // 一段是微秒 一段是地址 一段是随机数 class Guid { var $valueBeforeMD5; var $valueAfterMD5; function Guid() { $this->getGuid(); } // function getGuid() { $address = NetAddress :: getLocalHost(); $this->valueBeforeMD5 = $address->toString() . ':' . System :: currentTimeMillis() . ':' . Random :: nextLong(); $this->valueAfterMD5 = md5($this->valueBeforeMD5); } function newGuid() { $Guid = new Guid(); return $Guid; } function toString() { $raw = strtoupper($this->valueAfterMD5); return substr($raw, 0, 8) . substr($raw, 8, 4) . substr($raw, 12, 4) . substr($raw, 16, 4) . substr($raw, 20); } } //生成32位uuid function createUUID(){ $Guid = new Guid(); $uuid = $Guid->toString(); return strtolower($uuid); }
四、MySql:
SELECT UUID(); //带“-” SELECT REPLACE(UUID(), '-', ''); //不带“-”
五、Oracle:
select sys_guid() from dual;//大写
select LOWER(sys_guid()) from dual;//小写
欢迎大家指正和补充!
相关文章推荐
- Java,Javascript,Oracle开发生成UUID或GUID方法总结
- Java,Javascript,Oracle开发生成UUID或GUID方法总结
- contenttype_仙乐_XianLe -- Java,DotNet,PHP,JavaScript,RSA,WSAD,DB2,Oracle,MySql,VE_百度空间
- MySQL生成32位无"-"UUID
- 自学android, java, html, css, php, mysql, javascript路线
- Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享
- java生成32位的UUID
- mysql使用uuid()函数生成主键方法(java环境)
- 在Oracle与mysql中自动生成uuid
- oracle生成32位uuid
- javascript 生成32位UUID的方法
- java生成32位的UUID通用唯一识别码 (Universally Unique Identifier)
- 简单明了的JAVA生成32位UUID
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- oracle生成32位的uuid,sql语句
- javascript生成32位UUID的方法
- oracle获得uuid,java生成uuid
- highcharts实例教程二:结合php与mysql生成饼图
- Mysql,Oracle,Java数据类型对应
- JAVA UUID 生成