JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ سيريلائيزيشن فارميٽ

جاوا ۾ سيريلائيزيشن فارميٽ

گروپ ۾ شايع ٿيل
سلام! اچو ته جاوا ۾ سيريلائيزيشن بابت ڳالهايون. توهان کي شايد ياد هوندو ته اسان اڳ ۾ ئي سيريلائيزيشن تي ليڪچر ڏنا هئا. اھو صحيح آھي :) ھتي آھي پھريون ۽ ھتي ٻيو آھي جيڪڏھن توھان کي چڱيءَ طرح ياد نه آھي ته سيريلائيزيشن ڪيئن ڪم ڪري ٿي، ان جي ضرورت ڇو آھي، ۽ جاوا ۾ ان لاءِ ڪھڙا اوزار آھن، توھان انھن ليڪچرن مان اسڪيم ڪري سگھو ٿا. اڄ جو ليڪچر نظرياتي هوندو، ۽ ان ۾ اسين سيريلائيزيشن فارميٽ تي ويجھي نظر وجهنداسين. جاوا ۾ سيريلائيزيشن فارميٽ - 1پهرين، اچو ته ياد رکون ته سيريلائيزيشن ڇا آهي. سيريلائيزيشن هڪ اعتراض جي حالت کي بائيٽ جي ترتيب ۾ محفوظ ڪرڻ جو عمل آهي. Deserialization انهن بائيٽس مان ڪنهن شئي کي ٻيهر ٺاهڻ جو عمل آهي. هڪ جاوا اعتراض سيريل ڪري سگهجي ٿو ۽ نيٽ ورڪ تي منتقل ڪري سگهجي ٿو (مثال طور، ٻئي ڪمپيوٽر ڏانهن). تنهن ڪري، بائيٽ جو اهو ساڳيو سلسلو مختلف شڪلن ۾ نمائندگي ڪري سگهجي ٿو. توهان ان سان واقف آهيو روزمره جي ڪمپيوٽر جي استعمال کان. مثال طور، اي ڪتاب (يا سادو ٽيڪسٽ ڊاڪيومينٽ) جيڪو توهان پڙهي رهيا آهيو مختلف فارميٽ ۾ لکي سگهجي ٿو:
  • docx (Microsoft Word فارميٽ)؛
  • pdf (Adobe فارميٽ)؛
  • mobi (عام طور تي Amazon Kindle ڊوائيسز ۾ استعمال ٿيل)؛
  • ۽ گهڻو ڪجهه (ePub, djvu, fb2...).
اهو لڳي ٿو ته ڪم ساڳيو آهي: متن کي انساني پڙهڻ جي قابل فارم ۾ پيش ڪرڻ. پر ماڻهن هڪ مڪمل نمونو ايجاد ڪيو آهي. جيتوڻيڪ انهن جي ڪم جي تفصيل ۾ وڃڻ کان سواء، اسان اهو فرض ڪري سگهون ٿا ته اهو هڪ سبب لاء ڪيو ويو آهي. انهن مان هر هڪ شايد ٻين جي مقابلي ۾ پنهنجا فائدا ۽ نقصان آهن. ٿي سگهي ٿو سيريلائيزيشن فارميٽ ساڳي اصول جي مطابق ٺاهيا ويا؟ چڱو، سٺو اندازو، شاگرد! :) اهو طريقو آهي. حقيقت اها آهي ته هڪ فاصلي تي ڊيٽا منتقل ڪرڻ هڪ بلڪه نازڪ شيء آهي، ۽ ان ۾ ڪيترائي عنصر آهن. ڪير ڊيٽا کي منتقل ڪري ٿو؟ ڪٿي؟ ڪهڙو حجم؟ ڇا وصول ڪندڙ پارٽي هڪ شخص يا مشين هوندي (يعني ڊيٽا کي انساني پڙهڻ جي قابل هجڻ گهرجي)؟ ڪهڙي قسم جو ڊوائيس ڊيٽا پڙهي سگهندو؟ ظاهر آهي، حالتون مختلف آهن. اهو هڪ شيء آهي جڏهن توهان کي هڪ 500KB تصوير هڪ اسمارٽ فون کان ٻئي ڏانهن منتقل ڪرڻ جي ضرورت آهي. ۽ اهو مڪمل طور تي مختلف آهي جڏهن اسان 500 ٽيرا بائيٽ جي ڪاروباري ڊيٽا جي باري ۾ ڳالهائي رهيا آهيون جنهن کي ممڪن طور تي موثر طريقي سان دٻائڻ جي ضرورت آهي ۽ ساڳئي وقت جيترو جلدي ممڪن ٿي سگهي منتقل ڪيو وڃي. اچو ته مکيه سيريلائيزيشن فارميٽ تي هڪ نظر رکون ۽ هر هڪ جي فائدن ۽ نقصانن کي ڏسو!

