मैं एक वर्ग बना रहा हूं जो एक वस्तु लेता है और उसे एक आईडी नंबर प्रदान करता है जो अद्वितीय है। यह कुछ खास नहीं है, यह ऑब्जेक्ट लेता है, इसे एक नंबर असाइन करता है, और फिर अगले ऑब्जेक्ट के लिए आईडी काउंटर को बढ़ाता है जो एक आईडी नंबर प्राप्त करेगा।

मैं सदस्य को यूयूआईडी, या GUID, यूनिवर्सली यूनिक आइडेंटिफायर, या ग्लोबली यूनिक आइडेंटिफायर के लिए कॉल करना चाहता हूं, क्योंकि यह भाषा बहुत स्पष्ट है कि सदस्य क्या है।

हालाँकि मैंने इस शब्द को देखा और विकिपीडिया कहता है:

एक सार्वभौमिक रूप से विशिष्ट पहचानकर्ता (यूयूआईडी) एक 128-बिट संख्या है जिसका उपयोग किया जाता है कंप्यूटर सिस्टम में जानकारी की पहचान करें। UUID

जो मुझे लगता है कि शब्दों का एक बहुत ही विशिष्ट अर्थ है, और संभवतः इसका उपयोग केवल प्रत्येक वस्तु को दी गई एक अद्वितीय संख्या के लिए उचित उपयोग नहीं है। मैं 32-बिट int या इसी तरह का उपयोग करने के बारे में सोच रहा हूं।

क्या यह UUID या GUID का गलत उपयोग है? मुझे नहीं लगता कि यह मायने रखता है, लेकिन मैं सी ++ में लिख रहा हूं।

1
Zebrafish 13 अगस्त 2018, 07:12

2 जवाब

हां, मुझे लगता है कि यह उन शर्तों का दुरुपयोग होगा। यूयूआईडी में सार्वभौमिक रूप से या GUID में वैश्विक रूप से का अर्थ है कि पहचानकर्ता न केवल आपके विशिष्ट सिस्टम के भीतर अद्वितीय है, बल्कि किसी के लिए विकसित किसी भी सिस्टम के भीतर है उद्देश्य, कहीं भी। एक 32-बिट पूर्णांक जिसे आप प्रत्येक नई इकाई के लिए आसानी से बढ़ाते हैं, उसमें वह गुण नहीं होता है। यह आपके सिस्टम के भीतर अद्वितीय हो सकता है, लेकिन सार्वभौमिक रूप से नहीं। मैं इसे केवल Identifier या ऐसा ही कुछ कहूंगा।

3
Joe Farrell 13 अगस्त 2018, 07:19
जब आप कहते हैं 'किसी भी उद्देश्य के लिए कहीं भी विकसित किसी भी प्रणाली के भीतर', तो क्या आपका मतलब यह है कि बीजिंग अस्पताल का एक मरीज का यूयूआईडी लॉस एंजिल्स की कानूनी फर्म के क्लाइंट के यूयूआईडी से अलग होना चाहिए?
 – 
Zebrafish
13 अगस्त 2018, 07:54
सैद्धांतिक रूप से, हाँ। टकराव (यानी, एक ही यूयूआईडी उत्पन्न करने वाली दो प्रणालियां) असंभव नहीं है, लेकिन सही कार्यान्वयन को देखते हुए, अधिकांश उद्देश्यों के लिए नगण्य होने की संभावना इतनी कम है। विवरण: en.wikipedia.org/wiki/Universally_unique_identifier#Collisions
 – 
Joe Farrell
13 अगस्त 2018, 07:56

आपको अपना जवाब यहां मिलेगा। . सी ++ में आपके पास गाइड बनाने की एक विधि है:

GUID gidReference;
HRESULT hCreateGuid = CoCreateGuid( &gidReference );

इसका क्या अर्थ है:

CoCreateGuid फ़ंक्शन RPC फ़ंक्शन को UuidCreate कॉल करता है। ए>, जो एक GUID बनाता है, जो विश्व स्तर पर अद्वितीय 128-बिट पूर्णांक है। CoCreateGuid का प्रयोग करें जब आपको एक बिल्कुल अद्वितीय संख्या की आवश्यकता होगी जिसे आप a . के रूप में उपयोग करेंगे एक वितरित वातावरण में लगातार पहचानकर्ता। बहुत अधिक निश्चितता की डिग्री, यह फ़ंक्शन एक अद्वितीय मान देता है - कोई अन्य नहीं आमंत्रण, उसी या किसी अन्य सिस्टम (नेटवर्क या नहीं) पर, चाहिए समान मान लौटाएं।

और जब हम गोता लगाते हैं तो हम देखते हैं:

सुरक्षा कारणों से, किसी कंपनी या संगठन के बाहर उपलब्ध होने से नेटवर्क पर ईथरनेट पते रखना अक्सर वांछनीय होता है। UuidCreate फ़ंक्शन एक UUID उत्पन्न करता है जिसे उस कंप्यूटर के ईथरनेट पते पर नहीं खोजा जा सकता है जिस पर इसे उत्पन्न किया गया था। इसे उसी कंप्यूटर पर बनाए गए अन्य यूयूआईडी के साथ भी नहीं जोड़ा जा सकता है। यदि आपको इस स्तर की सुरक्षा की आवश्यकता नहीं है, तो आपका एप्लिकेशन UuidCreateSequential फ़ंक्शन का उपयोग कर सकता है, जो ठीक वैसे ही व्यवहार करता है जैसे UuidCreate फ़ंक्शन ऑपरेटिंग सिस्टम के अन्य सभी संस्करणों पर करता है।

मैं इसे महत्वपूर्ण रूप से कम करता हूं इसलिए आपको न केवल यह पता चलेगा कि आपने इसका दुरुपयोग किया है, बल्कि यह भी कि आपको पता चल जाएगा कि क्यों, क्योंकि भविष्य के दिनों में यह जानकारी आपके लिए महत्वपूर्ण हो सकती है।

1
Joe Farrell 13 अगस्त 2018, 07:45