CodeGym/Java Blog/अनियमित/जावा क्रमांकन प्रारूप
John Squirrels
स्तर 41
San Francisco

जावा क्रमांकन प्रारूप

अनियमित ग्रुप में प्रकाशित
सदस्य
नमस्ते! आइए क्रमबद्धता के बारे में बात करते हैं। आपको शायद याद होगा कि क्रमांकन पर हमारे पास पहले से ही पाठ हैं। और इसलिए हमने किया :) यहाँ पहला है और यहाँ दूसरा है. यदि आपको अच्छी तरह से याद नहीं है कि क्रमांकन कैसे काम करता है, क्रमांकन की आवश्यकता क्यों है, और क्रमांकन के लिए जावा में कौन से उपकरण हैं, तो आप इन पाठों को पढ़ सकते हैं। आज का पाठ सिद्धांत के बारे में होगा। हम क्रमांकन प्रारूपों पर करीब से नज़र डालने जा रहे हैं। सबसे पहले, आइए याद करें कि क्रमांकन क्या है। क्रमांकन बाइट्स के अनुक्रम में किसी वस्तु की स्थिति को संग्रहीत करने की प्रक्रिया है। Deserialization इन बाइट्स से किसी ऑब्जेक्ट को पुनर्स्थापित करने की प्रक्रिया है। जावा ऑब्जेक्ट को क्रमबद्ध किया जा सकता है और एक नेटवर्क पर भेजा जा सकता है (उदाहरण के लिए, दूसरे कंप्यूटर पर)। बाइट्स के अनुक्रम को विभिन्न स्वरूपों में दर्शाया जा सकता है। आप सामान्य कंप्यूटर उपयोग से इस अवधारणा से परिचित हैं। उदाहरण के लिए, एक इलेक्ट्रॉनिक पुस्तक (या एक साधारण पाठ दस्तावेज़) विभिन्न स्वरूपों के एक समूह में लिखी जा सकती है:
  • docx (माइक्रोसॉफ्ट वर्ड प्रारूप);
  • पीडीएफ (एडोब प्रारूप);
  • मोबी (आमतौर पर अमेज़ॅन किंडल उपकरणों पर उपयोग किया जाता है);
  • और भी बहुत कुछ (ePub, djvu, fb2, आदि)।
प्रत्येक मामले में, उद्देश्य समान प्रतीत होता है: पाठ को मानव-पठनीय रूप में प्रस्तुत करें। फिर भी, लोगों ने बहुत सारे अलग-अलग स्वरूपों का आविष्कार किया है। उनके काम के ब्योरे में जाए बिना हम यह मान सकते हैं कि उनके पास अच्छे कारण थे। बाकी की तुलना में प्रत्येक प्रारूप के अपने फायदे और नुकसान हैं। हो सकता है कि इन्हीं सिद्धांतों का पालन करते हुए विभिन्न क्रमांकन प्रारूप बनाए गए हों? बहुत बढ़िया अनुमान, छात्र! :) यह बिल्कुल सही है। वास्तविकता यह है कि एक तार (या वायरलेस तरीके से) पर डेटा भेजना मुश्किल काम है, और इसमें कई कारक शामिल हैं। डेटा कौन भेज रहा है? जहां? क्या मात्रा? क्या प्राप्तकर्ता एक मानव या एक कंप्यूटर होगा (यानी डेटा मानव-पठनीय होना चाहिए)? कौन सा डिवाइस डेटा पढ़ेगा? जाहिर है, ये स्थितियां अलग हैं। एक स्मार्टफोन से दूसरे स्मार्टफोन में 500 KB की इमेज भेजना एक बात है। और यह एक पूरी तरह से अलग बात है अगर हम 500 टेराबाइट्स के व्यावसायिक डेटा के बारे में बात कर रहे हैं जिसे इष्टतम रूप से संपीड़ित किया जाना चाहिए और जितनी जल्दी हो सके भेजा जाना चाहिए। आइए मुख्य क्रमांकन प्रारूपों से परिचित हों और उनमें से प्रत्येक के फायदे और नुकसान पर विचार करें!

JSON

