背景Snowflake 是 Twitter 内部的一个 ID 生算法,可以通过一些简单的规则保证在大规模分布式情况下生成唯一的 ID 号码。其组成为:第一个 bit 为未使用的符号位。第二部分由 41 位的时间戳(毫秒)构成,他的取值是当前时间相对于某一时间的偏移量。第三部分和第四部分的 5 个 bit 位表示数据中心和机器 ID,其能表示的最大值为 2^5 -1 = 31;最后部分由 12 个 bit 组成,其表示每个工作节点每毫秒生成的序列号 ID,同一毫秒内最多可生成 2^12 -1 即 4095 个 ID。需要注意的是:代码id的混淆补充知识正数的二进制表示方式: 补码和原码相同负数的二进制表示方式: 以其原码的补码形式表示正数的补码是其二进制表示,与原码相同。负数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。-1 ^ (-1 << 4)就是-1的二进制表示为-1的补码(其值为 位数上全是1, 11111111)其实等同于: 2的4次方 - 1参考链接hashids参考链接1参考链接2
01-07 05:47
查看更多