网站首页 > java教程 正文
UUID以前开发时用得多了,它很好用,不过,现在有个强力的挑战者:Nanoid。
Nanoid已经可以在多种语言
C#, C++, Clojure and ClojureScript, Crystal, Dart & Flutter, Deno, Go, Elixir, Haskell, Janet, Java, Nim, Perl, PHP, Python with dictionaries, Ruby , Rust, Swift
里使用,下面例子以c#代码编写。
一 安装
Install-Package Nanoid
二 默认使用
for (var i = 0; i < 1000; i++) {
Console.WriteLine(Nanoid.Generate());
}
生成的结果类似:
FP3q9j_Fp3SiuO8pVTFOC
Mik9f08ZW5GFqcmxcTXP7
SJX7-h5TlLVmuRhAiUzyh
uhwA42IJUtB3z2yOc5PRz
tYBoKqEYRFbzpfoSLq2op
Vih8kh3cIlvzIj-sao8zq
1 默认是以字符集 "_-0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 生成的21长度的随机字符串
2 默认的随机产生器不是 System.Random ,而是 System.Security.Cryptography.RandomNumberGenerator ,这个产生器比 System.Random 更安全,更随机。但我们也可以继续使用 System.Random:
var myRandom = new Random(100);
for (var i = 0; i < 1000; i++) {
Console.WriteLine(Nanoid.Generate(myRandom));
}
3 可以自定义输出结果的长度:
var size = 10;
for (var i = 0; i < 1000; i++) {
Console.WriteLine(Nanoid.Generate(size:size));
}
结果类似:
mDazc4R0v5
RjXWpmjil4
8gP9GS1UWD
mr6gHkYWfw
8vfT_q0YQe
wr9Ib_85u1
UxvufAFutf
ckm0ahMxI8
4 可以自定义字符集:
var myChars="ABCD1234";
for (var i = 0; i < 1000; i++) {
Console.WriteLine(Nanoid.Generate(myChars));
}
结果类似:
BB1D4B131342B34C3CA2D
24D2B12BA34BDCABC3AB3
C2AD1DC1C43BABBACB443
D3B2411AD1AD2BDD1A1AB
DCDB2432CCADD2AB2DDCB
1CA433DDDDCB22A11B3B1
13232D34D4B14DAA2AD4C
三 Nano的优点和缺点
- 快速。javascript的版本据说比 uuid 快 60%
- 紧凑。Nanoid 21字符,UUID 32字符。
- 自定义字符。
- 没有第三方依赖。
- URL友好。
- 更安全。不再使用系统的System.Random(JS:Math.random)
- 缺点还是一样:不是顺序的,作为数据库列时做索引有不利影响。
猜你喜欢
- 2024-10-27 5种全局ID生成方式、优缺点及改进方案
- 2024-10-27 分布式系统怎么快速生成分布式唯一ID?
- 2024-10-27 Java 中分布式 ID 的设计方案(java分布式的优点)
- 2024-10-27 如何生成分布式ID(分布式生成唯一id的生成方式)
- 2024-10-27 神秘的UUID(神秘的反义词)
- 2024-10-27 优雅的数据库ID设计(数据库 id)
- 2024-10-27 Java的ID生成策略(java实现id自增)
- 2024-10-27 9种分布式ID生成方式,总有一款适合你
- 2024-10-27 在分布式系统中,如何生成分布式ID?
- 2024-10-27 三种方式mysql给id设置默认值为UUID
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)