上午
7:30-8:00学习打卡
9:30-12:00写项目,看视频
下午
2:00-5:00写项目,看雪花算法
雪花算法
可以生成唯一id,在时间不回退的情况下,一般有64位(二进制);
第一位:肯定是0,在二进制中第一位表示符号,1代表负数,0代表正数,所以第一位不需要做处理
余下41:时间截,可以自己定义开始的时间截,不一定非要是1970年,时间截存放的是生成id时间与开始时间截的差,可以使用69年
后10位:前五位机房id,后五位机器id
最后12位:表示的序号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号
基本思路:
给定开始时间截
if(机房id或机器id超出范围){
抛出异常;
}else{
if(当前时间<开始时间截){
抛出异常;
}else{
if(相等){
id=(id+1)%idmax;
if(id==0){
sleep(1);//等待1毫秒
}
}
}
}
最后需要将时间截、机器id、机房id、id拼接起来成一个64 bit的二进制数字,转换成10进制就是个long型
将时间截左移22位,机器id和机房id一起左移12位,id本来就在最后面,
可以不要动,再三者取异或运算(有1就是1)
可以根据自己的需求进行改进,可以利用雪花算法创建账号,不会重复,只是需要将最后的结果(long类型)转变为字符串
晚上
7:00-8:30写项目,完善好友列表