杂记 技术笔记 UUID生成器使用指南:唯一标识码的生成与应用

UUID生成器使用指南:唯一标识码的生成与应用

在软件开发中,我们经常需要生成全局唯一标识符(Unique Identifier),用于数据库主键、分布式系统ID、文件命名、会话Token等场景。UUID(Universally Unique Identifier)是目前最广泛使用的唯一标识方案之一。

U2工具箱提供了在线UUID生成器,支持批量生成、多种格式选项,纯前端运行安全可靠。本文将带你全面了解UUID及其使用方法。

一、什么是UUID

UUID是一个128位的标识符,标准格式为 8-4-4-4-12 的十六进制字符串:

550e8400-e29b-41d4-a716-446655440000
  |---8--| |--4-| |--4-| |--4-| |---12---|

UUID的总量为 2128(约 3.4×1038),这是一个天文数字。即使每秒生成10亿个UUID,连续生成85年,重复的概率也几乎为零。因此UUID被广泛用于分布式系统中的唯一标识。

二、UUID版本介绍

1. UUID v4(随机版本)—— 最常用

UUID v4 基于随机数生成,是实际开发中使用最多的版本。它的第13位固定为 4(版本标识),第17位的最高两位固定为 10(变体标识),其余122位均为随机位。

示例:f47ac10b-58cc-4372-a567-0e02b2c3d479

优点:生成简单,无需协调,天然分布式友好
缺点:无时序性,随机性导致数据库索引效率略低

2. UUID v1(时间戳版本)

UUID v1 基于当前时间戳MAC地址生成,具有时序性——相近时间生成的UUID在排序上是相邻的。

示例:1e6e4370-2b29-11e9-b210-d6618a8a0a0d

优点:有时序性,适合做有序主键
缺点:可能泄露主机MAC地址信息(隐私风险)

三、工具使用方法

步骤1:选择版本

在工具页面顶部选择 UUID 版本:v4(随机)v1(时间戳)。日常使用推荐 v4。

步骤2:设置生成数量

支持一次生成 1~100 个 UUID,输入框中填写需要的数量即可。

步骤3:格式选项

工具提供三种格式选项:

选项 效果 示例
大小写 大写 / 小写 F47AC10B-...f47ac10b-...
连字符 带 / 不带连字符 f47ac10b-58cc-...f47ac10b58cc...
花括号 是否用花括号包裹 {f47ac10b-58cc-...}

步骤4:生成与复制

点击"生成"按钮,结果立即显示在下方。每个UUID右侧有复制按钮,也可点击"全部复制"一键复制全部结果。

四、实际应用场景

1. 数据库主键

在分布式系统中,使用UUID作为数据库主键可以避免自增ID的冲突问题。不同节点各自生成UUID即可保证全局唯一。

-- MySQL
CREATE TABLE orders (
    id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
    user_id BIGINT NOT NULL,
    amount DECIMAL(10,2),
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

2. 分布式系统唯一ID

微服务架构中,每个服务独立生成请求ID/链路追踪ID,使用UUID确保全链路唯一。

3. 文件命名

用户上传文件时,使用UUID作为文件名,避免同名冲突:

// JavaScript
const fileExt = file.name.split('.').pop();
const fileName = crypto.randomUUID() + '.' + fileExt;

4. 会话Token

生成临时会话Token、邀请码、激活码等:

// PHP
$token = bin2hex(random_bytes(16)); // 类似UUID的随机Token

5. 测试数据

批量生成UUID用于测试数据库、填充模拟数据等。

五、各语言生成UUID代码

JavaScript / Node.js

// 浏览器原生(Chrome 92+)
const uuid = crypto.randomUUID();

// Node.js
const { randomUUID } = require('crypto');
const uuid = randomUUID();

// 或使用 uuid 库
const { v4: uuidv4 } = require('uuid');
const uuid = uuidv4();

Python

import uuid
u = uuid.uuid4()
print(u)  # f47ac10b-58cc-4372-a567-0e02b2c3d479

PHP

// PHP 8.3+ 内置
$uuid = \uuid_create(); // 需php uuid扩展

// 或使用 Ramsey UUID 包
use Ramsey\Uuid\Uuid;
$uuid = Uuid::uuid4()->toString();

// 或纯PHP生成(兼容性方案)
function gen_uuid() {
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        mt_rand(0, 0xffff), mt_rand(0, 0xffff),
        mt_rand(0, 0xffff),
        mt_rand(0, 0x0fff) | 0x4000,
        mt_rand(0, 0x3fff) | 0x8000,
        mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    );
}

Java

import java.util.UUID;
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());

Go

import "github.com/google/uuid"
id := uuid.New()
fmt.Println(id.String())

Shell

# Linux
cat /proc/sys/kernel/random/uuid

# macOS
uuidgen

六、UUID vs 自增ID 对比

特性 自增ID UUID
唯一性 单机唯一 全局唯一
长度 4/8字节 16字节(36字符)
有序性 严格递增 v4无序,v1有序
分布式 需要协调 天然支持
安全性 可猜测 不可预测
索引效率 高(顺序写入) v4较低(随机写入)

总结

UUID是分布式系统中不可或缺的唯一标识方案。U2工具箱的UUID生成器提供了便捷的在线生成能力,支持批量、多格式、多版本,无需安装任何软件。立即体验 UUID生成器 →

所有生成操作在浏览器本地完成,不发送网络请求,安全可靠。

📎 相关文章

JSON格式化工具使用指南:开发者的必备利器 2026-07-13 欢迎使用杂记栏目 2026-07-13