জাভাতে দুই ধরণের পুনরাবৃত্তি রয়েছে: ব্যর্থ-নিরাপদ এবং ব্যর্থ-দ্রুত।
এর অর্থ কী এবং তাদের মধ্যে পার্থক্য কী?
জাভাতে দুই ধরণের পুনরাবৃত্তি রয়েছে: ব্যর্থ-নিরাপদ এবং ব্যর্থ-দ্রুত।
এর অর্থ কী এবং তাদের মধ্যে পার্থক্য কী?
উত্তর:
তাদের মধ্যে পার্থক্য কী ...
"ব্যর্থ-নিরাপদ" ( ইঞ্জিনিয়ারিংয়ে ) এর অর্থ হল যে কোনও কিছু এমনভাবে ব্যর্থ হয় যা কোনও বা সর্বনিম্ন ক্ষতির কারণ হয় না। কড়া কথায় বলতে গেলে জাভাতে ব্যর্থ-নিরাপদ পুনরাবৃত্তকারী বলে কোনও জিনিস নেই । যদি কোনও পুনরুক্তি ব্যর্থ হয় ("ব্যর্থ" এর সাধারণ অর্থে), আপনি ক্ষতি হতে পারে বলে আশা করতে পারেন।
আমার সন্দেহ হয় যে আপনি আসলে "দুর্বলভাবে সামঞ্জস্যপূর্ণ" পুনরাবৃত্তি বলতে চান mean জাভাদোক বলেছেন:
"বেশিরভাগ সমকালীন সংগ্রহ বাস্তবায়ন (বেশিরভাগ কুইউ সহ) সাধারণ জাভা.ইটিল কনভেনশনগুলির থেকেও পৃথক যে তাদের ইটেটর এবং স্প্লিটেটর দ্রুত-ব্যর্থ ট্র্যাভারসালের পরিবর্তে দুর্বলভাবে সামঞ্জস্য সরবরাহ করে।"
সাধারণত, দুর্বল ধারাবাহিকতার অর্থ হ'ল যদি কোনও সংকলন একসাথে পুনরাবৃত্তির সাথে সংশোধন করা হয় তবে পুনরাবৃত্তি যা দেখায় তার গ্যারান্টিগুলি দুর্বল। (বিশদগুলি প্রতিটি সমবর্তী সংগ্রহের ক্লাস জাভাদোকগুলিতে নির্দিষ্ট করা হবে))
"ব্যর্থ-দ্রুত" ( সিস্টেম ডিজাইনে ) এর অর্থ ব্যর্থতার শর্তটি আক্রমণাত্মকভাবে পরীক্ষা করা হয় যাতে ব্যর্থতার শর্তটি (যেখানে সম্ভব 1 ) খুব বেশি ক্ষয়ক্ষতির আগে সনাক্ত করা যায়। জাভাতে, একটি ব্যর্থ-দ্রুত পুনরাবৃত্তকারী একটি নিক্ষেপ করে ব্যর্থ হয় ConcurrentModificationException
।
"ব্যর্থ-দ্রুত" এবং "দুর্বলভাবে সামঞ্জস্যপূর্ণ" বিকল্পটি শব্দার্থক যেখানে পুনরাবৃত্তিটি অনির্দেশ্য ব্যর্থ হয়; উদাহরণস্বরূপ কখনও কখনও ভুল উত্তর দেওয়া বা একটি অপ্রত্যাশিত ব্যতিক্রম নিক্ষেপ করা। ( Enumeration
জাভার প্রাথমিক সংস্করণগুলিতে এপিআইয়ের কিছু মানক প্রয়োগের আচরণ ছিল এটি ))
... এবং এগুলি সংগ্রহের জন্য আমরা ব্যবহার করি তার থেকে পৃথক।
এগুলি স্ট্যান্ডার্ড সংগ্রহের ধরণের মাধ্যমে প্রয়োগ করা পুনরাবৃত্তির বৈশিষ্ট্য ; উদাহরণস্বরূপ, তারা হয় "দ্রুত ব্যর্থ" বা "দুর্বলভাবে সামঞ্জস্যপূর্ণ" ... যখন সিঙ্ক্রোনাইজেশন এবং জাভা মেমরি মডেল 1 এর ক্ষেত্রে সঠিকভাবে ব্যবহৃত হয় ।
ব্যর্থ-দ্রুত পুনরাবৃত্তকারীগুলি সাধারণতvolatile
সংগ্রহ অবজেক্টের কাউন্টার ব্যবহার করে প্রয়োগ করা হয় ।
Iterator
তৈরি করা হয়, কাউন্টারটির বর্তমান মানটি Iterator
বস্তুটিতে এম্বেড করা হয় ।Iterator
অপারেশন করা হয়, পদ্ধতিটি দুটি পাল্টা মানগুলির সাথে তুলনা করে এবং সেগুলি আলাদা হলে একটি সিএমই নিক্ষেপ করে।বিপরীতে, দুর্বলভাবে সামঞ্জস্যপূর্ণ পুনরাবৃত্তি সাধারণত প্রতিটি হালকা সংগ্রহের অভ্যন্তরীণ ডেটা স্ট্রাকচারের হালকা ওজন এবং লাভের বৈশিষ্ট্য। কোনও সাধারণ প্যাটার্ন নেই। আপনি যদি আগ্রহী হন তবে বিভিন্ন সংগ্রহ ক্লাসের উত্স কোডটি পড়ুন।
1 - রাইডারটি হ'ল যে ব্যর্থ-দ্রুত আচরণটি সিঙ্ক্রোনাইজেশন এবং মেমরির মডেলের ক্ষেত্রে অ্যাপ্লিকেশন আইডিকে সঠিকভাবে ধরে। এর অর্থ হ'ল (উদাহরণস্বরূপ) যদি আপনি ArrayList
যথাযথ সিঙ্ক্রোনাইজেশন ছাড়াই পুনরাবৃত্তি করেন তবে ফলাফলটি একটি দুর্নীতিগ্রস্থ তালিকার ফলাফল হতে পারে। "দ্রুত ব্যর্থ" প্রক্রিয়া সম্ভবত সমকালীন পরিবর্তনটি সনাক্ত করবে (যদিও এটি গ্যারান্টিযুক্ত নয়) তবে এটি অন্তর্নিহিত দুর্নীতি সনাক্ত করতে পারে না। উদাহরণস্বরূপ, javadoc জন্য Vector.iterator()
এই বলে:
"একটি এর ব্যর্থ-ফাস্ট আচরণ পুনরুক্তিকারীর নিশ্চিত করা যাবে না যেমন হয় সাধারণত ভাষী unsynchronized সমবর্তী পরিমার্জন উপস্থিতিতে কোনো কঠিন নিশ্চয়তা দিই না করা অসম্ভব। ব্যর্থ ফাস্ট iterators নিক্ষেপ
ConcurrentModificationException
বেস্ট প্রচেষ্টা ভিত্তিতে। অতএব, এটা হবে কোনও প্রোগ্রাম লিখতে ভুল যা এর শুদ্ধতার জন্য এই ব্যতিক্রমটির উপর নির্ভর করে: পুনরাবৃত্তিকারীদের ব্যর্থ-দ্রুত আচরণটি কেবল বাগগুলি সনাক্ত করতে ব্যবহার করা উচিত। "
তারা বরং ব্যর্থ-দ্রুত এবং দুর্বলভাবে সামঞ্জস্যপূর্ণ ধরণের:
সংগ্রহটি পুনরাবৃত্তির সময় সংগ্রহের পদ্ধতিগুলি (যুক্ত / অপসারণ) দ্বারা সংশোধন করা হলে java.util
প্যাকেজ থ্রো থেকে আইট্রেটার্সConcurrentModificationException
java.util.concurrent
প্যাকেজ থেকে আইট্রেটারগুলি সাধারণত একটি স্ন্যাপশটের মাধ্যমে পুনরাবৃত্তি করে এবং একই সাথে সংশোধন করার অনুমতি দেয় তবে পুনরুক্তি তৈরির পরে সংগ্রহের আপডেটগুলি প্রতিফলিত করতে পারে না।
Iterator
বা না Enumeration
। এটি সুনির্দিষ্ট বাস্তবায়ন (যেমন নির্দিষ্ট সংগ্রহ iterator()
/ elements()
ইত্যাদি পদ্ধতি যা এই বিষয়গুলি ফেরত দেয়) যা আচরণকে নির্দিষ্ট করে। 2) সাধারণ গণনা বাস্তবায়নগুলি ব্যর্থ-দ্রুত বা ব্যর্থ-নিরাপদ নয় ।
একমাত্র পার্থক্য হ'ল ব্যর্থ-নিরাপদ পুনরাবৃত্তি ব্যর্থ-দ্রুত আইট্রেটারের বিপরীতে কোনও ব্যতিক্রম ছুঁড়ে না।
যদি সংগ্রহটি কাঠামোগতভাবে পরিবর্তিত হয় যখন একটি থ্রেড এটির উপরে পুনরাবৃত্তি হয়। এর কারণ তারা মূল সংগ্রহের পরিবর্তে সংগ্রহের ক্লোনটিতে কাজ করে এবং এ কারণেই তাদের ব্যর্থ-নিরাপদ পুনরাবৃত্তি হিসাবে ডাকা হয়।
কপিরআনরাইটআরএলিস্টের আইট্রেটর ব্যর্থ-নিরাপদ আইট্রেটারেরও একটি উদাহরণ যা কনকন্টারহ্যাশম্যাপ কীসেট দ্বারা লিখিত পুনরাবৃত্তকারীও ব্যর্থ-নিরাপদ পুনরুক্তিযোগ্য এবং জাভাতে সাম্প্রতিককালে কোনও পরিবর্তন ঘটায় না।
এই দৃশ্যটি "সমবর্তী প্রক্রিয়াকরণ" এর সাথে সম্পর্কিত, এর অর্থ হ'ল আরও একজন ব্যবহারকারী একই সংস্থানটিতে অ্যাক্সেস করছেন। এই পরিস্থিতিতে, ব্যবহারকারীদের মধ্যে একটি সেই সংস্থানটি সংশোধন করার চেষ্টা করে যা 'কনকনোয়ারপ্রসেসিং এক্সেপশন' এর কারণ হয় কারণ সেই ক্ষেত্রে অন্য ব্যবহারকারীর ভুল তথ্য পাওয়া যায়। এই ধরণের উভয়ই এই ধরণের পরিস্থিতির সাথে সম্পর্কিত।
সহজ শব্দে,
ব্যর্থ-দ্রুত:
ব্যর্থতার নিরাপত্তা :