Коллеги,
возникла необходимость генерить UUIDs. Часто, много, и на разных машинах.
UUID.randomUUID(
http://java.sun.com/j2se/1.5.0/docs/api/java/util/UU...) вроде бы подходит, вероятность генерации двух идентичных UIDs, приведенная на Wiki устраивает.(
http://en.wikipedia.org/wiki/UUID) Но формирует он 128 битное значение, а очень хочется иметь в качестве ID лонг.
Теперь вопрос первый: Если взять long UUID.randomUUID.getMostSignificantBits()(64bit) — насколько это скажется на вероятности генерации двух "близнецов"? Возможно поможет XOR двух половинок?
Вопрос второй: собственно какие есть иные java-решения проблемы, выслушаю с удовольствием. Желательно не трогая стд последовательности БД и Open Source решения.
Заранее спасибо.
Здравствуйте, AL-Udalec, Вы писали:
AU>возникла необходимость генерить UUIDs. Часто, много, и на разных машинах.
AU>Но формирует он 128 битное значение, а очень хочется иметь в качестве ID лонг.
Десять раз подумай.
Лучше сделай нормальный UUID, и если действительно упрёшся потерю производительности или памяти — тогда думай про long.
AU>Вопрос второй: собственно какие есть иные java-решения проблемы, выслушаю с удовольствием. Желательно не трогая стд последовательности БД и Open Source решения.
Этот генератор, по моему, лучше — по крайней мере поддерживает больше вариантов генерации UUID и он open-source
http://jug.safehaus.org/
Вот ещё сравнение разных генераторов
http://johannburkard.de/blog/programming/java/Java-UUID-generators-compared.html