发表评论|加入收藏|保存到桌面|反馈报错您当前的位置:首页 > 国内电视台 > 江苏电视台 > 大丰新闻综合在线直播

uuid是什么意思(uuid获取)

发布时间:2022-05-20 00:20:39   作者:隐身守侯   来源:网友分享   我要投稿

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。

# 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\"

Linux 中如何使用 lsblk 命令查看磁盘分区或文件系统的 UUID?

lsblk 列出所有有关可用或指定块设备的信息。lsblk 命令读取 sysfs 文件系统和 udev 数据库以收集信息。

如果 udev 数据库不可用或者编译的 lsblk 不支持 udev,它会试图从块设备中读取卷标、UUID 和文件系统类型。这种情况下,必须以 root 身份运行。该命令默认会以类似于树的格式打印出所有的块设备(RAM 盘除外)。

# 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

Linux 中如何使用 by-uuid 路径查看磁盘分区或文件系统的 UUID?

该目录包含了 UUID 和实际的块设备文件,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

Linux 中如何使用 hwinfo 命令查看磁盘分区或文件系统的 UUID?

hwinfo 意即硬件信息工具,是另外一种很好的实用工具。它被用来检测系统中已存在的硬件,并且以可读的格式显示各种硬件组件的细节信息。

# 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

Linux 中如何使用 udevadm 命令查看磁盘分区或文件系统的 UUID?

udevadm 需要命令和命令特定的操作。它控制 systemd-udevd 的运行时行为,请求内核事件、管理事件队列并且提供简单的调试机制。

# udevadm info -q all -n /dev/sdc1 | grep -i by-uuid | head -1

S: disk/by-uuid/d17e3c31-e2c9-4f11-809c-94a549bc43b7

Linux 中如何使用 tune2fs 命令查看磁盘分区或文件系统的 UUID?

tune2fs 允许系统管理员在 Linux 的 ext2、ext3、ext4 文件系统中调整各种可调的文件系统参数。这些选项的当前值可以使用选项 -l 显示。

# tune2fs -l /dev/sdc1 | grep UUID

Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7

Linux 中如何使用 dumpe2fs 命令查看磁盘分区或文件系统的 UUID?

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中国 荣誉推出

点击“了解更多”可访问文内链接
提示:本文所有内容仅供娱乐参考,仅代表作者本人观点、个人爱好分析,不作为任何投资依据,不承担法律责任。本站不对信息的真实性、准确性负责。