Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

9 تغريدة 6 قراءة May 10, 2022
كثير من تطبيقات الويب تعامل الUser كملك. بمعنى تعطيه نسخة كاملة من بيانات التطبيق له وحده. تحمل له كل البيانات في الذاكرة و لذا نشوف انه مع ارتفاع عدد المستخدمين تتضاعف الذاكرة طردياً. هذا غير التأثير على الأداء. فخلق الObjects و تخصيص مساحة لها في الذاكرة مكلف
(سلسلة)
ماذا يحدث لكل هذه الموارد؟ نحن عادة لانهتم فإذا لم يعد يحتاجها الUser فهناك من ينظف ورائه و اقصد به هنا الGarbage Collector الذي يقوم كل فترة بالتنظيف وراء هذا الUser او بالأصح ينظف ورائنا.
هذا شيء يعتبره كثير من المبرمجين طبيعي و حتمي. افتح الموارد للUsers حتى تستنفذ جميعها في السيرفر ولذا طلب مزيد من الخوادم هو شيء اعتيادي مادام هناك مستخدمين اكثر و كل مستخدم بيدفع فلا بأس "اعطوه او زيدوا سيرفر".
المبرمجين اللي اكتشفوا فكرة الPool من المستحيل انهم يتخلوا عنها, سواء Connections Pool او Threads Pool
او غيرها لانهم يعرفون انها توفر لهم الكثير من الموارد و بدونها يتضاعف حجم استهلاك الذاكرة.
فكرة الPooling للConnections او الThreads عادة تأتي كمزايا للغة البرمجة و ينتظرها الكثير ويفرح بها.
من بنى هذه التحديثات هم مبرمجين مثلنا و ليس بالضرورة انهم احتاجوا يكتبون اكواد بلغة C او الAssembly عشان يوفرون مثل هذي المزايا
الفكرة بسيطة عندك حوض Pool فيه مجموعة Objects متشابهه استخدم ما تريده و بعد الانتهاء اعده الى مكانه ليستخدمه غيرك.
لتقريب الفكرة , تخيل فصل فيه 20 طالب يدرسون مادة معينة , كم واحد ممكن يحتاج قلم ؟ ممكن كلهم. يعني انت تحتاج 20 قلم فقط او 25 بالكثير كاحتياط.
لكم كم منهم يحتاج ممسحة ؟ او برّاية ( مبراة ) ما ادري ايش تسمونها ؟ اتوقع 3 كفاية. هذي الفكرة. ياخذها من Pool يستخدمها و يرجعها.
في الواقع الموضوع ليس سحراً او يحتاج لمبرمج عظيم لتقوم بعمل شيء مشابه , بمعنى انك تبني Pool للObjects المتشابهه بعدد محدود تقرره انت و كافي ليتشاركها مستخدمينك.
و هنا تأتي فائدة الObject Pool design pattern مع الFlyweight design pattern و بما انك عرفت فائدتها ابحث الان عن كيفية الاستفادة منها بلغة البرمجة التي تستخدمها.
انت كمبرمج تعتبر Leader لموارد الأجهزة.

جاري تحميل الاقتراحات...