如何实现给定版本1 TimeUUID A生成有效的版本1 TimeUUID B的函数增量(Uuid),其中:
与给定版本1 TimeUUID A生成有效的版本1 TimeUUID B相同(Uuid):
发布于 2012-10-19 19:02:59
版本1的uuid排序在时间戳和时钟序列字段中表示。时间戳是一个60位的日期戳(表示100纳秒的时间增量,fwiw),而时钟序列是一个14位计数器,它保证在给定的时钟周期中生成的uuid是唯一的。因此,您可以认为v1 uuids有一个74位的序列号,时间戳是高阶位,时钟序列是低阶位。因此,要将UUID增加1,只需.
请注意,步骤1和第4步稍微复杂一些,因为包含时钟序列的两个八进制也包含uuid变体,因此您需要进行一些位杂耍来提取/只设置时钟序列的14位。
要减少uuid,只需重复上面的内容,除非在步骤2& 3中,如果时钟序列为零,则将其设置为2^^14-1,并将时间戳减少1。
最后,如果60位时间戳超过/隐藏,您必须自己决定要做什么。假设时间戳为0意味着UUID是在莎士比亚结婚(公元1582年)前后产生的,而时间戳为2^60-1意味着它是由你的(伟大^150)-grandchild在公元538年.我想这没什么大不了的。
https://stackoverflow.com/questions/12828037
复制相似问题