JSON

JavaScript آبجیکٹ نوٽيشن. توهان اڳ ۾ ئي هن سان ٿورو واقف آهيو! اسان ان بابت هن ليڪچر ۾ ڳالهايو ، ۽ اسان هتي JSON ۾ سيريلائيزيشن کي ڏٺو . اهو هڪ سبب لاء ان جو نالو مليو. جاوا شيون JSON ۾ تبديل ٿيل اصل ۾ بلڪل جاوا اسڪرپٽ شيون وانگر نظر اچن ٿيون. اسان جي اعتراض جي معني کي سمجهڻ لاء توهان کي جاوا اسڪرپٽ ڄاڻڻ جي ضرورت ناهي:
{
   "title": "Война и мир",
   "author": "Лев Толстой",
   "year": 1869
}
اهو ضروري ناهي ته هڪ اعتراض پاس ڪيو وڃي. JSON پڻ شين جي هڪ صف تي مشتمل ٿي سگھي ٿو:
[
 {
   "title": "Война и мир",
   "author": "Лев Толстой",
   "year": 1869
 },

 {
   "title": "Бесы",
   "author": "Федор Достоевский",
   "year": 1872
 },

 {
   "title": "Чайка",
   "author": "Антон Чехов",
   "year": 1896
 }
]
جيئن ته JSON هڪ جاوا اسڪرپٽ اعتراض آهي، اهو هيٺين جاوا اسڪرپٽ ڊيٽا فارميٽ کي سپورٽ ڪري ٿو:
  • تارون
  • نمبر (نمبر)؛
  • شيون (شيون)؛
  • arrays (array)؛
  • بولين قدر (سچو ۽ غلط)؛
  • null
JSON جا ڪهڙا فائدا آهن؟
  1. انساني پڙهڻ واري شڪل. اهو هڪ واضح فائدو آهي جيڪڏهن توهان جو آخري صارف انسان آهي. مثال طور، توهان جو سرور هڪ ڊيٽابيس کي ذخيرو ڪري ٿو پرواز جي شيڊول سان. هڪ انساني ڪلائنٽ هن ڊيٽابيس مان ڊيٽا جي درخواست ڪري ٿو ويب ايپليڪيشن استعمال ڪندي جڏهن ڪمپيوٽر تي گهر ۾ ويٺي. جتان توھان کي ڊيٽا مهيا ڪرڻ جي ضرورت آھي ھڪڙي شڪل ۾ جيڪا ھو سمجھي سگھي ٿو، JSON ھڪڙو وڏو حل آھي.

  2. سادگي. توھان چئي سگھوٿا اھو ابتدائي آھي :) مٿي اسان ٻن JSON فائلن جو مثال ڏنو آھي. ۽ جيتوڻيڪ توهان ڪڏهن به جاوا اسڪرپٽ جي وجود جي باري ۾ نه ٻڌو آهي (ان جي شين کي ڇڏي ڏيو)، توهان آساني سان سمجهي سگهو ٿا ته ڪهڙي قسم جون شيون بيان ڪيون ويون آهن.
    سڄو JSON دستاويز ھڪڙو ويب پيج آھي جنھن ۾ ڪجھ تصويرن سان گڏ.

  3. وسيع. JavaScript غالب فرنٽ-اينڊ ٻولي آهي، ۽ اهو ان جي اصطلاحن کي ترتيب ڏئي ٿو. JSON استعمال ڪرڻ لازمي آھي. تنهن ڪري، ويب سروسز جو هڪ وڏو تعداد JSON کي ڊيٽا جي تبادلي لاء فارميٽ طور استعمال ڪري ٿو. هر جديد IDE JSON فارميٽ کي سپورٽ ڪري ٿو (بشمول Intellij IDEA). سڀني ممڪن پروگرامنگ ٻولين لاءِ JSON سان ڪم ڪرڻ لاءِ لائبريرين جو هڪ گروپ لکيو ويو آهي.

