8月21日总结

本文介绍了雪花算法的原理和实现细节,包括64位ID的构成,如何生成唯一ID,以及时间戳、机房ID、机器ID和序号的分配。通过示例展示了如何避免ID冲突,并给出了在时间回退情况下的处理策略。此外,还讨论了如何根据实际需求调整算法,并将其应用于账号创建等场景。
摘要由CSDN通过智能技术生成

上午

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写项目,完善好友列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值