जावास्क्रिप्ट ऑब्जेक्ट नोटेशन। आप इस प्रारूप के बारे में पहले से ही कुछ जानते हैं! हमने इस पाठ में इसके बारे में बात की थी , और हमने यहीं JSON में क्रमांकन को कवर किया । इसे एक कारण के लिए इसका नाम मिला। जेएसओएन में परिवर्तित जावा ऑब्जेक्ट वास्तव में जावास्क्रिप्ट में ऑब्जेक्ट्स की तरह दिखते हैं। हमारी वस्तु को समझने के लिए आपको जावास्क्रिप्ट जानने की आवश्यकता नहीं है:
{
   "title": "War and Peace",
   "author": "Lev Tolstoy",
   "year": 1869
}
हम केवल एक ही वस्तु भेजने तक सीमित नहीं हैं। JSON प्रारूप वस्तुओं की एक सरणी का भी प्रतिनिधित्व कर सकता है:
[
 {
   "title": "War and Peace",
   "author": "Lev Tolstoy",
   "year": 1869
 },

 {
   "title": "Demons",
   "author": "Fyodor Dostoyevsky",
   "year": 1872
 },

 {
   "title": "The Seagull",
   "author": "Anton Chekhov",
   "year": 1896
 }
]
क्योंकि JSON JavaScript ऑब्जेक्ट का प्रतिनिधित्व करता है, यह निम्न JavaScript डेटा स्वरूपों का समर्थन करता है:
  • तार;
  • संख्या;
  • वस्तुएं;
  • सरणियाँ;
  • बूलियन्स (सच्चा और झूठा);
  • व्यर्थ।
JSON के क्या फायदे हैं?
  1. मानव-पठनीय प्रारूप। यदि आपका अंतिम उपयोगकर्ता मानव है तो यह एक स्पष्ट लाभ है। उदाहरण के लिए, मान लें कि आपके सर्वर में फ़्लाइट शेड्यूल वाला एक डेटाबेस है। एक मानव ग्राहक, घर पर अपने कंप्यूटर पर बैठा हुआ, वेब एप्लिकेशन का उपयोग करके इस डेटाबेस से डेटा का अनुरोध करता है। क्योंकि आपको डेटा को उस प्रारूप में प्रदान करने की आवश्यकता है जिसे वह समझ सके, JSON एक अच्छा समाधान है।

  2. सादगी। यह बहुत आसान है :) ऊपर, हमने दो JSON फ़ाइलों का एक उदाहरण दिया। और यहां तक ​​कि अगर आपने जावास्क्रिप्ट के बारे में नहीं सुना है (जावास्क्रिप्ट वस्तुओं को छोड़ दें), तो आप वहां वर्णित वस्तुओं के प्रकार को आसानी से समझ सकते हैं।
    संपूर्ण JSON दस्तावेज़ीकरण में कुछ चित्रों के साथ एक वेबपृष्ठ होता है।

  3. व्यापक उपयोग। जावास्क्रिप्ट प्रमुख फ्रंट-एंड भाषा है, और इसकी अपनी आवश्यकताएं हैं। JSON का उपयोग करना जरूरी है। इसलिए, बड़ी संख्या में वेब सेवाएँ डेटा विनिमय प्रारूप के रूप में JSON का उपयोग करती हैं। प्रत्येक आधुनिक IDE JSON प्रारूप (IntelliJ IDEA सहित) का समर्थन करता है। जेएसओएन के साथ काम करने में सक्षम बनाने के लिए सभी प्रकार की प्रोग्रामिंग भाषाओं के लिए पुस्तकालयों का एक समूह लिखा गया है।

उदाहरण के लिए, आप पहले से ही जैक्सन लाइब्रेरी के साथ एक पाठ में काम कर चुके हैं जहाँ हमने जावा ऑब्जेक्ट्स को JSON में क्रमबद्ध करना सीखा है। लेकिन जैक्सन के अलावा, हमारे पास, उदाहरण के लिए, GSON है , जो कि Google की एक बहुत ही सुविधाजनक लाइब्रेरी है।

वाईएएमएल

