J'ai besoin de générer un nombre unique de 32 bits en Java. J'ai besoin de renvoyer le numéro en Java int, ce qui est requis par l'interface. Pouvez-vous partager quelques idées à ce sujet?Comment obtenir un nombre unique de 32 bits en Java?
Le numéro sera utilisé en tant que PK MySQL et plusieurs threads pourraient générer leur propre identifiant unique en même temps. (Désolé, il est décidé de ne pas utiliser l'identifiant incrémental MySQL)
J'ai essayé la classe UUID mais il semble que les données qu'elle génère ont plus de bits que je ne peux en utiliser.
Je trouve cela, mais pas sûr que cela fonctionne:
// seems no way to get int
UUID id = UUID.randomUUID();
System.out.println(id);
// not working either?
java.rmi.server.UID uid = new java.rmi.server.UID();
System.out.println(uid.toString());
// the one i am using
SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
prng.setSeed(System.currentTimeMillis());
int ret = prng.nextInt();
System.out.println(ret);
duplication possible de [générer UUID mais seulement pour 8 caractères] (http://stackoverflow.com/questions/4267475/generating-uuid-but-only-for-8-characters) –
Le type MySQL 'bigint' est 64 bits et aurait moins de chance de collision. Ce serait mieux si vous pouvez changer le schéma de la base de données. –