一、UUID是什么?
UUID(Universally Unique Identifier,通用唯一标识符)是一种128位长的标识符,用于在计算机系统中识别信息。
UUID是通过MAC地址、时间戳、命名空间、随机数和其它方法,保证ID的唯一性。
在Java中,我们可以使用java.util.UUID
类来生成UUID。
import java.util.UUID;
System.out.println(UUID.randomUUID());
// output: 7d65c57e-2f0d-449d-b645-e8da4b556250
二、randomuuidisnotafunction的问题
在JavaScript中,我们通常使用Math.random()
方法生成随机数。但是,这种方式生成的随机数是不唯一的。
console.log(Math.random()); // output: 0.6528870726352309
console.log(Math.random()); // output: 0.7409684183808188
所以,有些人会使用类似于这样的方式生成UUID:
function uuidv4() {
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);
});
}
console.log(uuidv4()); // output: "4871f5ad-9fad-495b-9d88-ab8e65c7a54b"
console.log(uuidv4()); // output: "da4d6784-e000-4b22-a73a-8eff0eb227c6"
然而,上面这种方式生成的"UUID",实际上并不是真正的UUID,而是伪造的。因为它并没有遵守UUID标准。事实上,在JavaScript中,并没有内置的UUID生成器。所以,我们必须借助一些第三方库来生成UUID。
三、通过第三方库生成UUID
在JavaScript中,有一些第三方库可以用来生成UUID,比如:
- node-uuid
- uuid
下面是
node-uuid
的使用方法:
var uuid = require('node-uuid');
console.log(uuid.v4()); // output: "bb7e85b7-fc97-4135-9ce5-414f1c0891fb"
console.log(uuid.v4()); // output: "486dd8fb-9c86-4ee2-bea1-fd5600708ef6"
下面是uuid
的使用方法:
import { v4 as uuidv4 } from 'uuid';
console.log(uuidv4()); // output: "c1d805ed-434e-4729-bdd1-f5b0ae4d7350"
console.log(uuidv4()); // output: "92b16105-6dee-4a25-836b-cc81fca93e51"
四、总结
UUID是一种用于在计算机系统中识别信息的128位长的标识符。在JavaScript中,通过第三方库可以很方便地生成UUID。而自己实现UUID生成器并不可取,因为这样生成的"UUID"并不遵守UUID标准,也不具有唯一性。