Ceci est la route d'apprentissage du développement en arrière-plan du serveur Linux C / C ++ dont vous avez besoin!

Le langage C et le C ++ sont des langages «qui font la roue» et peuvent faire presque tout. Mais de manière générale, le langage C et C ++ sont principalement utilisés pour le développement back-end (serveur), notamment:

Développement de fond de société de communication Développement de fond de société
Internet Développement de fond de société de
jeu
...
Bien sûr, les responsabilités spécifiques de ce développement de fond comportent de nombreuses subdivisions, telles que:

Certains font du traitement et de l'analyse de données, d'
autres font du protocole et de la communication de base, d'
autres font de l'optimisation des applications de base côté serveur,
et même des pilotes et des noyaux système en arrière-plan
...

Du point de vue de l'apprentissage technique et de l'application pratique, quelle est la différence entre C / C ++ et Java?
C / C ++, c'est vraiment différent de Java. Le langage C et le C ++, en particulier le C ++, ont un langage à grain fin et de nombreux mécanismes. Bien que les performances soient élevées, le langage lui-même est vraiment lourd. Nous préférons l'appeler langages de "fabrication de roues"! C'est précisément parce que le langage C et C ++ ont de bonnes performances et une granularité fine, ils peuvent tout faire. Et Java lui-même est un langage au service du développement de logiciels Internet (développement back-end + développement côté client) .Il a un concept évident d '«écosphère», le champ d'application est donc très clair. Personnellement, je pense que le langage C et la programmation C ++ sont encore plus difficiles que Java. Java est une couche d'application pure après tout, tandis que le langage C et C ++ ont des exigences plus élevées pour les programmeurs.

La plupart des directions d'application de C / C ++ sont le développement d'arrière-plan ou de serveur.Je pense donc qu'il est nécessaire d'apprendre le système Linux.
Dans tous les cas, les itinéraires d'apprentissage et le contenu qui seront présentés ci-dessous sont applicables à toutes les situations ci-dessus.

base

Structures de données et algorithmes

Tri et filtre KMP
Red-Black Tree
B-tree et B + Tree
Hash and Bloom
Insérez la description de l'image ici

Modèles de conception

Modèle de chaîne de responsabilité Modèle de
filtre Modèle de
publication et d'abonnement Modèle d'
usine Modèle d'
agence
Insérez la description de l'image ici

Gestion de l'ingénierie

Makefile / cmake / conf i gure
git / svn et intégration continue
Commande de paramètre d'exécution du système Linux

Conception de réseau haute performance

Code


Le principe et la réalisation du réseau io et du réacteur select / poll / epoll La réalisation du
serveur web http / https La réalisation du
protocole et serveur websocket
Insérez la description de l'image ici

Analyse de la solution
Réalisation de millions de serveurs de
composants réseau simultanés Redis / Memcached / Nginx
API Posix et pile de protocoles réseau Protocole de
fiabilité UDP QUIC / KCP
Insérez la description de l'image ici
Insérez la description de l'image ici

Réalisation de composants de base

Composante Pooled
analyse piscine et de la performance fil de l' écriture manuscrite
ringbuffer et pool de mémoire mise en œuvre
pool demande asynchrone http / mysq1 / Redis / dns
mise en œuvre du pool de connexion mysq1
Redis mise en œuvre du pool de connexion
Insérez la description de l'image ici
Insérez la description de l'image ici

Composants hautes performances Fonctionnement
atomique
File d'attente de messages CAS et réalisation sans verrouillage
Schéma de minuterie Arbre rouge-noir Roue temporelle Heap minimum
Réalisation du verrouillage Réalisation du principe de verrouillage
Conception de maintien de la connexion au serveur
Réalisation de composants d'essai / capture
Insérez la description de l'image ici

Composant open source
framework libevent / libev combat réel
Programme de journal asynchrone Log4cpp
Conception du protocole de la couche application ProtoBuf / Thr
ift OpenssI Cryptage symétrique et cryptage asymétrique
Analyse de données Json / Analyseur Xml et boîte à outils Codage des
caractères Principe Unicode et pratique de la programmation
Insérez la description de l'image ici

Cadre


Le principe de conception et cas d'ingénierie du framework
coroutine pour réaliser la coroutine NtyCo La réalisation et le test de performance du planificateur coroutine
Insérez la description de l'image ici

Pile de protocole en mode utilisateur Conception
tcp / ip NtyTCP et implémentation EpolI Tcp
/ ip timer et implémentation de
fenêtre coulissante Fenêtre coulissante / congestion Démarrage lent
Insérez la description de l'image ici

Développement middleware

Instructions MySQL
SQL, index, procédures stockées, déclencheurs
Analyse du pool de connexion à la base de données et du protocole SQL
Principe du moteur de stockage MyISAM et InnoDb le
font vous-même pour implémenter un moteur de stockage
Solution de cluster MySQI et principe de Rep1 ication
Insérez la description de l'image ici


