জাভাতে সিরিয়ালাইজেশন এর উদ্দেশ্য কী?


105

সিরিয়ালাইজেশন এবং এটি কীভাবে দুর্দান্ত এবং দুর্দান্ত তা নিয়ে আমি বেশ কয়েকটি নিবন্ধ পড়েছি তবে কোনও যুক্তিই যথেষ্ট যথেষ্ট বিশ্বাসযোগ্য ছিল না। আমি ভাবছি যদি কেউ আমাকে সত্যিই বলতে পারে যে এটি এমন কী যা আমরা সত্যই কোনও শ্রেণীর ক্রমিকায়নের মাধ্যমে অর্জন করতে পারি?


10
তাদের যুক্তি সম্পর্কে কী "বিশ্বাসী ছিল না"? এবং কেন আপনি আপনার প্রশ্নের কোনও উত্তর গ্রহণ করেন নি?
আনন

8
তারা তার প্রশ্নের উত্তর দেয় "বিশ্বাসী ছিল না"।
অ্যান্টনি ফোরলনি

5
প্রদত্ত উত্তরগুলি প্রকৃতপক্ষে সঠিক ছিল। যদি তারা আপনার পক্ষে কাজ করে না, তাদের মতামত হিসাবে জবাব দিন এবং কেবল সেগুলি উপেক্ষা করার পরিবর্তে এটিকে কাজে লাগানোর চেষ্টা করুন এবং তারপরে অন্যরা শিখা শুরু করবেন যখন আপনি ঠিকঠাক ব্যবহার করছেন না।
আনন

4
অনন সদৃশ প্রশ্নগুলি নিরুৎসাহিত করে সাইটের মানটিতে অবদান রাখছে। পাঁচটি পৃথক প্রশ্ন যা সবাই একই জিনিস জিজ্ঞাসা করছে তা দেখার জন্য নির্বোধ। যদি আপনি উত্তর না পান তবে বেশিরভাগ সময় ঠিক এটি হয়। যদি আপনি উত্তর পেয়ে থাকেন তবে এটি কাজ করে বলে মনে হচ্ছে না, তবে মন্তব্যে আলোচনা চালিয়ে যান। এসও কোনও ম্যাজিক বাক্স নয় যা জাদুকরভাবে আপনাকে একটি উত্তর দেবে যদি আপনি কেবল সঠিক প্রশ্ন জিজ্ঞাসা করেন, বা যথেষ্ট সময় জিজ্ঞাসা করেন, বা সঠিক বিশেষজ্ঞের দৃষ্টি আকর্ষণ করেন।
ক্রিস

1
হয়: (উত্তরটি গ্রহণ করুন) অথবা (একটি মন্তব্য পোস্ট করুন এবং / অথবা আপনার প্রয়োজনীয়তা কেন এটি নয় তা ব্যাখ্যা করে প্রশ্নটি সংশোধন করুন)।
আনন

উত্তর:


182

প্রথমে সিরিয়ালাইজেশন সংজ্ঞায়িত করা যাক, তবে আমরা কেন এটি এত দরকারী তা নিয়ে কথা বলতে পারি।

সিরিয়ালাইজেশন কেবল একটি বিদ্যমান অবজেক্টকে বাইট অ্যারেতে রূপান্তরিত করে। এই বাইট অ্যারে অবজেক্টের শ্রেণি, বস্তুর সংস্করণ এবং অবজেক্টের অভ্যন্তরীণ অবস্থা উপস্থাপন করে। এই বাইট অ্যারেটি তখন জেভিএমের একই কোডটি চলমান এবং অবজেক্টটি পড়তে পাঠানোর মধ্যে ব্যবহার করা যেতে পারে।

আমরা কেন এটি করতে চাই?