प्रारंभ में, YAML "येट अदर मार्कअप लैंग्वेज" के लिए खड़ा था। जब यह शुरू हुआ, तो इसे XML के प्रतियोगी के रूप में स्थापित किया गया था। अब, समय बीतने के साथ, YAML का अर्थ "YAML Ain't Markup Language" हो गया है। हकीकत में यह क्या है? आइए कल्पना करें कि कंप्यूटर गेम में पात्रों का प्रतिनिधित्व करने के लिए हमें 3 वर्ग बनाने की आवश्यकता है: योद्धा, दाना और चोर। उनके पास निम्नलिखित विशेषताएं होंगी: ताकत, चपलता, सहनशक्ति, हथियारों का एक सेट। हमारी कक्षाओं का वर्णन करने वाली YAML फ़ाइल इस तरह दिखेगी:
classes:
 class-1:
   title: Warrior
   power: 8
   agility: 4
   stamina: 7
   weapons:
     - sword
     - spear

 class-2:
   title: Mage
   power: 5
   agility: 7
   stamina: 5
   weapons:
     - magic staff

 class-3:
   title: Thief
   power: 6
   agility: 6
   stamina: 5
   weapons:
     - dagger
     - poison
एक YAML फ़ाइल में एक वृक्ष संरचना होती है: कुछ तत्व दूसरों में नेस्टेड होते हैं। हम एक निश्चित संख्या में रिक्त स्थान का उपयोग करके नेस्टिंग को नियंत्रित कर सकते हैं, जिसका उपयोग हम प्रत्येक स्तर को दर्शाने के लिए करते हैं। YAML प्रारूप के क्या लाभ हैं?
  1. पठनीय मानव। फिर से, बिना किसी विवरण के एक YAML फ़ाइल को देखकर भी, आप उन वस्तुओं को आसानी से समझ सकते हैं जिनका वह वर्णन करता है। YAML इतना पठनीय है कि वेबसाइट yaml.org एक सामान्य YAML फ़ाइल है :)

  2. सघनता। फ़ाइल संरचना रिक्त स्थान का उपयोग करके बनाई गई है: कोष्ठक या उद्धरण चिह्नों का उपयोग करने की कोई आवश्यकता नहीं है।

  3. प्रोग्रामिंग भाषाओं के लिए देशी डेटा संरचनाओं के लिए समर्थन। JSON और कई अन्य स्वरूपों पर YAML का बड़ा लाभ यह है कि यह विभिन्न डेटा संरचनाओं का समर्थन करता है। वे सम्मिलित करते हैं:

    • !! मैप
      कुंजी-मूल्य जोड़े का एक अनियंत्रित सेट जिसमें डुप्लीकेट नहीं हो सकते हैं;

    • !!omap
      कुंजी-मूल्य जोड़े का एक क्रमित क्रम जिसमें डुप्लिकेट नहीं हो सकते;

    • !! जोड़े:
      कुंजी-मूल्य जोड़े का एक क्रमबद्ध क्रम जिसमें डुप्लिकेट हो सकते हैं;

    • !!सेट
      मानों का एक अनियंत्रित अनुक्रम जो एक दूसरे के बराबर नहीं हैं;

    • !!seq
      मनमाना मूल्यों का एक क्रम;

    आप इनमें से कुछ संरचनाओं को जावा से पहचान लेंगे! :) इसका मतलब है कि प्रोग्रामिंग भाषाओं से विभिन्न डेटा संरचनाओं को YAML में क्रमबद्ध किया जा सकता है।

  4. एंकर और उपनाम का उपयोग करने की क्षमता

    ये मार्कर आपको एक YAML फ़ाइल में कुछ तत्व की पहचान करने की अनुमति देते हैं, और यदि यह बार-बार होता है तो इसे शेष फ़ाइल में संदर्भित करें। प्रतीक & का उपयोग करके एक एंकर बनाया जाता है , और * का उपयोग करके एक उपनाम बनाया जाता है ।

    मान लीजिए हमारे पास लियो टॉल्स्टॉय की पुस्तकों का वर्णन करने वाली एक फ़ाइल है। प्रत्येक पुस्तक के लिए लेखक का नाम लिखने से बचने के लिए, हम बस लियो एंकर बनाते हैं और जरूरत पड़ने पर एक उपनाम का उपयोग करके इसका उल्लेख करते हैं:

    books:
     book-1:
       title: War and Peace
       author: &leo Leo Tolstoy
       year: 1869
    
     book-2:
       title: Anna Karenina
       author: *leo
       year: 1873
    
     book-3:
       title: Family Happiness
       author: *leo
       year: 1859

    जब इस फ़ाइल को पार्स किया जाता है, तो मान "लियो टॉल्स्टॉय" को उन सही जगहों पर प्रतिस्थापित किया जाता है जहाँ हमारे उपनाम होते हैं।

  5. YAML डेटा को अन्य स्वरूपों में एम्बेड कर सकता है। उदाहरण के लिए, जेएसओएन:

    books: [
            {
              "title": "War and Peace",
              "author": "Leo Tolstoy",
              "year": 1869
            },
    
            {
              "title": "Anna Karenina",
              "author": "Leo Tolstoy",
              "year": 1873
            },
    
            {
              "title": "Family Happiness",
              "author": "Leo Tolstoy",
              "year": 1859
            }
          ]

