js生成java uuid_JS生成UUID
一、UUID是什么
UUID就是Universal Unique IDentifier的缩写,它是一个128位,16字节的值,并确保在时间和空间上唯一。
它是把硬件地址、时间以及随机数结合在一起,它保证对在同一时空中的所有机器都是唯一的。
通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID (Globals Unique Identifiers)。
一般情况下,生成算法用计算机网卡的地址和一个60位的timestamp生成,时间是以100ns为时间间隔。
例如,一台300PL 6862的计算机,主板集成的网卡的MAC地址为00-04-AC-2E-B7-DC,而UUID的最后六个字节也会是0004AC2EB7DC
一般我们都知道使用Java如何创建UUID,如下:
java类:java.util.UUID
UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID
import java.util.UUID;
public class TestGUID {
public static void main(String[] args) {//用main方法是为了测试方便
UUID uuid = UUID.randomUUID(); //实际项目中只有这句有用
System.out.println (uuid);
}
}
编译运行输出如:c9d6294f-0c62-453f-8626-68c7b0fc9769
二、JS生成UUID
如果想在js中使用uuid我们可以使用如下方法生成:
/*!
Math.uuid.js (v1.4)
http://www.broofa.com
mailto:robert@broofa.com
Copyright (c) 2010 Robert Kieffer
Dual licensed under the MIT and GPL licenses.
*/
/*
* Generate a random uuid.
*
* USAGE: Math.uuid(length, radix)
* length - the desired number of characters
* radix - the number of allowable values for each character.
*
* EXAMPLES:
* // No arguments - returns RFC4122, version 4 ID
* >>> Math.uuid()
* "92329D39-6F5C-4520-ABFC-AAB64544E172"
*
* // One argument - returns ID of the specified length
* >>> Math.uuid(15) // 15 character ID (default base=62)
* "VcydxgltxrVZSTV"
*
* // Two arguments - returns ID of the specified length, and radix. (Radix must be <= 62)
* >>> Math.uuid(8, 2) // 8 character ID (base=2)
* "01001010"
* >>> Math.uuid(8, 10) // 8 character ID (base=10)
* "47473046"
* >>> Math.uuid(8, 16) // 8 character ID (base=16)
* "098F4D35"
*/
(function() {
// Private array of chars to use
var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
Math.uuid = function (len, radix) {
var chars = CHARS, uuid = [], i;
radix = radix || chars.length;
if (len) {
// Compact form
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
} else {
// rfc4122, version 4 form
var r;
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random()*16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
};
// A more performant, but slightly bulkier, RFC4122v4 solution. We boost performance
// by minimizing calls to random()
Math.uuidFast = function() {
var chars = CHARS, uuid = new Array(36), rnd=0, r;
for (var i = 0; i < 36; i++) {
if (i==8 || i==13 || i==18 || i==23) {
uuid[i] = '-';
} else if (i==14) {
uuid[i] = '4';
} else {
if (rnd <= 0x02) rnd = 0x2000000 + (Math.random()*0x1000000)|0;
r = rnd & 0xf;
rnd = rnd >> 4;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
return uuid.join('');
};
// A more compact, but less performant, RFC4122v4 solution:
Math.uuidCompact = function() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
};
})();
三、JS中生成Guid
全局唯一标识符,简称GUID(发音为 /ˈɡuːɪd/或/ˈɡwɪd/),是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-1069-A2DD-08002B30309D},它实质上是一个128位长的二进制整数。GUID一词有时也专指微软对UUID标准的实现。
GUID的主要目的是产生完全唯一的数字。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID的总数也足够大,达到了2128(3.4×1038)个,所以随机生成两个相同GUID的可能性是非常小的,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
下面是生成Guid代码实现,优点是代码量极少:
// Generate four random hex digits.
function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
};
// Generate a pseudo-GUID by concatenating random hexadecimal.
function guid() {
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
};
下面是几种生成Guid的算法来自(http://www.cnblogs.com/snandy/p/3261754.html)
1、
function uuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
}
2.
function guid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
3、
这个可以指定长度和基数:
js生成java uuid_JS生成UUID相关推荐
- 在Js和Java自动生成账号的方法
在做项目的过程中,自动生成账号这个功能是经常用到的,那么在js和java中是如何自动生成账号的呢,我整理了两个很简单的例子: 一. 在js中自动生成会员账号 首先定义一个会员账号方法. public ...
- java压缩文件的生成,Java 压缩生成zip文件
保留目录结构,递归压缩多个文件夹生成一个zip文件 调用demo import cn.common.utils.ZipUtil; import com.google.common.collect.Li ...
- java uuid fasterxml_可笑!可悲!可叹!你竟然还不知道Java如何生成UUID?
一个调皮的读者在之前我写的"我去"系列文章里留言调侃说,"二哥,你是无中生小王吗?"不不不,其实真不是的,小王是真实存在的,他一直和我并肩作战,不辞辛劳,让我既 ...
- mac protobuf java_mac 下 使用 protobuf 生成 java 及 js 及配合socket.io 使用
定义一个ProtoBuf源文件,gps_data.proto syntax = "proto3"; message gps_data { int64 id = 1; string ...
- 可笑,你竟然不知道 Java 如何生成 UUID
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员. 本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...
- java将uuid转换成大写,python生成大写32位uuid代码
我就废话不多说了,还是直接看代码吧,希望对你有帮助! import uuid def getUUID(): return "".join(str(uuid.uuid4()).spl ...
- java后台生成echarts图表
java后台生成echarts图表 最近博主在做一个项目,需要后台出图和前端echarts一样的图,比如折线图和柱状图. 经过一番整理,顺利实现了该功能,特此分享,需要白嫖的,拿走不谢. 直接上效果图 ...
- 菜鸟学Java(六)——简单验证码生成(Java版)
转载自 菜鸟学Java(六)--简单验证码生成(Java版) 验证码大家都知道,它的作用也不用我多说了吧.如果不太清楚请参见百度百科中的解释,一般验证码的生成就是随机产生字符(数字.字母或者汉字等) ...
- 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...
- java 生成客户端代码_swagger-codegen生成java客户端代码
前后端分离的时候,需要建立契约,Swagger可达到该目的(略). 建立Rest接口后,通过swagger-codegen项目可以自动生成对应的客户端代码(c++.php.java.js.node等等 ...
最新文章
- C#开发中关于加密解密字符串的使用方法
- 整数转化成字符串; 字符串转换为整数
- linux中进程的控制总结,Linux中的进程控制
- 3. HTML中的容器标签
- 我的 Windows 电脑已经不用安全软件好多年了
- 离线抓取域登录缓存hash(mscash)
- 大学的最后一年有一门课程叫“人生”。
- npm -save 和-save-dev秒懂
- 三菱modbusRTU通讯实例_PLC编程实例 | 讲解食品和药品成型案例程序!
- 蚂蚁金服校招一面有感
- 第10章 vim程序编辑器
- 使用python爬取新浪微博的内容
- Cordova Android 问题
- 视频中的声音如何处理,如何添加背景音乐?
- android2012系统,压倒性份额四核技术 Android系统2012前瞻
- Direct2D 图形计算
- 邮箱服务之阿里云平台
- 微信小程序全面屏适配
- 王姨劝我学HarmonyOS鸿蒙2.0系列教程之五布局方法点击响应!
- php获取本机的IP