🛠️

Whiz Tools

Build • Create • Innovate

Υπολογιστής Βρεγμένης Περιμέτρου για Σχήματα Καναλιών

Υπολογίστε τη βρεγμένη περίμετρο για διάφορα σχήματα καναλιών, συμπεριλαμβανομένων τραπεζοειδών, ορθογωνίων/τετραγώνων και κυκλικών σωλήνων. Απαραίτητο για εφαρμογές υδραυλικής μηχανικής και μηχανικής ρευστών.

Γεννήτρια ULID

Δημιουργημένο ULID:

Δομή ULID


Χρονική σήμανση (10 χαρακτήρες)

Τυχαιότητα (16 χαρακτήρες)
📚

Τεκμηρίωση

Γεννήτρια ULID

Εισαγωγή

Ένα ULID (Καθολικά Μοναδικός Λεξικογραφικά Ταξινομήσιμος Αναγνωριστικός) είναι ένας μοναδικός αναγνωριστικός που συνδυάζει μια χρονική σήμανση με τυχαία δεδομένα για να δημιουργήσει μια συμβολοσειρά 26 χαρακτήρων. Τα ULIDs έχουν σχεδιαστεί για να είναι λεξικογραφικά ταξινομήσιμα διατηρώντας παράλληλα υψηλό βαθμό μοναδικότητας και τυχαιότητας.

Δομή ενός ULID

Ένα ULID αποτελείται από δύο κύρια μέρη:

  1. Χρονική σήμανση (10 χαρακτήρες): Οι πρώτοι 10 χαρακτήρες αντιπροσωπεύουν τον χρόνο σε χιλιοστά του δευτερολέπτου από την εποχή Unix (1970-01-01).
  2. Τυχαιότητα (16 χαρακτήρες): Οι υπόλοιποι 16 χαρακτήρες παράγονται χρησιμοποιώντας κρυπτογραφικά ασφαλή τυχαία δεδομένα.

Η προκύπτουσα 26-χαρακτήρων συμβολοσειρά κωδικοποιείται χρησιμοποιώντας το αλφάβητο base32 του Crockford (0-9 και A-Z, εξαιρουμένων των I, L, O και U).

Τύπος

Το ULID παράγεται χρησιμοποιώντας τα εξής βήματα:

  1. Δημιουργία μιας χρονικής σήμανσης 48-bit (χιλιοστά από την εποχή Unix).
  2. Δημιουργία 80 bit κρυπτογραφικά ασφαλών τυχαίων δεδομένων.
  3. Κωδικοποίηση των συνδυασμένων 128 bit χρησιμοποιώντας την κωδικοποίηση base32 του Crockford.

Υπολογισμός

Η γεννήτρια ULID εκτελεί τα εξής βήματα:

  1. Λάβετε την τρέχουσα χρονική σήμανση σε χιλιοστά.
  2. Δημιουργήστε 10 τυχαία bytes (80 bit) χρησιμοποιώντας έναν κρυπτογραφικά ασφαλή γεννήτρια τυχαίων αριθμών.
  3. Συνδυάστε τη χρονική σήμανση και τα τυχαία δεδομένα σε έναν ακέραιο 128-bit.
  4. Κωδικοποιήστε τον ακέραιο 128-bit χρησιμοποιώντας την κωδικοποίηση base32 του Crockford.

Χρήσεις

Τα ULIDs είναι χρήσιμα σε διάφορα σενάρια, όπως:

  1. Κλειδιά βάσης δεδομένων: Τα ULIDs μπορούν να χρησιμοποιηθούν ως μοναδικοί αναγνωριστές για εγγραφές βάσης δεδομένων, εξασφαλίζοντας μοναδικότητα και ταξινόμηση.
  2. Κατανεμημένα συστήματα: Σε κατανεμημένα περιβάλλοντα, τα ULIDs μπορούν να παραχθούν χωρίς συντονισμό μεταξύ κόμβων.
  3. Καταγραφή και παρακολούθηση: Τα ULIDs μπορούν να χρησιμοποιηθούν για την επισήμανση καταχωρίσεων καταγραφής ή την παρακολούθηση γεγονότων, παρέχοντας έναν ταξινομήσιμο και μοναδικό αναγνωριστικό.
  4. Φιλικοί προς το URL αναγνωριστές: Τα ULIDs είναι ασφαλή για URL και μπορούν να χρησιμοποιηθούν σε διαδικτυακές εφαρμογές ως αναγνωριστές σε URLs.

Εναλλακτικές

