Domanda

Considerando il post che ho fatto circa la performance guid sequenziale sul quadro Microsoft.NET (vedi Quali sono il miglioramento delle prestazioni di Sequential Guid su standard di Guid? ) qualcuno ha un'implementazione adeguata, sicura, veloce e ben funzionante Java dello stesso algoritmo implementato nelle DLL di Windows?

Saluti Massimo

È stato utile?

Soluzione

Si veda questo articolo: http://www.informit.com/ articoli / article.aspx? p = 25862 & seqNum = 7 (legato alla pagina 7).

Esso contiene un algoritmo per ciò che l'autore chiama "a pettine" GUID; Riporto il suo codice (SQL) di seguito:

SET @aGuid = CAST(CAST(NEWID() AS BINARY(10)) 
+ CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER)

Trivial per convertire questo a Java, o la lingua desiderata. Il principio di base ovvio è quello di rendere la data un componente del GUID. L'intero articolo è una buona lettura, come fa una bella analisi delle prestazioni dei vari approcci.

Altri suggerimenti

Per UUID sequenziali, siete alla ricerca di una versione 1 UUID. progetto Java UUID Generator sembra funzionare abbastanza bene ed è abbastanza facile da usare:

Generators.timeBasedGenerator().generate().toString()

In questa pagina i link a un paio di versione 1 implementazioni (sequenziale) UUID in Java: http://johannburkard.de/blog/programming/java/Java -UUID-generatori-compared.html

Io lo uso per generare UUID (Universally ID univoci) per il mio DTOs che agiscono come chiavi surrogate per collezioni transitori. Non so se è la stessa cosa, ma può puntare nella giusta direzione.

import java.util.UUID;
...
    private String uuid=null;
...
    protected String getUuid() {
        synchronized (this) {
          if (null ==uuid) {
            uuid = UUID.randomUUID().toString();
          }
          return uuid;
        }
      }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top