এর বেশ কয়েকটি কারণ রয়েছে:

  • যোগাযোগ: আপনার যদি দুটি মেশিন থাকে যা একই কোডটি চালাচ্ছে এবং তাদের যোগাযোগ করা প্রয়োজন, একটি সহজ উপায় হ'ল একটি মেশিনের মাধ্যমে এমন একটি তথ্য তৈরি করা যায় যা এটি প্রেরণ করতে চায় এবং তারপরে সেই বস্তুকে অন্য মেশিনে ক্রমিক করে তোলে। এটি যোগাযোগের জন্য সর্বোত্তম পদ্ধতি নয়, তবে এটি কাজটি করে।

  • অধ্যবসায়: আপনি যদি কোনও ডাটাবেসে কোনও বিশেষ ক্রিয়াকলাপের স্থিতি সংরক্ষণ করতে চান তবে এটি সহজেই বাইট অ্যারেতে সিরিয়াল করা যায় এবং পরে পুনরুদ্ধারের জন্য ডাটাবেসে সংরক্ষণ করা যায়।

  • গভীর অনুলিপি: যদি আপনার কোনও অবজেক্টের হুবহু প্রতিরূপ প্রয়োজন হয় এবং আপনার নিজের বিশেষায়িত ক্লোন () শ্রেণিটি লেখার ঝামেলাতে যেতে না চান, কেবলমাত্র বাইট অ্যারেতে বস্তুটিকে সিরিয়ালাইজ করে, এবং তারপরে অন্যটিতে এটি সিরিয়ালিয়ালকরণ করা হচ্ছে অবজেক্ট এই লক্ষ্য অর্জন করে।

  • ক্যাশিং: সত্যিই কেবল উপরের অ্যাপ্লিকেশন, তবে কখনও কখনও কোনও বস্তুটি তৈরি হতে 10 মিনিট সময় লাগে তবে ডি-সিরিয়ালটিকে কেবল 10 সেকেন্ড সময় লাগে। সুতরাং, মেমরির দৈত্য বস্তুটি ধরে রাখার পরিবর্তে, এটি সিরিয়ালাইজেশনের মাধ্যমে একটি ফাইলের মধ্যে ক্যাশে করুন এবং যখন প্রয়োজন হবে তখন এটি পড়ুন।

  • ক্রস জেভিএম সিঙ্ক্রোনাইজেশন: সিরিয়ালাইজেশন বিভিন্ন জেভিএম জুড়ে কাজ করে যা বিভিন্ন আর্কিটেকচারে চলতে পারে।


62
পৃথিবীতে কি তৈরি করতে 10 মিনিট সময় লাগে?
অক্সবো_লেকস

2
আমার বক্তব্য (অবশ্যই) যে সিরিয়ালাইজেশনে জড়িত ফাইল I / O সম্ভবত কোনও খাঁটি অবজেক্ট তৈরির উপরের দিকে বামন করবে। আমি মনে করি আপনি সম্ভবত বৈজ্ঞানিক মডেলিংয়ের মতো কম্পিউটারের তুলনায় খুব ব্যয়বহুল কিছু সম্পর্কে কথা বলছিলেন তবে স্কিমা পরিবর্তনগুলি পরিচালনা করতে অসুবিধা হওয়ায় অধ্যবসায় জন্য সিরিয়ালাইজেশন একটি খুব দুর্বল প্রক্রিয়া
অক্সবো_লাকস

11
@ অক্সবো_লাক্স একটি উদাহরণ হতে পারে যদি আপনি দ্রুত অনুসন্ধানের জন্য কোনও নির্দিষ্ট সেট ডেটার সূচক বজায় রাখেন। এর মতো সূচকটি তৈরি করতে খুব দীর্ঘ সময় নিতে পারে, তবে এটি তৈরি হয়ে গেলে এটি তুলনামূলকভাবে দ্রুত সিরিয়ালাইজড / ডি-সিরিয়ালাইজড করা যায়।
ডেভিড

ওয়েব অ্যাপ্লিকেশন অনুরোধটি যদি গন্তব্যে পৌঁছানোর আগে, অবজেক্ট তৈরি করা, দীর্ঘতম সম্ভাব্য পথ ব্যবহার করে অবজেক্টটি দিয়ে ফিরে আসার আগে বিশ্বের প্রতিটি রাউটারের মধ্য দিয়ে যেতে হয় তবে হ্যাঁ এটি 10 ​​মিনিট সময় নিতে পারে।
ভাইবস

