Tutorial ini adalah proses belajar C++ ketika saya masih mahasiswa. Setelah bekerja, saya tidak punya tenaga lagi untuk menulis selebihnya. Melihat kembali kode-kode saat itu, masih banyak kekurangan bahkan kekurangan. Mereka yang bersedia bisa dengan bebas memodifikasi, mengembangkan, dan melanjutkan proyek. Untuk pustaka dasar bahasa C yang lebih sempurna, silakan pindah ke wheelib
Mari saya mulai dengan kesimpulan: Apa pun bahasa yang digunakan, dasar dari semua pengembangan backend adalah pengembangan server C/C++ untuk Linux.
Hampir semua server konkurensi tinggi berjalan di lingkungan Linux. Penulis telah menulis server di Java dan node sebelumnya, tetapi pada akhirnya saya menemukan bahwa saya hanya mempelajari teknologi dan bahasa, tetapi tidak memahami prinsip dasar yang mendasarinya. Proses permintaan HTTP, mengapa konkurensi tinggi dapat dicapai, cara mengontrol koneksi TCP, cara menangani logika transmisi data, dll., hanya dapat dipahami secara mendalam dengan pemrograman dalam C/C++.
Tutorial ini meniru "30 Hari Membuat Sistem Operasi Anda Sendiri" dan ditujukan untuk pemula yang belum memiliki pengalaman. Tutorial ini akan mengajarkan Anda cara memulai pengembangan server Linux dalam 30 hari. Tutorial ini lebih praktis dan akan fokus pada cara menulis kode tanpa menghabiskan terlalu banyak ruang untuk menjelaskan prinsip dasar komputer di baliknya. Bab khusus dari buku terkait akan diberikan jika relevan, tetapi ini tidak berarti bahwa pengetahuan teoretis ini tidak penting Faktanya, landasan teoritis sangat penting. Tanpa dukungan teoritis, membangun server berkinerja tinggi adalah omong kosong.
Tutorial ini berharap pembaca:
Setelah menyelesaikan tutorial ini, Anda akan dengan mudah memahami kode sumber muduo.
Salah satu kesulitan dalam mempelajari C/C++ adalah Anda tidak dapat membuat hal-hal nyata saat pertama kali mempelajarinya. Tidak ada umpan balik dan program berjalan dalam baris perintah yang gelap. Tidak seperti pengembangan web, Anda dapat melihat hasil pembelajaran Anda di kapan pun. Kode tutorial ini ditempatkan di folder kode. Setelah mempelajari setiap hari, Anda bisa mendapatkan server yang dapat dikompilasi dan dijalankan, dan pengembangan berulang dilanjutkan.
Ada folder kode untuk setiap hari di folder kode. Masuk ke folder dan gunakan perintah make
untuk mengkompilasi. Dua file yang dapat dieksekusi akan dihasilkan. Masukkan perintah ./server
untuk melihat hasil pembelajaran hari ini! Kemudian buat Terminal baru dan masukkan ./client
untuk menjalankan klien dan berinteraksi dengan server.
day01-Mulai dengan soket paling sederhana
hari02-Jangan biarkan kesalahan terjadi
day03-Untuk konkurensi tinggi, epoll harus digunakan
hari04- Mari kita lihat kelas pertama kita
day05-epoll penggunaan lanjutan-debut saluran
day06-Server dan kelas inti berbasis peristiwa muncul
hari07-Tambahkan Penerima ke server kami
hari08-Semuanya adalah kelas, bahkan koneksi TCP pun tidak terkecuali
peran day09-buffer-besar
hari ke-10-gabung dengan kumpulan thread ke server
hari ke-11-Tingkatkan kumpulan thread dan tambahkan program pengujian sederhana
hari12-Tulis ulang server ke mode multi-thread Reaktor master-slave
Rekayasa day13-C++, analisis kode, pengoptimalan kinerja
hari ke-14-Mendukung penyesuaian logika bisnis dan meningkatkan kelas Koneksi
day15-macOS mendukung dan meningkatkan penyesuaian logika bisnis
day16-Refactor server dan gunakan smart pointer
pengatur waktu
Sistem pencatatan
Dukungan protokol HTTP
tes webbench
Pengunduhan file dilanjutkan pada titik henti sementara
Penyimpanan sumber daya statis
...
Proyek Wlgls/30daysCppWebServer mencoba menulis bagian selanjutnya untuk referensi.
Kemampuan saya rata-rata dan level saya terbatas. Jika menurut Anda tutorial saya salah atau layak untuk ditingkatkan, silakan angkat masalah atau langsung PR.
Setiap orang dipersilakan untuk menyumbangkan kode Anda sendiri untuk proyek ini. Jika Anda memiliki kode yang menurut Anda lebih baik, silakan kirimkan masalah atau langsung PR. Semua saran akan dipertimbangkan.
Untuk menyumbangkan kode, silakan buka proyek pine, yang merupakan perpustakaan jaringan yang dikembangkan dalam tutorial ini dan juga merupakan versi kode terbaru.