Які є найкращі способи створення GUID на Java?
Які є найкращі способи створення GUID на Java?
Відповіді:
Погляньте на клас UUID, що постачається з Java 5 та пізнішими версіями.
Наприклад:
java.util.UUID.randomUUID();
UUID.randomUUID
методом теоретично можливо повернути дублікат, але це зовсім не є реальною проблемою . В реалізації Oracle / OpenJDK використовується криптографічно сильний генератор випадкових чисел. Враховуючи це, і враховуючи астрономічний діапазон, що задається стільки бітами в UUID, ви можете генерувати багато мільйонів таких значень у вашій програмі і все ще спати добре. Використання одного з інших варіантів додатково зменшує можливість зіткнень ще ближче до нуля через використання "простору та часу", [1] MAC-адреси чи імені та [2] поточного дати-часу як обмеження.
while
поки ви не отримаєте той, який не знаходиться у вашому списку: p
Це залежить від того, який тип UUID ви хочете.
Стандартний UUID
клас Java генерує UUID версії 4 (випадкові). ( ОНОВЛЕННЯ - Версія 3 (ім'я) UUID можуть також генеруватися.) Він також може обробляти інші варіанти, хоча не може їх генерувати. (В цьому випадку, «ручка» кошти конструкту UUID
екземпляри з long
, byte[]
або String
уявлення, і пропонують деякі відповідні аксессор.)
Реалізація Java UUID Generator (JUG) передбачає підтримку "всіх 3" офіційних "типів UUID, як визначено RFC-4122 " ... хоча RFC насправді визначає 4 типи і згадує 5 тип.
Для отримання додаткової інформації про типи та варіанти UUID, ви знайдете хороший підсумок у Вікіпедії , а деталі горі - у RFC 4122 та інших специфікаціях.
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
. для використання типу 4 public static UUID randomUUID()
. Тип 1 недоступний для класу JDK.
clockSequence()
Просто, щоб продовжити відповідь Марка Байєрса прикладом:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
Інші відповіді правильні, особливо це одна від Stephen C .
Генерування значення UUID в Java обмежується версією 4 (випадково) через проблеми безпеки.
Якщо ви хочете отримати інші версії UUID, одним із проспектів є те, щоб ваша програма Java вийшла за межі JVM для створення UUID, зателефонувавши:
uuidgen
зустрічається в Mac OS X, BSD та Linux.uuid-ossp
розширення часто поставляється в комплекті з Postgres . Це розширення може генерувати значення версій 1, 3 та 4 та додатково декілька варіацій:
uuid_generate_v1mc()
- генерує UUID версії 1, але використовує випадкову MAC-адресу багатосторонніх даних замість реальної MAC-адреси комп’ютера.uuid_generate_v5(namespace uuid, name text)
- створює UUID версії 5, яка працює як UUID версії 3, за винятком того, що SHA-1 використовується як метод хешування.