天天短讯!RFC4144中的Abstract 你了解多少?
一、简介
(资料图片仅供参考)
UUID,是Universally Unique Identifier的缩写,UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息;
GUID,是Globally Unique Identifier的缩写,跟UUID是同一个东西,只是来源于微软。
规范定义
UUID来自于IETF发布的一个规范:
UUID来源于OSF的DCE规范,也就是RFC4122的前身
GUID来源于微软,注意RFC4122的作者之一是微软员工
下面摘录一下,RFC4144中的Abstract
不知道起什么标题好
1个UUID是1个16字节(128位)的数字;为了方便阅读,通常将UUID表示成如下的方式:
123e4567-e89b-12d3-a456-426655440000
1个UUID被连字符分为五段,形式为8-4-4-4-12的32个字符。
其中的字母是16进制表示,大小写无关。
二、不同的版本
UUID本身也经过了多个版本的演化,每个版本的算法都不同。
标准格式
UUID的格式是这样的:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
N那个位置,只会是8,9,a,b
M那个位置,代表版本号,由于UUID的标准实现有5个版本,所以只会是1,2,3,4,5
各个版本简介
版本1:基于时间的UUID
通过当前时间戳、机器MAC地址生成;
由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。
但与此同时,因为它暴露了电脑的MAC地址和生成这个UUID的时间,这就是这个版本UUID被诟病的地方。
在python里面的使用的例子:
>>> import uuid>>> uuid.uuid1()UUID("444b5cc0-ae5d-11e6-8d22-28924a431726")>>> uuid.uuid1()UUID("46a9bf21-ae5d-11e6-9549-28924a431726")
其中,最后的12个字符28924a431726就是我电脑网卡的MAC地址
版本2:DCE安全的UUID
DCE安全的UUID和基于时间的UUID算法相同,但会把时间戳的前4位置换为POSIX的UID或GID。
不过,在UUID的规范里面没有明确地指定,所以基本上所有的UUID实现都不会实现这个版本。
版本3:基于名字空间的UUID(MD5)
由用户指定1个namespace和1个具体的字符串,通过MD5散列,来生成1个UUID;
根据规范描述,这个版本的存在是为了向后兼容?平时这个版本我们也很少用到
在python里面的使用的例子:
>>> import uuid>>> uuid.uuid3(uuid.NAMESPACE_DNS, "myString")UUID("21fc48e5-63f0-3849-8b9d-838a012a5936")>>> uuid.uuid3(uuid.NAMESPACE_DNS, "myString")UUID("21fc48e5-63f0-3849-8b9d-838a012a5936")
在java中使用的例子
System.out.println(UUID.nameUUIDFromBytes("myString".getBytes("UTF-8")).toString());
Java只支持生成版本3和版本4的UUID
版本4:基于随机数的UUID
根据随机数,或者伪随机数生成UUID。这种UUID产生重复的概率是可以计算出来的,但随机的东西就像是买彩票:你指望它发财是不可能的,但狗屎运通常会在不经意中到来。这个版本应该是平时大家无意中用得最多的版本了;
在python里面使用的例子:
>>> import uuid>>> uuid.uuid4()UUID("e584539d-a334-4f15-9819-88d73fcf707d")>>> uuid.uuid4()UUID("76ec02cc-1b1d-4ad3-bd09-a4f6d67c7af4")
以及Java中大家最熟悉的:
System.out.println(UUID.randomUUID().toString());
版本5:基于名字空间的UUID(SHA1)
和版本3一样,不过散列函数换成了SHA1
在python里面的使用的例子:
>>> import uuid>>> uuid.uuid5(uuid.NAMESPACE_DNS, "myString")UUID("cd086011-6aac-5a06-a94a-0b67c59649ba")>>> uuid.uuid5(uuid.NAMESPACE_DNS, "myString")UUID("cd086011-6aac-5a06-a94a-0b67c59649ba")
三、UUID的应用
从几个版本的定义来看,感觉都不是特别完美,可能版本4是平时用得最多的,但是在现实的业务场景中,考虑到可读性、唯一性、长度,我们一般也不会选择UUID当做数据库的主键。
至于其他场景的应用,可以结合具体的场景,来使用各个版本的实现。
四、UUID和各个编程语言
微软:http://msdn.microsoft.com/en-us/library/system.guid(v=vs.110).aspx
Linux:http://en.wikipedia.org/wiki/Util-linux
Android:http://developer.android.com/reference/java/util/UUID.html
PHP:http://php.net/manual/en/function.uniqid.php#94959
MySQL:http://dev.mysql.com/doc/refman/5.1/en/miscellaneous-functions.html#function_uuid
Java:http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html
nodejs - https://github.com/broofa/node-uuid
参考:
https://en.wikipedia.org/wiki/Universally_unique_identifier#Version_3_.28MD5_hash_and_namespace.29
https://github.com/simongong/js-stackoverflow-highest-votes/blob/master/questions1-10/how-to-create-a-UUID-in-javascript.md
http://www.blogjava.net/feelyou/archive/2008/10/14/234320.html
END
推荐好文
强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮!
标签:
相关推荐:
最新新闻:
- 毕业生想做猎头前景如何?猎头前景分析_全球快讯
- 数藏行业首现“傍名牌” 百度搜“十八数藏”首页第一条是ibox广告
- oki打印机设置参数 OKI帮你找到最适合办公打印机
- 电脑ip地址怎么查看?查看ip地址最简单方法
- 手机投屏到电视上怎么操作?手机投屏到电视的方法
- 怎样清除手机病毒的教程?手机中病毒的解决办法
- 剪贴板在哪里找?Windows 10系统剪切板位置
- 在哪看电脑配置是什么?查看电脑配置的实用方法
- u盘文件夹exe病毒解决方法有哪些?清除exe病毒文件的技巧
- 两台电脑如何共享文件?文件共享的方法步骤图解
- tf卡写保护无法格式化怎么办?u盘被写保护最简单解除方法
- 安卓手机如何刷机?安卓手机刷机教程
- 世界看热讯:yy电影频道是多少?如何使用yy看在线电影?
- 网页自动刷新怎么设置?网页实现自动刷新步骤
- 车载导航品牌哪个好?汽车导航品牌推荐
- 索泰显卡怎么样?索泰RTX 4090 AMP EXTREME AIRO显卡评测
- 华为MateBook14怎么样?华为MateBook14值不值得买?|每日速递
- 无法连接到iTunes Store怎么办?无法连接到iTunes Store的解决方法
- 如何快速输入特殊符号?特殊符号怎么打出来?
- 电脑温度多少度正常?看看你的电脑温度多少?
- 计算机指纹识别的原理是什么?指纹识别原理和过程_天天快播
- 显卡检测工具有哪些?显卡用什么软件去检测?
- 不干胶打印机哪种好?不干胶打印机推荐
- 当前快报:如何使用手机可视电话?可视电话使用方法
- win7网络连接不可用是怎么回事?电脑连接不可用解决方法
- 内存条价格上涨的原因是什么?内存条价格上涨的原因介绍
- 为什么百度云网盘登录不了?网页版、pc版 都登陆不进去的解决方法
- 手机电子签名怎么弄?电子签名制作步骤
- 网页制作入门级软件推荐——FrontPage-焦点快看
- epson630k打印机怎么换色带?针式打印机色带安装方法
- 非负数正则怎么表示?非负数正则表达式
- 今日看点:MIUI是什么?MIUI的主要特色
- 天天短讯!RFC4144中的Abstract 你了解多少?
- 环球新消息丨热管换热器工作原理是什么?热管换热器工作原理及特点介绍
- 擦掉照片上的衣服app 去掉照片上衣服操作步骤
- 花样直播是什么?花样直播的详细介绍|今日看点
- Word如何绘制斜线表头?方法步骤如下
- 全球观焦点:CSDN社区简介: 全球最大的IT技术社区 日访问用户数达100万
- 数码印刷机在工作中的作用 数码印刷机详细介绍
- 联想启天m2000电脑怎么样?联想启天m2000性能评测|当前聚焦
- 正泰断路器有哪些型号?正泰断路器型号以及其功能-每日看点
- 世界资讯:电力线接入是什么?电力线接入技术原理分析介绍
- 苹果手机怎么检查是不是正品?检查苹果正品方法_百事通
- 世界快资讯丨百度联盟SSP媒体广告异步加载代码解决方案
- 电动遮阳帘有什么品牌?电动遮阳帘品牌推荐
- 视讯!单变量积分的知识可参考 二重积分的意义
- 环球讯息:扇形计算公式是怎么得来的?扇形计算公式介绍
- win10系统如何设置动态桌面?电脑炫酷动态壁纸
- qq炫舞测试服务器怎么维护?QQ炫舞体验服新界面安装操作方法
- 域名服务器是什么?域名服务器详情介绍
- 手机电子签名怎么弄?电子签名制作步骤
- 专家狠批算法推荐 看短视频频率影响未成年人价值取向
- Steam年度游戏数据回顾 今年玩了多少款游戏?
- epson630k打印机怎么换色带?针式打印机色带安装方法
- 擦掉照片上的衣服app 去掉照片上衣服操作步骤
- 讯息:《巫师:血源》翻车 成烂番茄观众评分最差网飞剧集
- 《蜡笔小新 我与博士的暑假》Steam国区售价永降 全区最低
- MAGES.发表2022财年财报 共损失6.13亿日元
- Falcom公开《伊苏10》新概念图 游戏将于2023年发售
- 《星战绝地:幸存者》新加坡分级完成 适合16岁观众游玩
- 干装修的电影人
- 最新:重症高峰下,中国最知名呼吸科医院的急救室一夜
- 天天时讯:钛金属加持 小米米家保温杯Ti明日开启众筹
- 爆料称AMD锐龙 7040移动处理器支持LPDDR5-7500内存:全球快讯
- 做梦都不敢想 国外一工地竟出现一块“RTX 8090Ti”超级显卡
- 苹果A16的秘密公开了 原计划继续领先安卓两年
- iPhone 15 mini将回归:价格为699美元
- 肉腿即正义!《莱莎的炼金工房3》×伊织萌Cosplay照片公开:世界讯息
- 黑暗幻想JRPG《索迪斯之沙》现已上架Steam
- 关于赚钱,别太轻佻|即时看
- 最新快讯!联想拯救者刃7000K台式机开启预售 9999元起
- 天天百事通!Win11记事本迎来“大升级”:将新增标签页功能
- 世界实时:CES 2023华硕预热 新款轻薄本将开启OLED屏幕新维度
- ThinkPad上经典的小红点设计还能存在多久?联想给出最终答案_天天新动态
- 今日讯!日本足球之父给国足3点建议:若不改 50年后依然如此