Java、JavaScript、php、mysql、oracle生成uuid(32位)的方法
一、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;//小写
相关推荐
首先,我们可以从`UUID`类的`toString()`方法生成的128位UUID字符串开始,然后去除其中的短横线。以下是一个简单的示例: ```java import java.util.UUID; public class UUIDGenerator { public static String ...
java 生成8位UUID,解决UUID2太长的问题,欢迎下载。后续代码,陆续放出
### JavaScript生成UUID的三种方法详解 #### 一、前言 在软件开发中,经常会遇到需要为特定的数据或对象分配唯一标识符的情况。UUID(通用唯一标识符)就是一种常用的解决方案,它能够确保生成的ID在空间和时间上...
下面,我们将深入探讨“javaScript动态随即生成UUID”的相关内容,包括UUID的基本概念、生成原理以及三种不同的生成方法。 ### UUID的基本概念 UUID,全称Universally Unique Identifier,即通用唯一识别码,是由...
uuid生成,可生成16个字符的唯一码。使用方法,见main函数
UUID由128位数字组成,通常用16进制表示,长度为36个字符,分为五段,形式为8-4-4-4-12的32个字符。 标题“uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid”表明这是一个关于使用C语言实现UUID生成的资源...
尽管128位的UUID标准形式由32个十六进制数字组成,这里提到的"32位"可能是指显示或输入时使用的简化形式,即用户仅需要关注和输入生成UUID的一部分。这种工具简化了用户与UUID交互的过程,尤其是对于那些需要大量...
UUID是一种128位的数字,通常以32个字符的16进制形式表示,确保在全球范围内不会重复。本篇我们将深入探讨如何在不依赖JDK 5的新特性(如`java.util.UUID`类)的情况下,自行实现一个UUID生成器。 首先,我们需要...
oracle数据库id为uuid类型时自动生成id的工具类,不再依赖sequence自增长
多种数据库下获得32位UUID的方法,包括MYSQL,SQLSERVER,Oracle ,以及mySQL 下使用当前时间的函数使用
直接通过 dbo.[FunGetUUID32](NEWID())即可获取到32位UUID,非常简单方便。
UUID有多种版本,包括时间戳、MAC地址、随机数等方法生成。在PB中,具体使用哪种方式取决于所使用的编程语言和PB库的支持。例如,在Python中,可以使用`uuid`模块的`uuid4()`函数生成一个基于随机数的UUID;而在Java...
在Java中,UUID类提供了生成不同版本UUID的方法,包括版本1。 UUID版本1是基于时间的,它包含了时间戳、节点ID(通常为MAC地址)和一个随机或伪随机的数,以确保全局唯一性。具体生成过程如下: 1. **时间戳**:...
1. `uuid-js`库:这是一个基于RFC4122标准实现的JavaScript库,提供了V1到V5的所有版本UUID生成方法。其中,V1基于时间戳和MAC地址生成,V4完全是随机生成,V5则基于命名空间和SHA-1哈希算法。 2. `uuid`库(之前...
UUID 的格式是一个 32 位十六进制数字,通常以 5 个部分的形式表示,中间用连接符 "-" 分隔。例如:e65deb4c-a110-49c8-a4ef-6e69447968d6。其中,第一个部分是时域,第二个部分是时钟序列,第三个部分是节点 ID,第...
java生成唯一索引,Long型,区别uuid
java构造函数雪花算法生成uuid,开始时间截、机器id所占的位数、数据标识id所占的位数、支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) 、支持的最大数据标识id,...
在Java编程语言中,生成UUID非常简单,可以直接使用`java.util.UUID`类提供的静态方法。例如,`UUID.randomUUID()`会返回一个基于时间的UUID,这是最常用的类型。然而,如果要根据IP地址或其他自定义信息生成UUID,...
Java生成UUID使用的第三方包,生成UUID的第三方包,
UUID生成工具类