هذا البرنامج التعليمي هو عملية تعلم لغة C++ عندما كنت طالبًا، ولم يعد لدي الطاقة لكتابة الباقي. إذا نظرنا إلى الكود في ذلك الوقت، فهناك العديد من العيوب وحتى العيوب تعديل وتطوير ومواصلة المشروع. للحصول على مكتبة أساسية أكثر مثالية للغة C، يرجى الانتقال إلى wheelib
اسمحوا لي أن أبدأ بالاستنتاج: بغض النظر عن اللغة المستخدمة، فإن أساس كل تطوير الواجهة الخلفية هو تطوير خادم C/C++ لنظام التشغيل Linux.
تعمل جميع الخوادم عالية التزامن تقريبًا في بيئة Linux، وقد كتب المؤلف خوادم بلغة Java والعقدة من قبل، ولكن في النهاية وجدت أنني تعلمت التكنولوجيا واللغة فقط، لكنني لم أفهم المبادئ الأساسية الأساسية. لا يمكن فهم عملية طلب HTTP، ولماذا يمكن تحقيق التزامن العالي، وكيفية التحكم في اتصالات TCP، وكيفية التعامل مع منطق نقل البيانات، وما إلى ذلك، بشكل متعمق إلا من خلال البرمجة في C/C++.
يقلد هذا البرنامج التعليمي "30 يومًا لإنشاء نظام التشغيل الخاص بك" ويستهدف المبتدئين الذين ليس لديهم خبرة. وسيعلمك كيفية البدء في تطوير خادم Linux في 30 يومًا. يعد هذا البرنامج التعليمي أكثر عملية وسيركز على كيفية كتابة التعليمات البرمجية دون إنفاق مساحة كبيرة في شرح مبادئ الكمبيوتر الأساسية التي تكمن وراءها، وسيتم تقديم فصول محددة من الكتب المقابلة حيثما كان ذلك مناسبًا، ولكن هذا لا يعني أن هذه المعرفة النظرية ليست مهمة في الواقع، الأساس النظري مهم جدًا بدون الدعم النظري، فمن غير المنطقي بناء خادم عالي الأداء.
هذا البرنامج التعليمي يأمل القراء:
بعد الانتهاء من هذا البرنامج التعليمي، سوف تفهم بسهولة كود مصدر muduo.
إحدى الصعوبات في تعلم C/C++ هي أنه لا يمكنك إنشاء أشياء فعلية عندما تتعلم لأول مرة، ولا توجد تعليقات ويعمل البرنامج في سطر أوامر مظلم، على عكس تطوير الويب، يمكنك رؤية نتائج تعلمك في في أي وقت. يتم وضع رمز هذا البرنامج التعليمي في مجلد التعليمات البرمجية، بعد الدراسة كل يوم، يمكنك الحصول على خادم يمكن تجميعه وتشغيله، ومواصلة التطوير التكراري.
يوجد مجلد تعليمات برمجية لكل يوم في مجلد التعليمات البرمجية. أدخل المجلد واستخدم أمر make
للتجميع. سيتم إنشاء ملفين قابلين للتنفيذ. أدخل الأمر ./server
لرؤية نتائج التعلم اليوم! ثم قم بإنشاء محطة طرفية جديدة وأدخل ./client
لتشغيل العميل والتفاعل مع الخادم.
day01-ابدأ بأبسط المقبس
day02-لا تدع أي أخطاء تذهب
day03-للحصول على التزامن العالي، يجب استخدام epoll
day04- دعونا نلقي نظرة على صفنا الأول
day05-epoll الاستخدام المتقدم-القناة الأولى
day06-تظهر الفئات الأساسية المستندة إلى الخادم والحدث
day07-أضف متقبلًا إلى خادمنا
day08-كل شيء عبارة عن فئة، حتى اتصالات TCP ليست استثناءً
day09-المخزن المؤقت-دور كبير
day10-انضم إلى تجمع مؤشرات الترابط بالخادم
day11-تحسين تجمع الخيوط وإضافة برنامج اختبار بسيط
day12-أعد كتابة الخادم في وضع Reactor متعدد الخيوط
هندسة day13-C++، تحليل التعليمات البرمجية، تحسين الأداء
day14-دعم تخصيص منطق الأعمال وتحسين فئة الاتصال
يدعم day15-macOS تخصيص منطق الأعمال ويحسنه
day16-إعادة بناء الخادم واستخدام المؤشرات الذكية
مؤقت
نظام التسجيل
دعم بروتوكول HTTP
اختبار طاولة الويب
يتم استئناف تنزيل الملف عند نقاط التوقف
تخزين الموارد الثابتة
...
يحاول مشروع Wlgls/30daysCppWebServer كتابة الأجزاء التالية كمرجع.
قدرتي متوسطة ومستوي محدود. إذا وجدت أن دروسي غير صحيحة أو تستحق التحسين، فلا تتردد في إثارة مشكلة أو العلاقات العامة مباشرة.
نرحب بالجميع للمساهمة بالكود الخاص بك في هذا المشروع. إذا كان لديك كود تعتقد أنه أفضل، فيرجى إرسال مشكلة أو سيتم النظر في جميع الاقتراحات مباشرةً.
للمساهمة بالكود، يرجى الانتقال إلى مشروع pine، وهي مكتبة الشبكة التي تم تطويرها في هذا البرنامج التعليمي وهي أيضًا أحدث إصدار للكود.