Generuokite kolizijoms atsparius unikalius identifikatorius (CUID) paskirstytoms sistemoms, duomenų bazėms ir internetinėms programoms. Šis įrankis kuria CUID, kurie yra skalaujami, rūšiuojami ir labai mažai tikėtina, kad susidurs.
Greitai ir lengvai generuokite kolizijoms atsparų ID.
CUID (Collision-resistant Unique IDentifier) yra unikalus identifikatorius, sukurtas taip, kad būtų atsparus kolizijoms, horizontaliai skalabilus ir sekuojamas. CUID yra ypač naudingas paskirstytose sistemose, kuriose unikalūs identifikatoriai turi būti generuojami be koordinavimo tarp mazgų.
CUID paprastai susideda iš šių komponentų:
Tiksli struktūra gali skirtis priklausomai nuo CUID įgyvendinimo, tačiau šie komponentai veikia kartu, kad sukurtų unikalų ir sekuojamą identifikatorių.
Štai vizualinis tipinio CUID struktūros atvaizdavimas:
CUID generuojami naudojant laiko ir atsitiktinių komponentų derinį. Procesas paprastai apima:
Gautas CUID paprastai atvaizduojamas kaip raidžių ir skaičių eilutė.
CUID siūlo kelis privalumus palyginti su kitomis unikalių identifikatorių sistemomis:
Dažniausiai naudojami CUID atvejai apima:
Štai pavyzdžiai, kaip generuoti CUID įvairiose programavimo kalbose:
1// JavaScript (naudojant 'cuid' biblioteką)
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (naudojant 'cuid' biblioteką)
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (naudojant 'cuid' gem)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (naudojant 'com.github.f4b6a3.cuid' biblioteką)
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# (naudojant 'Cuid.Net' NuGet paketą)
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 (naudojant 'endyjasmi/cuid' paketą)
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (naudojant 'github.com/lucsky/cuid' paketą)
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 (naudojant 'CUID' paketą)
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (naudojant savarankišką įgyvendinimą)
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 (naudojant savarankišką įgyvendinimą)
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% Naudojimas
12id = generateCUID();
13disp(id);
14
1## R (naudojant savarankišką įgyvendinimą)
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## Naudojimas
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (naudojant savarankišką įgyvendinimą)
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' Naudojimas ląstelėje
17'=GenerateCUID()
18
CUID buvo iš pradžių sukurtas Eric Elliott 2012 m. kaip sprendimas unikalių identifikatorių generavimo problemoms paskirstytose sistemose. Koncepcija buvo įkvėpta Twitter sniego kristalo ID sistemos, tačiau buvo sukurta taip, kad būtų lengviau įgyvendinama ir naudojama įvairiose platformose.
CUID plėtra buvo skatinama poreikio turėti paprastą, atsparų kolizijoms ID sistemą, kuri galėtų veikti įvairiose programavimo kalbose ir aplinkose. Elliott tikslas buvo sukurti sistemą, kuri būtų lengvai įgyvendinama, nereikalautų centrinio koordinavimo ir galėtų horizontaliai skalotis.
Nuo pat savo atsiradimo CUID praėjo kelis etapus ir patobulinimus:
CUID evoliucija atspindi besikeičiančius paskirstytų sistemų poreikius ir nuolatines pastangas subalansuoti paprastumą, saugumą ir našumą unikalių identifikatorių generavime.
Šis CUID generatorius leidžia greitai generuoti CUID savo projektams. Tiesiog paspauskite mygtuką "Generuoti", kad sukurtumėte naują CUID, ir naudokite mygtuką "Kopijuoti", kad nukopijuotumėte jį į savo iškarpinę, kad būtų lengva naudoti savo programose.
Raskite daugiau įrankių, kurie gali būti naudingi jūsų darbo eiga.