Hasilkan pengecam unik yang tahan perlanggaran (CUID) untuk sistem teragih, pangkalan data, dan aplikasi web. Alat ini mencipta CUID yang boleh diskala, boleh disusun, dan sangat tidak mungkin untuk bertembung.
Hasilkan ID yang tahan perlanggaran dengan cepat dan mudah.
CUID (Collision-resistant Unique IDentifier) adalah pengenal unik yang direka untuk tahan terhadap perlanggaran, boleh skala secara mendatar, dan boleh disusun secara berurutan. CUID sangat berguna dalam sistem teragih di mana pengenal unik perlu dijana tanpa koordinasi antara nod.
CUID biasanya terdiri daripada komponen berikut:
Struktur tepat mungkin berbeza bergantung pada pelaksanaan CUID, tetapi komponen ini bekerjasama untuk mencipta pengenal yang unik dan boleh disusun.
Berikut adalah representasi visual struktur CUID yang tipikal:
CUID dijana menggunakan gabungan komponen berasaskan waktu dan rawak. Proses biasanya melibatkan:
CUID yang dihasilkan biasanya diwakili sebagai rentetan huruf dan nombor.
CUID menawarkan beberapa kelebihan berbanding sistem pengenal unik lain:
Kes penggunaan biasa untuk CUID termasuk:
Berikut adalah contoh menjana CUID dalam pelbagai bahasa pengaturcaraan:
1// JavaScript (menggunakan pustaka 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (menggunakan pustaka 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (menggunakan gem 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (menggunakan pustaka 'com.github.f4b6a3.cuid')
2import com.github.f4b6a3.cuid.Cuid;
3
4public class CuidExample {
5 public static void main(String[] args) {
6 String id = Cuid.createCuid();
7 System.out.println(id);
8 }
9}
10
1// C# (menggunakan pakej NuGet 'Cuid.Net')
2using Cuid;
3
4class Program
5{
6 static void Main(string[] args)
7 {
8 string id = CuidGenerator.Generate();
9 Console.WriteLine(id);
10 }
11}
12
1// PHP (menggunakan pakej 'endyjasmi/cuid')
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (menggunakan pakej 'github.com/lucsky/cuid')
2package main
3
4import (
5 "fmt"
6 "github.com/lucsky/cuid"
7)
8
9func main() {
10 id := cuid.New()
11 fmt.Println(id)
12}
13
1// Swift (menggunakan pakej 'CUID')
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (menggunakan pelaksanaan khusus)
2#include <iostream>
3#include <chrono>
4#include <random>
5#include <sstream>
6#include <iomanip>
7
8std::string generateCUID() {
9 auto now = std::chrono::system_clock::now();
10 auto now_ms = std::chrono::time_point_cast<std::chrono::milliseconds>(now);
11 auto value = now_ms.time_since_epoch();
12 long duration = value.count();
13
14 std::random_device rd;
15 std::mt19937 gen(rd());
16 std::uniform_int_distribution<> dis(0, 35);
17
18 std::stringstream ss;
19 ss << 'c';
20 ss << std::hex << std::setfill('0') << std::setw(8) << duration;
21 for (int i = 0; i < 8; i++) {
22 int r = dis(gen);
23 ss << (char)(r < 10 ? '0' + r : 'a' + r - 10);
24 }
25 return ss.str();
26}
27
28int main() {
29 std::string id = generateCUID();
30 std::cout << id << std::endl;
31 return 0;
32}
33
1% MATLAB (menggunakan pelaksanaan khusus)
2function id = generateCUID()
3 timestamp = dec2hex(round(posixtime(datetime('now'))*1000), 8);
4 random = '';
5 for i = 1:8
6 random = [random char(randi([48 57 97 122]))];
7 end
8 id = ['c' timestamp random];
9end
10
11% Penggunaan
12id = generateCUID();
13disp(id);
14
1## R (menggunakan pelaksanaan khusus)
2library(lubridate)
3
4generate_cuid <- function() {
5 timestamp <- format(as.numeric(now()) * 1000, scientific = FALSE)
6 timestamp <- substr(timestamp, 1, 8)
7 random <- paste0(sample(c(0:9, letters[1:6]), 8, replace = TRUE), collapse = "")
8 paste0("c", timestamp, random)
9}
10
11## Penggunaan
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (menggunakan pelaksanaan khusus)
2Function GenerateCUID() As String
3 Dim timestamp As String
4 Dim random As String
5 Dim i As Integer
6
7 timestamp = Right("00000000" & Hex(CLng(CDbl(Now()) * 86400000)), 8)
8
9 For i = 1 To 8
10 random = random & Mid("0123456789abcdef", Int(Rnd() * 16) + 1, 1)
11 Next i
12
13 GenerateCUID = "c" & timestamp & random
14End Function
15
16' Penggunaan dalam sel
17'=GenerateCUID()
18
CUID pada asalnya dibangunkan oleh Eric Elliott pada tahun 2012 sebagai penyelesaian kepada masalah menjana pengenal unik dalam sistem teragih. Konsep ini diilhamkan oleh sistem ID Snowflake Twitter tetapi direka untuk lebih mudah dilaksanakan dan digunakan merentasi pelbagai platform.
Pembangunan CUID didorong oleh keperluan untuk sistem ID yang mudah, tahan terhadap perlanggaran yang boleh berfungsi merentasi pelbagai bahasa pengaturcaraan dan persekitaran. Matlamat Elliott adalah untuk mencipta sistem yang mudah dilaksanakan, tidak memerlukan koordinasi pusat, dan boleh skala secara mendatar.
Sejak penubuhannya, CUID telah melalui beberapa iterasi dan penambahbaikan:
Evolusi CUID mencerminkan keperluan yang berubah dalam sistem teragih dan usaha berterusan untuk menyeimbangkan kesederhanaan, keselamatan, dan prestasi dalam penjanaan pengenal unik.
Alat penjana CUID ini membolehkan anda dengan cepat menjana CUID untuk projek anda. Hanya klik butang "Jana" untuk mencipta CUID baru, dan gunakan butang "Salin" untuk menyalinnya ke papan klip anda untuk penggunaan yang mudah dalam aplikasi anda.
Temui lebih banyak alat yang mungkin berguna untuk aliran kerja anda