কেউ জাভাতে transientএবং volatileসংশোধনকারীদের কী বোঝাতে পারে?
কেউ জাভাতে transientএবং volatileসংশোধনকারীদের কী বোঝাতে পারে?
উত্তর:
volatileএবং transientসংশোধনকারীদের ক্লাস ক্ষেত্র প্রয়োগ করা যেতে পারে 1 ক্ষেত্র প্রকার নির্বিশেষে। তা ছাড়া এগুলি সম্পর্কিত নয়।
transientপরিবর্তক জাভা বস্তুর ধারাবাহিকতাতে সাব-সিস্টেম বলে যখন ক্লাসের একটা নিদর্শন serializing ক্ষেত্র বাদ দেওয়ার। এরপরে অবজেক্টটি ডিসরিয়ালাইজ করা হয়, ক্ষেত্রটি ডিফল্ট মান হিসাবে শুরু করা হবে; যেমন nullএকটি রেফারেন্স টাইপ এবং শূন্য বা falseএকটি আদিম ধরণের জন্য type নোট করুন যে জেএলএস ( 8.3.1.3 দেখুন ) এর transientঅর্থ কী তা বলে না , তবে জাভা অবজেক্ট সিরিয়ালাইজেশন স্পেসিফিকেশনকে পিছনে ফেলে । অন্যান্য সিরিয়ালাইজেশন প্রক্রিয়াগুলি কোনও ক্ষেত্রের মধ্যে মনোযোগ দিতে পারেtransient । অথবা তারা এটিকে উপেক্ষা করতে পারে।
(দ্রষ্টব্য যে জেএলএস কোনও staticক্ষেত্র হিসাবে ঘোষিত হওয়ার অনুমতি দেয় transientJava একেবারে নিষেধ না।)
volatileপরিবর্তক জেভিএম বলে যে ক্ষেত্র উদ্দেশে চিঠি লেখেন সবসময় সিঙ্ক্রোনাস মেমরি রাঙা করা উচিত, এবং যে সবসময় মেমরি থেকে পড়া উচিত মাঠের পড়ে। এর অর্থ হ'ল অস্থায়ী হিসাবে চিহ্নিত ক্ষেত্রগুলি দেশীয় বা মানক গ্রন্থাগার-ভিত্তিক সিঙ্ক্রোনাইজেশন ব্যবহার না করে নিরাপদে অ্যাক্সেস এবং বহু-থ্রেড অ্যাপ্লিকেশনটিতে আপডেট করা যেতে পারে। একইভাবে, অস্থির ক্ষেত্রগুলিতে পড়া এবং লেখাই পারমাণবিক। (এটি >> অ-অস্থির << longবা doubleক্ষেত্রগুলির ক্ষেত্রে প্রযোজ্য নয় , যা কিছু জেভিএমগুলিতে "শব্দ ছিঁড়িয়া " সাপেক্ষে হতে পারে)) জেএলএস এর প্রাসঙ্গিক অংশগুলি 8.3.1.4 , 17.4 এবং 17.7 হয় ।
1 - তবে স্থানীয় ভেরিয়েবল বা পরামিতিগুলিতে নয়।
volatileএবং transientকীওয়ার্ড
1) transientকীওয়ার্ডটি সিরিয়ালাইজেশন প্রক্রিয়া থেকে বাদ দেওয়ার জন্য উদাহরণ ভেরিয়েবলগুলির সাথে ব্যবহৃত হয়। যদি কোনও ক্ষেত্র transientএর মান স্থায়ী হয় না।
অন্যদিকে, volatileজাভা ভেরিয়েবলটিকে "মূল স্মৃতিতে সংরক্ষণ করা হচ্ছে" হিসাবে চিহ্নিত করতে কীওয়ার্ড ব্যবহার করা হয়।
একটি volatileভেরিয়েবলের প্রতিটি পঠন কম্পিউটারের মূল মেমরি থেকে পড়তে হবে, এবং সিপিইউ ক্যাশে থেকে নয় এবং volatileভেরিয়েবলের প্রতিটি লেখাই মূল মেমোরিতে লেখা হবে, কেবল সিপিইউ ক্যাশে নয়।
2) transientকীওয়ার্ডটি কীওয়ার্ডের সাথে ব্যবহার করা যাবে না staticতবে volatileপাশাপাশি ব্যবহার করা যেতে পারে static।
3) transientডি-সিরিয়ালাইজেশনের সময় ভেরিয়েবলগুলি ডিফল্ট মান দিয়ে আরম্ভ করা হয় এবং সেখানে অ্যাসাইনমেন্ট বা মান পুনরুদ্ধার অ্যাপ্লিকেশন কোড দ্বারা পরিচালনা করতে হয়।
আরও তথ্যের জন্য, আমার ব্লগটি দেখুন:
http://javaexplorer03.blogspot.in/2015/07/differences-between-volatile- and.html
transientভেরিয়েবলটি ব্যবহার না করার কারণ staticহ'ল স্থির ভেরিয়েবলগুলি কোনও শ্রেণীর অন্তর্গত এবং কোনও পৃথক উদাহরণের সাথে নয়। সিরিয়ালাইজেশন ধারণাটি অবজেক্টের বর্তমান অবস্থার সাথে সম্পর্কিত। শ্রেণীর নির্দিষ্ট উদাহরণের সাথে সম্পর্কিত ডেটা কেবল সিরিয়ালাইজড, সুতরাং স্থির সদস্য ক্ষেত্রগুলি সিরিয়ালকরণের সময় অগ্রাহ্য করা হয়
staticএবং transientএকসাথে ব্যবহার করা যায়। সমস্যাটি এটিকে খুব সামান্যই বোঝায় কারণ সাধারণ সিরিয়ালাইজেশন প্রক্রিয়াগুলি যাইহোক স্ট্যাটিকগুলি বজায় রাখে না।
অস্থির অর্থ অন্যান্য থ্রেডগুলি সেই নির্দিষ্ট চলকটি সম্পাদনা করতে পারে। সুতরাং সংকলকটি তাদের অ্যাক্সেসের অনুমতি দেয়।
http://www.javamex.com/tutorials/synchronization_volatile.shtml
ক্ষণস্থায়ী এর অর্থ হ'ল আপনি যখন কোনও বস্তুকে সিরিয়ালাইজ করবেন তখন ডি-সিরিয়ালাইজেশনে এটির ডিফল্ট মান ফিরে আসবে
ক্ষণস্থায়ী:
এটি ব্যবধানটি কীভাবে সরিয়ে ফেলবে এটি কোথায় দরকার ছিল তা আগে জানতে হবে।
1) অ্যাক্সেস মডিফায়ার ট্রান্সিয়েন্ট কেবলমাত্র ভেরিয়েবল উপাদানগুলিতে প্রযোজ্য। এটি পদ্ধতি বা শ্রেণীর সাথে ব্যবহৃত হবে না।
2) স্থায়ী কীওয়ার্ড সহ অস্থায়ী কীওয়ার্ড ব্যবহার করা যাবে না।
3) সিরিয়ালাইজেশন কী এবং এটি কোথায় ব্যবহৃত হয়? সিরিয়ালাইজেশন হ'ল অবজেক্টের অবস্থা স্থির করার প্রক্রিয়া। তার অর্থ অব্যাহত রাখার জন্য (যেমন কোনও ফাইলের বাইটস সংরক্ষণ করা) বা স্থানান্তরিতকরণ (যেমন কোনও নেটওয়ার্ক জুড়ে বাইট প্রেরণ করা) ব্যবহারের জন্য অবজেক্টের অবস্থা বাইটের প্রবাহে রূপান্তরিত হয়। একইভাবে, আমরা বাইটগুলি থেকে অবজেক্টের স্থিতি ফিরিয়ে আনতে deserialization ব্যবহার করতে পারি। এটি জাভা প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ ধারণা কারণ সিরিয়ালাইজেশন বেশিরভাগ নেটওয়ার্কিং প্রোগ্রামিংয়ে ব্যবহৃত হয়। নেটওয়ার্কের মাধ্যমে যে জিনিসগুলিকে সঞ্চারিত করতে হবে তাদের বাইটে রূপান্তর করতে হবে। ক্ষণস্থায়ী কীওয়ার্ড বোঝার আগে, সিরিয়ালাইজেশন ধারণাটি বুঝতে হবে। পাঠক যদি সিরিয়ালাইজেশন সম্পর্কে জানেন তবে দয়া করে প্রথম বিষয়টি এড়িয়ে যান।
দ্রষ্টব্য 1) ক্ষণস্থায়ী মূলত সিরিয়ালাইজেশন প্রক্রিয়াটির জন্য ব্যবহার। তার জন্য শ্রেণিটি অবশ্যই java.io.Serializable ইন্টারফেস প্রয়োগ করতে হবে। ক্লাসের সমস্ত ক্ষেত্র অবশ্যই সিরিয়ালযোগ্য হতে হবে। যদি ক্ষেত্রটি সিরিয়ালযোগ্য না হয় তবে এটি অবশ্যই ক্ষণস্থায়ী হিসাবে চিহ্নিত করা উচিত।
দ্রষ্টব্য 2) যখন ডিসিরিয়ালাইজড প্রক্রিয়াটি করা হয় তখন তারা ডিফল্ট মান হিসাবে সেট হয় - শূন্য, মিথ্যা, বা টাইপ সীমাবদ্ধতা অনুযায়ী নাল।
নোট 3) ক্ষণস্থায়ী কীওয়ার্ড এবং এর উদ্দেশ্য? একটি ক্ষেত্র যা ক্ষণস্থায়ী সংশোধক সহ ঘোষিত হয় এটি সিরিয়ালযুক্ত প্রক্রিয়াতে অংশ নেবে না। যখন কোনও বস্তুকে সিরিয়ালাইজ করা হয় (যে কোনও অবস্থায় সংরক্ষণ করা হয়), তখন এর ক্ষণস্থায়ী ক্ষেত্রগুলির মানগুলি সিরিয়াল উপস্থাপনায় উপেক্ষা করা হয়, যখন ক্ষণস্থায়ী ক্ষেত্রগুলি ব্যতীত অন্য ক্ষেত্রটি সিরিয়ালকরণ প্রক্রিয়াতে অংশ নেবে। এটি ক্ষণস্থায়ী কীওয়ার্ডের মূল উদ্দেশ্য।