जावा में GUID बनाने के कुछ सबसे अच्छे तरीके क्या हैं?
जावा में GUID बनाने के कुछ सबसे अच्छे तरीके क्या हैं?
जवाबों:
जावा 5 और बाद में बंडल किए गए यूयूआईडी वर्ग पर एक नजर डालें ।
उदाहरण के लिए:
java.util.UUID.randomUUID();
UUID.randomUUID
से एक डुप्लिकेट को वापस करने के लिए संभव है , लेकिन यह बिल्कुल भी यथार्थवादी चिंता नहीं है । Oracle / OpenJDK कार्यान्वयन एक क्रिप्टोग्राफिक रूप से मजबूत यादृच्छिक संख्या जनरेटर का उपयोग करता है। यह देखते हुए, और एक यूयूआईडी में इतने सारे बिट्स द्वारा दी गई खगोलीय सीमा को देखते हुए , आप अपने ऐप में ऐसे कई लाखों मूल्य उत्पन्न कर सकते हैं और फिर भी अच्छी तरह से सो सकते हैं। अन्य वेरिएंट में से एक का उपयोग "अंतरिक्ष और समय", [1] मैक पते या नाम, और [2] वर्तमान तिथि-समय, बाधाओं के रूप में उपयोग करने के कारण टकराव की संभावना को शून्य के करीब भी कम करता है।
while
तब तक नए उत्पन्न करते हैं जब तक कि आपको एक ऐसा न मिल जाए जो आपकी सूची के अंदर नहीं है: p
यह निर्भर करता है कि आप किस तरह का यूयूआईडी चाहते हैं।
मानक जावा UUID
वर्ग संस्करण 4 (यादृच्छिक) UUIDs उत्पन्न करता है । ( अद्यतन - संस्करण 3 (नाम) यूयूआईडी भी उत्पन्न किया जा सकता है।) यह अन्य वेरिएंट को भी संभाल सकता है, हालांकि यह उन्हें नुकसान नहीं पहुंचा सकता है। (इस मामले में, "संभाल" का अर्थ UUID
है long
, byte[]
या String
प्रतिनिधित्व से उदाहरणों का निर्माण करना , और कुछ उपयुक्त एक्सेसर्स प्रदान करना।)
जावा UUID जेनरेटर (सुराही) "के रूप में द्वारा परिभाषित सभी 3 'सरकारी' UUID के प्रकार कार्यान्वयन अभिप्राय समर्थन करने के लिए RFC-4122 " ... हालांकि आरएफसी वास्तव में 4 प्रकार परिभाषित करता है और एक 5 वीं प्रकार का उल्लेख है।
UUID प्रकारों और प्रकारों के बारे में अधिक जानकारी के लिए, विकिपीडिया में एक अच्छा सारांश है , और gory विवरण RFC 4122 और अन्य विशिष्टताओं में हैं।
UUID.nameUUIDFromBytes(byte[] name)
public static UUID nameUUIDFromBytes(byte[] name)
। टाइप 4 उपयोग के लिए public static UUID randomUUID()
। JDK वर्ग के साथ टाइप 1 उपलब्ध नहीं है।
clockSequence()
बस एक उदाहरण के साथ मार्क बायर्स के जवाब का विस्तार करने के लिए:
import java.util.UUID;
public class RandomStringUUID {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID=" + uuid.toString() );
}
}
अन्य उत्तर सही हैं, खासकर स्टीफन सी द्वारा यह एक ।
जावा के भीतर एक यूयूआईडी मूल्य उत्पन्न करना सुरक्षा चिंताओं के कारण संस्करण 4 (यादृच्छिक) तक सीमित है ।
यदि आप यूयूआईडी के अन्य संस्करण चाहते हैं, तो एक एवेन्यू आपके जावा ऐप को जेवीएम के बाहर पहुंचकर कॉल करने के लिए यूयूआईडी बनाने के लिए है:
uuidgen
मैक ओएस एक्स, बीएसडी और लिनक्स में पाया जाता है।uuid-ossp
uuid_generate_v1mc()
- एक संस्करण 1 यूयूआईडी बनाता है लेकिन कंप्यूटर के वास्तविक मैक पते के बजाय एक यादृच्छिक मल्टीकास्ट मैक पते का उपयोग करता है।uuid_generate_v5(namespace uuid, name text)
- एक संस्करण 5 UUID बनाता है, जो संस्करण 3 UUID की तरह काम करता है सिवाय इसके कि SHA-1 का उपयोग हैशिंग विधि के रूप में किया जाता है।