标准的long雪花长度为64bit,还要浪费1bit,然后41位时间,10位workid,12位序列
guid长度128位,64位完整的时间tick,32位workid,32位序列,可谓随便用满非常豪华
也就是系统里可以根据需要有的地方存随机guid,有的地方存雪花guid,随便换
随后还有提取时间的方法,由于是64位完整时间,直接拿出来转时间就好了
这个类参考别人的代码,如果需要设计更完善的guid雪花,可以在github上或者nuget上找newid这个项目,老外写好的更完善的做法
guid长度雪花继承雪花id所有优点和特点,只是长度略长
可以用guid存储,以往习惯guid的人没有压力,对guid支持较好的数据库就能支持好guid雪花,mysql不行
一个项目不同表可以使用不同策略,有的用guid,有的用雪花guid,按需使用,也更方便导数据
时间储存的完整long,可以提取出完整时间,时间照样从0年开始,再老的数据也可以导,只要按时间顺序,自己传个时间给next方法
序列号数量充足,不会动不动就加1秒,workid更长,可以分段放不同的内容
public class GuidSnowFlakeGenerator
{
readonly uint _c;
int _a;
int _b;
long _lastTick;
uint _sequence;
SpinLock _spin