مثال طور، توهان اڳ ۾ ئي ليڪچر ۾ جڪسن لائبريري سان ڪم ڪيو آهي جتي اسان جاوا شين کي JSON ۾ سيريل ڪرڻ سکيو. پر جڪسن کان علاوه، مثال طور، GSON - گوگل کان هڪ تمام آسان لائبريري.

YAML

ان جي وجود جي شروعات ۾، اهو اڃا تائين هڪ ٻي مارڪ اپ ٻولي لاء بيٺو آهي - "ٻي مارڪ اپ ٻولي." ان وقت اها پوزيشن هئي ايڪس ايم ايل جي مقابلي ۾. ھاڻي، وقت گذرڻ کان پوءِ، اھو بيٺو آھي ”YAML Ain't Markup Language“ (“YAML is not a 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 فائل ۾ ھڪڙي وڻ جي جوڙجڪ آھي: ڪجھ عناصر ٻين جي اندر اندر آھن. اسان هر سطح کي ظاهر ڪرڻ لاءِ مخصوص تعداد ۾ اسپيس استعمال ڪندي nesting کي ڪنٽرول ڪري سگهون ٿا. YAML فارميٽ جا ڪهڙا فائدا آهن؟
  1. انسان پڙهڻ لائق. ٻيهر، جيتوڻيڪ توهان بغير ڪنهن تفصيل جي yaml فائل ڏسو، توهان آساني سان سمجهي سگهو ٿا ته ڪهڙيون شيون بيان ڪيون ويون آهن. YAML اهو آهي ته انسان پڙهڻ جي قابل آهي ته yaml.org جو مکيه صفحو هڪ باقاعده yaml فائل آهي :)

  2. ٺهڪندڙ. فائل جو ڍانچو خالن سان ٺھيل آھي: بریکٹ يا اقتباس استعمال ڪرڻ جي ڪا ضرورت ناھي.

  3. پروگرامنگ ٻولين جي اصلي ڊيٽا جي جوڙجڪ لاءِ سپورٽ. JSON ۽ ٻين ڪيترن ئي فارميٽ تي YAML جو هڪ وڏو فائدو اهو آهي ته اهو مختلف ڊيٽا جي جوڙجڪ کي سپورٽ ڪري ٿو. انهن مان:

    • نقشي
      جو هڪ غير ترتيب ڏنل مجموعو: قدر جوڙو جنهن ۾ نقل جو ڪو به امڪان ناهي؛

    • !!omap
      ڪي جو ترتيب ڏنل تسلسل: قدر جوڙو جن ۾ نقلن جو ڪو به امڪان ناهي؛

    • !!جوڙا:
      ڪي جو ترتيب ڏنل ترتيب: نقل جي امڪان سان گڏ قدر جوڙو؛

    • قدرن جو هڪ غير ترتيب وارو سلسلو مقرر ڪريو
      جيڪي هڪ ٻئي جي برابر نه هجن؛

    • منقول
      قدرن جو تسلسل؛

    انهن مان ڪجهه تعميرات توهان کي جاوا کان واقف هوندا! :) هن خصوصيت جي مهرباني، توهان مختلف ڊيٽا جي جوڙجڪ کي پروگرامنگ ٻولين مان YAML فارميٽ ۾ ترتيب ڏئي سگهو ٿا.

  4. لنگر ۽ عرف استعمال ڪرڻ جي صلاحيت

    لفظن جو ترجمو "لنگر" ۽ "عرف" - "لنگر" ۽ "تخلص". اصول ۾، اهو بلڪل صحيح طور تي بيان ڪري ٿو انهن شرطن جي جوهر کي YAML ۾.

    اهي توهان کي 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

    جڏهن اسان هن فائل کي ڪجهه parser سان پڙهون ٿا، اسان جي عرف جي جاءِ تي "ليو ٽالسٽائي" جي قيمت صحيح هنڌن تي بدلجي ويندي.

  5. توھان YAML ۾ ڊيٽا کي ٻين شڪلن ۾ شامل ڪري سگھو ٿا. مثال طور، JSON:

    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>
