engineering-design-and-analysis
الاستخدام الفعال لجمعيات الجاوا: النظرية والتنفيذ ومقاييس الأداء
Table of Contents
ويمثل إطار جمعيات الجافا أحد العناصر الأساسية والأقوى في لغة البرمجة في جافا، وهو يوفر هيكلا موحدا لتمثيل المجموعات والتلاعب بها، وهي مجموعات من الأشياء، ويمكن فهم كيفية الاستفادة من هذه المجموعات بفعالية أن يحسن أداء التطبيق وقابلية الحفاظ على الشفرة، مما يجعلها مهارة أساسية لكل مطور من جافا.
سواء كنت تبني تطبيقا بسيطا للمنفعة أو تصمم نظاما واسع النطاق للمؤسسة، إطار جمع البيانات يوفر هياكل البيانات اللازمة والمقاييس اللازمة للتعامل مع البيانات بكفاءة، هذا الدليل الشامل يستكشف النظرية، واستراتيجيات التنفيذ، وخصائص الأداء، وأفضل الممارسات للعمل مع جمعيات الجافا في التطبيقات الحديثة.
فهم الهيكل الإطاري لمجموعة جوا
ويشمل برنامج جافا إطاراً للجمعيات، وهو موضوع يمثل مجموعة من الأشياء (مثل فئة ناقلات الأمراض التقليدية).() وإطاراً للجمعيات هو هيكل موحد لتمثيل المجموعات والتلاعب بها، مما يتيح التلاعب بالمجموعات بمعزل عن تفاصيل التنفيذ.
إطار جمعيات الجافا يوفر مجموعة من الوصلات البينية (مثل القائمة والمجموعة والخريطة) ومجموعة من الفصول (الآررايليست، هاشمب، إلخ) التي تنفذ تلك الوصلات البينية، كل هذه جزء من مجموعة الجيبوتيل، هذا التصميم القائم على الوصلات البينية هو أحد أكبر نقاط القوة في الإطار، مما يسمح للمطورين بكتابة مدونة مرنة وقابلة للاستمرار يمكن بسهولة أن تُبِّرَ التنفيذ.
أوجه التقاطع الأساسية وأغراضها
وتقسم واجهات جمع البيانات إلى مجموعتين، وأبسط واجهة، هي الجيبوتيل، والربط بين الفينة، هي: القائمة، المجموعة، والكوين، وكل واجهة تحدد السلوكيات والعقود المحددة التي يجب أن يتبعها التنفيذ.
تمثل واجهة مجموعة مُأمر بها تسمح بازدواجية العناصر، وتحتفظ القوائم بترتيب الإدخال وتوفر إمكانية الوصول إلى المواقع عن طريق العمليات القائمة على المؤشرات، وتشمل التنفيذات المشتركة التصوير والربط بين عناصر الحرف وفيكتور.
The Set] interface models mathematical set abstraction and does not allow duplicate elements. Sets are ideal when you need to ensure uniqueness within a collection. Popular implementations include HashSet, LinkedHashSet, and TreeSet.
The Queue] interface is designed for holding elements prior to processing. Queues typically order elements in a FIFO (first-in-first-out) manner, though priority queues and other variations exist. Common implementations include LinkedList, PriorityQueue, and ArrayDeque.
أما الوصلات البينية الأخرى في جمع البيانات فهي تستند إلى الجيب.
ألف - الجوانب الرئيسية لإطار جمع التبرعات
والمزايا الرئيسية لإطار جمع البيانات هي: تخفيض جهود البرمجة بتوفير هياكل البيانات والمقاييس بحيث لا تكون مضطرة لكتابتها بنفسك، وزيادة الأداء بتوفير عمليات تنفيذ عالية الأداء لهياكل البيانات والمقاييس، ونظراً إلى أن مختلف عمليات تنفيذ كل واجهة قابلة للتبادل، يمكن أن تُحسب البرامج بتغيير عمليات التنفيذ، مما يوفر إمكانية التبادل بين اللغات غير المتصلة بإنشاء نظام موحد.
هذا التوحيد يعني أن المطورين يمكنهم التركيز على منطق الأعمال بدلاً من إعادة تصميم عمليات تنفيذ هيكل البيانات
بعمق القيد في القائمة
والقوائم من بين أكثر المجموعات استخداما في تطبيقات جافا، فهم الاختلافات بين شركة آري ليت وشركة لينكيدليس أمر حاسم لاتخاذ قرارات تنفيذ مستنيرة يمكن أن تؤثر تأثيرا كبيرا على أداء التطبيقات.
ArrayList: Dynamic Array Implementation
ويدعم التصويب صفيفة قابلة للاسترداد (عنصر (Object[]) - عندما تصبح المجموعة كاملة، فإنه يخلق صفيفة جديدة أكبر وينسخ العناصر القديمة التي تستخدم نظاما.
الـ(آريليس) أسرع من كل شيء تقريباً في الممارسة العملية وحدات الشرطة المركزية الحديثة تُستخدم على الوجه الأمثل لإستخدام الذاكرة المتتابعة، والتي تستغلها صفيفة (أريليست) المتلاصقة، وهذا التصميم المُناسب للكيمياء يعني أنه عندما يقوم وحدة مكافحة الفساد بتحميل عنصر واحد في المخبأ، تأتي العناصر المجاورة إلى جانب أداء التكرار الحر والمحسن بشكل كبير.
وتوفر قدرة الرايليين على الوصول العشوائية إلى الموقع درجة حرارة أو (1) من التعقيد الزمني للحصول على العمليات، مما يجعلها مثالية للسيناريوهات التي كثيرا ما تُتاح فيها العناصر بالأرقام القياسية، غير أن الإدخالات والخروج في منتصف القائمة تتطلب عناصر تحوّل، مما يؤدي إلى تعقيد الوقت بالنسبة لهذه العمليات.
مؤسسة ليندليس: هيكل نويدي مفكّر بصورة مزدوجة
ويُنفَّذ نظام الربط الشبكي كقائمة مترابطة بصورة مزدوجة، ويُخزَّن كل عنصر في نُظم تتضمن إشارات إلى عقدين سابقين وقادمين، ويتيح هذا الهيكل إدخالاً وحذفاً فعالاً في مواقع معروفة، ولكن يُضاف إليه رأس كبير.
"الربط بينت ليت" يُسبب فقداناً للكميات لأنّه يمكن تفريق الأوعية في جميع أنحاء الذاكرة، لا يمكن لوحدة مكافحة الإرهاب أن تُعدّ بياناتً مُسبقةً، مما يؤدي إلى تدهور الأداء مقارنةً بـ"الآرايليست" في معظم السيناريوهات.
بما أن (لينكدليس) يمكن أن يُنثر عشوائياً حول الذاكرة، فلا يوجد طريقة لتحميلها في المخبأ فوراً، عليك أولاً أن تحصل على عنصر وتتحقق من الإشارة التالية قبل أن تتمكن من الحصول عليها، ويجب أن يُتاح لكل عنصر على حدة، أكثر من 10 إلى 100 مرة من العناصر في أررايليس.
مقارنة الأداء والعلامات المرجعية
هذا غير متوقع، لأن شركة (لينك ليست) تقارن بشكل أفضل، لا سيما عملية الإدخال، ولكن لأن هذه الخوارزمية الفعالة تنفذ على جهاز يجعل من المرشد يطارد باهظ التكلفة، يصبح هذا الرؤوس العامة مهيمناً ويجعلها غير فعالة.
وتظهر النتائج البارزة باستمرار أن شركة آريليس تحتفظ بأداء أعلى في معظم العمليات، وعندما تصل إلى عناصر في منتصف القائمة، تصبح الفجوة في الأداء هائلة، وبالنسبة لقائمة تضم 000 10 عنصر، يمكن لشركة آري ليست أن تصل إلى العنصر الأوسط في حوالي 1.5 ثانية، بينما تتطلب شركة لينكدلست ما يقرب من 836 7 ثانية نانو - أكثر من 000 5 مرة.
ولرابطة الليزر صفتان على شركة آري ليت: إدراج شركة لينكدليس في بداية القائمة، ولها ميزتان على شركة آري ليست: فالوقت الذي يستغرقه إدخالها لا يتوقف على حجم القائمة، لأن هناك إشارة مباشرة إلى العنصر الأول من القائمة، ولا يمكن أن يحدث مطاردة النقاط إلا مرة واحدة، على الأكثر.
هذه حالتان من قضايا الاستخدام حيث يكون لون الخط لينكدليس مثيرا للاهتمام، ويؤديان بشكل أفضل، أو على نحو شبه مع شركة آريليس: يعملان في بداية القائمة أو في نهاية القائمة، ويمكن أن تكون العملية قد قرأت أو تدرج أو حذفت، وتكلف في الواقع نفس التكاليف التي تُدرج، وفي الواقع، فإن شركة " لينكيد ليست " هي عمليات جيدة جدا أو مسدودة، وعندما تصل إلى قوائم منتظمة، لا تكون جيدة.
متى تستخدم كل عملية
استخدموا الرايليست بالخطأ، والصورة قبل التحول، وهذه النصيحة تعكس الواقع الذي يؤديه آريليس بشكل أفضل في الغالبية العظمى من سيناريوهات العالم الحقيقي، ولا ينتقل إلا إلى لينكليست عندما تكون لديكم شروط محددة تبرر ذلك.
استخدمي الـ(آري ليت) عندما يكون الأداء مهمًا للوصول إلى الرقم القياسي وعندما تكون التعديلات في النهاية، استخدمي (لينكدليس) عندما تحتاجين إلى إدخالات وحذف سريعين من كلا النهايتين، و الدخول العشوائي ليس ضرورياً، وقاعدة الإبهام، إذا لم تكوني متأكدة، تبدأي بالـ(أريليست)، فالأمر أسرع في معظم السيناريوات العامة الغرض.
ويُشرق الوصل بين اللبنات كسؤال أو تنفيذ يُلغى فيه، حيث تُضاف العناصر أساساً إلى غاية واحدة وتُحذف من الأخرى، أما بالنسبة لعمليات القائمة العامة الغرض التي تنطوي على الوصول العشوائي أو التكرار أو التعديلات في المواقف التعسفية، فإن شركة آري ليست هي الخيار الأفضل تقريباً.
Map Implementations: HashMap vs TreeMap
وتشكل الخرائط هياكل أساسية للبيانات تربط بين المفاتيح والقيم، مما يتيح عمليات البحث الفعالة، ويوفر إطار جمعيات الجافا عدة عمليات لتنفيذ الخرائط، ويحقق كل منها أفضل استخدام في مختلف حالات الاستخدام.
HashMap: Hash Table Implementation
وبالنسبة للمشاهدات البسيطة ذات القيمة الرئيسية، فإن هاشمب يُعد دائما أسرع في قضية O(1) ضد O(log n). ويستخدم هاشمب طاولة هزة داخليا، ويحسب رمزا للهكة لكل مفتاح لتحديد مكان تخزين القيمة المرتبطة به، وهذا يوفر أداء دائم للعمليات الأساسية مثل الحصول على وطرحها، مع افتراض وظيفة جيدة في مجال الحشيش وعامل تحميل مناسب.
(هاشمب) لا يُبقي على أي أمر بمفاتيحه، وعندما تُكرّر على (هاشمب)، فإن ترتيب العناصر غير قابل للتنبؤ وقد يتغير مع تعديل الخريطة، وهذا الافتقار إلى النظام هو المفاضلة في تحقيق أداء متوسطي (أو 1).
أداء (هاشمب) يعتمد بشدة على نوعية تنفيذ (الثاتش كودي) للأجسام الرئيسية، إذا وضعت أشياء تقليدية في (هاس سيت) أو استخدمتها كمفاتيح (هاشمب) يجب أن تتغلب على (الثدي كودي) وتساوي (الكسر) لهذا العقد ومجموعتك تفقد قيودها بصمت
TreeMap: Red-Black Tree Implementation
استخدمي (تري ماب) عندما تحتاجين مفاتيح أو استفسارات مفصّلة (الفصل، الرأس، ذيل ماب) وتحتفظ (تريمب) بمفاتيح مصنّفة باستخدام هيكل بيانات شجرة مُتشدّد، وهذا الأمر يأتي في عمليات تكاليف الأداء له تعقيدات زمنية (اللوغاريون) بدلاً من (هاشمب أو (1)).
تُخرج (تري ماب) عندما تحتاج إلى الحفاظ على ترتيب مُفرز أو إجراء استفسارات قائمة على النطاقات، طرق مثل (غومب) و(رأس موب) و(ذيل موب) تسمح لك باستعادة أجزاء من الخريطة بكفاءة على أساس النطاقات الرئيسية، وستكون هذه العمليات باهظة الثمن أو مستحيلة مع (هاشمب).
ويجب أن تكون المفاتيح في خريطة شجرة قابلة للمقارنة، إما عن طريق تنفيذ واجهة قابلة للمقارنة أو عن طريق توفير مقارنات لمبنى تريمب، وهذا الشرط يضمن أن تكون الشجرة قادرة على الحفاظ على النظام المناسب.
الاختناق بين هاشمب وتريماب
ويدل هذا المثال على سبب اختيار مسائل التحصيل الصحيحة: هاشمب للبحث عن أو (1)، وتري ماب للاستفسارات المحددة النطاق، و " مجموعة من أجل التحلل الطبيعي " ، وينبغي أن يكون الاختيار بين هاشمب و " تريمب " مدفوعاً بمتطلباتكم المحددة.
استخدم (هاشمب) عندما تحتاج إلى مشاهدات سريعة ذات قيمة رئيسية ولا تهتم لأمر المفاتيح هذا يغطي معظم حالات الاستخدام حيث تستخدم الخرائط
وبالنسبة للطلبات التي تحتاج إلى النظر السريع وإلى أمر تكرار يمكن التنبؤ به (ولكن ليس بالضرورة ترتيباً مصفّياً)، فإنها تُعتبر شركة " لينكد هاش ماب " ، وهي تحافظ على نظام الإدراج، مع توفير نفس الأداء تقريباً الذي يُقدّم به هاشمب.
تحديد حالات التنفيذ والاستخدام
فالمجموعة هي مجموعات لا تحتوي على عناصر مكررة، وهي تُمثل المشهد الافتراضي، وهي أساسية عندما يكون الفريد شرطاً، ويوفِّر إطار جمعيات الجافا عدة عمليات تنفيذية محددة، لكل منها خصائص متميزة.
HashSet: Hash Table Set
(هاتش سيت) هو أكثر عمليات تنفيذ المجموعة شيوعاً، وهو يستخدم عناصر هاشمب داخلياً، تخزن كمفاتيح ذات قيمة دمية، وهذا يعطي هاس سيت نفس الأداء المتوسط للأوراق O(1) لإضافة، وإزالتها، وتتضمن عمليات.
مثل هاشمب، هاس ست لا يحافظ على أي أمر من العناصر، ولا يمكن التنبؤ بأمر الإرسال ولا ينبغي الاعتماد عليه، وهاشت سى مثالي عندما تحتاج إلى التحقق بسرعة من العضوية أو ضمان الفريد دون الاهتمام بأمر العناصر.
ويقتضي هذا المشروع أن تنفذ العناصر على النحو المناسب أساليب التهوية والتكافؤ، وأن يكون نفس العقد الذي ينطبق على مفاتيح هاشمب ينطبق على عناصر هاس سيت التي تنتهك هذا العقد قد يؤدي إلى ازدواج العناصر أو فقدان البيانات.
TreeSet: Sorted Set Implementation
وتحتفظ شركة تري سيت بعناصر مفرزة حسب ترتيبها باستخدام خريطة شجرة داخلي، شأنها شأن شركة تريمب، تقدم أداء أو (مدون) للعمليات الأساسية، ولكنها تضمن أن العناصر تفرز دائما وفقا لترتيبها الطبيعي أو مقارنتها.
الشجرة مفيدة عندما تحتاج إلى مجموعة تحافظ على النظام أو عندما تحتاج إلى القيام بعمليات النطاق على العناصر المُحددة، إنها توفر طرقاً مثل الرأس، و ذيل ستي، و مُسَتَحَلَة لاستعادة أجزاء المجموعة استناداً إلى قيم عنصرية.
لينكد هاشتسيت: أمر إيطالي
ويمتد نطاق شركة لينكد هاشتسيت ويحتفظ بقائمة متشابكة مزدوجة من القيود للحفاظ على أمر الإدخال، ويوفر نظاماً للتكرار يمكن التنبؤ به مع الحفاظ على نفس الأداء تقريباً الذي يُحتذى به هاس ست، وهذا يجعله مثالياً عندما تحتاج إلى عمليات سريعة وإلى طلب يمكن التنبؤ به.
ويحتاج هيكل القائمة الإضافية المرتبطة بالقائمة إلى مزيد من الذاكرة أكثر قليلا من هاسست، ولكن رأس الأداء العام هو الحد الأدنى، ولينكد هاش ست خيار ممتاز بالنسبة لتصورات التأشيرات حيث تريد الاحتفاظ بأمر إدخال سياسات الإخلاء الخاصة بالوحدة (الاستعمال مؤخرا)().
مقاييس الأداء وتحليل تعقيد الوقت
فهم مدى تعقيد عمليات جمع البيانات أمر أساسي لكتابة تطبيقات جافا ذات الأداء، لكن النظرية الكبيرة لا تُخبر دائماً أداء العالم الحقيقي كله يعتمد على خصائص المعدات، وأنماط الوصول إلى البيانات، وتفاصيل التنفيذ.
عناصر التعقيد الزمني
ويصف مدى تعقيد الوقت كيف أن جدول العمليات يمتد إلى حجم المدخلات، وتشمل فئات التعقيد المشتركة ما يلي:
- الوقت في العملية لا يعتمد على حجم التحصيل، ومن أمثلة ذلك هاشمب.
- O(log n) - Logarithmic Time:] Operation time grows logarithmically with size. Examples include TreeMap.get and binary search operations.
- O(n) - Linear Time:] Operation time grows linearly with size. Examples include LinkedList.get.
- O(n log n) - Linearithmic Time:] Common for efficient sorting algorithms like Collections.sort
- O(n2) - Quadratic Time:] should generally be avoided in production code except for small datasets.
التحليل المُستشف
عملية الإضافة للـ(آري ليست) عادةً هي (أو) ولكن أحياناً تتطلب إعادة تشغيل الصفيفة الداخلية التي هي عملية (أو)
حتى لو كان سعر إعادة التوزيع مرتفعاً لأنه نادراً ما يحدث، فإن الضربة على أداء طلبك تُعدّل، تذكر أنّك تستطيع (ويجب أن تفعل ذلك) أن تخلق مصممك الضارب بالحجم المناسب كلما أمكنك، وعلى العموم، من الخطأ الاعتقاد بأن سعر إعادة التوزيع هو حجة ذات صلة بفضّل (لينكيد ليست) على الأريليس.
عندما تعرف حجم مجموعتك مقدماً، فإن استهلال شركة آريليس ذات القدرة المناسبة يمكن أن يزيل إعادة الرؤوس العامة بالكامل، وهذا البسيط يمكن أن يوفر تحسينات قابلة للقياس في الأداء في حلقات ضيقة أو أساليب كثيرة الإسم.
أنماط الاستهلاك الذاكرة
ويتفاوت استخدام الذاكرة تفاوتا كبيرا بين أنواع جمع الأموال ويمكن أن يؤثر على الأداء وعلى النطاقات، ويخزن عناصر الرايليست في صفيفة متقاربة، ويوفر موقعا ممتازا للذاكرة، ولكنه قد يهدر حيزا بسبب الإفراط في التوزيع.
ويحتاج الوصل إلى ذاكرة إضافية للأجسام المعينة، تتضمن كل منها إشارات إلى عناصر سابقة وعناصر أخرى، وفي التطبيقات الحساسة للذاكرة، يمكن أن يصبح لينكدليس عقبة في الأداء بسبب الضغط الذي يمارسه مجلس الإدارة، ويزيد من المخصصات الإضافية للجسم من رأس جمع القمامة، مما يمكن أن يؤثر تأثيرا كبيرا على أداء تطبيقات.
ويحتفظ هاشمب وهاشم ست بمجموعات داخلية من الدلو، حيث يحتمل أن يحتوي كل دلو على قيود متعددة، ويحدد عامل الحمولة (العجز 0.75) متى تستعيد الخريطة، ويقلل عامل الحمل من احتمال الاصطدام، ولكنه يزيد من استخدام الذاكرة، بينما يوفر عامل تحميل أعلى الذاكرة ولكنه قد يتدهور الأداء.
الأداء في مجال الخياش والنظر في برامجيات البرمجيات
لتقليل فقدان المخبأ، عندما يريد وحدة منع الحمل الحصول على البيانات في العنوان X في RAM، لن يجلب البيانات في العنوان X فحسب، بل أيضاً في حي العنوان X. لأننا نفترض أنه إذا تم الإشارة إلى موقع معين للذاكرة في وقت معين، فمن المرجح أن يشار إلى مواقع الذاكرة القريبة في المستقبل القريب، وهذا ما نسميه موقعاً مرجعياً، لذا، إذا كانت البيانات التي ستعالجها وحدة التفتيش المشتركة في المستقبل
على عكس الصفوف التي هي هيكل بيانات سهل التأقلم لأن عناصرها توضع بجانب بعضها البعض، عناصر من القائمة ذات الصلة يمكن وضعها في أي مكان في الذاكرة، لذا عندما ترتد من خلال قائمة مترابطة، سيسبب الكثير من فقدان الماشي (بما أننا لا نستطيع الاستفادة من موقع المرجع)، وسيدخل الكثير من النفقات العامة للأداء.
ويؤثر هيكل وحدة تحليل البرامجيات الحديثة تأثيراً كبيراً على أداء جمع البيانات، كما أن هياكل البيانات الصديقة للخوخ مثل نظام آري ليت تفوق كثيراً الهياكل القائمة على مؤشرات مثل هياكل لينكدليس، حتى عندما يشير التعقيد النظري إلى خلاف ذلك، وهذا الواقع هو السبب في أن شركة آري ليست أسرع من شركة لينكدليس في معظم العمليات في الممارسة العملية.
مجموعة مواد السلامة والتجميعات المشتركة
ويجب أن تبرمج بعناية التطبيقات التي تستخدم مجموعات من أكثر من خيط واحد، وهذا معروف عموماً بالبرمجة المتزامنة، ويشمل منهاج جافا دعماً واسعاً للبرمجة المتزامنة، وفهم السلامة من حيث القراء أمر حاسم في بناء تطبيقات قوية متعددة القراء.
المفرقعات المتسلسلة
تقدم فئة الخدمات العامة المتزامنة طرقاً متزامنة للغطاء يمكن أن تجعل أي مجموعة من الأشياء آمنة، طرق مثل التجمّعات، النسيج المتزامن، التجمّعات، التجمّع، التسلسل المتزامن، التجمّعات.
تجنب التحصيلات - المظلة المتزامنة - تلف كامل الخريطة في قفل واحد ولا تزال تتطلب تزامنا يدويا أثناء التكسير، وتوفر هذه اللفافات الأمان الأساسي ولكن لها قيود كبيرة، وتستخدم القفل المكسور الذي يمكن أن يخلق اختناقا في التطبيقات المتزامنة للغاية.
عمليات الجمع الجارية
استخدام المركب المتزامن للخرائط وأجهزة التصوير المطبعي للقوائم الجاهزة، وتوفر مجموعة الـ(جوفا) المُتَعَدّدة عمليات تجميع متخصصة مصممة للوصول المتزامن دون التزامن خارجي.
يستخدم (كونكرنت هاشمب) نظاماً للتعري لإتاحة قراءة وكتابة العديد من الخيوط في وقت واحد دون أن يحجب بعضها بعضاً، وهو يوفر إمكانية أفضل من تزامن (هاشمب) مع الحفاظ على سلامة الخيوط، وكونكرنت هاشمب هو المثالي للسيناريات ذات القراء العالية والكتابة المتزامنة.
يقوم مُنظمة طباعة مُطبعة مُعدّلة بنسخة جديدة من المجموعة الأساسية لكل تعديل، هذا يجعل الكتابة مكلفة، لكن يسمح بالقراءة بدون أيّ قفل، إنّها مثالية للسيناريات التي يُكتب فيها عدد يفوق كثيراً عدد الكتابات، مثل قوائم المستمعين أو بيانات التشكيل.
وكثيراً ما تستخدم المجموعات بحيث تُدرج في مؤشرات الأداء التطبيقية مختلف أوجه الترابط المتزامنة وتنفيذ المجموعات، وتتجاوز هذه الأنواع ملف التواؤم الذي سبقت مناقشته لتوفير سمات كثيراً ما تكون مطلوبة في البرمجة المتزامنة.
الفايل فاست ضد الفايل - سافي إيتيراتور
ويرمي المهاجمون المتخلفون على الفور معترضاً على التطويع إذا تم تعديل المجموعة أثناء التكرار، بينما لا يقوم المجهزون بسلامة الفشل، ويرمي المسافرون (مثلهم من أجل أرايليست وهاشمب) على الفور بإستقبال مكثف إذا كان التجميع الأساسي معدّلا هيكلياً (باستثناء طريقة إزالة المفاعل) بعد ذلك.
إن السلوك الفاشل يساعد على اكتشاف أخطاء البرمجة في وقت مبكر عن طريق وضع استثناءات عند اكتشاف تعديل متزامن، غير أن هذا السلوك غير مضمون ولا ينبغي الاعتماد عليه في تصحيح البرنامج، بل هو مساعدة مضللة، وليس آلية لمراقبة التطابق.
المجهزون المؤمنون المصابون بمرض الفشل، الذين يستخدمون مجموعات متزامنة، يعملون على طلقات أو مستنسخة من المجموعة، ولا يلقون أبداً اعتراضاً على التطويق، ولكنهم قد لا يعكسون أحدث حالة من هذه المجموعة، وهذه المقايضة مقبولة في العديد من السيناريوهات المتزامنة التي يكون فيها الاتساق في نهاية المطاف كافياً.
أفضل الممارسات لاستخدام جفاف
لكتابة قانون جافا الكفؤة والثابتة والخالي من الحشرات من المهم اتباع أفضل الممارسات عند العمل مع إطار جمعيات الجافا
Program to Interfaces, Not Implementations
دائماً ما تعلن جمعياتها باستخدام أنواعها من الوصلات البينية (القائمة، المجموعة، الخريطة) بدلاً من الفصول المحددة (الآريليس، هاسستيت، إلخ) مما يجعل شفرتها أكثر مرونة وأسهل على المفاعل، وهذا المبدأ الأساسي للتصميم الموجه نحو الجسم يسمح لك بتغيير التنفيذ دون التأثير على رمز العملاء.
فعلى سبيل المثال، أعلنوا أن المتغيرات بدلاً من ، وهذا يتيح لكم التحول إلى شركة " لينكدليس " أو تنفيذ آخر للقائمة في وقت لاحق إذا تغيرت المتطلبات، دون تعديل الرمز الذي يستخدم المجموعة.
اختيار نوع المجموعة الصحيحة
ولكل مجموعة خصائص أداء فريدة، ويمكن أن يؤدي اختيار المجموعة الخاطئة إلى عدم الكفاءة، ففهم مواطن القوة والضعف في كل نوع من أنواع المجموعات أمر أساسي لتحقيق الأداء الأمثل.
هل تحتاج إلى دخول عشوائي؟ هل هناك تواتر في الإدخال وحذف؟ هل تحتاج إلى الحفاظ على النظام؟ هل هناك حاجة إلى الفريد؟ الإجابة على هذه الأسئلة سترشدك إلى نوع التحصيل المناسب.
بدء عمليات التحصيل مع القدرة المناسبة
عندما تعرف حجم المجموعة تقريباً، تبدئها بقدرة مناسبة، وهذا يحول دون إعادة التشغيل غير الضروري ويحسن الأداء، وبالنسبة لـ(آريليس)، استخدم البناء الذي يقبل القدرة الأولية، وحساب القدرة الأولية على إنتاج هاشمب وهاشت، استناداً إلى الحجم المتوقع وعامل التحميل.
The formula for HashMap initial capacity is: ]. With the default load factor of 0.75, if you expect 100 elements, initialize with capacity of approximately 134 to avoid resizing.
استخدام مجموعات المواد الانشطارية عند الاقتضاء
تقديم الدعم المبني للمجموعات غير القابلة للتداول من أجل تعزيز التوافق الأكثر أمانا وتيسير ممارسات البرمجة الوظيفية، ولا يمكن تعديل عمليات الجمع بعد الإنشاء، وتوفير السلامة دون التزامن، ومنع التعديل العرضي.
(جافا 9) استحدثت أساليب مصنع مثل القائمة، وهى، وهى، وهى، وهى طريقة لإيجاد مجموعات غير قابلة للتعديل، وهذه أكثر كفاءة من إنشاء مجموعات من الطوابق ولفها بالمجمعات.
فهم مجموعات الحجم الثابت
قوائم أعيدت بواسطة (أرايس) ، (النظام اللامع) ثابتة لا يمكنك إضافة أو إزالة العناصر هذا مصدر مشترك للأخطاء التي لا تُعرف
إذا كنت بحاجة إلى قائمة متغيرة من صفيفة، إنشاء مصمم جديد للتصوير: .
تنفيذ نظام " هض كودو " و " المساواة " بشكل صحيح
وعند استخدام الأشياء الجمركية كمفاتيح في هاشمب أو عناصر في هاسست، يكون التنفيذ السليم للحشرات وتساويها أمراً بالغ الأهمية، ويجب أن تحافظ هذه الأساليب على العقد: يجب أن يكون للأجسام المتساوية نفس الرمز الهزازي، رغم أن الأشياء ذات الرمز الحاجزي لا تحتاج إلى أن تكون متساوية.
وتولد سجلات حديثة لـ (جافا) تلقائياً عمليات تنفيذية سليمة في إطار نظام " هتش كود " و " متساوية " ، مما يجعلها مثالية لاستخدامها كمفاتيح خرائط أو عناصر محددة، وعند استخدام الطبقات العادية، تكفل تنفيذ كلتا المنهجين على نحو متسق، مع مراعاة جميع المجالات التي تحدد المساواة.
استخدام المواد الجينية لسلامة النوع
تستخدم دائماً المواد العامة عند العمل مع المجموعات، وتوفر المجموعات العامة السلامة من النوع الذي يجمع الوقت، وتلتقط الأخطاء من النوع في التجميع بدلاً من الوقت الذي يستغرقه الزمن، وتقضي أيضاً على الحاجة إلى التلقيم عند استرجاع العناصر من المجموعات.
تجنب الأنواع الخام مثل أو بدلاً من ذلك، استخدام أنواع مُعَبَّرة مثل أو ].
تقنيات جمع البيانات المتقدمة والعقيدات
وتوفر فئة الخدمات العامة في مجموعة الجمعات خامرات عديدة للتلاعب بالجمعيات، وهذه الأساليب تنفذ عمليات مشتركة بكفاءة وينبغي تفضيلها على البدائل المزودة باليد.
المبالغ المحصلة
وتوفر طريقة الجمع والفرز بكفاءة للقوائم، وتستخدم فرزاً معدلاً من نوع الدمج (تيمسورت) يوفر أداءً لأسوأ الحالات (السجلات غير الرسمية) ويحقق أداء جيد في البيانات التي تم فرزها جزئياً.
وللطلب الطبيعي، يرجى الاتصال .() وللاطلاع على الطلب المعتاد، يوفر مقارن: .].() وتقدم شركة Java 8+ طريقة القائمة.
عمليات البحث
وتبحث عمليات التجميع - البحث الملزم - في قوائم مصنَّفة، مما يوفر أداء (اللوائح) - ويجب فرز القائمة قبل البحث، سواء كان ذلك طبيعيا أو وفقا لمقارنات موفَّرة، وتعيد عمليات التفتيش الملزمة مؤشر العنصر إذا وجدت، أو قيمة سلبية تشير إلى نقطة الإدراج إذا لم تعثر عليها.
بالنسبة للجمعات غير المرخصة، استخدم طريقة التجميل أو التكرّر من خلال المجموعة، بينما هذه (أو) هي الخيار الوحيد للبيانات غير المُرصّدة، من أجل البحث المتكرر في مجموعات كبيرة، النظر في استخدام مجموعة أو خريطة بدلاً من قائمة.
الخنق والعكس
وتُحييّن المجموعات بشكل عشوائي قائمة مفيدة لمهام التأشير، وتعكس المجموعات ترتيب العناصر في قائمة، وتعمل كلتا المنهجيتين في مكانها، وتعدّل القائمة الأصلية.
وتُنفَّذ أساليب الفائدة هذه بكفاءة وتعالج القضايا المرفوعة معالجة صحيحة، وينبغي تفضيلها على التنفيذ اليدوي، الذي يكون عرضة للخطأ وأقل كفاءة في كثير من الأحيان.
البحث عن الحد الأدنى والحد الأقصى
(ب) أن تجمعات - وترميم وتجميعات - تجد الحد الأدنى والعناصر القصوى في مجموعة ما وفقاً للطلبات الطبيعية أو المقارنات المزودة بها، وتمر هذه الأساليب من خلال المجموعة مرة واحدة، مما يوفر أداء (أو) من الفئة " سين " .
وبالنسبة للمجموعات التي تحافظ على نظام فرز (مثل تريسيت أو تريماب)، فإن الوصول إلى الحد الأدنى أو الحد الأقصى أكثر كفاءة، ويوفر نظام تريسيت طرقاً أولية وأخيرة مع التعقيد O(log n).
عمليات التردد والتفكك
وتحسب عمليات التحصيل الترددات التي تحدث عنصرا محددا في مجموعة ما، وتتحقق المجموعات من عدم وجود عناصر مشتركة بين مجموعتين، وتوفر هذه الأساليب الصلاحية مدونة نظيفة وقابلة للقراءة للعمليات المشتركة.
إدماج نظام الحد الأدنى للتكامل مع المجموعات
وقد أدخلت شركة جافا 8 نظام " سترام " ، الذي يدمج دون هوادة في جمع البيانات لتوفير قدرات قوية في مجال تجهيز البيانات، وتتيح هذه المحركات عمليات من النوع الوظيفي على جمع البيانات، مما يجعل المدونة أكثر تعبيرا وأكثر كفاءة في كثير من الأحيان.
إنشاء أحجام من المجموعات
وتوفر جميع عمليات جمع البيانات طريقة للتيار تُعيد مساراً متسلسلاً، أما بالنسبة للتجهيز الموازي، فإن استخدام نظام " ستريم " يوفر تطبيقاً متقناً للتصفير، ورسم الخرائط، والحد، وجمع البيانات.
الحركات كسولة وسط العمليات مثل الفيلتر والخرائط لا تنفذ حتى يتم إستدعاء عملية نهائية مثل التجمّع أو التقطيع
التصوير والرسم
عملية التصفيق تختار عناصر مطابقة لقاعدة محددة، وتحوّل عملية وضع الخرائط عناصر تستخدم وظيفة، ويمكن تسلسل هذه العمليات لإنشاء خطوط أنابيب معقدة لتجهيز البيانات مع قواعد قابلة للقراءة ولتوضيحها.
For example: filters strings longer than 5 characters, converts them to uppercase, and collects the results into a new list.
جيم - جمع النتائج
وتقدم فئة المجمّعين العديد من جامعي المجارير لتراكم عناصر المجرى في مجموعات، ويستخدم المجمّعون، والمجمعون، والمجمعون، والمجمعون، عادة لجمع نتائج المجرى في مجموعات.
ويمكن أن يتيح جمع المزيد من المتطورات مثل تجميع البيانات وتقسيمها تجميعا متطورا للبيانات، ويمكن لهذه المجمعات أن تجمع عناصر من خلال وظيفة تصنيفية أو تقسيمها على أساس نظام مسبق، مما يخلق خرائط للجمعات.
المواسير والأداء الموازيان
يمكن أن تؤدي مسارات موازية إلى تحسين أداء العمليات التي تقوم بها وحدة تحليل البرامجيات على مجموعات البيانات الكبيرة باستخدام مجموعات أساسية متعددة، ولكن الجرافات الموازية لها رؤوس عامة وليست دائما أسرع من المجاري التسلسلية، لا سيما بالنسبة للمجموعات الصغيرة أو العمليات التي يُنفذ فيها الموقع من قبل المنظمة.
استخدام مسارات موازية عندما يكون لديك مجموعة بيانات كبيرة، وعمليات كثيفة جداً، ولا توجد حالة متغيرة مشتركة، ويمكن أن يؤدي قياس الأداء للتحقق من أن التوازي يحسن بالفعل التوازي بين النتائج والحجم إلى إلحاق الضرر بالأداء.
حالات الاستخدام الحقيقي في العالم والبراءات
لفهم القوة العملية لإطار جمعيات الجافا لنستكشف عدة أمثلة و سيناريوهات في العالم الحقيقي حيث يتم استخدام المجموعات بشكل شائع في تطبيقات جافا فهم الأنماط المشتركة يساعدك على تطبيق مجموعاتك بشكل فعال في مشاريعك الخاصة
الاختراق مع الخرائط
(هـ) الخرائط مثالية لتنفيذ المواخير التي تخزن النتائج المحسوبة لإعادة استخدامها، وقد يستخدم خبز بسيط (هاشمب) لتخزين النتائج التي تم تحويلها إلى بارامترات المدخلات، وفيما يتعلق بتخزين الخيوط، يستخدم الكاشيرنت هاشماب.
ويمكن أن يؤدي الاختراق إلى تحسين الأداء بشكل كبير عن طريق تجنب إعادة الحساب أو الاستفسارات عن قواعد البيانات الباهظة التكلفة، غير أنه يجب إدارة المخابئ بعناية لتجنب تسرب الذاكرة والبيانات اللصقية والنظر في استخدام مكتبات التقاطرة المتخصصة مثل الكافين أو خايفا كاش لتطبيقات الإنتاج.
Deduplication with Sets
(ب) أن يضع نظاماً طبيعياً للقضاء على الازدواجية، مما يجعلها مثالية لمهام التحلل، وأن تحويل قائمة إلى مجموعة، والخلف يزيل الازدواج: وهذا النمط بسيط وكفؤ بالنسبة لمجموعات البيانات الصغيرة والمتوسطة.
(لإحتفاظ النظام مع إزالة الـ (لينكد هاشتسيت (لأستخدام عناصر فريدة من نوعها (تري سيت
تجميع البيانات مع خرائط المجموعات
خرائط المجموعات (مثل ((FLT:12]) شائعة لجمع البيانات ذات الصلة، على سبيل المثال، تجميع المستخدمين حسب الدور، المنتجات حسب الفئة، أو الأحداث حسب التاريخ
مثال: ] يصنف الناس حسب إداراتهم، ويضع خريطة حيث المفاتيح هي أسماء وقيم الإدارات هي قوائم بالأشخاص في كل إدارة.
الأولوية في تحديد المهام
الأولوية (كويو) تحتفظ بعناصر ذات أولوية، تجعلها مثالية لتحديد مواعيد المهمة، وتجهيز الأحداث، والخوارزميات مثل أقصر طريق لـ(ديكسترا)
وتوفر الأولوية إدراج أو (الدون) أو إزالة عنصر الأولوية العليا، مما يجعل من الكفاءة السيناريوهات التي تحتاج فيها مرارا إلى معالجة أهم البنود من مجموعة المهام أو الأحداث.
تواتر العد إلى الخرائط
يعد عدّة العناصر مهمة مشتركة بسهولة مع الخرائط. (]]) لاحتساب الترددات، مما يزيد العدّ لكلّ حدث.
من أجل تحليل أكثر تطوراً للترددات، النظر في استخدام المُجمعات، تجميع مُجمعات مع المُجمعين، مُعدّل لخلق خرائط ترددات من المجرى في عملية واحدة.
استراتيجيات تحقيق الأداء الأمثل
ويمكن أن يؤدي الاستخدام الأمثل للجمع إلى تحسين أداء التطبيقات بشكل كبير، ففهم أوجه القصور في الأداء المشترك وتقنيات الاستخدام الأمثل أمر أساسي لبناء تطبيقات عالية الأداء في جافا.
تجنب الملاكمة غير الضرورية والتثبيت
استخدام بدائل خاصة بالبدائيات عند العمل مع مجموعات بيانات كبيرة من البدائيات (مثل مكتبات إنتريام أو طرف ثالث مثل القوارب) ولا يمكن للمجموعات سوى تخزين الأشياء، وليس البدائيات، لذا يجب أن تُجمع القيم البدائية في أجسام ملفقة مثل البروتغر أو المزدوج.
أما تكاليف الملاكمة والفكاك فيتكلفان بالأداء، ولا سيما في الحلقات الدقيقة أو مجموعات البيانات الكبيرة، أما بالنسبة لعبء العمل البدائي الثقيل، فتنظر في استخدام المجاري البدائية (الإنتردام، واللونج ستريم، والزبد) أو المكتبات المتخصصة التي توفر مجموعات بدائية.
القدرة الأولية الملائمة
إعادة جمع الأموال مكلفة، عندما تعرف حجمها التقريبي، تبدئ جمعها بالقدرة المناسبة، ويمكن أن يوفر هذا الشكل الأمثل تحسيناً كبيراً في الأداء، لا سيما بالنسبة للمجموعات الكبيرة أو التي كثيراً ما تنشأ في مسارات الشفرة الساخنة.
وبالنسبة لـ " آريليس " ، يحدد القدرة الأولية في البناء، ويحسب نظام هاشمب وهاشت القدرة على أساس الحجم المتوقع وعامل التحميل، مما يحول دون إعادة التشغيل المتعدد مع نمو المجموعة.
عمليات النشر
فالعمليات الشعبية مثل إضافات جميع الصواعق، وإزالة جميع أشكال التكتل، والاحتفاظ بالجميع، تكون في كثير من الأحيان أكثر كفاءة من تكرار العمليات الفردية وتنفيذها، ويمكن لهذه الأساليب أن تحقق أقصى قدر من العملية داخليا، مما قد يقلل من عدد النسخ المصفوفة أو عمليات إعادة التوازن بين الأشجار.
وعند إضافة عناصر متعددة إلى مجموعة، تستخدم مجموعة من العناصر بدلا من أن تضيف إلى حلقة أخرى، مما يسمح بالتنفيذ بأن يُفضي إلى العملية إلى الحد الأمثل، ولا يمكن أن يُعادل إلا مرة واحدة بدلا من عدة مرات.
موجز قبل تحقيق الاستخدام الأمثل
لا تُحدّدْ على الوجه الأمثلِ، إستعملْ أدواتَ التنميط لتحديد الاختناقاتِ الفعليةِ قبل التَفْكير الأمثل، خصائص الأداء التي تَتوقّعُ أَنْ لا تُطابقَ الواقعَ بسبب تجميعِ جي تي، جمع القمامة، أو عوامل أخرى.
وتوفر أدوات مثل JMH (Java Microbenchmark Harness) قياسات دقيقة للأداء لعمليات التحصيل، وتستخدم مواصفات مثل التصوير الفيزيائي أو جهازك لتحديد البقع الساخنة في رمز الإنتاج، وتُستخدم على الوجه الأمثل استنادا إلى البيانات وليس إلى حدس.
النظر في الذاكرة ضد سرعة المبادلات
وتختلف عمليات جمع البيانات بين استخدام الذاكرة والسرعة، ويستخدم الرايليست ذاكرة أقل من اللينكيد ليست، ولكنه قد يضيع حيزا بسبب الإفراط في المواقع، ويستخدم هاشمب ذاكرة أكثر من تريماب ولكنه يوفر نظرة أسرع.
بالنسبة لتطبيقات برمجة الذاكرة، فكر في استخدام مجموعات أكثر ترابطاً حتى لو كانت أبطأ قليلاً، بالنسبة للتطبيقات الحرجة للأداء، استخدم مجموعات أسرع حتى لو استهلكت المزيد من الذاكرة، والخيار الصحيح يعتمد على قيودك ومتطلباتك المحددة.
الشلالات المشتركة وكيفية تجنبها
حتى المطورين ذوي الخبرة يمكنهم أن يسقطوا في فخ مشترك عندما يعملون مع مجموعاتهم فهم هذه المجازف يساعدك على كتابة المزيد من الرموز القوية وتجنب الحشرات الخبيثة
عمليات التحديث خلال فترة الإصدار
تغيير مجموعة ما أثناء تكرارها عادةً ما يلقي بإستقبال التموينات المتزامنة هذا السلوك الفاسد يحول دون نتائج غير متوقعة لكن يمكن أن يكون مفاجئاً
وكبديل لذلك، جمع عناصر لإزالتها في مجموعة منفصلة وإزالتها بعد إتمام عملية التكرار، أو استخدام طريقة إزالة الألغام، التي تزيل بأمان العناصر المطابقة للمنشأة دون تكرار صريح.
Null Handling
معظم المجموعات تسمح بعناصر لاغية لكن البعض لا يسمحون لـ (تري سيت) و (تري ماب) بأن يُسمحوا بعناصر لاغية (أو مفاتيح لاغية لـ(تريماب
وكن على علم بالتعامل الباطل عند اختيار المجموعات، وإذا كانت بياناتك لاغية، فتأكد من أن جمعكم المختار يدعمها، والنظر في استخدام الخيار الاختياري لتمثيل قيم قد تكون غائبة بدلا من أن تكون باطلة.
عقود المساواة والهستنة
إن انتهاك عقد المساواة والهكود تسبب حشرات في مجموعات مُتَجَهِّدة، وإذا كان هناك غرضان متساويان وفقاً لتساويهما، يجب أن يكون لهما نفس الرمز المُتَعَد، وعدم الحفاظ على هذا العقد يمكن أن يتسبب في فقدان هاشمب لدخوله أو هاسِت لاحتواء الكمائن.
وعندما تتغلب على المساواة، تتخطى دائماً نظام " الهه كود " ، وتستخدم نفس الحقول في كلا الأسلوبين، ويمكن أن تولد في الاقتصادات الحديثة تطبيقات صحيحة، أو تستخدم سجلات " جافا " التي توفر التنفيذات الصحيحة تلقائياً.
الأمر المتعلق بالإنجاب
لا تفترضي طلب التكرار لجمع التبرعات التي لا تضمنه هاشمب و هاسج لا تحافظ على أي أمر محدد
إذا كنت بحاجة إلى طلب تدقيق متوقع، استخدم لينكد هاشماب أو لينكدهاش ستيت لطلب الإدراج، أو تريمب أو تريسيت للترتيب المصفّى.
الذاكرة مع المجاميع
يمكن أن تسبب التحصيلات تسرب الذاكرة إن لم تدار بشكل سليم، فمجموعات طويلة العمر تنمو باستمرار دون إزالة العناصر القديمة تستهلك في نهاية المطاف كل الذكريات المتاحة، وهذا أمر شائع بوجه خاص مع المخابئ التي لا تنفذ سياسات الإخلاء.
تنفيذ حدود الحجم وسياسات الإخلاء بالنسبة للمجموعات الطويلة الأجل، واستخدام إشارات ضعيفة (ويكهاشامب) عند الاقتضاء للسماح بجمع القمامة من القيود غير المستخدمة، ورصد حجم عمليات جمع المواد في الإنتاج لكشف النمو غير المتوقع.
الاتجاهات المستقبلية ورسومات محدثة من الجافا
وقد ظل الإطار، طوال تطوره، يتكيف باستمرار لتلبية الاحتياجات المتغيرة للمطورين والتقدم في التكنولوجيا، ومن مقدمة هذا الإطار في جافا 1-2 إلى حالته الراهنة، اضطلع إطار جمع البيانات بدور محوري في تبسيط التلاعب بالبيانات، وتعزيز قابلية البرمجيات لإعادة استخدامها، وتشجيع أفضل الممارسات في مجال تطوير البرامجيات.
جمعيات المواد الانشطارية
وتؤكد شركة " جافا " الحديثة على عدم إمكانية التحوط من أجل السلامة والبرمجة الوظيفية، وأساليب المصانع مثل القائمة، والتصميم، والبرمجة، والخريطة، إنشاء مجموعات غير قابلة للتداول بكفاءة، وهذه المجموعات أكثر ترابطا وأداء من مجموعات الطوابق المحتوية على مجموعات.
جمع البيانات يمكن أن يمنع التعديل العرضي ويمكّن من التقاسم الآمن بين الخيوط بدون تزامن، إنها مثالية للثبات، وبيانات التشكيل، والبرمجة على شكل وظيفي حيث تتدفق البيانات من خلال التحولات بدلا من أن تعدّل في مكانها.
تعزيز عملية تجهيز الإطارات
تعزيز الدعم لعمليات تجهيز المجرى في إطار مجموعة العمليات، مما يعزز قدرات التجهيز الموازية لتحسين الأداء في النظم المتعددة العناصر، ولا تزال مبادرة " سترام API " تتطور مع عمليات جديدة وتعظيمها.
وقد أضافت نسخ من الجوا مؤخرا جامعين جددا وعمليات تيار تجعل الأنماط المشتركة أكثر إيجازا، ولا يزال التكامل بين المجموعات والمجاري يزداد عمقا، مما يجعل تجهيز البيانات على شكل وظيفي أكثر طبيعية وكفاءة.
هياكل البيانات المتخصصة
استكشاف إضافة هياكل بيانات متقدمة مثل مرشحات بلوم، أو هياكل ثلاثية، أو تخطي قوائم لإطار جمع البيانات، مما يوفر خيارات أكثر لحالات الاستخدام المتخصص، وفي حين يغطي الإطار الأساسي معظم الاحتياجات المشتركة، يمكن أن توفر هياكل البيانات المتخصصة فوائد كبيرة لحالات الاستخدام المحددة.
وتوفر مكتبات الأطراف الثالثة مثل مجموعة غوغل غوافا وآباتشي المشتركة هياكل ومرافق إضافية للبيانات، وتكمل هذه المكتبات إطار المجموعات القياسية، وهي جديرة بالبحث عن حالات الاستخدام المتطورة.
تطابق سجلات الدورية
(ج) تُعدّ سمات (الجافا) الحديثة مثل السجلات والنمط المطابقة جيداً مع مجموعات البيانات، وتوفر السجلات مواصفات موجزة لدروس البيانات مع ما يُعتبر مطابقاً تماماً للنظم و(هيش كود) مما يجعلها مثالية للاستخدام في مجموعات البيانات.
مطابقة الدوريات تتيح شفرة أكثر صراحة عندما تعمل مع مجموعات من الأنواع المختلفة، بما أن هذه الملامح ناضجة، فإنها ستمكن الأنماط الجديدة من العمل مع المجموعات بشكل أكثر أماناً و إيجازاً.
أمثلة على التنفيذ العملي
إن فهم النظرية أمر هام، ولكن رؤية أمثلة عملية تساعد على ترسيخ المفاهيم، وهنا توجد عدة سيناريوهات في العالم الحقيقي تبين الاستخدام الفعال للجمع.
بناء كاتشي داخل الذاكرة
ويمكن تنفيذ مخبأ بسيط من طراز LRU بتوسيع نطاق لينكد هاشمب وإزالة اللدستاترين، مما يوفر الإخلاء التلقائي لأقل القيود التي استخدمت مؤخرا عندما تصل المخبأ إلى الحد الأقصى لحجمه، ويصبح التنفيذ آمنا عند ملفه بالمجمعات.
وللاستخدام في الإنتاج، النظر في مكتبات التنظيف المتخصصة التي توفر سمات مثل الصلاحية الزمنية، والإحصاءات، وسياسات الإخلاء الأكثر تطوراً، غير أن فهم التنفيذ الأساسي يساعدك على تقدير كيفية عمل هذه المكتبات داخلياً.
تجهيز مجموعات البيانات الكبيرة
عند تجهيز مجموعات البيانات الكبيرة، تختار مجموعات البيانات بعناية لتجنب مسائل الذاكرة، أما بالنسبة للبيانات التي يُقرأ فقط، فتنظر في استخدام مجموعات أو صفائف غير قابلة للتداول، وبالنسبة للبيانات التي تحتاج إلى مشاهدات متكررة، تستخدم هاشمب أو هاست.
ويمكن لعملية تجهيز المسارات الموازية أن تحسن أداء العمليات التي يقوم بها الاتحاد على مجموعات البيانات الكبيرة، غير أن القياس الدقيق لمعالجة الشبهات له رأساً زائداً وليس دائماً أسرع، ولا سيما بالنسبة للعمليات التي يُنفذ فيها نظام العمليات أو مجموعات البيانات الصغيرة.
تنفيذ هيكل بيانات الخريف
ويمكن تمثيل الخرافات باستخدام مجموعات عدة طرق، ويستخدم تمثيل قائمة الرشائز في شكل مبلت؛ ونود، وليت؛ ونوديت؛ ونوبست؛ وأين كل خريطة مناجم الجيران؛ وفيما يتعلق بالرسومات المثقلة، واستخدام الخرائط الملوّنة، والرقم، والرقم الميبل، والرقم، والرقم، والرقم، والرقم، والرقم القياسي، وتخزين الوزن.
ويؤثر اختيار التحصيل على أداء الخوارزمية، إذ يوفر هاشمب لجار أو (1) مراقبة، بينما يوفر تري مشابك الجيران المفرزين بتكلفة أو (لو) أو (ن) ويعطي الرايليست سرعة على الجيران، بينما يوفر هاست شيكات سريعة للوجود الجيران.
إدارة شؤون المستمعين
وعادة ما تنفذ قوائم المستمعين المحدثين باستخدام نظام طباعة مطبوعات لسلامة الخيط بعبء العمل الثقيل، ونادرا ما تُضاف أو تُحذف أسماء المستمعين مقارنة بعدد الحالات التي تُطلق فيها الأحداث، مما يجعل استراتيجية الطبع على أساس الطبع مثاليا.
هذا النمط يضمن أن الإرتداد على المستمعين لا يلقي أبداً إستقبال التموينات المتزامنة ولا يتطلب تزامناً حتى عندما يضاف المستمعون أو يُبعدون عن خيوط أخرى أثناء إخطار الأحداث
عمليات الاختبار وتعبئة الديون
إن أساليب الاختبار السليم وضبط السلوك ضرورية للعمل مع المجموعات بفعالية، فهم كيفية التحقق من سلوكيات التحصيل وتشخيص القضايا يوفّر الوقت ويمنع الحشرات.
عمليات جمع الاختبارات في الوحدة
عمليات جمع الاختبارات بدقة، بما في ذلك الحالات الحافة مثل المجموعات الفارغة، وجمعات منفردة، ومجموعات في حدود القدرات، التحقق من أن العمليات تحافظ على مجموعات مثل الفريد للمجموعات أو الترتيب للمجموعات المصنَّفة.
(ج) استخدام مكتبات التأكيدات مثل شركة AssertJ التي تقدم معلومات مفيدة عن طلبات جمع البيانات، وتجعل هذه المكتبات الاختبارات أكثر قابلية للقراءة وتقدم رسائل خطأ أفضل عندما تفشل التأكيدات.
اختبار الأداء
(ج) استخدام نظام إدارة الشؤون الإنسانية (مشقر جوفا) لإجراء اختبار دقيق لأداء عمليات جمع البيانات؛ ويعالج نظام إدارة الشؤون الإنسانية الاحترار ويمنع إلغاء الشفرة الميتة، ويقدم تحليلا إحصائيا للنتائج، وهذا أمر أساسي لاتخاذ قرارات مستنيرة بشأن اختيار المجموعة استنادا إلى الأداء الفعلي وليس الافتراضات.
سيناريوهات واقعية معلّقة تضاهي أنماط استخدامكم الفعلية، وقد لا تعكس المعايير الاصطناعية الأداء الحقيقي للعالم بسبب عوامل مثل توزيع البيانات، وأنماط الوصول، والتفاعل مع عناصر النظام الأخرى.
قضايا تحصيل الديون
وعند معالجة قضايا التحصيل، التحقق من أن المساواة في المعاملة والهكود يجري تنفيذها بشكل صحيح بالنسبة للأجسام الجمركية، واستخدام أجهزة مراقبة الخداع لتفتيش محتويات التجميع وهيكله، مما يتيح إمكانية التمسك بانتهاكات العقود في وقت مبكر من مراحل التنمية.
وللحصول على قضايا متزامنة، استخدام مدافن الخيط وأدوات تحليل المواظبة لتحديد المأزق أو ظروف العرق، والنظر في استخدام مجموعات من المهددات أو المتزامنة الصريحة لمنع مسائل التعديل المتزامنة.
التكامل مع المكتبات والأطر الخارجية
ويضم إطار جمعيات الجافا العديد من المكتبات والأطر، ويساعد فهم هذه التكاملاتكم على تعزيز الأدوات القائمة بفعالية.
Google Guava Collections
وتوفر غوغل غوافا أنواعا معززة من أنواع جمع المنتجات مثل التعددية، والبينماب، والجدول الذي يوسع الإطار الموحد، وتحل هذه المجموعات المشاكل المشتركة بشكل واضح وتستخدم على نطاق واسع في تطبيقات الإنتاج، كما توفر غوافا بناة جمعيات غير قابلة للتداول وطرق فائدة تكمل فئة المجموعات القياسية.
مرافق جمع (غوافا) مفيدة بشكل خاص للبرمجة على شكل وظيفي، توفر طرقاً مثل الرش، التحول، والتقسيم الذي يعمل مع أيّ مجرى مائي، بينما يوفر (جافا 8) وظائف مماثلة، مرافق (غوافا) لا تزال قيمة لبعض حالات الاستخدام.
مجموعة المواد المخصصة للآباتشي
وتوفر مجموعة " أباتشي " هياكل ومرافق إضافية للبيانات، بما في ذلك جمع الأمتعة والخرائط ذات الاتجاهين ومختلف المصممين، وقد ظلت المكتبة تدور حولها أكثر من غوافا وتوفر بعض السمات الفريدة التي لم تعثر عليها في أماكن أخرى.
كما توفر مجموعة المجاميع خدمات التصفية والتحول القائمة على أساس مسبق، بينما توجد بعض هذه الملامح الآن من خلال المجاري، تظل المكتبة مفيدة للمشاريع التي لا تستطيع استخدام ملامح جافا 8+.
إطار الربيع
إطار الربيع يستخدم بشكل واسع مجموعات من أجل حقن التبعية، تشكيلة، وملزمة البيانات، فهم كيف يعمل الربيع مع جمعيات يساعدك على تحديد التطبيقات بفعالية و التأثير على سمات الربيع
ويوفر الربيع مرافق مثل الجمع بين استخدامات عمليات الجمع المشتركة ويدعم التحويل التلقائي بين أنواع التحصيل أثناء الحقن، وتستخدم مشاريع بيانات الربيع مجموعات واسعة النطاق من أجل نتائج الاستفسارات وطرق المستودعات.
جاكسون و يو جون سيرال
(جاكسون) ومكتبات (اليونيسبون) تسلسل مجموعات صفائف أو أشياء (الجوبون) فهم كيف أن الخرائط المجمّعة إلى (اليونيو) تساعدك على تصميم نماذج البيانات وأجهزة المعلومات المدمجة بشكل فعال ومعظم عمليات التسلسل تُتسلسل بطبيعة الحال، ولكن قد تكون مطلوبة من المسلسلات العرفية لأنواع التحصيل المتخصصة.
وقد تحتاج مجموعات وجمعات قابلة للتشغيل مع متطلبات محددة من أجل طلب خدمات خاصة أثناء التسلسل والتحلية، كما أن الثقة جاكسون مناسبة للحفاظ على خصائص التحصيل عبر الحدود التسلسلية.
الخلاصة والطرق الرئيسية
ويوفر إطار جمعيات جافا هيكلا موحدا لتمثيل وتلاعب مجموعات الأجسام، ويوفر مجموعة واسعة من الوصلات البينية والتنفيذ للقوائم، والمجموعات، والخرائط، والأسئلة، والأهم من ذلك، وتشمل الاعتبارات الرئيسية تعقيدات الوقت والفضاء، وخصائص الأداء، والسلامة من خيوط الخيوط، وسلامة النوع، وتشمل أفضل الممارسات اختيار نوع التحصيل المناسب، واستخدام الصفات العامة لبرمجة المتزامنة، وقد تطورت إلى دعم وظيفي.
إن وضع إطار جمعيات الجافا أمر أساسي لكل مطور من مطوري الجافا، ويوفر الإطار عمليات تنفيذ قوية ومختبرة جيدا لهياكل البيانات الأساسية التي تشكل أساس معظم تطبيقات جافا، وبفهم خصائصها وملامحها عن أدائها، وحالات الاستخدام المناسب لكل نوع من أنواع المجموعات، يمكنك كتابة مدونة أكثر كفاءة وقابلية للاستمرار وقوية.
تذكر هذه المبادئ الرئيسية: برنامج للوصلات البينية بدلا من التنفيذ، اختيار المجموعات استنادا إلى المتطلبات الفعلية وأنماط الوصول، وإعطاء مجموعات ذات قدرة مناسبة عندما يكون الحجم معروفا، واستخدام مجموعات غير قابلة للتداول عندما لا تحتاج البيانات إلى التغيير، وقياس الأداء دائما قبل تحقيق الحد الأمثل، وإطار جمع البيانات ناضج وشامل، لكنه لا يزال يتطور مع سمات جديدة، ويحقق أقصى قدر من النجاح في كل عملية إطلاق سراح جافا.
وللمزيد من التعلّم، يستكشف Java Collections Framework documentation]، ويختبر أنواعاً مختلفة من مجموعات المشاريع الخاصة بك، ويدرس مشاريع مفتوحة المصدر لمعرفة كيفية استخدام المطورين ذوي الخبرة للمجموعات في رمز الإنتاج، وسيدفع الاستثمار في فهم المجموعات أرباحاً عميقة طوال حياتك الإنمائية في جافا.
وتشمل الموارد الإضافية دروس رسمية في الجاوا بشأن المجموعات ]، وأدوات قياس الأداء مثل ] JMH ، والمكتبات التكميلية مثل Google Guava التي ستوفر إطار البرمجة الموحد مع توفير قدرات وظيفية إضافية.