রাসায়নিক ও উপাদান ইঞ্জেকশন
মাল্টি-স্ট্রিং ইঞ্জিনিয়ারিং অ্যাপ্লিকেশনের সময়ে যখন ইমপ্ল্যান্টিং বিন্যাস ইনট্যান্টিং করে সাধারণ ভুল করা এড়িয়ে যাওয়া
Table of Contents
ভূমিকা: মাল্টি-মেডি ইঞ্জিনিয়ারিং অ্যাপ্লিকেশনের আন্তন বিন্যাস
আই. এস. আর. এল. প্রোগ্রাম (g০১) ব্যবহার করে সফটওয়্যার ইঞ্জিনিয়ারিংে নির্মিত সব ধরনের ডিজাইনের মধ্যে একটির জন্য সবচেয়ে বেশী ব্যবহৃত নকশার বিন্যাস রয়েছে। এটি নিশ্চিত করে যে একটি শ্রেণীতে একটি মাত্র উদাহরণ রয়েছে এবং এই ধরনের বৈশ্বিক ব্যবহারের একটি বৈশ্বিক দিক রয়েছে। একটি একক অ্যাপ্লিকেশন প্রয়োগ করে; একটি একক অ্যাপ্লিকেশন প্রয়োগ করে; ব্যক্তিগত পদ্ধতি ব্যবহার করা সহজ করে তৈরি করা যায়। উল্লেখ্য, একটি একক পদ্ধতিতে, ব্যক্তিগত পদ্ধতি তৈরি করা সম্ভব হবে না, এবং বিভিন্ন ধরনের পদ্ধতি তৈরি করা সম্ভব হবে না। উদাহরণস্বরূপ, একাধিক ব্যক্তিগত পদ্ধতি তৈরি করা হলে বিভিন্ন ধরনের সময়, এবং বিভিন্ন ধরনের সময়-বিপ্ল্যত:-বিন্যাসের মাধ্যমে একটি পৃথক পৃথক পৃথক পৃথক পৃথক বিন্যাস ব্যবহার করা যায়।
এই প্রবন্ধের মধ্যে রয়েছে জাভার ক্ষেত্রে প্রয়োগের ক্ষেত্রে ব্যবহারিক কোড, সি+ এবং সি+ এবং এর সাথে তুলনা করা যায়, এবং আরো পড়ার জন্য বাইরের সম্পদকে পরামর্শ প্রদান করা।
সাধারণ ভুলকে পৃথকীকরণ করা
এর নীচে সবচেয়ে বেশি ত্রুটি রয়েছে, প্রত্যেকটা কারণ ব্যাখ্যা করে যে, কেন সেগুলো বিপদজনক ।
১) কনস্ট্রাক্টর ব্যক্তিগত তৈরি করা নয়
যে কোন একক- টি একটি ব্যক্তিগত নির্মাণকারী একটি ব্যক্তিগত তৈরি যা দ্রুত-এর সঙ্গে সঙ্গে সংযোগ স্থাপন করতে পারে । যদি এই বিল্ডার (সাধারণ, নিরাপদ, সুরক্ষা, বা প্যাকেজ- ডি- ই নয়),, যে কোন থ্রেড নতুন একটি নিয়ম তৈরি করতে পারে, একটি নতুন একক- টাচ কোড তৈরি করতে পারে । এই নিয়মটি যদি একটি ক্লাসটি সংরক্ষণ করা হয়, তাহলে ভুল অক্ষর ব্যবহার করে সাজানো এবং তা সম্ভব হবে । (অথবা নিজে তৈরি করা হলে) । যদি কোন একক শ্রেণীকে অপরিবর্তিত রাখা হয়, তাহলে সংশ্লিষ্ট শ্রেণী অথবা struruiderstor- a are trered asergersersersting ast. itor- adravavavavid (নি) ।
২: ৯, ১০; প্রকা.
একটি সরল অলস সূচনার ফলে ভালো কাজ হয়:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
কিন্তু একটি মাল্টি- টাচ অ্যাপ্লিকেশন, দুই বা একাধিক থ্রেড দ্বারা বিভক্ত করা যাবে। এটি হল [FLT] যা যেকোনো থ্রেড নির্মাণ করার পূর্বে নির্মিত হওয়ার পূর্বে পরীক্ষা করে দেখা যাবে। প্রতিটি থ্রেডের জন্য এগিয়ে যাওয়া হবে [FL], চিহ্নিত বিন্যাসের মান : [F], বিভাজনের পদ্ধতি লঙ্ঘন করা হচ্ছে [F], সাধারণ মান] [F] [F]: [F] [F], দুটি] [F] এবং দুটি] সীমা উল্লেখ করুন
৩) সঠিকরূপে সুসংগতভাবে অলসকরণ ব্যবহার করা
এমনকি যে - নির্মাতারা থ্রেড নিরাপত্তার প্রয়োজনীয়তা উপলব্ধি করেন, তারা প্রায়ই সরলভাবে তা স্বীকার করেন ।
public static synchronized Singleton getInstance() { ... }
প্রতি বার [[[[F] [FLT] প্রাপ্ত এবং মুক্তির জন্য লক গ্রহণ করুন, এমনকি উদাহরণ হিসেবে নির্মিত হলেও, এই ঘরটি ভয়াবহভাবে অতিক্রম করে যেতে পারে । উচ্চ পর্যায়ের দৃশ্য । উচ্চ পর্যায়ের পরিক্রমণগুলিগুলি নিম্নমুখীভাবে ব্যবহার করা যেতে পারে [F] [F] [F], সবচেয়ে ভাল উপায় [F] ব্যবহার করা হচ্ছে [F], যদিও ০০০] [F]: fattp], কিন্তু এটি সঠিক নয়।
৪: ২) আপনি কি এই ধরনের একতায় অবদান রেখেছেন?
সুসংগতির জন্য ব্যবহৃত অ্যাপ্লিকেশনের তালিকা বৈধ নয় । বিস্তারিত: [[F] [FLT], [FLT], [FLT] ব্লক, [FOL], [FLT], [FORO এবং আরও বেশি সময়ের জন্য Hard] -round- providting- proviation] - avagered an optionsting asting a provausees], যদিও কিছু সুনির্দিষ্ট লক্ষ্য-resh (eoiceted) - aspergergertedia proctediaJes) - asending asending as
৫ [[[F][F][F][F][F][L]
জাভা, C, C++ ([F], [F][FR][FOPL][F2][FOPL][F2]][F1]]] [FR]] এর অনুরূপ বৈশিষ্ট্যের সাথে সুসংগতভাবে প্রদর্শিত হয় । বিভিন্ন ভাষার, প্রতি সেকেন্ডে সংশোধন করা যাবে না, কারণ, CPU অথবা কোনো সীমা উল্লেখ না করে, stify করা যাবে না । উদাহরণ: [F] এর ফলে, একটি পৃথক পংক্তিকে স্থানান্তর করা যাবে না, যা নির্দেশ করে, এটি 'FILLLUSLoiceoiceoiceoli - এর সাথে সুসংগত করা যাবে ।
থ্রেড-Setalsst3fsেশনের জন্য সর্বোত্তম অনুশীলন
এই গর্তগুলো এড়িয়ে চলো, এই প্রমাণগুলো যাচাই করে দেখা যায় ।
ব্যক্তিগত কনস্ট্রাক্টর ও উদ্দেশ্যকারী ইনস্ট্যান্সগুলি
শুরু করার কৌশল না করা হলে, নির্মাণকারীকে অবশ্যই ব্যক্তিগত থাকতে হবে । একটি সাধারণ ঘরের মধ্যে সংরক্ষণ করতে হবে । এই পদ্ধতিটি কোনোভাবে নির্মাণকারীকে প্রকাশ করবেন না এবং জাভা ([FFLT:] শ্রেণীকে (অথবা CL): CLAYOPL [L] হিসেবে বিবেচনা করবেন না ।
শুধুমাত্র প্রয়োজন অনুসারে সুসংগত করা ব্লক ব্যবহার করা হবে
অলসের প্রারম্ভিক শুরুতে, দ্বৈত পরীক্ষা লকিং বিন্যাসটি সুসংগতির জন্য হ্রাস পাচ্ছে:
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
Singleton result = instance; // Local variable for performance
if (result == null) {
synchronized (Singleton.class) {
result = instance;
if (result == null) {
instance = result = new Singleton();
}
}
}
return result;
}
}
এই কোড পরীক্ষা করুন [[F] ব্লকের বাইরে উপস্থিত উদাহরণের সাথে সুসংগতভাবে উল্লেখ করুন। : - উদাহরণের জন্য একটি থ্রেড নির্মাণ করে একটি থ্রেড নির্মাণ করা হবে। [F] [F] এর ফলে এই ঘরের উদ্দেশ্য স্থায়ীরূপে বর্জন করা হবে এবং নিশ্চিত করুন [F] [F] এর ফলে অন্যান্য বৈশিষ্ট্যগুলি মুছে ফেলা হবে। [F] [F] এর ফলে অন্যান্য বৈশিষ্ট্যগুলি মুছে ফেলা হবে এবং স্থানীয় ফোল্ডার [F]
প্রারম্ভিক সূচনা
একমাত্র যখন একমাত্রটনের প্রয়োজন হয় এবং সৃষ্টির জন্য তা সস্তা, তখন সে আবেদনের সূচনা সাধারণ থ্রেড-সেফ-সেফ-এর মত সহজ:
public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return INSTANCE;
}
}
শ্রেণীকে জভিএমের সাথে সংরক্ষণ করা হয়, তাই অতিরিক্ত সমন্বয় করা দরকার। কিন্তু, এটা শ্রেণীগত লোডের সময়, যা রিসোর্স-কনট্রেন সিস্টেমের উপর নির্ভরশীল অথবা যখন একমাত্র যখন একটি অপারেটিং কনফিগারেশন থাকে তখন তা ব্যবহার করে না।
স্থায়ী হোল্ডার বিন্যাস (in-dot-didd-re-didd)
এই বিন্যাসটি স্পষ্ট সুসংগতির সাথে যুক্ত নয় এমন থ্রেডের মধ্যে অলস শুরু করে:
public class Singleton {
private Singleton() {}
private static class Holder {
static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return Holder.INSTANCE;
}
}
[[[[[F]] শ্রেণী লোড করা হয় যখন [[F] প্রথম কল / ২২] এবং JVM শ্রেণী লোডের সময় নির্ধারিত ক্ষেত্রের গৃহ প্রকাশনার নিরাপদ বলে বিবেচনা করা হয় । এটি জাভাটনদের জন্য সবচেয়ে আকর্ষণীয় সমাধান ।
Enum-Bod S এককেজ (Java)
Joshu ব্লক [FLT] জাভাR[FOPL][FL][1] একটি এক বল ব্যবহার করে পরামর্শ:
public enum Singleton {
INSTANCE;
// methods and fields
}
enum কনস্ট্যান্ট- টি পুরোপুরি [FLT[[FLT] এবং জাভা ভাষা নিশ্চয়তা দেয় যে একবারই num- টি আক্রমণ অথবা প্রতিফলনের মাধ্যমে নির্মিত হয়, এটি উভয় থ্রেড-ফাইক এবং এন. এস. এস. সি. (শুধুমাত্র ইন্টারফেস) ক্লাস প্রসারিত করতে পারে না, তাই তারা সব ধরনের ক্ষেত্রে প্রযোজ্য নয় ।
C++ ও C-র মধ্যে সমতুল্য বিন্যাস #
C++,[FLT][[F] M[FO][FO][FO][F][F][Q]] স্বয়ংক্রিয়ভাবে লগ-ইন করার পর থেকে সক্রিয় করা হয়:
Singleton& getInstance() {
static Singleton instance;
return instance;
}
C##, [FLT:] শ্রেণী একটি নির্মিত থ্রেড-সেফ অলস প্রক্রিয়া সরবরাহ করে:
public class Singleton {
private static readonly Lazy<Singleton> _lazy =
new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance => _lazy.Value;
}
ইঞ্জিনিয়ারিং অ্যাপ্লিকেশনগুলি পরিদর্শন এবং বিবেচনা করুন
ইঞ্জিনিয়ারিং অ্যাপ্লিকেশনের মধ্যে, এককটন বিন্যাসটি প্রায়শই হার্ডওয়্যার ড্রাইভার, কনফিগারেশন বৈশিষ্ট্য, থ্রেড পুল অথবা লগিং সার্ভিসের মতো সামগ্রী পরিচালনা করে থাকে। একাধিক- ব্যাপী এই ধরনের একক চেকিং পরীক্ষা করতে হবে:
- [[[F][F] উদাহরণের মাধ্যমে একটি উপায় নির্ধারণ করুন উদাহরণ:[FFLT], একটি সুরক্ষিত XFOD [FOD], পরীক্ষা দ্বারা শুধুমাত্র পরীক্ষামূলক পদ্ধতিতে ব্যবহৃত পদ্ধতি (যেমন, পরীক্ষা করা হয়) অথবা একটি অ্যাপ্লিকেশনের মাধ্যমে সম্পূর্ণভাবে বিভিন্ন ধরনের লাইসেন্সের মাধ্যমে সমস্ত প্রকার নিয়ন্ত্রণ এড়িয়ে যাওয়া পরিহার করা হয় ।
- [[[[F] PROPL] [FLT][F]] রিয়েল- টাইম[FOP][1]]: কিছু কিছু ক্ষেত্রে, অল্প কিছু ক্ষেত্রে, লক-মুক্ত [FONP] ব্যবহার করে লক-টু-AP [FO [F] [F] [F]:[L]] অথবা[[F]]] এর সাথে সুসংগতভাবে প্রযোজ্য নয়।
- [[[[F] DOPRIB] [FLT][FLT]] প্রয়োজন [FLT], প্রসেসের মধ্যে উপস্থিত সকল প্রসেসের সাথে একক আর্গুমেন্ট উপস্থিত না থাকলে একটি একককে প্রয়োজন । যদি আপনি প্রয়োজন বোধ করেন, তবে আপনাকে বাইরের সমন্বয়, ডাটাবেস, বা নেতা হিসেবে একটি ডাটাবেস ব্যবহার করতে হবে ।
- [[F] পুনঃপ্রচলন ও ধারাবাহিককরণ[F] জাভাবিভাগিক পরিবর্তন [FO] পপ- আপ বিকেন্দ্রে বিভক্ত করা যাবে । [F3] [F3] [F1] ব্যবহার করুন এবং দ্রুত বিভেদ সৃষ্টিতে কোনো ব্যতিক্রম না করে utivedL [FOL]: [F32]
অন্তর্ভুক্ত
একাদশতম নকশাটি সফটওয়্যার ইঞ্জিনিয়ারের টুলবক্সের একটি মূল্যবান সরঞ্জাম হিসেবে কাজ করে, কিন্তু এর প্রয়োগ মাল্টি-স্ট্রেইট পরিবেশে গভীর মনোযোগ আকর্ষণের দাবি করে। সাধারণ ভুল বোঝাবুঝির কারণে, অনধিকারিকভাবে ব্যর্থ, অনধিকার-অভিপ্রেক্ষিত এবং উচ্চমানের ব্যবহারকের জন্য সমান-ক্ষমতা, এবং উচ্চ মানের সমন্বয়-ক্ষমতা বৃদ্ধি করে এমন একটি পদ্ধতি যা আধুনিক মানের এবং একটি একক বৈশিষ্ট্যের সাথে খাপ খাইয়ে নিতে পারে।
আরো তথ্যের জন্য, নিম্নলিখিত রিসোর্সের কথা উল্লেখ করুন:
- [[F] Witedia: একটি একক দিশা [FO] [FOP] [FOP] [L]
- [[F][OF] জাভা জাভা TABROPER[FO]
- [[F] [F] ext b] "Dolated লকিং" ত্রুটিপূর্ণ।[FO][F[1]
- [[F] [%s]: .desktop [F]
সবচেয়ে প্রথমে, একমাত্র এককটন বাস্তবায়নই হল আপনার চাহিদার সবচেয়ে সহজ বাস্তবায়ন ।