هر عنصر هڪ افتتاحي ۽ بند ڪرڻ واري ٽيگ تي مشتمل آهي (<> ۽ </>). هر عنصر کي nested عنصرن ڪري سگهو ٿا. XML ھڪڙي عام شڪل آھي، JSON ۽ YAML کان گھٽ نه آھي (جيڪڏھن اسان حقيقي منصوبن ۾ استعمال بابت ڳالهايون ٿا). اسان وٽ XML تي هڪ الڳ ليڪچر آهي .

BSON (بائنري JSON)

جيئن ته ان جو نالو مشورو ڏئي ٿو، اهو JSON سان تمام گهڻو ملندڙ جلندڙ آهي، پر انساني پڙهڻ جي قابل ناهي ۽ بائنري فارميٽ ۾ ڊيٽا تي هلندي آهي. هي تصويرون ۽ ٻين منسلڪات کي محفوظ ڪرڻ ۽ منتقل ڪرڻ لاء تمام آسان بڻائي ٿو. ان کان علاوه، BSON ڪجھ ڊيٽا جي قسمن کي سپورٽ ڪري ٿو جيڪي JSON ۾ موجود نه آھن. مثال طور، توهان BSON فائل ۾ تاريخ (ملي سيڪنڊ فارميٽ ۾) يا جاوا اسڪرپٽ ڪوڊ جو هڪ ٽڪرو به لکي سگهو ٿا. مشهور NoSQL ڊيٽابيس MongoDB BSON فارميٽ ۾ معلومات محفوظ ڪري ٿو.

پوزيشن تي ٻڌل پروٽوڪول

ڪجهه حالتن ۾، اسان کي ڊرامائي طور تي منتقل ٿيل ڊيٽا جي مقدار کي گھٽائڻ جي ضرورت آهي (مثال طور، جيڪڏهن ڊيٽا تمام گهڻو آهي ۽ اسان کي لوڊ گهٽائڻ جي ضرورت آهي). ھن صورتحال ۾، اسان پوزيشن جي بنياد تي پروٽوڪول استعمال ڪري سگھون ٿا ، اھو آھي، پيٽرولر جي قيمتن کي پاس ڪريو بغير پيٽرولر جي نالن جي پاڻ کي.
"Leo Tolstoy" | "Anna Karenina" | 1873
هن فارميٽ ۾ ڊيٽا هڪ مڪمل JSON فائل جي ڀيٽ ۾ تمام گهٽ جاء وٺندو آهي. يقينا، ٻيون سيريلائيزيشن فارميٽ آهن، پر توهان کي انهن سڀني کي ڄاڻڻ جي ضرورت ناهي :) اهو بهتر آهي ته انهن فارميٽس کان واقف ٿي وڃو جيڪي هاڻي ايپليڪيشن ڊولپمينٽ لاء انڊسٽري معيار آهن، ۽ انهن جي فائدن ۽ هڪ ٻئي کان اختلافن کي ياد رکو. . ۽ اسان جو ليڪچر پڄاڻي تي پهتو آهي :) اڄ ڪجهه مسئلا حل ڪرڻ نه وساريو! وري ملنداسين! :)
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION