Zalisha vitambulisho vya kipekee vinavyopingana (CUIDs) kwa ajili ya mifumo iliyosambazwa, hifadhidata, na programu za wavuti. Chombo hiki kinaunda CUIDs ambazo zinaweza kupanuka, kupangwa, na kuna uwezekano mdogo wa kukutana.
Tengeneza kitambulisho kisichoweza kugongana kwa haraka na kwa urahisi.
CUID (Collision-resistant Unique IDentifier) ni kitambulisho cha kipekee kilichoundwa ili kuwa na upinzani wa mgongano, kupanuka kwa usawa, na kupangwa kwa mpangilio. CUIDs ni muhimu sana katika mifumo iliyosambazwa ambapo vitambulisho vya kipekee vinahitaji kuundwa bila uratibu kati ya nodi.
CUID kwa kawaida ina sehemu zifuatazo:
Muundo halisi unaweza kutofautiana kulingana na utekelezaji wa CUID, lakini sehemu hizi zinafanya kazi pamoja ili kuunda kitambulisho kipekee na kinachoweza kupangwa.
Hapa kuna uwakilishi wa picha wa muundo wa kawaida wa CUID:
CUIDs zinaundwa kwa kutumia mchanganyiko wa sehemu za msingi wa wakati na za nasibu. Mchakato kwa kawaida unajumuisha:
CUID inayotokana kwa kawaida inawakilishwa kama mfuatano wa herufi na nambari.
CUIDs hutoa faida kadhaa ikilinganishwa na mifumo mingine ya kitambulisho kipekee:
Matumizi ya kawaida ya CUIDs ni pamoja na:
Hapa kuna mifano ya kuunda CUIDs katika lugha mbalimbali za programu:
1// JavaScript (ukitumia maktaba ya 'cuid')
2const cuid = require('cuid');
3const id = cuid();
4console.log(id);
5
1## Python (ukitumia maktaba ya 'cuid')
2import cuid
3id = cuid.cuid()
4print(id)
5
1## Ruby (ukitumia gem ya 'cuid')
2require 'cuid'
3id = Cuid::generate
4puts id
5
1// Java (ukitumia maktaba ya '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# (ukitumia pakiti ya 'Cuid.Net' ya NuGet)
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 (ukitumia pakiti ya 'endyjasmi/cuid')
2<?php
3require 'vendor/autoload.php';
4use Endyjasmi\Cuid\Cuid;
5
6$id = Cuid::make();
7echo $id;
8
1// Go (ukitumia pakiti ya '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 (ukitumia pakiti ya 'CUID')
2import CUID
3
4let id = CUID()
5print(id)
6
1// C++ (ukitumia utekelezaji wa kawaida)
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 (ukitumia utekelezaji wa kawaida)
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% Matumizi
12id = generateCUID();
13disp(id);
14
1## R (ukitumia utekelezaji wa kawaida)
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## Matumizi
12id <- generate_cuid()
13print(id)
14
1' Excel VBA (ukitumia utekelezaji wa kawaida)
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' Matumizi katika seli
17'=GenerateCUID()
18
CUIDs zilianzishwa na Eric Elliott mwaka 2012 kama suluhisho la tatizo la kuunda vitambulisho vya kipekee katika mifumo iliyosambazwa. Wazo hili lilichochewa na mfumo wa ID wa Twitter wa Snowflake lakini ulitengenezwa ili uweze kutekelezwa kwa urahisi na kutumika katika majukwaa mbalimbali.
Maendeleo ya CUIDs yalichochewa na hitaji la mfumo wa kitambulisho wa rahisi, unaopingana na mgongano ambao unaweza kufanya kazi katika lugha tofauti za programu na mazingira. Lengo la Elliott lilikuwa kuunda mfumo ambao ni rahisi kutekeleza, hauhitaji uratibu wa kati, na unaweza kupanuka kwa usawa.
Tangu kuanzishwa kwake, CUID imepita katika hatua kadhaa za maboresho:
Mabadiliko ya CUIDs yanaakisi mahitaji yanayobadilika ya mifumo iliyosambazwa na juhudi endelevu za kulinganisha urahisi, usalama, na utendaji katika kuunda vitambulisho vya kipekee.
Zana hii ya kizazi cha CUID inakuwezesha kuunda haraka CUIDs kwa miradi yako. Bonyeza tu kitufe cha "Unda" ili kuunda CUID mpya, na tumia kitufe cha "Nakili" ili kukinakili kwenye clipboard yako kwa matumizi rahisi katika programu zako.
Gundua zana zaidi ambazo zinaweza kuwa na manufaa kwa mtiririko wako wa kazi