このチュートリアルは、私が学生の頃に C++ を学習した過程であり、仕事を終えて残りの部分を書く気力がなくなりました。当時のコードを振り返ると、多くの不完全な点や欠点さえあります。プロジェクトを変更、開発、継続します。 より完璧な C 言語基本ライブラリについては、wheelib に移動してください。
結論から始めましょう。どの言語が使用されているかに関係なく、すべてのバックエンド開発の基礎は Linux 用の C/C++ サーバー開発です。
ほとんどすべての高同時実行サーバーは Linux 環境で実行されます。著者は以前にも Java とノードでサーバーを作成したことがありますが、結局のところ、テクノロジーと言語を学んだだけで、基礎となる基本原理を理解していなかったことがわかりました。 HTTP リクエストのプロセス、高い同時実行性が達成できる理由、TCP 接続の制御方法、データ送信ロジックの処理方法などは、C/C++ でプログラミングすることによってのみ深く理解できます。
このチュートリアルは、「30 日間で独自のオペレーティング システムを作成する」を模倣したもので、経験のない初心者を対象としており、30 日間で Linux サーバー開発を開始する方法を説明します。このチュートリアルはより実践的であり、その背後にある基本的なコンピューター原理を説明するスペースをあまり割かずにコードを記述する方法に焦点を当てています。関連する書籍の特定の章が示されていますが、これはこの理論的知識が重要ではないという意味ではありません。実際、理論的な基礎は非常に重要です。理論的なサポートがなければ、高性能のサーバーを構築することは意味がありません。
このチュートリアルでは、読者に次のことを期待しています。
このチュートリアルを完了すると、Muduo のソース コードを簡単に理解できるようになります。
C/C++ を学習する際の難しさの 1 つは、学習直後は実際のものを作ることができないことです。Web 開発とは異なり、プログラムはダーク コマンド ラインで実行されます。いつでも。このチュートリアルのコードはコード フォルダーに配置され、毎日の学習後にコンパイルして実行できるサーバーを取得し、反復開発を続けることができます。
code フォルダー内に毎日のコード フォルダーがあり、そのフォルダーに入力してmake
コマンドを使用して 2 つの実行ファイルが生成されます。コマンド./server
を入力すると、今日の学習結果が表示されます。次に、新しいターミナルを作成し、 ./client
と入力してクライアントを実行し、サーバーと対話します。
day01 - 最も単純なソケットから始める
day02 - ミスを許さない
day03 - 高い同時実行性を実現するには、epoll を使用する必要があります
day04 - 最初のクラスを見てみましょう
day05-epoll の高度な使用法-チャンネルデビュー
day06 - サーバーおよびイベント駆動型コアクラスが登場
day07 - アクセプタをサーバーに追加する
day08 - すべてはクラスであり、TCP 接続も例外ではありません
day09-バッファ-大きな役割
10日目 - スレッドプールをサーバーに参加させます
day11 - スレッドプールを改善し、簡単なテストプログラムを追加する
day12 - サーバーをマスター/スレーブ Reactor マルチスレッド モードに書き換える
13 日目 - C++ エンジニアリング、コード分析、パフォーマンスの最適化
day14 - ビジネス ロジックのカスタマイズをサポートし、Connection クラスを改善します
day15-macOS はビジネス ロジックのカスタマイズをサポートおよび改善します
day16 - サーバーをリファクタリングし、スマート ポインターを使用する
タイマー
ロギングシステム
HTTPプロトコルのサポート
ウェブベンチテスト
ファイルのダウンロードはブレークポイントで再開されます
静的リソースストレージ
...
Wlgls/30daysCppWebServer プロジェクトは、学習の参考として使用できる後続の部分の作成を継続しようとしています。
私の能力は平均的であり、私のレベルには限界があります。私のチュートリアルが間違っている、または改善する価値があると思われる場合は、お気軽に問題を提起するか、直接 PR してください。
誰でもこのプロジェクトに独自のコードを投稿することを歓迎します。より良いと思われるコードがある場合は、問題を送信するか、直接 PR してください。すべての提案が考慮されます。
コードを提供するには、pine プロジェクトにアクセスしてください。これは、このチュートリアルで開発されたネットワーク ライブラリであり、最新のコード バージョンでもあります。