Generer kollisionsresistente unikke identifikatorer (CUID'er) til distribuerede systemer, databaser og webapplikationer. Dette værktøj opretter CUID'er, der er skalerbare, sorterbare og meget usandsynlige at kollidere.
Generer en kollision-resistent ID hurtigt og nemt.
En CUID (Collision-resistant Unique IDentifier) er en unik identifikator designet til at være kollisionsresistent, horisontalt skalerbar og sekventielt sorterbar. CUID'er er særligt nyttige i distribuerede systemer, hvor unikke identifikatorer skal genereres uden koordinering mellem noder.
En CUID består typisk af følgende komponenter:
Den præcise struktur kan variere afhængigt af CUID-implementeringen, men disse komponenter arbejder sammen for at skabe en unik og sorterbar identifikator.
Her er en visuel repræsentation af en typisk CUID-struktur:
CUID'er genereres ved hjælp af en kombination af tidsbaserede og tilfældige komponenter. Processen involverer typisk:
Den resulterende CUID repræsenteres typisk som en streng af bogstaver og tal.
CUID'er tilbyder flere fordele i forhold til andre systemer til unikke identifikatorer:
Almindelige anvendelsesområder for CUID'er inkluderer:
Her er eksempler på generering af CUID'er i forskellige programmeringssprog:
1// JavaScript (ved hjælp af 'cuid' biblioteket)
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (ved hjælp af 'cuid' biblioteket)
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (ved hjælp af 'cuid' gem)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (ved hjælp af 'com.github.f4b6a3.cuid' biblioteket)
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# (ved hjælp af 'Cuid.Net' NuGet-pakken)
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 (ved hjælp af 'endyjasmi/cuid' pakken)
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (ved hjælp af 'github.com/lucsky/cuid' pakken)
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 (ved hjælp af 'CUID' pakken)
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (ved hjælp af en brugerdefineret implementering)
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 (ved hjælp af en brugerdefineret implementering)
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% Brug
12id = generateCUID();
13disp(id);
14
1## R (ved hjælp af en brugerdefineret implementering)
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## Brug
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (ved hjælp af en brugerdefineret implementering)
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' Brug i en celle
17'=GenerateCUID()
18
CUID'er blev oprindeligt udviklet af Eric Elliott i 2012 som en løsning på problemet med at generere unikke identifikatorer i distribuerede systemer. Konceptet blev inspireret af Twitters Snowflake ID-system, men designet til at være lettere at implementere og bruge på tværs af forskellige platforme.
Udviklingen af CUID'er blev drevet af behovet for et simpelt, kollisionsresistent ID-system, der kunne fungere på tværs af forskellige programmeringssprog og miljøer. Elliotts mål var at skabe et system, der var nemt at implementere, ikke krævede central koordinering og kunne skaleres horisontalt.
Siden sin opstart er CUID gået gennem flere iterationer og forbedringer:
Udviklingen af CUID'er afspejler de skiftende behov i distribuerede systemer og de løbende bestræbelser på at balancere enkelhed, sikkerhed og ydeevne i genereringen af unikke identifikatorer.
Dette CUID-generatorværktøj giver dig mulighed for hurtigt at generere CUID'er til dine projekter. Klik blot på "Generer"-knappen for at oprette en ny CUID, og brug "Kopier"-knappen for at kopiere den til din udklipsholder for nem brug i dine applikationer.
Opdag flere værktøjer, der måske kan være nyttige for din arbejdsgang.