@ স্কেলমিটার, যেহেতু আপনি সিরিয়ালাইজেশনটি যোগাযোগের জন্য সেরা পদ্ধতি হিসাবে উল্লেখ করেন না, তখন কার্যকর ও কার্যকর পদ্ধতি কোনটি?
আশফাক রিফায়

58

আপনি যখন নিজের অ্যাপ্লিকেশনটি চালাচ্ছেন, এর সমস্ত বস্তু মেমোরিতে (র‍্যাম) সঞ্চিত থাকে। আপনি যখন প্রস্থান করবেন, তখন সেই স্মৃতি অপারেটিং সিস্টেমের দ্বারা পুনরুদ্ধার হয়ে যায় এবং আপনার প্রোগ্রামটি চলাকালীন যা ঘটেছিল তা সমস্ত কিছু 'ভুলে যায়'। সিরিয়ালাইজেশন প্রতিকারগুলি এটিকে আপনার অ্যাপ্লিকেশনটিকে ডিস্কে অবজেক্টগুলি সংরক্ষণ করতে দেয় যাতে এটি পরের বার শুরু হওয়ার পরে সেগুলি আবার পড়তে পারে। যদি আপনার অ্যাপ্লিকেশনটি কোনও পূর্ববর্তী অবস্থা সংরক্ষণ / ভাগ করে নেওয়ার যে কোনও উপায় সরবরাহ করতে চলেছে, আপনার কিছু ধারাবাহিকীকরণ প্রয়োজন।


2
সুতরাং, দেখে মনে হচ্ছে এটি কোনও ফাইলের জন্য ডেটা লেখার এবং প্রয়োজনমতো আবার পড়ার আরও ভাল, আরও কার্যকর উপায়?
m_a_khan

1
এটিই কেবল বাস্তব ব্যাখ্যা। সিরিয়ালাইজেশন +1
এমিলি

স্বল্প ও মধুর. নিখুঁত ব্যাখ্যা।
ইয়াহুব

21

আমি আমার গল্পটি ভাগ করতে পারি এবং আমি আশা করি এটি কেন সিরিয়ালাইজেশন প্রয়োজনীয় তা কিছু ধারণা দেবে। তবে আপনার প্রশ্নের উত্তরগুলি ইতিমধ্যে উল্লেখযোগ্যভাবে বিশদ।

আমার বেশ কয়েকটি প্রজেক্ট ছিল যার একটি গুচ্ছ পাঠ্য ফাইল লোড করা এবং পড়তে হবে। ফাইলগুলিতে স্টপ শব্দ, বায়োমেডিকাল ক্রিয়া, বায়োমেডিকাল সংক্ষেপণ, শব্দার্থে একে অপরের সাথে সংযুক্ত শব্দ ইত্যাদি থাকে এই ফাইলগুলির বিষয়বস্তু সহজ: শব্দ !

এখন প্রতিটি প্রকল্পের জন্য, আমাকে এই ফাইলগুলির প্রতিটি থেকে শব্দগুলি পড়তে এবং এগুলি বিভিন্ন অ্যারেতে লাগানো দরকার; ফাইলের বিষয়বস্তুগুলি কখনই পরিবর্তিত হয়নি, এটি প্রথম প্রকল্পের পরে একটি সাধারণ, তবুও অতিরিক্ত কাজ হয়ে উঠেছে।

সুতরাং, আমি যা করেছি তা হ'ল আমি এই ফাইলগুলির প্রতিটি পড়ার জন্য এবং পৃথক অ্যারে (বস্তুর উদাহরণ ভেরিয়েবলগুলি) পপুলেট করার জন্য একটি অবজেক্ট তৈরি করেছি। তারপরে আমি অবজেক্টগুলি সিরিয়ালাইজ করেছিলাম এবং তারপরে পরবর্তী প্রকল্পগুলির জন্য, আমি কেবল সেগুলি ডিসরিয়ালাইজ করেছি। আমাকে ফাইলগুলি পড়তে হবে না এবং অ্যারেগুলিকে বারবার জনপ্রিয় করে তুলতে হবে।


