Maison > Article > développement back-end > Quelles compétences devez-vous maîtriser pour 15 000 PHP ?
1. Linux
En plus des opérations régulières et de la surveillance et du suivi des performances, sous Linux, vous pouvez également utiliser de nombreuses commandes avancées et complexes pour terminer le travail (regardez /tcpdump/starce / ldd/ar, etc.);
En termes de scripts shell, j'ai pu écrire des scripts shell relativement complexes (plus de 500 lignes) pour aider à réaliser de nombreux shells dont la sauvegarde, traitement, surveillance automatisés, etc. ;
Maîtriser des applications telles que awk/sed/perl et peut librement exploiter, contrôler, traiter et traiter des statistiques de texte et analyser des données dans divers formats complexes
Avoir une certaine compréhension des mécanismes internes de Linux et du chargement des modules du noyau. Il existe un traitement de base de la gestion des erreurs de démarrage, etc. en même temps, je comprends également d'autres choses connexes, telles que NFS, la gestion des disques, etc. 2. NginxVous pouvez envisager de vous concentrer sur une étude approfondie du principe de fonctionnement de Nginx, principalement à partir de la lecture du code source, comme le mécanisme de travail spécifique maître/travailleur, Nginx. traitement des événements internes, gestion de la mémoire, etc. ; En même temps, vous pouvez apprendre le développement d'extensions Nginx et personnaliser certaines de vos propres extensions privées en même temps, vous pouvez avoir un certain degré de ; compréhension de Nginx+Lua et voyez si vous pouvez les combiner et les appliquer pour créer un meilleur modèle. 3. MySQL/MongoDBEn termes d'applications MySQL, en plus de l'optimisation SQL de base précédente, il peut également effectuer certaines opérations complexes, telles que l'importation et l'exportation de gros lots de données et de gros lots de données en ligne, telles que la modification de la structure de la table ou l'ajout ou la suppression de champs d'index En plus de l'installation et de la configuration, il a été capable de gérer des problèmes MySQL plus complexes, tels que le traçage de divers problèmes, la résolution des problèmes de retard de synchronisation maître-esclave et le schéma de données de synchronisation entre salles informatiques, l'architecture à haute disponibilité MySQL, etc. sont tous impliqués et compris Pour le niveau d'application MySQL, je suis ; familier avec les technologies clés de base de MySQL, telles que le mécanisme de transaction (niveau d'isolement, verrouillage, etc.), les déclencheurs, Avoir une certaine compréhension et application du partitionnement et d'autres technologies. 4. Redis/MemcachedComme Memcached n'est pas particulièrement compliqué, il est recommandé de lire le code source, notamment la partie gestion de la mémoire, pour faciliter une compréhension approfondiePartie Redis, vous pouvez faire plus d'applications de structures de données complexes (zset est utilisé pour classer les opérations de classement/traitement des transactions afin de garantir l'atomicité dans les applications de scénarios de vente flash) ; Architectures et clusters d'applications Redis disponibles.
5. PHP
En termes d'application de code de base, il peut résoudre 95 % des problèmes rencontrés dans le développement PHP et comprendre la plupart des compétences PHP, il peut gérer la plupart des frameworks PHP ; en une journée, et comprendre les avantages et les inconvénients de chaque framework PHP grand public, qui peut rapidement et facilement sélectionner la technologie pendant le développement du projet
En termes de configuration, comprendre certaines options de configuration plus non conventionnelles (php auto_prepend_file/ auto_append_file ; ), y compris certaines configurations et principes avancés complexes dans les extensions.
Avoir une bonne compréhension du mécanisme de fonctionnement de php, y compris le mécanisme de fonctionnement de php-fpm (comme le calcul et le principe du nombre de processus activés par php-fpm sur des machines avec différentes configurations), et avoir une connaissance de base du moteur zend (vm/gc/stream Processing), avoir lu le code source de base du noyau PHP (ou lu des articles connexes), avoir une compréhension de l'implémentation de la plupart des structures de données de base (types de base/Array/Object ) des mécanismes internes de PHP et avoir une connaissance de l'infrastructure de base (zval/hashtable/gc ) avoir une étude et une compréhension approfondies.
6. C/C++
Être capable d'avoir une compréhension plus approfondie du langage C/C++ et d'être capable de réaliser le développement de systèmes C/C++ de petite et moyenne taille ; En plus de la syntaxe et de la structure de données C/C++ de base de la deuxième étape, vous pouvez également apprendre certaines structures de données spéciales (b-tree/rb-tree/skiplist/lsm-tree/trie-tree, etc.) pour répondre à vos besoins en travail particulier ;
dans le système En termes de programmation, être familier avec la programmation multi-processus et multi-thread ; comprendre la plupart des méthodes de communication entre multi-processus dans des situations multi-processus, et être capable de faire preuve de flexibilité ; choisissez des méthodes de communication (mémoire partagée/sémaphore/pipeline, etc.) ;
La programmation multi-thread peut bien résoudre les problèmes de conflits de verrouillage et être capable de développer et de déboguer des programmes multi-thread en même temps ; sont familiers avec la programmation réseau, comprennent les différences et la sélection des modèles multi-processus/modèles multi-thread/modèles d'E/S de réseau asynchrone, et connaissent les différents réseaux asynchrones Les principes et les différences des modèles d'E/S (select/poll/epoll/iocp, etc.), et familier avec les frameworks asynchrones courants (ACE/ICE /libev/libevent/libuv/Boost.ASIO, etc.) et leurs utilisations. Si vous avez du temps libre, vous pouvez également jeter un œil à certains produits nationaux. bibliothèques développées (telles que muduo)
Également capable de concevoir une bonne architecture de programme à haute concurrence (leader-follow/master-worker, etc.) ; Comprendre la plupart des problèmes du serveur back-end C/C++ ; développement (gestion de la mémoire, impression des journaux, haute concurrence, protocoles de communication front-end et back-end, surveillance des services), et connaître les problèmes de communication RPC de chaque service back-end (struct/http/thirft/protobuf, etc.).
7. Front-end
Compréhension approfondie du protocole HTTP (y compris le code de protocole spécial de chaque protocole détaillé et les raisons qui le sous-tendent, telles que 302 fichiers statiques sont mis en cache, 502 signifie que php derrière nginx est en panne, etc.); en plus des aspects frontaux précédents des diverses capacités d'intégration d'applications-cadres.
Tutoriel recommandé :
Tutoriel PHPCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!