Commandes associées à Redis Redis et
pool de connexions et protocole de mise en œuvre persistants de Redis,
principe de stockage
et synchronisation maître-esclave du modèle de données et
schéma de cluster de modèle atomique réplication maître-esclave / sentinelle / cluster
Insérez la description de l'image ici


Proxy inverse Nginx Nginx et principe de configuration des paramètres système.
Poussée du contenu publicitaire. Implémentation du module de filtrage Nginx.
Statistiques de fréquence d'accès. Implémentation du module gestionnaire
Nginx
. Processus de machine d'état http Nginx . Communication inter-processus et mécanisme de partage de Slab.
Insérez la description de l'image ici


Programmation d'interface MongoDB et
solution de cluster d' opérations de documents et sauvegarde persistante
Insérez la description de l'image ici


stockage distribué au niveau du noyau dfs pris en charge par Ceph
stockage distribué de petits fichiers fastdfs
Insérez la description de l'image ici

Framework open source

Skynet
détruit l'
acteur de passerelle hautes performances Skynet pour réaliser et équilibrer cluster / charge de cluster
: partage de données de mise à jour à chaud du module réseau skynet
Insérez la description de l'image ici

Implémentation du
mode routeur-revendeur ZeroMQ ZeroMQ
Modèle de message et cas d'ingénierie
Mécanisme de réseau et analyse des performances
Insérez la description de l'image ici

Principe DPDK
PCI et test du
flux de données pmd / 13fwd / skeleton kni et résolution de la pile de protocoles Résolution
du protocole DNS et mise en œuvre du serveur
Implémentation de la passerelle Nginx hautes performances
Accélération virtio et vhost para -virtualisée
Insérez la description de l'image ici

Code source du noyau Linux

Gestion des
processus Gestion et planification des processus
Verrouillage et communication inter-processus
Appel système et implémentation d'appel système personnalisé

Gestion de la
mémoire Gestion de la mémoire physique
Processus d'analyse de la mémoire virtuelle mm_ struct
Projet: recyclage de pages et échange de pages

Gestion de la
mémoire Gestion de la mémoire physique
Processus de mémoire virtuelle Analyse mm_ struct
Recyclage de page et échange de page

Système de
fichiers Système de
fichiers virtuel Famille de systèmes de fichiers Ext Système de fichiers
sans stockage persistant
Attributs étendus et liste de contrôle d'accès

Pilote de périphérique
compilation du noyau et le système de machine virtuelle mise à jour
mise en oeuvre de composants de communication inter-processus de mise en œuvre de l'
adaptateur de réseau virtuel
Insérez la description de l'image ici
Insérez la description de l'image ici

Analyse de performance

Outils
de performance Système de construction de code haute performance tundra
Outil de test de stress Http Outil de
test de stress de site Web WRK Webbench
Insérez la description de l'image ici

Bibliothèque de
débogage Outil d'analyse des performances de débogage de la mémoire Valgr ind
Cadre de test Google C ++
Bibliothèque de suivi d'allocation de mémoire GoogleTest MemTrack

Suivi du
noyau Détection du noyau
Analyse et génération de cartes thermiques SystemTap

Livres de référence complémentaires

MySQL: "High Performance MySQL 3rd Edition"
Nginx: "In-depth Understanding of Nginx: Module Development and Architecture Analysis (2nd Edition)" (Tao Hui)
Redis: "Redis 5 Design and Source Code Analysis" (Chen Lei)
Linux Kernel: "En profondeur Comprendre l'architecture du noyau Linux (traduit par Guo Xu)
Structure des données et algorithmes: Introduction aux algorithmes (3e édition)
Analyse des performances: "Aperçu des performances des systèmes, des entreprises et du cloud computing"
MongoDB: "Guide définitif de MongoDB"
Ceph: "Cep Guide d'apprentissage du stockage distribué (Communauté Ceph Chine)
Docker: Docker Containers and Container Cloud (2e édition)
TCP / IP: Tcp / Ip Volume 1 détaillé Volume 2 Volume 3
Programmation système Linux: Programmation Unix Advanced Environment 》
Ordinateur: `` Compréhension approfondie des systèmes informatiques ''
ZeroMQ: `` ZeroMQ: bibliothèque de communication de messages extrêmement rapide à l'ère du cloud ''
DPDK: ` ` Deep DPDK in simple language ''

Les lacunes ci-dessus sont les bienvenues pour souligner la discussion. Les amis qui se sentent bien espèrent obtenir votre soutien pour la transmission.
Enfin, si vous trouvez du matériel d'apprentissage difficile à trouver, vous pouvez ajouter le groupe d'échange d'apprentissage Linux C / C ++: 960994558 Le matériel d'apprentissage a été partagé dans le groupe J'ai hâte de vous rejoindre ~

Je suppose que tu aimes

Origine blog.csdn.net/weixin_52622200/article/details/111271229
conseillé
Classement