Contents

雪花算法

算法讲解

雪花算法 | 好懂23期_哔哩哔哩_bilibili

snowflake

简单版本实现

将一个int——32位,作为最终生成的唯一ID。

  • 最高位不用为0
  • 0-15这16位作为序列号
  • 15-30这15位作为机器ID

int CreatSessionID()
{
	int sessionid;
	//每次选出最小的id
	static int epch = 0;
	static int lastId = 0;

	if (epch >= pow(2,15)) {
		ALOGE("ID run out of");
		return -1;
	}
	if (lastId >= pow(2, 16)) {
		epch++;
		lastId = 0;
	}

	//类雪花算法实现,全局唯一自增ID生成,用一个int(32位)存储id,去掉最高位,可以生成pow(2,31)个唯一id
	//后16位为序号位,17到31位为轮次位(15位)
	sessionid= epch << 16 | lastId++;
	return sessionid;
}