Comment générer un identifiant unique d'une longueur fixe en Java?
Je suis en train de générer un identifiant unique d'une longueur fixe, tels que les Identifiants qui sont générés par Megaupload pour les fichiers téléchargés.
Par exemple:
- ALGYTAB5
- BCLD23A6
Dans cet exemple à l'aide de A-Z et 0-9 et avec une longueur fixe de 8 le total des différentes combinaisons sont 2,821,109,907,456.
Que faire si l'un de l'identifiant généré est déjà pris. Ces identifiants sont stockés dans une base de données et il ne devrait pas être utilisé plus d'une fois.
Comment puis-je réaliser que dans Java?
Merci.
stackoverflow.com/questions/192920/... download.oracle.com/javase/1,5.0/docs/api/java/util/UUID.html
Quelle est la raison de ne pas vouloir utiliser un auto-incrémentation d'une pièce d'identité?
Il doit être difficile à deviner.
Pourriez-vous utiliser un générateur de nombres pseudo aléatoires pour générer des codes de caractères?
Quelle est la raison de ne pas vouloir utiliser un auto-incrémentation d'une pièce d'identité?
Il doit être difficile à deviner.
Pourriez-vous utiliser un générateur de nombres pseudo aléatoires pour générer des codes de caractères?
OriginalL'auteur Alfredo Osorio | 2011-07-05
Vous devez vous connecter pour publier un commentaire.
Hmm... on pourrait imiter un petit
GUID
de la façon suivante. Laisser les 4 premiers octets de vos chaînes codées heure actuelle - les secondes passèrent après Unix. Et les 4 derniers juste une combinaison aléatoire. Dans ce cas, le seul moyen de deux ID coïnciderait est qu'ils ont été construits à la même seconde. Et les chances que cela serait très veeery faible en raison de l'autre de 4 caractères aléatoires.Pseudocode:
OriginalL'auteur Armen Tsirunyan
J'ai essayé @Armen solution cependant, je voudrais donner une autre solution
Espérons que cette aide!
OriginalL'auteur Lunf
Nous utilisons la base de données pour vérifier si elles existent déjà. Si le nombre d'Identifiants est faible par rapport au nombre que vous devriez être relativement à l'abri.
Vous pouvez également jeter un oeil à la
UUID
classe (même si c'est de 16 octets Uuid).merci pour l'ajout du lien, même si je préfère ajouter Java 6 version: download.oracle.com/javase/6/docs/api/java/util/UUID.html
OriginalL'auteur Thomas
Sonne comme un travail pour un fonction de hachage. Vous n'êtes pas certain à 100% qu'une fonction de hachage sera de retour un identifiant unique, mais il fonctionne la plupart du temps. Les collisions de hachage doivent être traités séparément, mais il y a beaucoup de techniques standard pour vous de regarder dans.
Précisément comment vous gérer les collisions dépend de ce que vous êtes à l'aide de cet identifiant unique pour. Si c'est un simple moyen de l'identificateur de l'endroit où vous donnez à votre programme de l'ID et il renvoie les données, alors il suffit d'utiliser le code disponible suivante dans le cas d'une collision.
OriginalL'auteur tskuzzy
Suivre ces étapes ci-dessous:
OriginalL'auteur Sucheth Shivakumar