<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          NanoID 了解一下?比 UUID 更好用!

          共 2912字,需瀏覽 6分鐘

           ·

          2022-04-10 18:26

          點(diǎn)擊關(guān)注公眾號,Java干貨及時(shí)送達(dá)

          原文地址:Why is NanoID Replacing UUID?

          原文作者:Charuka Herath

          譯文出自:掘金翻譯計(jì)劃

          譯者:霜羽 Hoarfroster

          UUID 是軟件開發(fā)中最常用的通用標(biāo)識符之一。然而,在過去的幾年里,其他的競品挑戰(zhàn)了它的存在。

          其中,NanoID 是 UUID 的主要競爭對手之一。

          因此,在本文中,我們將展開討論 NanoID 的功能、它的亮點(diǎn)以及它的局限性,以便讓我們更好地了解何時(shí)使用它。

          了解 NanoID 及其用法

          對于 JavaScript,生成 UUID 或 NanoID 都非常簡單。它們都有對應(yīng)的 NPM 包來幫助我們實(shí)現(xiàn)生成。

          我們所需要做的就是運(yùn)行 npm i nanoid 命令安裝 NanoID NPM 庫 并在我們的項(xiàng)目中使用它:

          import?{?nanoid?}?from?'nanoid';??
          model.id?=?nanoid();

          “你是否知道 NanoID 每周的 NPM 下載量超過 1175.4 萬,并且運(yùn)行起來比 UUID 快 60%?”

          此外,NanoID 比 UUID 年輕了將近 7 年,而且它的 GitHub 星數(shù)已經(jīng)比 UUID 多。

          下圖顯示了這兩個(gè)之間的 npm 趨勢比較,我們可以看到 NanoID 的上升趨勢與 UUID 的平坦進(jìn)展有強(qiáng)烈的對比。

          https://www.npmtrends.com/nanoid-vs-uuid

          我希望這些數(shù)字已經(jīng)說服你去嘗試 NanoID。

          但是,這兩者之間的主要區(qū)別很簡單。它歸結(jié)為鍵使用的字母表。

          由于 NanoID 使用比 UUID 更大的字母表,因此較短的 ID 可以用于與較長的 UUID 相同的目的。

          基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能。

          項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro

          1. NanoID 只有 108 個(gè)字節(jié)那么大

          與 UUID 不同,NanoID 的大小要小 4.5 倍,并且沒有任何依賴關(guān)系。此外,大小限制已用于將大小從另外 35% 減小。

          大小減少直接影響數(shù)據(jù)的大小。例如,使用 NanoID 的對象小而緊湊,能夠用于數(shù)據(jù)傳輸和存儲。隨著應(yīng)用程序的增長,這些數(shù)字變得明顯起來。

          基于微服務(wù)的思想,構(gòu)建在 B2C 電商場景下的項(xiàng)目實(shí)戰(zhàn)。核心技術(shù)棧,是 Spring Boot + Dubbo 。未來,會重構(gòu)成 Spring Cloud Alibaba 。

          項(xiàng)目地址:https://github.com/YunaiV/onemall

          2. 更安全

          在大多數(shù)隨機(jī)生成器中,它們使用不安全的 Math.random()。但是,NanoID 使用 crypto moduleWeb Crypto API,意味著 NanoID 更安全。

          此外,NanoID 在 ID 生成器的實(shí)現(xiàn)過程中使用了自己的算法,稱為 統(tǒng)一算法,而不是使用“隨機(jī) % 字母表” random % alphabet

          3. 它既快速又緊湊

          NanoID 比 UUID 快 60%。與 UUID 字母表中的 36 個(gè)字符不同,NanoID 只有 21 個(gè)字符。

          0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-

          此外,NanoID 支持 14 種不同的編程語言,它們分別是:

          C#、C++、Clojure?和?ClojureScript、Crystal、Dart?&?Flutter、Deno、Go、Elixir、Haskell、Janet、Java、Nim、Perl、PHP、帶字典的?Python、Ruby、Rust、Swift

          4. 兼容性

          它還支持 PouchDB、CouchDB WebWorkers、Rollup 以及 React 和 Reach-Native 等庫。

          我們可以使用 npx nanoid 在終端中獲得唯一 ID。在 JavaScript 中使用 NanoID 唯一的要求是要先安裝 NodeJS。

          圖片

          此外,我們還可以在 Redux toolkit 中找到 NanoID,并將其用于其他用例,如下所示;

          import?{?nanoid?}?from?‘@reduxjs/toolkit’??
          console.log(nanoid())?//‘dgPXxUz_6fWIQBD8XmiSy’

          5. 自定義字母

          NanoID 的另一個(gè)現(xiàn)有功能是它允許開發(fā)人員使用自定義字母表。我們可以更改文字或 id 的大小,如下所示:

          import?{?customAlphabet?}?from?'nanoid';??
          const?nanoid?=?customAlphabet('ABCDEF1234567890',?12);??
          model.id?=?nanoid();

          在上面的示例中,我將自定義字母表定義為 ABCDEF1234567890,并將 Id 的大小定義為 12。

          6. 沒有第三方依賴

          由于 NanoID 不依賴任何第三方依賴,隨著時(shí)間的推移,它能夠變得更加穩(wěn)定自治。

          從長遠(yuǎn)來看,這有利于優(yōu)化包的大小,并使其不太容易出現(xiàn)依賴項(xiàng)帶來的問題。

          局限性和未來重點(diǎn)

          根據(jù) StackOverflow 中的許多專家意見,使用 NanoID 沒有明顯的缺點(diǎn)或限制。

          非人類可讀是許多開發(fā)人員在 NanoID 中看到的主要缺點(diǎn),因?yàn)樗拐{(diào)試變得更加困難。但是,與 UUID 相比,NanoID 更短且可讀。

          另外,如果你使用 NanoID 作為表的主鍵,如果你使用相同的列作為聚集索引也會出現(xiàn)問題。這是因?yàn)?NanoID 不是連續(xù)的。

          在將來……

          NanoID 正逐漸成為 JavaScript 最受歡迎的唯一 id 生成器,大多數(shù)開發(fā)人員更喜歡選擇它而不是更喜歡 UUID。

          來源:https://www.npmjs.com/package/nanoid

          上述基準(zhǔn)測試顯示了 NanoID 與其他主要 id 生成器相比的性能。

          使用默認(rèn)字母表每秒可生成超過 220 萬個(gè)唯一 ID,使用自定義字母表每秒可生成超過 180 萬個(gè)唯一 ID。

          根據(jù)我使用 UUID 和 NanoID 的經(jīng)驗(yàn),考慮到它的小尺寸、URL 友好性、安全性和速度,我建議在任何未來的項(xiàng)目中使用 NanoID 而不是 UUID。

          因此,我邀請您在下一個(gè)項(xiàng)目中試用 NanoID,并在評論部分與其他人分享您的想法。

          ????

          1發(fā)SQL

          2?Chrome個(gè)

          3個(gè)SpringBoot44Java

          4QQ個(gè)

          5SpringBoot?發(fā)

          點(diǎn)

          點(diǎn)

          點(diǎn)點(diǎn)

          點(diǎn)

          瀏覽 52
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人免费黄色A片 | 国产精品成人电影 | 成人黄片AV256 | 久久久久极品 | 日本在线色视频 |