> 每片雪花的形状都是独一无二的。
Snowflake ID是种用于**分布式计算环境的全局唯一标识格式**,最初由Twitter创造,后来被很多互联网大厂推广使用。
国内把生成这种ID的方法称为“雪花算法”,但老师答应过C++作业尽量不涉及算法,所以我们按照原创者的说法称为雪花ID。
- Snowflake ID共64位,可用int64_t表示。
- 最高符号位总是0。
- 次高41-bit是时间戳,表示了自选定的时期以来的**毫秒**数。
> 每片雪花的形状都是独一无二的。
Snowflake ID是种用于**分布式计算环境的全局唯一标识格式**,最初由Twitter创造,后来被很多互联网大厂推广使用。
国内把生成这种ID的方法称为“雪花算法”,但老师答应过C++作业尽量不涉及算法,所以我们按照原创者的说法称为雪花ID。
- Snowflake ID共64位,可用int64_t表示。
- 最高符号位总是0。
- 次高41-bit是时间戳,表示了自选定的时期以来的**毫秒**数。
- 次低10-bit是节点编号。那么系统内最多可有1024个节点用于生成雪花ID。
- 最低12-bit是节点生成ID的序列号。从0开始。于是每个节点每毫秒允许生成4096个ID。
- 系统整体每毫秒最多可生成四百万个唯一ID,每秒四十亿个。足够70亿蓝星人每两秒发一条推文,就算川普附身也不会这么快,所以目前是足足够用的。
**本题可能在求职面试中遇到。**
#### 输入规格
- 首行是节点数量N(范围[0, 1024))、起始时间T。
- 后续有若干指令:
- sync T:全部节点:时间同步到T、序列号重置为0。
- next M:获取节点M的下个ID。M范围在0 ~ N-1
- 无需考虑时间溢出情况。
#### 输出规格
- sync T输出ok
- next M输出节点T在该时刻产生的雪花ID。
#### 样例输入
in
5 0
next 0
next 0
sync 1
next 0
next 4
next 0
next 4
#### 样例输出
out
0
1
ok
4194304
4210688
4194305
4210689
#### 样例解释
- 第1行:5个节点,起始时间0。
- 第2行:节点0分配ID。时间=0、节点ID=0、序号=0,生成的ID为0。
- 第3行:节点0分配ID。时间=0、节点ID=0,序号=1,生成的ID为1。
- 第4行:时间同步到1。各节点的序列号全部重置为0。
- 第5行:节点0分配ID。时间=1、节点ID=0、序号=0。
- 第6行:节点4分配ID。时间=1、节点ID=4、序号=0。
- 第7行:节点0分配ID。时间=1、节点ID=0、序号=1。
- 第8行:节点4分配ID。时间=1、节点ID=4、序号=1。
答案:若无答案欢迎评论
Snowflake ID是种用于**分布式计算环境的全局唯一标识格式**,最初由Twitter创造,后来被很多互联网大厂推广使用。
国内把生成这种ID的方法称为“雪花算法”,但老师答应过C++作业尽量不涉及算法,所以我们按照原创者的说法称为雪花ID。
- Snowflake ID共64位,可用int64_t表示。
- 最高符号位总是0。
- 次高41-bit是时间戳,表示了自选定的时期以来的**毫秒**数。
- 次低10-bit是节点编号。那么系统内最多可有1024个节点用于生成雪花ID。
- 最低12-bit是节点生成ID的序列号。从0开始。于是每个节点每毫秒允许生成4096个ID。
- 系统整体每毫秒最多可生成四百万个唯一ID,每秒四十亿个。足够70亿蓝星人每两秒发一条推文,就算川普附身也不会这么快,所以目前是足足够用的。
**本题可能在求职面试中遇到。**
#### 输入规格
- 首行是节点数量N(范围[0, 1024))、起始时间T。
- 后续有若干指令:
- sync T:全部节点:时间同步到T、序列号重置为0。
- next M:获取节点M的下个ID。M范围在0 ~ N-1
- 无需考虑时间溢出情况。
#### 输出规格
- sync T输出ok
- next M输出节点T在该时刻产生的雪花ID。
#### 样例输入
in
5 0
next 0
next 0
sync 1
next 0
next 4
next 0
next 4
#### 样例输出
out
0
1
ok
4194304
4210688
4194305
4210689
#### 样例解释
- 第1行:5个节点,起始时间0。
- 第2行:节点0分配ID。时间=0、节点ID=0、序号=0,生成的ID为0。
- 第3行:节点0分配ID。时间=0、节点ID=0,序号=1,生成的ID为1。
- 第4行:时间同步到1。各节点的序列号全部重置为0。
- 第5行:节点0分配ID。时间=1、节点ID=0、序号=0。
- 第6行:节点4分配ID。时间=1、节点ID=4、序号=0。
- 第7行:节点0分配ID。时间=1、节点ID=0、序号=1。
- 第8行:节点4分配ID。时间=1、节点ID=4、序号=1。
答案:若无答案欢迎评论