Ģenerējiet sadursmēm izturīgus unikālos identifikatorus (CUID) izplatītām sistēmām, datubāzēm un tīmekļa lietotnēm. Šis rīks rada CUID, kas ir mērogojami, kārtoti un ļoti maz ticams, ka tie sadursies.
Ātri un viegli ģenerējiet sadursmēm izturīgu ID.
CUID (Collision-resistant Unique IDentifier) ir unikāls identifikators, kas izstrādāts, lai būtu pretrunīgi izturīgs, horizontāli skalojams un secīgi kārtots. CUID ir īpaši noderīgi izplatītajās sistēmās, kur unikāli identifikatori jāģenerē bez koordinācijas starp mezgliem.
CUID parasti sastāv no šādām komponentēm:
Precīza struktūra var atšķirties atkarībā no CUID ieviešanas, taču šīs komponentes darbojas kopā, lai izveidotu unikālu un kārtotu identifikatoru.
Šeit ir vizuāls attēlojums tipiskai CUID struktūrai:
CUID tiek ģenerēti, izmantojot laika un nejaušu komponentu kombināciju. Process parasti ietver:
Iegūtais CUID parasti tiek attēlots kā burtu un ciparu virkne.
CUID piedāvā vairākas priekšrocības salīdzinājumā ar citām unikālo identifikatoru sistēmām:
Biežākie CUID lietošanas gadījumi ietver:
Šeit ir piemēri CUID ģenerēšanai dažādās programmēšanas valodās:
1// JavaScript (izmantojot 'cuid' bibliotēku)
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (izmantojot 'cuid' bibliotēku)
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (izmantojot 'cuid' gem)
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (izmantojot 'com.github.f4b6a3.cuid' bibliotēku)
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# (izmantojot 'Cuid.Net' NuGet pakotni)
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 (izmantojot 'endyjasmi/cuid' pakotni)
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (izmantojot 'github.com/lucsky/cuid' pakotni)
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 (izmantojot 'CUID' pakotni)
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (izmantojot pielāgotu ieviešanu)
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 (izmantojot pielāgotu ieviešanu)
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% Lietošana
12id = generateCUID();
13disp(id);
14
1## R (izmantojot pielāgotu ieviešanu)
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## Lietošana
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (izmantojot pielāgotu ieviešanu)
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' Lietošana šūnā
17'=GenerateCUID()
18
CUID sākotnēji izstrādāja Eriks Eliots 2012. gadā kā risinājumu unikālu identifikatoru ģenerēšanai izplatītajās sistēmās. Koncepts tika iedvesmots no Twitter Snowflake ID sistēmas, taču izstrādāts, lai to būtu vieglāk ieviest un izmantot dažādās platformās.
CUID attīstību virzīja nepieciešamība pēc vienkārša, pretrunīgi izturīga ID sistēmas, kas varētu darboties dažādās programmēšanas valodās un vidēs. Eliota mērķis bija izveidot sistēmu, kas būtu viegli īstenojama, neprasītu centrālo koordināciju un varētu horizontāli skaloties.
Kopš tās izveides CUID ir izgājuši cauri vairākiem uzlabojumiem un iterācijām:
CUID attīstība atspoguļo izplatīto sistēmu mainīgās vajadzības un pastāvīgās pūles līdzsvarot vienkāršību, drošību un veiktspēju unikālo identifikatoru ģenerēšanā.
Šis CUID ģenerators ļauj ātri ģenerēt CUID saviem projektiem. Vienkārši noklikšķiniet uz "Ģenerēt" pogas, lai izveidotu jaunu CUID, un izmantojiet "Kopēt" pogu, lai to kopētu jūsu starpliktuvē vieglai izmantošanai jūsu lietojumprogrammās.
Atklājiet vairāk rīku, kas varētu būt noderīgi jūsu darbplūsmai