1
এ জাতীয় ক্ষেত্রে, কেন আপনি এগুলিকে বাইট অ্যারে স্ট্রিমে (সিরিয়ালাইজ ব্যবহার করে) সংরক্ষণ করতে হবে, এটি কেবল একটি অস্থায়ী ক্ষেত্র ব্যবহারের চেয়ে আরও সহজ হতে পারে?
কিডনান 1991

3

প্রয়োজনীয় :

সিরিয়ালাইজেশন হ'ল অবজেক্টের উদাহরণগুলির একটি সেটকে একে অপরের রেফারেন্সগুলিকে বাইটের রৈখিক প্রবাহে রূপান্তর করার প্রক্রিয়া, যা সকেটের মাধ্যমে পাঠানো যায়, কোনও ফাইলে সংরক্ষণ করা যায়, বা কেবল ডেটা স্ট্রিম হিসাবে চালিত হয়

উইকির ব্যবহার দেখুন :

ক্রমিকায়নের অনেক সুবিধা রয়েছে। এটি উপলব্ধ করা হয়:

  1. স্থায়ী অবজেক্টের একটি পদ্ধতি যা ডিস্কের একটি পাঠ্য ফাইলগুলিতে তাদের সম্পত্তি লেখার চেয়ে আরও সুবিধাজনক এবং এটিকে আবার পড়ে এটি পুনরায় একত্রিত করে।
  2. দূরবর্তী প্রক্রিয়া কল ইস্যু করার একটি পদ্ধতি, যেমন, এসওএপি-তে
  3. অবজেক্ট বিতরণ করার একটি পদ্ধতি, বিশেষত সিওএম, সিওআরবিএ ইত্যাদির মতো সফ্টওয়্যার উপাদানগুলিতে distrib
  4. সময়-পরিবর্তিত ডেটার পরিবর্তনগুলি সনাক্ত করার জন্য একটি পদ্ধতি।

1

সর্বাধিক সুস্পষ্ট হ'ল আপনি সিরিয়ালযুক্ত শ্রেণিটি কোনও নেটওয়ার্কের মাধ্যমে প্রেরণ করতে পারবেন এবং গ্রাহকটি মূল ইনস্ট্যান্স্যান্সের একটি সদৃশ তৈরি করতে পারবেন। তেমনি, আপনি একটি সিরিয়ালযুক্ত কাঠামো একটি ফাইল সিস্টেমে সংরক্ষণ করতে পারেন।

এছাড়াও, নোট করুন যে সিরিয়ালাইজেশন পুনরাবৃত্ত হয়, তাই আপনি যদি ইচ্ছা করেন তবে একটি স্ফীত ফোড়ায় একটি সম্পূর্ণ ভিন্ন ভিন্ন ডেটা কাঠামোকে ক্রমিক করতে পারেন।


0

সিরিয়ালযুক্ত বস্তুগুলি মহাশূন্যে স্থিতি বজায় রাখে, তাদের নেটওয়ার্ক, ফাইল সিস্টেম ইত্যাদির মাধ্যমে স্থানান্তরিত করা যায় ... এবং সময়, তারা তাদের তৈরি করা জেভিএমকে আউটলাইভ করতে পারে।

কখনও কখনও এটি দরকারী।


এটি কিছু পাঠ্য সহ একটি সাধারণ ফাইলের মাধ্যমে অর্জন করা যেতে পারে। সিরিয়ালযুক্ত বস্তুটি ফিরে পঠন করা একটু সহজ, তারপরে কোনও পাঠ্য ফাইলে লিখিত অবজেক্টের অবস্থা পড়ে, সঠিক?
এম_এ_খান

