J'ai besoin d'un générateur UUID simple. L'ID doit être unique pour cette instance unique. Une autre exigence est, qu'il a n hachages coexistent à la fois, et être libérable. Je ne sais pas si cela correspond ou non au concept UUID. J'ai tout de suite pensé à une pile avec des valeurs n utilisant le pop et le push, mais cette pratique me semble mauvaise mémoire. L'utilisation d'UUID aléatoires (à l'exclusion des UDI cryptographiques) n'est pas suffisante, car par malchance, il pourrait y avoir 2 IDs correspondants, qui ne peuvent pas être accapet (bien que neglegable chance), car cela est supposé être utilisé dans un environnement productif.Générateur d'UUID n-values, ID réutilisables
Répondre
Universellement Identifiers unique (UUID)/À l'échelle mondiale Identificateur unique (GUID)
Le problème de la génération d'identifiants uniques peut être décomposé en unicité sur l'espace et unicité dans le temps qui, lorsqu'ils sont combinés, visent à produire une séquence globalement unique.
Les UUID sont officiellement et spécifiquement définis dans la norme ISO-11578. D'autres spécifications existent également, comme RFC 4122, Rec. X.667.
OSSP uuid (http://www.ossp.org/pkg/lib/uuid/) est une API pour C ISO, ISO C++, Perl et PHP et un CLI correspondant pour la production de DCE 1,1, ISO/CEI 11578: 1996, et RFC4122 Conforme identificateurs uniques universels (UUID). Il prend en charge les UUID de variante 1 de DCE version 1 (temps et nœud), version 3 (nom basé, MD5), version 4 (basée sur un nombre aléatoire) et version 5 (basée sur le nom, SHA-1). Les UUID sont des nombres de 128 bits qui sont destinés à avoir une forte probabilité d'unicité dans l'espace et le temps et sont difficiles à deviner. Ce sont des identifiants globalement uniques qui peuvent être générés localement sans contacter une autorité d'enregistrement globale. Il est Open Source sous licence MIT/X Consortium.
J'ai inclus quelques explications supplémentaires dans le http://en.wikibooks.org/wiki/The_World_of_Peer-to-Peer_%28P2P%29/Building_a_P2P_System#Unique_ID
Sur Windows Vérifiez la bibliothèque RPC (voir #include « rpcdce.h ») il a des fonctions pour générer UUID.
J'ai effectivement calculé la probabilité de collision et il est dans la gamme ov 10^-33, donc je suppose que je peux ignorer les ID en double. Merci pour votre réponse, il clarifié beaucoup. – drahnr
Je recommande fortement this bibliothèque, c'est un candidat boost - nous l'utilisons dans un de nos projets et ça marche très bien. Le lien est à v13. Cette version + d'autres versions peuvent être situées à www.boostpro.com
Exemple:
#include <string>
#include <iostream>
#include <UUID/boost/uuid/uuid.hpp>
using namespace std;
/*! returns a filename which is a uuid + .dat*/
std::string generate_filename()
{
boost::uuids::uuid_generator gen;
boost::uuids::uuid u = gen();
return u.to_string()+ ".dat";
}
void main()
{
for(int i = 0; i < 10; i++)
cout << generate_filename() << endl;
}
Si c'est ce que vous cherchez, s'il vous plaît marquer ce message comme une réponse :)
edit - a ajouté un exemple – Maciek
Cela génère des UUID v4 basés sur des aléas, ce qui n'est pas mieux que 'QUuid :: createUuid()'. –
Donc, ce n'est pas une solution, les Uuids basés au hasard ne sont pas une option. Les objets auxquels j'attribue les UUID sont créés et tués * très * fréquemment, mais il y a un maximum d'objets N qui ont un UUID défini à la fois. Merci pour votre réponse. – drahnr
- 1. Fonctions réutilisables JQuery
- 2. Gestion des composants réutilisables
- 3. Réutilisables code/classe Repositories
- 4. Asp.Net Mvc 2 pièces réutilisables?
- 5. Annotations ou annotations communément réutilisables?
- 6. Vues d'en-tête TableView réutilisables
- 7. Création d'assemblys UserControl réutilisables avec VS2008
- 8. Hibernate ID Generator
- 9. NHibernate bug générateur sql
- 10. Générateur html python
- 11. Technique correcte pour écrire des objets d'interface réutilisables?
- 12. Recherche d'un générateur de "générateur de diagramme" personnalisable
- 13. Générateur AWGN pour .NET
- 14. Bogue générateur d'image GD
- 15. Générateur de template Javadoc
- 16. Générateur de code Cairngorm
- 17. Générateur de document RTF
- 18. Générateur d'analyseur pour Delphi?
- 19. Générateur de code XSD
- 20. Générateur de test NUnit
- 21. Problème du générateur de séquence Oracle hibernate
- 22. Le générateur NHibernate HiLo ID effectue un aller-retour vers la base de données par ligne insérée
- 23. Besoin générateur de trafic IPv6
- 24. Eclipse POJO générateur plug-in
- 25. Windows Forms - Générateur de rapports
- 26. Générateur d'installateur écrit en Java?
- 27. Générateur de nombres aléatoires Crappy
- 28. Extjs SetEditor - Générateur de requêtes
- 29. Générateur de noms pour .NET
- 30. Générateur Free/OpenSource .NET Diff?
Vous voulez élaborer ce dont vous avez besoin exactement ici? Je ne comprends pas au moins la moitié de ce que vous dites. Notez également que les GUID * sont en fait utilisés dans les environnements de production, même s'il y a une chance qu'ils puissent entrer en collision. – Joey
Pour le mettre en perspective: même si un serveur n'a fait que générer des UUID pendant toute sa durée de vie, le plus grand risque est qu'il soit effacé par un météore. – MSalters
Eh bien, merci pour votre temps. Est-ce même donné avec/dev/random sous unix. J'ai lu de nombreux articles qui n'étaient pas aussi aléatoires que ce qu'ils étaient censés être, et quuid, que j'ai d'abord essayé d'utiliser, utilise celui-là (pour autant que je sache). Merci pour votre réponse. – drahnr