uuid是什么意思(uuid获取)
UUID 是软件开发中最常用的通用标识符之一。然而,在过去几年中,其他替代品挑战了它的存在。
其中,NanoID 是取代 UUID 的主要竞争对手之一。
因此,在本文中,我将讨论 NanoID 的功能、它的亮点以及它的局限性,以便您更好地了解何时使用它。
了解 NanoID 及其用法
对于 JavaScript,生成 UUID 或 NanoID 非常简单,他们都有 NPM 包来帮助你。
你所需要做的就是用 npm i nanoid 命令安装NanoID NPM库,并在你的项目中使用它。
import { nanoid } from nanoid;
model.id = nanoid();
你知道NanoID每周有超过11,754K的NPM下载量,并且比UUID快60%吗?
此外,NanoID比UUID年轻近7年,而且它在GitHub上的星级已经超过了UUID。
下图显示了这两个的npm趋势比较,我们可以看到NanoID的上升趋势,而UUID的进展平平。
我希望这些数字已经说服了你去尝试NanoID。
然而,这两者之间的主要区别很简单。
由于 NanoID 使用比 UUID 更大的字母表,因此较短的 ID 可以用于与较长的 UUID 相同的目的。
/ 1.NanoID 的大小只有 108 个字节 /
与 UUID 不同,NanoID 的大小要小 4.5 倍,并且没有任何依赖关系。
大小减少直接影响数据的大小。例如,使用 NanoID 的对象小而紧凑,用于数据传输和存储。随着应用程序的增长,这些数字变得可见。
/ 2.更安全 /
在大多数随机生成器中,它们使用不安全的 Math.random()。但是,NanoID 使用更安全的 crypto module 和 Web Crypto API。
此外,NanoID 在 ID 生成器的实现过程中使用了自己的称为统一算法的算法,而不是使用 random % alphabet。
/ 3.它快速而紧凑 /
NanoID比UUID快60%。与UUID的36个字符不同,NanoID只有21个字符。
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-
此外,NanoID 支持 14 种不同的编程语言,它们是
C#, C++, Clojure and ClojureScript, Crystal, Dart Flutter, Deno, Go, Elixir, Haskell, Janet, Java, Nim, Perl, PHP, Python with dictionaries, Ruby , Rust, Swift
/ 4.兼容性 /
它还支持 PouchDB、CouchDB WebWorkers、Rollup 以及 React 和 Reach-Native 等库。
你可以通过使用 npx nanoid 在终端获得一个唯一的ID,唯一的先决条件是要安装NodeJS。
此外,你也可以在Redux toolkit内找到NanoID,并将其用于其他使用情况,如下所示。
import { nanoid } from ‘@reduxjs/toolkit’
console.log(nanoid()) //‘dgPXxUz_6fWIQBD8XmiSy’
/ 5.自定义字母 /
NanoID 的另一个现有功能是它允许开发人员使用自定义字母表。您可以更改文字或 id 的大小,如下所示:
import { customAlphabet } from nanoid;
const nanoid = customAlphabet(ABCDEF1234567890, 12);
model.id = nanoid();
在上面的示例中,我将自定义字母表定义为 ABCDEF1234567890,并将 Id 的大小定义为 12。
/ 6.没有第三方依赖 /
由于 NanoID 不依赖任何第三方依赖,随着时间的推移,它变得更加稳定自治。
从长远来看,这有利于优化bundle的大小,使其不容易出现依赖关系带来的问题。
局限性和未来重点
根据 StackOverflow 中的许多专家意见,使用 NanoID 没有明显的缺点或限制。
非人类可读性是许多开发者认为NanoID的主要缺点,因为它使调试更加困难。但是,与UUID相比,NanoID要短得多,可读性强。
另外,如果你使用 NanoID 作为表的主键,如果你使用相同的列作为聚集索引也会出现问题,这是因为 NanoID 不是连续的。
在未来…
NanoID 正逐渐成为最流行的 JavaScript 唯一 id 生成器,大多数开发人员更喜欢选择它而不是 UUID。
以上基准测试显示了NanoID与其他主要id生成器相比的性能。
在使用其默认字母表时,它每秒可生成超过220万个独特的ID,在使用自定义字母表时,每秒可生成超过180万个独特的ID。
根据我使用 UUID 和 NanoID 的经验,考虑到它的小尺寸、URL 友好性、安全性和速度,我建议在任何未来的项目中使用 NanoID 而不是 UUID。
因此,我邀请你在你的下一个项目中尝试使用NanoID,并在评论区与其他人分享你的想法。
作为一个 Linux 系统管理员,你应该知道如何去查看分区的 UUID 或文件系统的 UUID。因为现在大多数的 Linux 系统都使用 UUID 挂载分区。
-- Magesh Maruthamuthu
作为一个 Linux 系统管理员,你应该知道如何去查看分区的 UUID 或文件系统的 UUID。因为现在大多数的 Linux 系统都使用 UUID 挂载分区。你可以在 /etc/fstab 文件中可以验证。
有许多可用的实用程序可以查看 UUID。本文我们将会向你展示多种查看 UUID 的方法,并且你可以选择一种适合于你的方法。
何为 UUID?UUID 意即 通用唯一识别码(Universally Unique Identifier),它可以帮助 Linux 系统识别一个磁盘分区而不是块设备文件。
自内核 2.15.1 起,libuuid 就是 util-linux-ng 包中的一部分,它被默认安装在 Linux 系统中。UUID 由该库生成,可以合理地认为在一个系统中 UUID 是唯一的,并且在所有系统中也是唯一的。
这是在计算机系统中用来标识信息的一个 128 位(比特)的数字。UUID 最初被用在 络计算机系统(Apollo Network Computing System)(NCS)中,之后 UUID 被 开放软件基金会(Open Software Foundation)(OSF)标准化,成为 分布式计算环境(Distributed Computing Environment)(DCE)的一部分。
UUID 以 32 个十六进制的数字表示,被连字符分割为 5 组显示,总共的 36 个字符的格式为 8-4-4-4-12(32 个字母或数字和 4 个连字符)。
例如: d92fa769-e00f-4fd7-b6ed-ecf7224af7fa
我的 /etc/fstab 文件示例:
# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a device; this may
# be used with UUID= as a more robust way to name devices that works even if
# disks are added and removed. See fstab(5).
#
#
UUID=69d9dd18-36be-4631-9ebb-78f05fe3217f / ext4 defaults,noatime 0 1
UUID=a2092b92-af29-4760-8e68-7a201922573b swap swap defaults,noatime 0 2
我们可以使用下面的 7 个命令来查看。
blkid 命令:定位或打印块设备的属性。lsblk 命令:列出所有可用的或指定的块设备的信息。hwinfo 命令:硬件信息工具,是另外一个很好的实用工具,用于查询系统中已存在硬件。udevadm 命令:udev 管理工具tune2fs 命令:调整 ext2/ext3/ext4 文件系统上的可调文件系统参数。dumpe2fs 命令:查询 ext2/ext3/ext4 文件系统的信息。使用 by-uuid 路径:该目录下包含有 UUID 和实际的块设备文件,UUID 与实际的块设备文件链接在一起。Linux 中如何使用 blkid 命令查看磁盘分区或文件系统的 UUID?blkid 是定位或打印块设备属性的命令行实用工具。它利用 libblkid 库在 Linux 系统中获得到磁盘分区的 UUID。
Linux 中如何使用 lsblk 命令查看磁盘分区或文件系统的 UUID?# blkid
/dev/sda1: UUID=\"d92fa769-e00f-4fd7-b6ed-ecf7224af7fa\" TYPE=\"ext4\" PARTUUID=\"eab59449-01\"
/dev/sdc1: UUID=\"d17e3c31-e2c9-4f11-809c-94a549bc43b7\" TYPE=\"ext2\" PARTUUID=\"8cc8f9e5-01\"
/dev/sdc3: UUID=\"ca307aa4-0866-49b1-8184-004025789e63\" TYPE=\"ext4\" PARTUUID=\"8cc8f9e5-03\"
/dev/sdc5: PARTUUID=\"8cc8f9e5-05\"
lsblk 列出所有有关可用或指定块设备的信息。lsblk 命令读取 sysfs 文件系统和 udev 数据库以收集信息。
如果 udev 数据库不可用或者编译的 lsblk 不支持 udev,它会试图从块设备中读取卷标、UUID 和文件系统类型。这种情况下,必须以 root 身份运行。该命令默认会以类似于树的格式打印出所有的块设备(RAM 盘除外)。
Linux 中如何使用 by-uuid 路径查看磁盘分区或文件系统的 UUID?# lsblk -o name,mountpoint,size,uuid
NAME MOUNTPOINT SIZE UUID
sda 30G
└─sda1 / 20G d92fa769-e00f-4fd7-b6ed-ecf7224af7fa
sdb 10G
sdc 10G
├─sdc1 1G d17e3c31-e2c9-4f11-809c-94a549bc43b7
├─sdc3 1G ca307aa4-0866-49b1-8184-004025789e63
├─sdc4 1K
└─sdc5 1G
sdd 10G
sde 10G
sr0 1024M
该目录包含了 UUID 和实际的块设备文件,UUID 与实际的块设备文件链接在一起。
Linux 中如何使用 hwinfo 命令查看磁盘分区或文件系统的 UUID?# ls -lh /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Jan 29 08:34 ca307aa4-0866-49b1-8184-004025789e63 -> ../../sdc3
lrwxrwxrwx 1 root root 10 Jan 29 08:34 d17e3c31-e2c9-4f11-809c-94a549bc43b7 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Jan 29 08:34 d92fa769-e00f-4fd7-b6ed-ecf7224af7fa -> ../../sda1
hwinfo 意即硬件信息工具,是另外一种很好的实用工具。它被用来检测系统中已存在的硬件,并且以可读的格式显示各种硬件组件的细节信息。
Linux 中如何使用 udevadm 命令查看磁盘分区或文件系统的 UUID?# hwinfo --block | grep by-uuid | awk '{print $3,$7}'
/dev/sdc1, /dev/disk/by-uuid/d17e3c31-e2c9-4f11-809c-94a549bc43b7
/dev/sdc3, /dev/disk/by-uuid/ca307aa4-0866-49b1-8184-004025789e63
/dev/sda1, /dev/disk/by-uuid/d92fa769-e00f-4fd7-b6ed-ecf7224af7fa
udevadm 需要命令和命令特定的操作。它控制 systemd-udevd 的运行时行为,请求内核事件、管理事件队列并且提供简单的调试机制。
Linux 中如何使用 tune2fs 命令查看磁盘分区或文件系统的 UUID?# udevadm info -q all -n /dev/sdc1 | grep -i by-uuid | head -1
S: disk/by-uuid/d17e3c31-e2c9-4f11-809c-94a549bc43b7
tune2fs 允许系统管理员在 Linux 的 ext2、ext3、ext4 文件系统中调整各种可调的文件系统参数。这些选项的当前值可以使用选项 -l 显示。
Linux 中如何使用 dumpe2fs 命令查看磁盘分区或文件系统的 UUID?# tune2fs -l /dev/sdc1 | grep UUID
Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7
dumpe2fs 打印出现在设备文件系统中的超级块和块组的信息。
# dumpe2fs /dev/sdc1 | grep UUID
dumpe2fs 1.43.5 (04-Aug-2017)
Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7
via: https://www.2daygeek/check-partitions-uuid-filesystem-uuid-universally-unique-identifier-linux/
作者: Magesh Maruthamuthu 选题: lujun9972 译者: liujing97 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出
点击“了解更多”可访问文内链接- 2022-04-21138是什么意思(138是什么意思网络用语)
- 2022-05-18青菜的寓意(过年吃青菜寓意是什么)
- 2022-04-23声名显赫(声名显赫成就)
- 2022-04-23我的宠物是校花(我的宠物是校花吧)
- 2022-06-04玉婵(佩带玉蝉有什么寓意)
- 2022-02-10于毅妻子照片资料(于毅妻子照片和名字)
- 2022-05-18女人胖的话怎么赞美(夸女人胖的幽默句子只是胖的)
- 2014-10-23鞍山:刑警猛将有“绝活”两年抓百余疑犯
- 本田accord是什么车(本田accord是什么车多少钱)
- mrlibu雪佛兰是哪款车(mrlibu雪佛兰是哪款车xl)
- platinum皮卡是什么车(platinum皮卡价格)
- 阿尔法罗密欧什么档次(阿尔法罗密欧什么档次的车)
- n是什么牌子的车(aston martin是什么牌子的车)
- 贝纳利是哪国的品牌(贝纳利是哪国的品牌摩托车)
- 奔驰无框车门有哪些车(奔驰无框车门有哪些车图片)
- 今天突然锁车后视镜不折叠了(今天突然锁车后视镜不折叠了,感觉卡住了)
- 宝骏是国产车还是合资车(宝骏是国产车还是合资车?新宝骏质量如何?)
- 星星车标是什么车(一个星星车标是什么车)
- 火花塞有机油怎么回事(摩托车火花塞有机油怎么回事)
- 刹车异响尖叫怎么处理(刹车异响尖叫怎么处理 反复响)
- 行车记录仪内存卡怎么格式化(行车记录仪内存卡怎么格式化不了)
- 新车发动机故障灯亮了应该怎么办(新车发动机故障灯亮了应该怎么办 消除)
- v是什么车(v是什么车牌子多少钱)
- 杨紫李现恋情再添实锤(杨紫李现恋情最新消息)
- 苏州落户2021新政策(苏州市入户的最新条件)
- 直播频道最近更新直播
- 南通通州格林豪泰凌晨3点大火 147名游客被困
- 珠江台直播(珠江台直播频道)
- 体育频道cba现场直播今天晚上(cba辽宁队今天晚上现场直播新浪体育)
- 沭阳周集乡对网上创业人员“约法三章”
- 2014年扬子晚报利群阳光 第三批“阳光学子”公示
- 在线观看nba(在线观看nba直播频道)
- 靖江举办“靖江骄傲”人物展
- 扬中闹市区突发持刀绑架案
- 常州市新增规划一处工业遗存 名称:南港码头
- 南通中院加强作风建设 13种情况纳入巡查
- 范冰冰生下范丞丞真相大白(范丞丞是范冰冰的私生子吗)
- “股票老左”:强势登陆财富天下频道