UUID全称Universally Unique IDentifier,由4个连字符-将一个32字节长(32个十六进制数组成)的字符串分割为5段,共计36字节长128位的字符串。

例如:

550e8400-e29b-41d4-a716-446655440000

UUID的目的是让分布式系统中所有元素都具有唯一的辨识信息,而无需通过中心节点指定,同时无需考虑数据创建时的名称重复问题。目前最广泛使用的UUID是RFC4122协议。

UUID实现中,GUID特指微软对标准UUID的实现。MySQL中可使用UUID()函数来生成,可使用CHAR(36)BINARY(36)来存储。

> SELECT UUID();
7c8a38b5-6490-11ec-9251-f43909452c6f

为保证UUID的唯一性,RFC4122规范定义了包括网卡MAC地址、时间戳、命名空间、随机、伪随机、时序等元素,以及从这些元素中生成UUID的算法。UUID的复杂特性在保证其唯一性同时,意味着也只能通过计算机来生成。

版本 描述
v1 基于时间,通过当前时间戳、机器MAC地址生成,MAC全球唯一但会暴露存在风险。
v2 DCE安全,和v1算法相同,但将时间戳前4位置换为POSIX的UID或GID。
v3 基于命名空间,由用户指定一个命名空间和一个具体的字符串,通过MD5散列生成。
v4 基于随机数,根据随机数或伪随机数生成。
v5 基于名字空间,类似v3不过散列函数换成了SHA1。

uuidgen

Linux系统中可使用系统命令/usr/bin/uuidgen来生成UUID

$ /usr/bin/uuid

Golang可借助于exec.Command来执行uuidgen命令来生成

package mainimport ("fmt""log""os/exec"
)func main(){out,err := exec.Command("uuidgen").Output()if err!=nil {log.Fatal(err)}fmt.Printf("%s\n", out)
}

google/uuid

google/uuid是Google开发的生成16字节UUID的Golang模块,实现了RFC4122,对UUID的v1、v2、v3、v4等版本都有实现。一般而言要生成唯一序列号的话,通常会使用v4版本。

创建项目并初始化包

$ mkdir test && cd test
$ go mod init test

下载并安装google/uuid到本地GOPATH目录下

$ go get -u -v github.com/google/uuid

创建入口文件并测试生成

$ vim main.go
package mainimport ("fmt""github.com/google/uuid"
)func main(){id := uuid.New()fmt.Printf("%s %s\n",  id, id.Version().String()) // 75381edd-ba50-4ae1-a480-2ef436457601 VERSION_4fmt.Printf("%s\n", uuid.New().String()) // c4aa07c3-8bcc-4ac1-9562-72e11bbfd7e8
}

http://www.taodudu.cc/news/show-6297517.html

相关文章:

  • useradd -g -G
  • I2C总线要点总结
  • I2C总线入门
  • IIC/I2C总线实验
  • 简单介绍I2C总线
  • I2C总线性能介绍
  • Linux I2C总线详解
  • I2C总线总结
  • I2C总线深入浅出
  • 内核I2C子系统详解
  • MYSQL服务器登录和权限设置
  • 在linux中连接mysql数据库服务器_Linux下连接Mysql服务器的方式
  • C语言中的#if语句使用
  • C语言--if…if…和if…else if的区别
  • C语言中的if选择语句
  • c语言习题---(if语句)
  • C语言基础:if语句
  • C语言-if...else if...else 语句
  • C语言 if语句详解
  • C++ if 语句
  • C++ if语句
  • C语言中的选择结构——if语句/if...else语句
  • Photoshop切图简单设置+工具介绍+以及切图方法
  • stm32串口通信最后一字节不对异常
  • 按字节编址,一字节等于多少比特?
  • 51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释
  • 返回一字节中某一位的值
  • 深入理解计算机系统-之-数值存储(二)--C程序打印变量的每一字节或者位
  • 对一个8位(一字节)数的倒序处理
  • 一字节anti创建进程线程等回调

