首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何增加/减少(版本1) TimeUUID?

如何增加/减少(版本1) TimeUUID?
EN

Stack Overflow用户
提问于 2012-10-10 20:44:47
回答 1查看 460关注 0票数 0

如何实现给定版本1 TimeUUID A生成有效的版本1 TimeUUID B的函数增量(Uuid),其中:

  1. B>A
  2. B>C>A不存在C

与给定版本1 TimeUUID A生成有效的版本1 TimeUUID B相同(Uuid):

  1. B
  2. B
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 19:02:59

版本1的uuid排序在时间戳时钟序列字段中表示。时间戳是一个60位的日期戳(表示100纳秒的时间增量,fwiw),而时钟序列是一个14位计数器,它保证在给定的时钟周期中生成的uuid是唯一的。因此,您可以认为v1 uuids有一个74位的序列号,时间戳是高阶位,时钟序列是低阶位。因此,要将UUID增加1,只需.

  1. 解析时间戳和时钟序列字段
  2. 将时钟序列增加一个
  3. 如果时钟序列为>= 2^^14,则将其设置为零并将时间戳字段增加1。
  4. 将字段写回原来的UUID。

请注意,步骤1和第4步稍微复杂一些,因为包含时钟序列的两个八进制也包含uuid变体,因此您需要进行一些位杂耍来提取/只设置时钟序列的14位。

要减少uuid,只需重复上面的内容,除非在步骤2& 3中,如果时钟序列为零,则将其设置为2^^14-1,并将时间戳减少1。

最后,如果60位时间戳超过/隐藏,您必须自己决定要做什么。假设时间戳为0意味着UUID是在莎士比亚结婚(公元1582年)前后产生的,而时间戳为2^60-1意味着它是由你的(伟大^150)-grandchild在公元538年.我想这没什么大不了的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12828037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档