_02_使用UUID获取唯一标识

本文介绍了如何使用UUID生成唯一标识符,并提供了Java实现代码。UUID(通用唯一识别码)能够确保分布式系统中生成的标识符的唯一性。文章详细解释了UUID的不同版本及其组成。
部署运行你感兴趣的模型镜像

[文章标题:_02_使用UUID获取唯一标识] [202012-29 03:39:00]
需求:

​ 很多时候我们会需要用到 生成不重复的唯一标识的 的功能,如数据库表中的主键等。

实现:

​ 使用UUID生成 唯一、不重复 的字符串。

import java.util.UUID;
public class UUIDUtils {
    public static String getUUID(){
        return UUID.randomUUID().toString().replace("-","");
    }
}

什么是UUID:

​ UUID 通用唯一识别码(Universally Unique Identifier),UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息。UUID是 国际标准化组织 ISO 提出的一个概念。UUID是一个128比特的数值,这个数值可以通过一定的算法计算出来。目前最广泛应用的UUID,是微软公司微软公司的全局唯一标识符(GUID)。

UUID在发展过程中,为了适应不同的需要,产生了5个版本:

  • uuid1: 基于时间戳、机器MAC地址生成。由于使用MAC地址,可以保证全球范围的唯一性。
  • uuid2: 只基于时间戳,不常用。
  • uuid3: 基于namespace和一个自定义字符串,不常用。
  • uuid4: 只基于随机数,最常用,但不推荐,重复几率不太能让人接受。
  • uuid5: 只基于namespace,不常用。

UUID组成:

UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

UUID由以下几部分的组合:

(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。

(2)时钟序列。

(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

标准的UUID格式为:xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx (8-4-4-4-12)。

A那个位置,代表版本号,由于UUID的标准实现有5个版本,所以只会是1,2,3,4,5
B那个位置,只会是8,9,a,b

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### `__DC_STAT_UUID` 的含义与用途 在 uni-app 开发中,`__DC_STAT_UUID` 是一个特殊的缓存键,通常用于存储设备的唯一标识符,用于统计分析或其他需要设备识别的场景。它可能由某些统计 SDK 或框架内部生成和维护,用于跟踪设备或用户行为数据[^4]。 虽然 `__DC_STAT_UUID` 并不是 `uni.getDeviceInfo()` 的直接返回字段,但在实际开发中,开发者可能会通过 `uni.getSystemInfoSync()` 获取设备信息,并结合自定义逻辑生成或存储 `__DC_STAT_UUID`,以确保在不同会话中能够识别同一设备。 例如,某些统计 SDK 会在应用首次启动时生成一个唯一标识符,并将其存储在本地缓存中,键名可能为 `__DC_STAT_UUID`。这样在后续使用中,可以通过 `uni.getStorageSync('__DC_STAT_UUID')` 获取该标识符,用于设备识别或用户行为追踪。 ```javascript const dcStatUuid = uni.getStorageSync('__DC_STAT_UUID'); if (!dcStatUuid) { // 生成唯一标识符 const systemInfo = uni.getSystemInfoSync(); const newUuid = systemInfo.deviceId + '-' + new Date().getTime(); uni.setStorageSync('__DC_STAT_UUID', newUuid); } ``` ### `uni.getDeviceInfo()` 的作用 虽然 `uni.getDeviceInfo()` 并不是 uni-app 官方文档中明确列出的 API,但在实际开发中,开发者通常使用 `uni.getSystemInfoSync()` 来获取设备的基本信息,包括设备型号、系统版本、屏幕尺寸、设备唯一标识等。该方法返回的对象中通常包含 `deviceId` 字段,用于表示设备的唯一标识。 ```javascript const systemInfo = uni.getSystemInfoSync(); console.log('设备型号:', systemInfo.model); console.log('系统版本:', systemInfo.system); console.log('设备唯一标识:', systemInfo.deviceId); ``` 在某些场景下,`__DC_STAT_UUID` 可能会被用作更稳定的设备标识符,尤其是在 `deviceId` 可能发生变化的情况下(如小程序卸载重装后)。因此,开发者可能会结合 `uni.getSystemInfoSync()` 和本地缓存机制来生成和维护 `__DC_STAT_UUID`,以确保在不同会话中保持设备标识的稳定性。 ### `__DC_STAT_UUID` 与 `uni.getDeviceInfo()` 的关系 `__DC_STAT_UUID` 本身并不是 `uni.getDeviceInfo()` 的返回字段,而是开发者或某些 SDK 在使用过程中基于设备信息生成并存储的唯一标识符。它通常用于以下场景: - **用户行为追踪**:用于统计用户在应用中的操作行为,确保在不同会话中可以识别同一设备。 - **设备识别**:作为设备的唯一标识符,用于服务器端识别设备或用户。 - **缓存管理**:在清理缓存时,保留 `__DC_STAT_UUID` 等关键标识符,以避免重复生成或丢失用户数据[^4]。 ### 示例代码 以下是一个完整的示例,展示如何在 uni-app 中生成和维护 `__DC_STAT_UUID`: ```vue <template> <view class="container"> <text>设备型号: {{ deviceModel }}</text> <text>系统版本: {{ systemVersion }}</text> <text>设备唯一标识: {{ deviceId }}</text> <text>__DC_STAT_UUID: {{ dcStatUuid }}</text> </view> </template> <script> export default { data() { return { deviceModel: '', systemVersion: '', deviceId: '', dcStatUuid: '' }; }, onLoad() { const systemInfo = uni.getSystemInfoSync(); this.deviceModel = systemInfo.model; this.systemVersion = systemInfo.system; this.deviceId = systemInfo.deviceId; let dcStatUuid = uni.getStorageSync('__DC_STAT_UUID'); if (!dcStatUuid) { dcStatUuid = systemInfo.deviceId + '-' + new Date().getTime(); uni.setStorageSync('__DC_STAT_UUID', dcStatUuid); } this.dcStatUuid = dcStatUuid; } }; </script> <style> .container { padding: 20px; } </style> ``` ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值