推荐一款id生成器: Hashids
唯一 id 生成的方式有很多种,比较常见的有以下几种方式:
-
语言自带功能,如 Java 中的 UUID,常用于后端
-
第三方工具提供,如 npm 中的 nanoid,常用于前端
-
Twitter 开源的 Snowflake 算法,常用于后端
-
美团开源的 Leaf 算法,常用于后端
-
...
本文再推荐一款唯一 id 生成器:Hashids。它具有以下特性:
-
只能把指定的整数(且不支持负数)转换为唯一 id,具有一定的局限性。
-
不会发生冲突。因此我们无需考虑冲突碰撞的解决方案。
-
可自定义字符集和盐。
-
生成的结果无序,避免被遍历。
-
生成的结果自动规避脏话单词,如 shit 之类。
-
可以反向解析,这对于某些场景尤为合适(比如短链接系统,可以根据生成的短链接 id 获取原始 id,再从数据库中根据原始 id 拿到对应的长链接)。
可见,该生成器具有一定的局限性,但提供了较为丰富的功能,在特定的场景下是非常好用的。
另外,对应源码短小精悍,且提供了多种版本的实现,包括但不限于JavaScript、Java、C等语言,有兴趣的同学可以到官网 hashids.org 学习使用。
发挥想象力,看看你有什么场景可以使用它呢?
『注:本文来自博客园“小溪的博客”,若非声明均为原创内容,请勿用于商业用途,转载请注明出处http://www.cnblogs.com/xiaoxi666/』