Javascript tạo id duy nhất từ ​​dấu thời gian

tí hon [4. Thư viện không phụ thuộc được rút gọn 6kB] để tạo UUID ngẫu nhiên hoặc tuần tự có độ dài bất kỳ với xác suất ID trùng lặp cực nhỏ

const uid = new ShortUniqueId[{ length: 10 }];
uid[]; // p0ZoB1FwH6
uid[]; // mSjGCTfn8w
uid[]; // yt4Xx5nHMB
// ...

Ví dụ: sử dụng từ điển mặc định của số và chữ cái [chữ thường và chữ hoa]

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
  • nếu bạn tạo ID duy nhất gồm 16 ký tự [một nửa UUID tiêu chuẩn gồm 32 ký tự]
  • tạo 100 ID duy nhất mỗi giây

Sẽ mất ~10 nghìn năm để có xác suất 1% xảy ra ít nhất một vụ va chạm

Để đưa điều này vào quan điểm

  • 73 năm là tuổi thọ trung bình [toàn cầu] của con người
  • 120 năm trước chưa có con người nào đặt chân lên một trong hai cực của Trái đất
  • 480 năm trước, Nicolaus Copernicus vẫn đang nghiên cứu lý thuyết về Trái đất quay quanh Mặt trời
  • 1000 năm trước không có thứ gọi là tiền giấy do chính phủ phát hành [và sẽ không có trong khoảng một thế kỷ]
  • 5000 năm trước, dân số toàn cầu dưới 50 triệu người [hiện tại Mexico có dân số 127 triệu người]

Bạn có thể tính toán xác suất trùng lặp/xung đột bằng cách sử dụng các chức năng đi kèm

GHI CHÚ. 👆 Trên các liên kết này, bạn cũng sẽ tìm thấy giải thích cho toán học được sử dụng trong các hàm

thông báo mã nguồn mở

Dự án này được mở để người dùng cập nhật, tôi đảm bảo rằng các PR có liên quan đến cộng đồng. Nói cách khác, nếu bạn tìm thấy một lỗi hoặc muốn một tính năng mới, hãy giúp chúng tôi bằng cách trở thành một trong những ✌️. xem

Thích mô-đun này?

Xin vui lòng xem xét

📣 Thông báo v4

Tính năng mới 🥳

Khả năng tạo UUID chứa dấu thời gian có thể được trích xuất

// js/ts

const uid = new ShortUniqueId[];

const uidWithTimestamp = uid.stamp[32];
console.log[uidWithTimestamp];
// GDa608f973aRCHLXQYPTbKDbjDeVsSb3

const recoveredTimestamp = uid.parseStamp[uidWithTimestamp];
console.log[recoveredTimestamp];
// 2021-05-03T06:24:58.000Z
# cli

$ suid -s -l 42

  lW611f30a2ky4276g3l8N7nBHI5AQ5rCiwYzU47HP2

$ suid -p lW611f30a2ky4276g3l8N7nBHI5AQ5rCiwYzU47HP2

  2021-08-20T04:33:38.000Z

Từ điển mặc định [được tạo tại chỗ để giảm dung lượng bộ nhớ và tránh các lỗ hổng chèn từ điển]

  • con số
  • chữ cái
  • alpha_lower
  • alpha_upper
  • chữ cái [mặc định khi không có từ điển nào được cung cấp cho
      0,1,2,3,4,5,6,7,8,9,
      a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
      A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
    
    4]
  • alphanum_lower
  • alphanum_upper
  • lục giác
// instantiate using one of the default dictionary strings
const uid = new ShortUniqueId[{
  dictionary: 'hex', // the default
}];

console.log[uid.dict.join[]];
// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f

// or change the dictionary after instantiation
uid.setDictionary['alpha_upper'];

console.log[uid.dict.join[]];
// A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z

Sử dụng trong CLI

$ npm install -g short-unique-id

$ suid -h

# Usage:
#   node short-unique-id [OPTION]

# Options:
#   -l, --length=ARG         character length of the uid to generate.
#   -s, --stamp              include timestamp in uid [must be used with --length [-l] of 10 or more].
#   -p, --parse=ARG          extract timestamp from stamped uid [ARG].
#   -d, --dictionaryJson=ARG json file with dictionary array.
#   -h, --help               display this help

Sử dụng như mô-đun

Thêm vào dự án của bạn

// Deno [web module] Import
import ShortUniqueId from '//esm.sh/short-unique-id';

