什么是UUID?它有什么作用?用js写一个生成UUID的方法

UUID 是通用唯一识别码(Universally Unique Identifier)的缩写,它是一个 128 位的数字,用于在计算机系统中识别信息。UUID 的目的是让分布式系统中的所有元素都能生成不冲突的 ID,而无需中央协调。这意味着即使两台不同的机器或两个不同的进程生成 UUID,它们也几乎可以肯定不会相同。

UUID 的作用主要体现在以下几个方面:

  • 唯一标识: UUID 的主要目的是为对象提供唯一的标识符。这在数据库、分布式系统和需要唯一标识资源的任何其他场景中都非常有用。
  • 去中心化生成: UUID 可以在不依赖中央授权机构的情况下生成,这意味着即使在离线环境下也可以创建唯一的 ID。
  • 全局唯一性: UUID 的设计目标是在时空上全局唯一。虽然理论上存在碰撞的可能性,但这种可能性极低,可以忽略不计。

以下是用 JavaScript 生成 UUID 的方法(前端开发):

function generateUUID() {
  let d = new Date().getTime(); // 获取当前时间戳
  if (typeof performance !== 'undefined' && typeof performance.now === 'function') {
    d += performance.now(); //use high-precision timer if available
  }
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    let r = (d + Math.random() * 16) % 16 | 0;
    d = Math.floor(d / 16);
    return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  });
}

// 示例用法:
let uuid = generateUUID();
console.log(uuid);

这段代码的解释:

  1. new Date().getTime()performance.now(): 获取当前时间戳,尽可能使用更高精度的计时器以减少碰撞的可能性。 performance.now() 提供比 Date.getTime() 更高的精度,尤其在快速连续生成 UUID 时效果更好。

  2. xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx: 这是 UUID 的标准格式,其中 x 表示可以是任何十六进制数字,4 表示版本号(这里是版本 4,基于随机数生成),y 的前四位必须是 8、9、a 或 b 之一。

  3. .replace(/[xy]/g, function(c) { ... }): 这个部分遍历 UUID 模板字符串,并将 x 和 y 替换为随机生成的十六进制数字。

  4. (r & 0x3 | 0x8): 这部分代码确保 y 的前四位符合 UUID 版本 4 的规范。

更简洁的版本 (利用 Crypto API):

现代浏览器普遍支持 crypto.randomUUID() API,这是生成 UUID v4 的更简洁和标准化的方法:

function generateUUID() {
  return crypto.randomUUID();
}

let uuid = generateUUID();
console.log(uuid);

如果你的目标浏览器支持 crypto.randomUUID(),强烈推荐使用这个方法,因为它更简单、更高效,并且符合标准。 如果需要兼容不支持该 API 的旧版浏览器,则可以使用上面第一个代码示例。

posted @   王铁柱6  阅读(195)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示