网站首页 > 精选教程 正文
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-12-03 java学习分享:Java截取(提取)子字符串(substring())
- 2024-12-03 一篇文章快速搞懂Java中的字符串与包装类
- 2024-12-03 Java字符串比较(3种方法)
- 2024-12-03 Java8 Stream 拼接字符串 Collectors.joining
- 2024-12-03 如何在Java中比较字符串?
- 2024-12-03 Java中的字符串(String)最大长度限制
- 2024-12-03 Java设置字符串的首字母为大写
- 2024-12-03 Java 如何获取数组和字符串的长度
- 2024-12-03 Java菜谱(一):常见字符串问题处理方案
- 2024-12-03 Java基础之字符串及——String
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)