UUID 生成器
UUID 唯一标识符生成工具
工具简介:UUID 生成器
UUID(Universally Unique Identifier,通用唯一识别码)是一种标准化的识别信息,用于在分布式系统中唯一标识信息。UUID 由 128 位数字组成,通常以 32 个十六进制数字表示,并用连字符分隔成五组。
什么是UUID 生成器?
UUID 用于处理与整理相关内容,帮助你快速得到结果。
如何使用
- 输入内容或选择参数。
- 根据需要调整选项。
- 生成结果并复制或下载。
常见应用场景
- 日常开发与学习中的快速处理
- 数据整理与格式转换
- 文档或演示中的辅助处理
❓ 常见问题 FAQ
Q1:结果不正确怎么办?
A:检查输入格式与选项设置。
Q2:输入很大怎么办?
A:建议分批处理以提升稳定性。
Q3:如何保存结果?
A:复制输出或使用下载功能。
✨ 主要特性
- 🔢 多版本支持:支持 UUID v1、v4 等不同版本
- ⚡ 批量生成:支持一次生成多个 UUID
- 📋 多种格式:支持标准格式、无连字符格式等
- 💾 一键复制:生成的 UUID 可直接复制使用
- 🔧 实时生成:点击即可生成新的 UUID
📖 使用示例
标准 UUID v4
生成示例:
f47ac10b-58cc-4372-a567-0e02b2c3d479
特点:
- 随机生成,无时间信息
- 碰撞概率极低
- 最常用的 UUID 版本
UUID v1(基于时间)
生成示例:
6ba7b810-9dad-11d1-80b4-00c04fd430c8
特点:
- 包含时间戳信息
- 包含 MAC 地址信息
- 可以推断生成时间
无连字符格式
生成示例:
f47ac10b58cc4372a5670e02b2c3d479
特点:
- 32 个连续的十六进制字符
- 适用于某些数据库或系统
🎯 应用场景
1. 数据库主键
在数据库中使用 UUID 作为主键:
-- 创建使用 UUID 主键的表
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入数据(自动生成 UUID)
INSERT INTO users (username, email)
VALUES ('zhangsan', '[email protected]');
-- 查询数据
SELECT * FROM users WHERE id = 'f47ac10b-58cc-4372-a567-0e02b2c3d479';
2. 分布式系统
在分布式系统中生成唯一标识:
// 微服务中的请求追踪
class RequestTracker {
constructor() {
this.requestId = generateUUID()
this.timestamp = new Date().toISOString()
}
log(message) {
console.log(`[${this.requestId}] ${this.timestamp}: ${message}`)
}
}
// 使用示例
const tracker = new RequestTracker()
tracker.log('开始处理用户请求')
tracker.log('调用用户服务')
tracker.log('调用订单服务')
tracker.log('请求处理完成')
// 输出示例:
// [f47ac10b-58cc-4372-a567-0e02b2c3d479] 2024-06-15T10:30:00.000Z: 开始处理用户请求
3. 文件命名
为上传的文件生成唯一名称:
// 文件上传处理
function handleFileUpload(file) {
const fileExtension = file.name.split('.').pop()
const uniqueFileName = `${generateUUID()}.${fileExtension}`
// 保存文件
const filePath = `/uploads/${uniqueFileName}`
saveFile(file, filePath)
return {
originalName: file.name,
fileName: uniqueFileName,
filePath: filePath,
uploadTime: new Date().toISOString()
}
}
// 使用示例
const uploadResult = handleFileUpload(userFile)
console.log(uploadResult)
// {
// originalName: "document.pdf",
// fileName: "f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf",
// filePath: "/uploads/f47ac10b-58cc-4372-a567-0e02b2c3d479.pdf",
// uploadTime: "2024-06-15T10:30:00.000Z"
// }
4. 会话管理
为用户会话生成唯一标识:
// 会话管理系统
class SessionManager {
constructor() {
this.sessions = new Map()
}
createSession(userId) {
const sessionId = generateUUID()
const session = {
id: sessionId,
userId: userId,
createdAt: new Date(),
lastAccess: new Date(),
data: {}
}
this.sessions.set(sessionId, session)
return sessionId
}
getSession(sessionId) {
const session = this.sessions.get(sessionId)
if (session) {
session.lastAccess = new Date()
}
return session
}
destroySession(sessionId) {
return this.sessions.delete(sessionId)
}
}
// 使用示例
const sessionManager = new SessionManager()
const sessionId = sessionManager.createSession('user123')
console.log('会话ID:', sessionId)
// 会话ID: f47ac10b-58cc-4372-a567-0e02b2c3d479
5. API 密钥生成
为 API 访问生成唯一密钥:
// API 密钥管理
class ApiKeyManager {
constructor() {
this.apiKeys = new Map()
}
generateApiKey(userId, permissions = []) {
const apiKey = generateUUID()
const keyInfo = {
key: apiKey,
userId: userId,
permissions: permissions,
createdAt: new Date(),
lastUsed: null,
isActive: true
}
this.apiKeys.set(apiKey, keyInfo)
return apiKey
}
validateApiKey(apiKey) {
const keyInfo = this.apiKeys.get(apiKey)
if (keyInfo && keyInfo.isActive) {
keyInfo.lastUsed = new Date()
return keyInfo
}
return null
}
revokeApiKey(apiKey) {
const keyInfo = this.apiKeys.get(apiKey)
if (keyInfo) {
keyInfo.isActive = false
return true
}
return false
}
}
// 使用示例
const apiManager = new ApiKeyManager()
const apiKey = apiManager.generateApiKey('user123', ['read', 'write'])
console.log('API 密钥:', apiKey)
// API 密钥: f47ac10b-58cc-4372-a567-0e02b2c3d479
🔧 技术详解
UUID 版本
不同版本的 UUID 有不同的生成方式:
UUID v1(基于时间):
- 包含时间戳(60位)
- 包含时钟序列(14位)
- 包含节点标识符(48位,通常是 MAC 地址)
- 可以推断生成时间和位置
UUID v4(随机):
- 122位随机数
- 6位版本和变体标识
- 碰撞概率约为 1/2^122
- 最常用的版本
UUID v5(基于名称):
- 使用 SHA-1 哈希算法
- 基于命名空间和名称生成
- 相同输入总是产生相同 UUID
格式结构
标准 UUID 格式:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
- M:版本号(1、4、5等)
- N:变体标识(通常是 8、9、A、B)
- x:十六进制数字(0-9、A-F)
碰撞概率
UUID v4 的碰撞概率极低:
- 总共有 2^122 种可能的 UUID
- 生成 10^18 个 UUID 的碰撞概率约为 50%
- 在实际应用中可以认为是唯一的
💡 使用技巧
- 版本选择:一般情况下使用 UUID v4,需要时间信息时使用 v1
- 存储优化:数据库中可以使用 BINARY(16) 存储以节省空间
- 索引性能:UUID 作为主键时注意索引性能影响
- 格式统一:在同一系统中保持 UUID 格式的一致性
⚠️ 注意事项
- 性能影响:UUID 作为主键可能影响数据库性能
- 排序问题:UUID 无法按生成时间排序(除非使用 v1)
- 存储空间:UUID 占用较多存储空间(36字符或16字节)
- 可读性:UUID 不如自增 ID 直观易读
🚀 开始使用
- 选择版本:根据需求选择 UUID 版本
- 设置数量:选择要生成的 UUID 数量
- 选择格式:选择标准格式或无连字符格式
- 生成 UUID:点击生成按钮创建 UUID
- 复制使用:点击复制按钮将 UUID 复制到剪贴板
提示:本工具在客户端本地生成 UUID,不会上传任何数据到服务器,确保隐私安全。