return ((epochSecond - OFFSET) << 21) | (next << 5) | shardId;
这里的-OFFSET、<<21 、<< 5 、| shardId这些操作符为什么需要这么写?一直没搞懂,今天读了廖老师的博客,受益良多!!
以下是我的理解:
这里的<<5,应该是最后的shardId占用了;右移21位,这里会需要加上next右移的5位,实际上next占用了16位;那么16位最高能够容纳1 << 16 = 65536个序列;
也就是说同一秒最高支持6.5W个序列生成;
Sign in to make a reply
Yanlun0323
这里的-OFFSET、<<21 、<< 5 、| shardId这些操作符为什么需要这么写?一直没搞懂,今天读了廖老师的博客,受益良多!!
以下是我的理解:
这里的<<5,应该是最后的shardId占用了;右移21位,这里会需要加上next右移的5位,实际上next占用了16位;那么16位最高能够容纳1 << 16 = 65536个序列;
也就是说同一秒最高支持6.5W个序列生成;