搜索
首页后端开发php教程UUID中中的名字和名字空间代表什么?如何获得?

如题。在UUID中的v3和v5都需要名字和名字空间,百思不得其解。它们代表是什么?如何获得呢?

回复内容:

如题。在UUID中的v3和v5都需要名字和名字空间,百思不得其解。它们代表是什么?如何获得呢?

记得有次和甲方两个小伙子说道GUID,一字一顿的:“全-球-唯-一-ID”的时候,我看到本来认为技术枯燥无味的他们,眼中放出的光芒!。因为这背后有故事。这title,很响亮。

题主对命名空间和名字,百思不得其解,是因为缺乏问题的上下文,而不是 @_404_MrYes 谈及的细节。首要在于去理解:“要设计一个唯一的ID,会遇到的问题和解决方案”。

设计一个唯一id,是非常有用。比如网卡的mac地址,就得是唯一的。不如地址冲突了,网卡重复地址出现在一个公司的局域网内,发给同一地址的人,有两个或者多个人收到,就乱了。整个局域网协议都以mac地址唯一为基础,因此唯一id,是整个系统的基础。

那么,mac地址如何做到唯一?mac地址会有一个集中的机构制定一个号段,好比1号段给3com,二号给tp-link,etc .然后在这个号段内,每个网卡制造商建立自己的号,一个网卡一个。只要在自己号段内不重复,就可以保证在全世界不重复。类似的做法很多,比如条码,每个商品理论上也需要唯一,做法也类似,就是工商局(条码办)的机构,搞号段。类似的机构很多的。我要是有机会,也想去这样的地方任职,搞搞分配:)。只要是需要资源分配,不能重复的,都需要。比如各个地方的无线电委员会,划分频段资源。航空的航路也需要分配。电信管理局这样的傻部门,就负责028给成都,025给武汉的节奏。无处不在哦。

可是,在互联网的条件下,这样的统一的机构很讨厌啊是不是。去中心化的互联网,天然反感这样的集中和垄断,必然的效率损失,要是这个机构脸难看,门难进,就更加讨厌了。最好是大家做出约定,每个人有自己的命名空间,在自己的地盘内,随便自己撒野,怎么玩都行,要是内部重复了,也只会伤害自己。多自由。这样,核心问题就是,是否有每个机构自己的,“天然的”,命名空间,这个空间内,自己规划自己的名字。所有的名字都在一个或者多个自己的空间内。这就是namespace的含义。

这样,你就比较好了解rfc中的 Motivation,就是去中心化(no cnetralized authority):

One of the main reasons for using UUIDs is that no centralized
authority is required to administer them (although one format uses
IEEE 802 node identifiers, others do not)
ref: http://tools.ietf.org/html/rfc4122#page-13
这样的‘天然的“命名空间,还是真有,比如microsoft 就可以说,microsoft.com就是我的命名空间,在这空间下,microsoft.com/1 就是操作系统部门,/2就是开发部门。microsoft就获得了自由。你公司是foo.com.cn ,那么/1是总经理,/2 。。etc。你获得了自由。专职的分配委员会之类的寄生虫,就不在必要了。

UUID就是这样的思路。名字空间+名字,保证每个机构用自己的名字空间,在名字空间内决定自己的名字,这样保证内部不重复,在外部也就不会重复。

我发现,我很喜欢科普哦。

rfc4122 4.3. Algorithm for Creating a Name-Based UUID

这里面有提及说

  • 同一namespace下,不同name的uuid不同
  • 同一namespace下,相同的name的uuid一定相同
  • 不同的namespace下,uuid一定不同
  • 如果两个name的UUID相同,那么一定是来自同一namespace下的同一name

关于name选取

<code>The concept of name and name space should be broadly construed, and not limited to textual names.  For example, some name spaces are the domain name system, URLs, ISO Object IDs (OIDs), X.500 Distinguished Names (DNs), and reserved words in a programming language.
</code>

如何获取

<code><br>   o  Allocate a UUID to use as a "name space ID" for all UUIDs
      generated from names in that name space; see Appendix C for some
      pre-defined values.

   o  Choose either MD5 [4] or SHA-1 [8] as the hash algorithm; If
      backward compatibility is not an issue, SHA-1 is preferred.
</code>

v3版本:md5
v5版本:sha-1

BTW,这个问题google一下不就出来了么?

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
使用PHP发送电子邮件的最佳方法是什么?使用PHP发送电子邮件的最佳方法是什么?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依赖注入的最佳实践PHP中依赖注入的最佳实践May 08, 2025 am 12:21 AM

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

PHP性能调整技巧和技巧PHP性能调整技巧和技巧May 08, 2025 am 12:20 AM

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

PHP电子邮件安全性:发送电子邮件的最佳实践PHP电子邮件安全性:发送电子邮件的最佳实践May 08, 2025 am 12:16 AM

ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

您如何优化PHP应用程序的性能?您如何优化PHP应用程序的性能?May 08, 2025 am 12:08 AM

TOOPTIMIZEPHPAPPLICITIONSFORPERSTORANCE,USECACHING,数据库imization,opcodecaching和SererverConfiguration.1)InlumentCachingWithApcutCutoredSatfetchTimes.2)优化的atabasesbasesebasesebasesbasesbasesbaysbysbyIndexing,BeallancingAndWriteExing

PHP中的依赖注入是什么?PHP中的依赖注入是什么?May 07, 2025 pm 03:09 PM

依赖性注射inphpisadesignpatternthatenhancesFlexibility,可检验性和ManiaginabilybyByByByByByExternalDependencEctenceScoupling.itallowsforloosecoupling,EasiererTestingThroughMocking,andModularDesign,andModularDesign,butquirscarecarefulscarefullsstructoringDovairing voavoidOverOver-Inje

最佳PHP性能优化技术最佳PHP性能优化技术May 07, 2025 pm 03:05 PM

PHP性能优化可以通过以下步骤实现:1)在脚本顶部使用require_once或include_once减少文件加载次数;2)使用预处理语句和批处理减少数据库查询次数;3)配置OPcache进行opcode缓存;4)启用并配置PHP-FPM优化进程管理;5)使用CDN分发静态资源;6)使用Xdebug或Blackfire进行代码性能分析;7)选择高效的数据结构如数组;8)编写模块化代码以优化执行。

PHP性能优化:使用OpCode缓存PHP性能优化:使用OpCode缓存May 07, 2025 pm 02:49 PM

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用