अन्य क्रमांकन प्रारूप

एक्सएमएल

यह प्रारूप एक टैग ट्री पर आधारित है।
<book>
   <title>Harry Potter and the Philosopher’s Stone</title>
   <author>J. K. Rowling</author>
   <year>1997</year>
</book>
प्रत्येक तत्व में एक उद्घाटन और समापन टैग (<> और </>) होता है। प्रत्येक तत्व में नेस्टेड तत्व हो सकते हैं। XML एक सामान्य प्रारूप है जो JSON और YAML जितना ही अच्छा है (यदि हम वास्तविक परियोजनाओं के बारे में बात कर रहे हैं)। हमारे पास XML के बारे में एक अलग पाठ है ।

बीएसओएन (बाइनरी जेएसओएन)

जैसा कि इसके नाम का तात्पर्य है, बीएसओएन जेएसओएन के समान ही है, लेकिन यह मानव-पठनीय नहीं है और बाइनरी डेटा का उपयोग करता है। नतीजतन, छवियों और अन्य अनुलग्नकों को संग्रहित और स्थानांतरित करने के लिए यह बहुत अच्छा है। इसके अलावा, BSON कुछ ऐसे डेटा प्रकारों का समर्थन करता है जो JSON में उपलब्ध नहीं हैं। उदाहरण के लिए, एक बीएसओएन फ़ाइल में दिनांक (मिलीसेकंड प्रारूप में) या जावास्क्रिप्ट कोड का एक टुकड़ा भी शामिल हो सकता है। लोकप्रिय MongoDB NoSQL डेटाबेस BSON प्रारूप में जानकारी संग्रहीत करता है।

स्थिति-आधारित प्रोटोकॉल

कुछ स्थितियों में, हमें भेजे गए डेटा की मात्रा को बहुत कम करने की आवश्यकता होती है (उदाहरण के लिए, यदि हमारे पास बहुत अधिक डेटा है और लोड को कम करने की आवश्यकता है)। इस स्थिति में, हम स्थिति-आधारित प्रोटोकॉल का उपयोग कर सकते हैं, अर्थात पैरामीटर मान को स्वयं पैरामीटर के नाम के बिना भेजें।
"Leo Tolstoy" | "Anna Karenina" | 1873
इस प्रारूप में डेटा पूर्ण JSON फ़ाइल की तुलना में कई गुना कम स्थान लेता है। बेशक, अन्य क्रमांकन प्रारूप हैं, लेकिन आपको अभी उन सभी को जानने की आवश्यकता नहीं है :) यह अच्छा है यदि आप अनुप्रयोगों को विकसित करते समय वर्तमान उद्योग मानक प्रारूपों से परिचित हैं, और उनके फायदे याद रखें और वे एक से कैसे भिन्न हैं एक और। और इसके साथ, हमारा पाठ समाप्त हो जाता है :) आज कुछ कार्यों को हल करना न भूलें! अगली बार तक! :)
टिप्पणियां
  • लोकप्रिय
  • नया
  • पुराना
टिप्पणी लिखने के लिए आपको साइन इन करना होगा
इस पेज पर अभी तक कोई टिप्पणियां नहीं हैं