কেউ জাভাতে transient
এবং volatile
সংশোধনকারীদের কী বোঝাতে পারে?
কেউ জাভাতে transient
এবং volatile
সংশোধনকারীদের কী বোঝাতে পারে?
উত্তর:
volatile
এবং transient
সংশোধনকারীদের ক্লাস ক্ষেত্র প্রয়োগ করা যেতে পারে 1 ক্ষেত্র প্রকার নির্বিশেষে। তা ছাড়া এগুলি সম্পর্কিত নয়।
transient
পরিবর্তক জাভা বস্তুর ধারাবাহিকতাতে সাব-সিস্টেম বলে যখন ক্লাসের একটা নিদর্শন serializing ক্ষেত্র বাদ দেওয়ার। এরপরে অবজেক্টটি ডিসরিয়ালাইজ করা হয়, ক্ষেত্রটি ডিফল্ট মান হিসাবে শুরু করা হবে; যেমন null
একটি রেফারেন্স টাইপ এবং শূন্য বা false
একটি আদিম ধরণের জন্য type নোট করুন যে জেএলএস ( 8.3.1.3 দেখুন ) এর transient
অর্থ কী তা বলে না , তবে জাভা অবজেক্ট সিরিয়ালাইজেশন স্পেসিফিকেশনকে পিছনে ফেলে । অন্যান্য সিরিয়ালাইজেশন প্রক্রিয়াগুলি কোনও ক্ষেত্রের মধ্যে মনোযোগ দিতে পারেtransient
। অথবা তারা এটিকে উপেক্ষা করতে পারে।
(দ্রষ্টব্য যে জেএলএস কোনও static
ক্ষেত্র হিসাবে ঘোষিত হওয়ার অনুমতি দেয় transient
Java একেবারে নিষেধ না।)
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) ক্ষণস্থায়ী কীওয়ার্ড এবং এর উদ্দেশ্য? একটি ক্ষেত্র যা ক্ষণস্থায়ী সংশোধক সহ ঘোষিত হয় এটি সিরিয়ালযুক্ত প্রক্রিয়াতে অংশ নেবে না। যখন কোনও বস্তুকে সিরিয়ালাইজ করা হয় (যে কোনও অবস্থায় সংরক্ষণ করা হয়), তখন এর ক্ষণস্থায়ী ক্ষেত্রগুলির মানগুলি সিরিয়াল উপস্থাপনায় উপেক্ষা করা হয়, যখন ক্ষণস্থায়ী ক্ষেত্রগুলি ব্যতীত অন্য ক্ষেত্রটি সিরিয়ালকরণ প্রক্রিয়াতে অংশ নেবে। এটি ক্ষণস্থায়ী কীওয়ার্ডের মূল উদ্দেশ্য।