Αν και τα ULIDs είναι ευέλικτα, υπάρχουν άλλα συστήματα μοναδικών αναγνωριστών που πρέπει να εξεταστούν:

  1. UUID (Καθολικά Μοναδικός Αναγνωριστικός): Ένας 128-bit αναγνωριστικός που δεν περιλαμβάνει μια χρονική σήμανση.
  2. KSUID (K-Sortable Unique IDentifier): Παρόμοιο με το ULID αλλά με διαφορετική κωδικοποίηση χρονικής σήμανσης.
  3. Snowflake ID: Το σύστημα κατανεμημένης μοναδικής αναγνώρισης του Twitter, το οποίο περιλαμβάνει μια χρονική σήμανση και αναγνωριστικό εργαζομένου.

Ιστορία

Τα ULIDs εισήχθησαν το 2016 από τον Alizain Feerasta ως εναλλακτική λύση στα UUIDs. Σχεδιάστηκαν για να αντιμετωπίσουν κάποιους περιορισμούς των UUIDs, ιδιαίτερα όσον αφορά την ταξινόμηση και την αναγνωσιμότητα. Η προδιαγραφή ULID έχει παραμείνει σταθερή από την εισαγωγή της, με διάφορες υλοποιήσεις διαθέσιμες σε διαφορετικές γλώσσες προγραμματισμού.

Παραδείγματα

Ακολουθούν μερικά παραδείγματα κώδικα για τη δημιουργία ULIDs σε διαφορετικές γλώσσες προγραμματισμού:

1// Υλοποίηση JavaScript
2function generateULID() {
3  const timestamp = Date.now().toString(36).padStart(10, '0');
4  const randomness = crypto.getRandomValues(new Uint8Array(16))
5    .reduce((acc, byte) => acc + byte.toString(36).padStart(2, '0'), '');
6  return (timestamp + randomness).toUpperCase();
7}
8
9console.log(generateULID());
10

Αυτά τα παραδείγματα δείχνουν πώς να δημιουργήσετε ULIDs σε JavaScript, Python και Java. Μπορείτε να προσαρμόσετε αυτές τις συναρτήσεις στις συγκεκριμένες ανάγκες σας ή να τις ενσωματώσετε σε μεγαλύτερα συστήματα που απαιτούν μοναδικούς αναγνωριστές.

Αναφορές

  1. "Προδιαγραφή ULID." GitHub, https://github.com/ulid/spec. Πρόσβαση 2 Αυγ. 2024.
  2. "Κωδικοποίηση Base32 του Crockford." Κωδικοποίηση Base32, http://www.crockford.com/base32.html. Πρόσβαση 2 Αυγ. 2024.
  3. "UUID vs ULID." Stack Overflow, https://stackoverflow.com/questions/54222235/uuid-vs-ulid. Πρόσβαση 2 Αυγ. 2024.
🔗

Σχετικά Εργαλεία

Ανακαλύψτε περισσότερα εργαλεία που μπορεί να είναι χρήσιμα για τη ροή εργασίας σας

Δημιουργία KSUIDs: Μοναδικά και Ταξινομήσιμα Αναγνωριστικά

Δοκιμάστε αυτό το εργαλείο

Γεννήτρια Μοναδικών MongoDB ObjectIDs για Δοκιμές και Ανάπτυξη

Δοκιμάστε αυτό το εργαλείο

Γεννήτρια UUID για Δημιουργία Μοναδικών Αναγνωριστών

Δοκιμάστε αυτό το εργαλείο

Εργαλείο Δημιουργίας και Επικύρωσης CUIT/CUIL Αργεντινής

Δοκιμάστε αυτό το εργαλείο

Γεννήτρια Nano ID: Δημιουργία Ασφαλών Αναγνωριστικών

Δοκιμάστε αυτό το εργαλείο

Γεννήτρια CUID για μοναδικούς αναγνωριστικούς αριθμούς

Δοκιμάστε αυτό το εργαλείο

Εργαλείο Δημιουργίας και Επικύρωσης IBAN για Δοκιμές και Επαλήθευση

Δοκιμάστε αυτό το εργαλείο

Γεννήτρια & Επαληθευτής CUIT Αργεντινής για Δοκιμαστικούς Σκοπούς

Δοκιμάστε αυτό το εργαλείο

Γεννήτρια CPF για Δοκιμές και Επικύρωση Δεδομένων

Δοκιμάστε αυτό το εργαλείο

Γεννήτρια και Επαληθευτής CBU Αργεντινής | Τραπεζικοί Κωδικοί

Δοκιμάστε αυτό το εργαλείο