Ce tutoriel est le processus d'apprentissage du C++ lorsque j'étais étudiant. Après avoir travaillé, je n'ai plus l'énergie d'écrire le reste à l'époque, il y a de nombreuses imperfections et même des défauts. modifier, développer et poursuivre le projet. Pour une bibliothèque de base en langage C plus parfaite, veuillez passer à wheelib
Permettez-moi de commencer par la conclusion : quel que soit le langage utilisé, la base de tout développement backend est le développement de serveur C/C++ pour Linux.
Presque tous les serveurs à haute concurrence fonctionnent dans l'environnement Linux. L'auteur a déjà écrit des serveurs en Java et en nœuds, mais à la fin, j'ai découvert que j'avais seulement appris une technologie et un langage, mais que je ne comprenais pas les principes de base sous-jacents. Le processus d'une requête HTTP, pourquoi une concurrence élevée peut être obtenue, comment contrôler les connexions TCP, comment gérer la logique de transmission des données, etc., ne peuvent être compris en profondeur qu'en programmant en C/C++.
Ce didacticiel imite « 30 jours pour créer votre propre système d'exploitation » et s'adresse aux novices sans aucune expérience. Il vous apprendra comment démarrer avec le développement de serveurs Linux en 30 jours. Ce didacticiel est plus pratique et se concentrera sur la façon d'écrire du code sans dépenser trop d'espace en expliquant les principes informatiques de base qui le sous-tendent. Des chapitres spécifiques des livres correspondants seront donnés le cas échéant, mais cela ne signifie pas que ces connaissances théoriques ne sont pas importantes. En fait, les bases théoriques sont très importantes. Sans support théorique, il est absurde de construire un serveur hautes performances.
Ce tutoriel espère que les lecteurs :
Après avoir terminé ce tutoriel, vous comprendrez facilement le code source de muduo.
L'une des difficultés de l'apprentissage du C/C++ est que vous ne pouvez pas créer de choses réelles lors de votre premier apprentissage. Il n'y a pas de retour et le programme s'exécute dans une ligne de commande sombre. Contrairement au développement Web, vous pouvez voir les résultats de votre apprentissage. à tout moment. Le code de ce didacticiel est placé dans le dossier code. Après avoir étudié chaque jour, vous pouvez obtenir un serveur qui peut être compilé et exécuté, et le développement itératif se poursuit.
Il y a un dossier de code pour chaque jour dans le dossier code. Entrez le dossier et utilisez la commande make
pour compiler. Deux fichiers exécutables seront générés. Entrez la commande ./server
pour voir les résultats d'apprentissage d'aujourd'hui ! Créez ensuite un nouveau terminal et entrez ./client
pour exécuter le client et interagir avec le serveur.
day01-Commencez avec la socket la plus simple
jour02-Ne laissez passer aucune erreur
day03-Pour une simultanéité élevée, epoll doit être utilisé
jour04- Jetons un coup d'oeil à notre premier cours
day05-epoll utilisation avancée-Début de la chaîne
day06-Les classes principales basées sur le serveur et les événements apparaissent
jour07-Ajouter un accepteur à notre serveur
day08-Tout est une classe, même les connexions TCP ne font pas exception
day09-buffer-grand rôle
jour 10-rejoindre le pool de threads au serveur
day11-Améliorez le pool de threads et ajoutez un programme de test simple
jour 12-Réécrire le serveur en mode multi-thread maître-esclave Reactor
day13-Ingénierie C++, analyse de code, optimisation des performances
day14-Prend en charge la personnalisation de la logique métier et améliore la classe de connexion
day15-macOS prend en charge et améliore la personnalisation de la logique métier
day16-Refactoriser le serveur et utiliser des pointeurs intelligents
minuteur
Système de journalisation
Prise en charge du protocole HTTP
test sur banc Web
Le téléchargement du fichier reprend aux points d'arrêt
Stockage de ressources statiques
...
Le projet Wlgls/30daysCppWebServer tente d'écrire les parties suivantes pour référence.
Mes capacités sont moyennes et mon niveau est limité. Si vous trouvez que mes tutoriels sont incorrects ou méritent d'être améliorés, n'hésitez pas à soulever un problème ou directement aux relations publiques.
Tout le monde est invité à contribuer avec votre propre code à ce projet. Si vous avez un code que vous jugez meilleur, veuillez soumettre un problème ou directement PR. Toutes les suggestions seront prises en compte.
Pour contribuer au code, veuillez vous rendre sur le projet Pine, qui est la bibliothèque réseau développée dans ce didacticiel et constitue également la dernière version du code.