咱们在生活中,id 与咱们的生活其实是如影随行的。java
身份证号,QQ 号,手机号,银行卡号,学生时代的学号,甚至是躺在你硬盘里的番号。git
这些 id 标识是如此的重要,乃至每个后台程序员都要去思考这个问题—— id 的有几种写法?都有哪些利弊?程序员
本文就带你深刻浅出学习几种常见的 id 的生成策略。github
因为篇幅优先,建议阅读下面的文章内容。redis
uuid 策略讲解数据库
random 生成策略api
id 是一款为 java 设计常见 ID 实现策略。dom
让你在平常开发中能够开箱即用,享受提早下班的快乐~
对于 id 生成,基本是全部后台系统必须面对的问题,分布式 id 的生成也是很常见的一个需求。
最近同事写的代码,在多台机器高并发下产生了序列号冲突。
以为 id 策略应该聚合成一个工具包,而不是每次重复造轮子,有时候还有问题。
<dependency> <groupId>com.github.houbb</groupId> <artifactId>id</artifactId> <version>0.0.2</version> </dependency>
final String snowflake = IdHelper.snowflake(); System.out.println(snowflake);
1260199310461505537
全部的 id 均可以经过 IdHelper
直接调用。
序号 | 方法 | 例子 |
---|---|---|
1 | uuid8() | dUlmJiEq |
2 | uuid32() | 3f9afd5773d143fb8e28d80de47f3d1a |
3 | random() | 202005122127270743937635635 |
4 | random(prefix, length) | random("999", 5) 为 9992020051221340961522263 |
5 | snowflake() | 1260199914969849858 |
6 | local() | 从 0 开始,逐渐加 1 的 id 返回 |