@ মি_এ_খান: বাহ! হ্যাঁ এটি একটি সাধারণ পাঠ্য দিয়ে করা যেতে পারে। তবে অবজেক্টগুলি আরও জটিল হয়ে ওঠার সাথে সাথে তাদের কাঠামোগুলি (রচনা, উত্তরাধিকার) আরও জটিল হয়ে উঠলে এটি ম্যানুয়ালি (আন) মার্শাল করার ঝামেলা হয়ে উঠবে। বস্তুর সদস্য হিসাবে তালিকা, সেট এবং মানচিত্র রয়েছে তা কল্পনা করুন।
ডার্ক শুমাচর

বিভিন্ন সিরিয়ালাইজেশন স্কিম নিয়ে আসা সহজ এবং সত্যই অনেকগুলি বিদ্যমান। খুব ভাল কারণে, তাদের
কোনওটিই

0

আমি ক্রিয়াকলাপগুলি বা শ্রেণি নির্মাতাদের কাছে আর্গুমেন্টগুলি প্রমিত করার জন্য সিরিয়ালযুক্ত বস্তুগুলি ব্যবহার করি। একটি সিরিয়ালযুক্ত শিমটি পাস করা আর্গুমেন্টের দীর্ঘ তালিকার চেয়ে অনেক বেশি পরিষ্কার। ফলাফলটি এমন কোড যা পড়া এবং ডিবাগ করা সহজ।


1
আমার মতে অনুসন্ধান এবং প্যারামিটার হিসাবে একটি একক কনফিগার অবজেক্ট ব্যবহার করা বেশ গোঁড়া। সম্ভবত এটি সাধারণ ব্যবহারের ঘটনা নয়।
গ্যাবার বাকোস

0

শেখার সহজ উদ্দেশ্যটির জন্য (বিজ্ঞপ্তি, আমি শিখেছি বলেছি, আমি ভাল বা ভাল বলতে পারি নি, তবে কেবল স্টাফ বোঝার জন্য), আপনি কম্পিউটারে কোনও পাঠ্য ফাইলে আপনার ডেটা সংরক্ষণ করতে পারেন, তারপরে একটি প্রোগ্রাম রাখতে পারেন যা সেই তথ্যটি পড়ে এবং ফাইলের উপর ভিত্তি করে, আপনি আপনার প্রোগ্রামটি আলাদাভাবে প্রতিক্রিয়া জানাতে পারেন। আপনি যদি আরও উন্নত হন তবে অগত্যা এটি একটি টেক্সট ফাইল হতে হবে না, তবে অন্য কিছু।

অন্যদিকে সিরিয়ালকরণ, জিনিসগুলি সরাসরি কম্পিউটারের ভাষায় রাখে। এটি এমন যে আপনি কোনও স্পেনীয় কম্পিউটারকে ফ্রেঞ্চ ভাষায় কিছু না বলে ফ্রেঞ্চ ভাষায় কিছু বলার চেয়ে ফরাসী ভাষা শেখার জন্য জোর করে, তারপরে সমস্ত কিছু অনুবাদ করে জিনিসগুলিকে তার স্থানীয় স্প্যানিশে সংরক্ষণ করুন। সবচেয়ে প্রযুক্তিগত-নিবিড় উত্তর নয়, আমি কেবল একটি সাধারণ ভাষার ফর্ম্যাটে একটি বোধগম্য উদাহরণ তৈরি করার চেষ্টা করছি।

সিরিয়ালাইজেশনটি আরও দ্রুত, কারণ জাভাতে, বস্তুগুলি হিপগুলিতে পরিচালনা করা হয়, এবং স্ট্যাকের আদিম হিসাবে প্রদর্শিত হলে তার চেয়ে অনেক বেশি সময় নেয়। গতি, গতি, গতি। এবং প্রোগ্রামার দৃষ্টিকোণ থেকে কম ফাইল প্রসেসিং।


সরল ইংরেজিতে জিনিসগুলি রাখার চেষ্টা করার সময়, আপনি কোনও কার্যকর উপায়ে সিরিয়ালাইজেশনটি সত্যই ব্যাখ্যা করেন নি।
ব্যবহারকারী 3516726
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.