google/uuid相关推荐

  1. golang常用库之-uuid相关库(satori/go.uuid、google/uuid)

    文章目录 golang常用库之-uuid相关库

  2. Go语言:谷歌google的uuid模块的基本用法

    uuid是谷歌开发的生成16字节UUID的模块,实现了RFC4122:对UUID的v1,v2,v3,v4,v5等各个版本都有实现.一般来说,如果只是要生成唯一序列号的话,通常用v4版本,New()和N ...

  3. golang not enough arguments in call to uuid.Must have (uuid.UUID) want (uuid.UUID, error)

    golang not enough arguments in call to uuid.Must have (uuid.UUID) want (uuid.UUID, error) 相信出现此问题的都是 ...

  4. golang生成UUID通用唯一识别码

    大多数推荐github上现成的包 https://github.com/satori/go.uuid package mainimport("fmt""github.co ...

  5. K8s 的 UUID 是如何生成的?

    引言 不知道各位有没有注意到,在 K8s 系统中,每个实例对象都有自己的 UID(其实就是UUID),用于唯一标识自己,比如 Pod.ConfigMap 等对象的 metadata 内都有一个叫做 u ...

  6. UUID/GUID介绍、生成规则及生成代码

    UUID/GUID介绍.生成规则及生成代码 1. UUID介绍 1.1 介绍 1.2 UUID优势 1.3 UUID劣势 2. UUID版本 2.1 版本1 - 基于时间的UUID 2.1.1优点 2 ...

  7. Golang 日志框架 Zap 入坑指南

    文章目录 简介 Cases case 1: Hello World case 2: SugaredLogger case 3: 定制化 SugaredLogger 使用 Console 格式 修改日期 ...

  8. 从代码到部署微服务实战

    转载地址:https://mp.weixin.qq.com/s/I6uhtvyJNia5r_Ah-5KwbA 当前微服务已经成为服务端开发的主流架构,而 Go 语言因其简单易学.内置高并发.快速编译. ...

  9. 常用的分布式唯一ID生成方案

    全局唯一ID使用场景 分布式系统设计时,数据分片场景下,通常需要一个全局唯一id: 在消息系统中需要消息唯一ID标识来防止消息重复: 多系统打通需要一个全局唯一标识 (如集团各业务线面对不同用户,需要 ...

最新文章

  1. 是不是“异常”让我的脑子糊涂了?
  2. db4o Tutorial 中文翻译(十一)
  3. 基本拖拽效果,使用 mousedown , mousemove , mouseup实现
  4. 哪些代码设计看似是面向对象,实际是面向过程的?
  5. PVSCSI还是LSI logic?VM SCSI控制器驱动的选择
  6. python的tarfile模块实例 python把文件夹压缩成tar格式文件的例子
  7. Elasticsearch6.x和Kibana6.x的安装
  8. 在Windows Phone中使用HTML编程
  9. 使用Lambda解决_inbound_nodes错误
  10. 微信小程序之----加载中提示框loading
  11. 20200717每日一句
  12. 【转】赢在中国---马云点评创业精选
  13. xp系统重装后无法连接服务器6,winXP重装系统后不能上网的解决方法
  14. 常见大学机房的计算机设备,长江大学公共机房管理办法
  15. 担忧:房价八大预言,市场来检验。
  16. LSF集群基本概念介绍
  17. 【百科】喜马诺变速器
  18. 计算ndvi值需要的数据_利用TM计算NDVI问题
  19. 【NLP】学不会打我 半小时学会基本操作 12 命名实例提取
  20. opencv | A02 播放本地视频 调用摄像头

热门文章

  1. TCP/IP 基本C/S模型
  2. Revit二次开发之技能篇(一)———轴网自动对齐
  3. C++判断两字符串是否相等
  4. 使用SPSS进行多元回归分析
  5. 【Kotlin】标准库函数 ③ ( with 标准库函数 | also 标准库函数 )
  6. 虚幻引擎 4 14 版发布
  7. JAVA进阶知识点总结 4-Map HashMap LinkedHashMap Map的遍历方式 斗地主案例
  8. Codeforces Round #717 (Div. 2)(ABCD)
  9. 50岁的程序员还奋战一线,软件测试能干到多少岁?有年龄限制吗?
  10. Python界面设计之Button