// ES6 / TypeScript Import
import ShortUniqueId from 'short-unique-id';

// Node.js require
const ShortUniqueId = require['short-unique-id'];

Khởi tạo và sử dụng

________số 8

Sử dụng trong trình duyệt






Tùy chọn

Các tùy chọn có thể được thông qua khi khởi tạo

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
5

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
1

Để biết thêm thông tin, hãy xem các tài liệu

có sẵn cho

Tài liệu với Trình tạo UUID ngắn trực tuyến

Bạn có thể tìm tài liệu và trình tạo trực tuyến tại

https. // rút gọn. Tôi

Xác suất tạo lại cùng một id là gì?

Điều này phần lớn phụ thuộc vào từ điển nhất định và độ dài UUID đã chọn

Ngay lập tức, thư viện này cung cấp một từ điển xáo trộn các chữ số từ 0 đến 9, cũng như bảng chữ cái từ a đến z ở cả chữ HOA và chữ thường, với độ dài UUID mặc định là 6. Điều đó mang lại cho bạn tổng cộng 56.800.235.584 UUID có thể

Vì vậy, với các giá trị trước đó, xác suất tạo một bản sao trong 1.000.000 vòng là ~ 0. 00000002, hoặc khoảng 1 trên 50.000.000

Nếu bạn thay đổi từ điển và/hoặc độ dài UUID thì chúng tôi đã cung cấp hàm

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
6 để tính xác suất trúng một bản sao trong một số vòng nhất định [va chạm] và hàm
  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
7 cung cấp điểm [từ 0 đến 1

Để tìm hiểu thêm về toán học đằng sau các chức năng này, vui lòng tham khảo

Xác nhận và hỗ trợ nền tảng

Gói repo và npm này bắt đầu dưới dạng chuyển đổi thủ công sang ES6 của gói npm short-uid của Ankit Kuwadekar

Vì gói này hiện đang báo cáo hơn 12 nghìn lượt tải xuống npm hàng tuần và hơn 100 nghìn lượt truy cập cdn hàng tuần, nên chúng tôi đã tiếp tục và viết lại toàn bộ gói này trong TypeScript và đảm bảo đóng gói các mô-đun dist tương thích với Deno, Node. js và tất cả các Trình duyệt chính

Phát triển

Sao chép repo này

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
0

Kiểm tra chạy bằng cách sử dụng

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
1

Xây dựng

Để xuất bản các thay đổi mới nhất, bạn phải xây dựng các tệp phân phối

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
2

Sau đó cam kết tất cả các thay đổi và chạy tập lệnh phát hành

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
3

Đóng góp

Vâng, cảm ơn. Plugin này hướng đến cộng đồng, hầu hết các tính năng của nó là từ các tác giả khác nhau. Vui lòng cập nhật tài liệu và bài kiểm tra và thêm tên của bạn vào tệp

  0,1,2,3,4,5,6,7,8,9,
  a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,
  A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
8

Làm cách nào để tạo id duy nhất bằng cách sử dụng dấu thời gian trong JavaScript?

Cách tạo ID duy nhất trong JavaScript .
const uuidv4 = yêu cầu["uuid/v4"] uuidv4[]
môn Toán. tầng [Toán. ngẫu nhiên[] * 100]
Ngày tháng. hiện nay[]

Tôi có thể sử dụng dấu thời gian làm ID duy nhất không?

Gần đây, tôi đã viết một bài viết về cách dấu thời gian có thể được sử dụng làm số nhận dạng duy nhất , vì chúng rẻ hơn nhiều so với các phương pháp tạo khác . Đảm bảo tính duy nhất khi sử dụng dấu thời gian ở độ chi tiết nano giây rất đơn giản trên một hệ thống.

Làm cách nào để tạo JavaScript số duy nhất?

Javascript tạo các số giả ngẫu nhiên bằng hàm Math. ngẫu nhiên[] . Hàm này không có tham số và tạo một số thập phân ngẫu nhiên trong khoảng từ 0 đến 1. Giá trị trả về có thể là 0, nhưng sẽ không bao giờ là 1.

Làm cách nào để tạo UUID trong JavaScript?

UUID, mã định danh duy nhất toàn cầu, có thể được tạo bằng cách sử dụng phương thức RandomUUID của tiền điện tử thuộc tính toàn cầu . Phương pháp này sẽ tạo UUID v4 bằng cách sử dụng trình tạo số ngẫu nhiên được bảo mật bằng mật mã.

Chủ Đề