Dieses Tutorial ist der Prozess des Erlernens von C++, als ich noch Student war. Wenn ich zurückblicke, gibt es viele Unvollkommenheiten und sogar Fehler das Projekt modifizieren, weiterentwickeln und fortführen. Für eine perfektere Basisbibliothek der C-Sprache wechseln Sie bitte zu Wheelib
Lassen Sie mich mit dem Fazit beginnen: Ganz gleich, welche Sprache verwendet wird, die Grundlage jeder Backend-Entwicklung ist die C/C++-Serverentwicklung für Linux.
Fast alle Server mit hoher Parallelität laufen in der Linux-Umgebung. Der Autor hat zuvor Server in Java und Node geschrieben, aber am Ende habe ich festgestellt, dass ich nur eine Technologie und eine Sprache gelernt habe, aber die zugrunde liegenden Grundprinzipien nicht verstanden habe. Der Prozess einer HTTP-Anfrage, warum eine hohe Parallelität erreicht werden kann, wie TCP-Verbindungen gesteuert werden, wie mit der Logik der Datenübertragung umgegangen wird usw., kann nur durch die Programmierung in C/C++ im Detail verstanden werden.
Dieses Tutorial imitiert „30 Tage, um Ihr eigenes Betriebssystem zu erstellen“ und richtet sich an Anfänger ohne Erfahrung. Es zeigt Ihnen, wie Sie in 30 Tagen mit der Linux-Serverentwicklung beginnen. Dieses Tutorial ist praktischer und konzentriert sich darauf, wie man Code schreibt, ohne zu viel Platz in die Erläuterung der grundlegenden Computerprinzipien zu investieren. Wo relevant, werden bestimmte Kapitel der entsprechenden Bücher angegeben. Dies bedeutet jedoch nicht, dass dieses theoretische Wissen nicht wichtig ist Tatsächlich ist die theoretische Grundlage sehr wichtig. Ohne theoretische Unterstützung ist es Unsinn, einen Hochleistungsserver zu bauen.
Dieses Tutorial hofft, dass die Leser:
Nach Abschluss dieses Tutorials werden Sie den Muduo-Quellcode leicht verstehen.
Eine der Schwierigkeiten beim Erlernen von C/C++ besteht darin, dass Sie beim ersten Lernen keine tatsächlichen Dinge erstellen können. Es gibt kein Feedback und das Programm wird im Gegensatz zur Webentwicklung in einer dunklen Befehlszeile ausgeführt jederzeit. Der Code dieses Tutorials wird im Codeordner abgelegt. Nach dem täglichen Lernen können Sie einen Server erhalten, der kompiliert und ausgeführt werden kann, und die iterative Entwicklung wird fortgesetzt.
Für jeden Tag gibt es einen Codeordner. Geben Sie den Befehl make
zum Kompilieren ein. Geben Sie den Befehl ./server
ein, um die heutigen Lernergebnisse anzuzeigen. Erstellen Sie dann ein neues Terminal und geben Sie ./client
ein, um den Client auszuführen und mit dem Server zu interagieren.
Tag 01 – Beginnen Sie mit dem einfachsten Socket
Tag 02 – Lass keine Fehler zu
Tag03 – Für eine hohe Parallelität muss Epoll verwendet werden
Tag 04: Werfen wir einen Blick auf unsere erste Klasse
day05-epoll erweiterte Nutzung – Kanaldebüt
day06-Server und ereignisgesteuerte Kernklassen werden angezeigt
Tag 07: Fügen Sie unserem Server einen Akzeptor hinzu
Tag 08: Alles ist eine Klasse, auch TCP-Verbindungen sind keine Ausnahme
day09-buffer-große Rolle
Tag 10: Verbinden Sie den Thread-Pool mit dem Server
Tag 11 – Verbessern Sie den Thread-Pool und fügen Sie ein einfaches Testprogramm hinzu
Tag 12 – Schreiben Sie den Server in den Master-Slave-Reactor-Multithread-Modus um
Tag 13 – C++-Engineering, Code-Analyse, Leistungsoptimierung
Tag 14 – Unterstützen Sie die Anpassung der Geschäftslogik und verbessern Sie die Verbindungsklasse
day15-macOS unterstützt und verbessert die Anpassung der Geschäftslogik
Tag 16 – Refaktorieren Sie den Server und verwenden Sie intelligente Zeiger
Timer
Protokollierungssystem
Unterstützung des HTTP-Protokolls
Webbench-Test
Der Dateidownload wird an Haltepunkten fortgesetzt
Statischer Ressourcenspeicher
...
Das Wlgls/30daysCppWebServer-Projekt versucht, nachfolgende Teile als Referenz zu schreiben.
Meine Fähigkeiten sind durchschnittlich und mein Niveau ist begrenzt. Wenn Sie feststellen, dass meine Tutorials falsch oder verbesserungswürdig sind, können Sie gerne ein Problem ansprechen oder direkt PR machen.
Jeder ist herzlich willkommen, seinen eigenen Code zu diesem Projekt beizutragen. Wenn Sie Code haben, der Ihrer Meinung nach besser ist, reichen Sie bitte ein Problem ein oder senden Sie ihn direkt an PR. Alle Vorschläge werden berücksichtigt.
Um Code beizutragen, gehen Sie bitte zum Pine-Projekt, der in diesem Tutorial entwickelten Netzwerkbibliothek und auch der neuesten Codeversion.