Heim  >  Artikel  >  Der Wachstumspfad der PHP-Programmierer

Der Wachstumspfad der PHP-Programmierer

小云云
小云云Original
2017-11-18 14:00:442066Durchsuche

Als PHP-Programmierer glaube ich, dass ich viel gelernt habe, seit Sie angefangen haben. Einige PHP-Programmierer befinden sich jedoch noch in der Anfangsphase. Wie sollen wir als junge PHP-Programmierer meine Mängel ausgleichen? sich zum Zwischen- oder Fortgeschrittenenstadium entwickeln? Der unten stehende Herausgeber hat einen guten Wachstumspfad für PHP-Programmierer aufgezeigt.

Die erste Stufe: Grundstufe (einfacher PHP-Programmierer)

Fokus: Beherrschung von LNMP (der Kern sind grundlegende Installations- und Konfigurationsvorgänge)

Ziel : in der Lage sein, die grundlegende LNMP-Systeminstallation sowie einfache Konfiguration und Wartung abzuschließen; in der Lage sein, die grundlegende PHP-Entwicklung einfacher Systeme durchzuführen; in der Lage sein, die Entwicklung eines bestimmten PHP-Funktionsmoduls in einem mittelgroßen PHP-System zu unterstützen;

Zeit: Die für den Abschluss dieser Phase erforderliche Zeit variiert von Person zu Person. Einige wachsen schneller als ein halbes Jahr und andere wachsen langsam in zwei oder drei Jahren.

1.Linux:

Grundlegende Befehle, Vorgänge, Start, grundlegende Dienstkonfiguration (einschließlich RPM-Installationsdateien, verschiedene Dienstkonfigurationen usw.); kann einfache Shell-Skripte und awk/sed-Skripte schreiben Bestellungen usw.

2. Nginx:

In der Lage sein, Nginx + PHP zu installieren und zu konfigurieren, die grundlegenden Nginx-Kernkonfigurationsoptionen zu kennen, Server/Fastcgi_pass/Access_log und andere grundlegende Konfigurationen zu kennen Kann nginx+php_fpm installieren. Funktioniert reibungslos.

3. MySQL:

Kann MySQL selbst erstellen, kenne die grundlegenden MySQL-Konfigurationsoptionen und kenne die unterschiedlichen Konfigurationsoptionen für die beiden Engines von InnoDB MyISAM kennt die grundlegenden Unterschiede zwischen den beiden Engines und die Unterschiede in der oben genannten Auswahl. Der Hauptzweck besteht darin, eine MySQL-Datenbank manuell zu kompilieren und zu erstellen eine lauffähige MySQL-Datenbank.

4.PHP:

Grundlegendes Syntax-Array, String, Datenbank, XML, Socket, GD/ImageMgk-Bildverarbeitung usw.; vertraut mit verschiedenen APIs, die mit MySQL-Operationen verknüpft sind (mysql /mysqli / PDO), wissen, wie man verschiedene Codierungsprobleme löst; kennen die häufig verwendeten PHP-Frameworks (ThinkPHP, Zendframework, Yii, Yaf usw.); verstehen den grundlegenden MVC-Funktionsmechanismus und wissen, warum er funktioniert, und wissen ein wenig über die Unterschiede zwischen ihnen verschiedene PHP-Frameworks Der Unterschied; die Möglichkeit, ein MVC-Framework schnell zu erlernen. Sie müssen in der Lage sein, die Dateiverzeichnisorganisation im Entwicklungsprojekt zu verstehen, über eine grundsätzlich gute Codestruktur und einen guten Codestil zu verfügen und in der Lage zu sein, die Entwicklung kleiner Systeme und die Entwicklung eines bestimmten Moduls in einem mittelgroßen System abzuschließen.

5. Frontend:

Wenn es die Zeit und die Bedingungen zulassen, können Sie HTML/CSS/JS und andere verwandte Kenntnisse erlernen, wissen, welche Webstandards gelten und den Web-/Wap-Seitenmodus kennen von div+css. Der Unterschied zwischen HTML5 und HTML4; einige grundlegende JavaScript-Programmierkenntnisse verstehen; um ein wenig darüber zu lernen, aber es ist nicht notwendig, den Schwerpunkt darauf zu legen, es sei denn, die Person hat großes Interesse.

6. Das grundlegende Design muss abgeschlossen sein von kleinen Systemen, einschließlich einfachem Datenbankdesign, und in der Lage sein, grundlegende Funktionen zu erfüllen: Browser -> ; Design und Entwicklung einer Datenbankarchitektur, die die Entwicklung und Wartung von Websites mit Hunderttausenden bis Millionen Traffic unterstützen kann; jeden Tag;

Zweite Stufe: Verbesserungsstufe (mittlerer PHP-Programmierer)

Fokus: LNMP-Kenntnisse verbessern und LNMP umfassender und kompetenter anwenden können.

Ziele: Sie können jederzeit und überall eine LNMP-Umgebung einrichten und Routinekonfigurationen schnell durchführen. Sie können die meisten auftretenden Entwicklungs- und Online-Umgebungsprobleme aufspüren und lösen Entwicklungsarbeit eines mittelgroßen Systems; Sie können die Entwicklungsarbeit eines mittelgroßen Moduls in einem großen System durchführen.

1 Verwenden Sie Shell-Skripte reibungslos, um viele automatisierte Arbeiten auszuführen. awk /sed/perl funktioniert auch gut und kann viele Textverarbeitungs- und Datenstatistiken ausführen. Grundsätzlich können die meisten nicht-speziellen Linux-Programme installiert werden (einschließlich verschiedener Bibliotheken, Pakete usw.). -Party-Abhängigkeiten usw., wie MongoDB/Redis/Sphinx/Luncene/SVN und dergleichen); verstehen Sie grundlegende Linux-Dienste, wissen Sie, wie man Linux-Leistungsindikatordaten anzeigt, und kennen Sie die grundlegende Problemverfolgung unter Linux usw.

2. Nginx:

Verstehen Sie basierend auf der ersten Stufe die komplexere Nginx-Konfiguration, einschließlich Multi-Core-Konfiguration, Ereignisse, Proxy_Pass, Sendfile/TCP_*-Konfiguration, kennen Sie das Timeout und andere damit verbundene Konfigurationen und Auswirkungen auf die Leistung; Rolle des Webservers zusätzlich zum Webserver; kennen Sie die grundlegende Nginx-Konfigurationsoptimierung; kennen Sie das grundlegende Nginx-Funktionsprinzip; Worker-Mechanismus, Epoll) und wissen, warum die Nginx-Leistung höher ist als die gute Apache-Leistung.

3. Beherrschen Sie basierend auf der ersten Stufe viele Tipps in MySQL Entwicklung, einschließlich regelmäßiger SQL-Optimierung (Gruppierung nach/Reihenfolge nach/Rand-Optimierung usw.); Sie können nicht nur MySQL erstellen, sondern auch Hot- und Cold-Backups von MySQL-Daten durchführen, und Sie kennen auch die Konfigurationsoptionen, die sich auf die Leistung auswirken von innodb/myisam (z. B. key_buffer /query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit usw.) und kennen auch die Konfiguration dieser Optionen. Welcher Wert ist angemessen? Darüber hinaus kennen Sie auch einige spezielle Konfigurationsoptionen, z Erstellen Sie eine MySQL-Master-Slave-Synchronisationsumgebung, kennen Sie die Unterschiede zwischen verschiedenen binlog_formaten, kennen Sie die MySQL-Leistungsverfolgung, einschließlich slow_log/explain usw., und kennen Sie auch die grundlegende Indexerstellungsverarbeitung und andere Kenntnisse; verstehen Sie die grundlegende MySQL-Architektur (Server + Speicher-Engine). ) Kennen Sie die grundlegenden InnoDB/MyISAM-Indexspeicherstrukturen und -unterschiede (Clustered Index, B-Tree); kennen Sie den grundlegenden InnoDB-Transaktionsverarbeitungsmechanismus; wissen Sie, wo Sie eine Lösung für abnormale Situationen finden eine Lösung). Wenn die Bedingungen es zulassen, wird empfohlen, sich mit der MongoDB-Datenbank vertraut zu machen, die ein Vertreter von NoSQL ist, und die Unterschiede zu MySQL zu vergleichen. Kollegen können MongoDB in geeigneten Anwendungsszenarien sicher und umsichtig verwenden und kennen die grundlegende kombinierte Entwicklung von PHP und MongoDB .

4. Redis/Memcached:

Cache-Verarbeitung ist auf jeden Fall in den meisten mittelgroßen Systemen beteiligt, daher müssen Sie die Ähnlichkeiten, Unterschiede und Anwendungsszenarien von Memcached kennen Redis und in der Lage sein, Redis/Memcached unabhängig zu installieren, einige grundlegende Funktionen und Einschränkungen von Memcahed zu verstehen, wie z. B. den maximalen Wert, und zu wissen, wie man PHP mit ihrer Verwendung kombiniert, die grundlegenden Arbeitsprinzipien und die Verwendung von Redis zu verstehen und reguläre Daten zu verstehen Typen und wissen, welche Typen in welchen Szenarien verwendet werden. Verstehen Sie Redis-Transaktionen und mehr. Im Hauptteil erhalten Sie ein allgemeines Verständnis der Speicherstruktur von Memcached (Slab-Mechanismus), Redis versteht die zugrunde liegende Implementierungsspeicherstruktur gängiger Datentypen (SDS/verknüpfte Liste/SkipList/HashTable) usw. und übrigens: Erfahren Sie mehr über Redis-Transaktionen, RDB, AOF und andere Mechanismen verschiedene Erweiterungen von Drittanbietern; verstehen Sie die meisten Konfigurationsoptionen und Bedeutungen von php-fpm (z. B. max_requests/max_children/request_terminate_timeout und andere Konfigurationen, die sich auf die Leistung auswirken), kennen Sie den Unterschied zwischen mod_php/fastcgi und beherrschen Sie verschiedene grundlegende Technologien PHP, einschließlich verschiedener tiefergehender PHP-Programme, darunter auch PHP-orientiertes. Vertiefendes Verständnis von Objekten/SPL/speziellen Funktionen auf Syntaxebene wie Reflektion in Bezug auf Frameworks. Ich habe den Code von mindestens einem herkömmlichen PHP-MVC gelesen Framework und kennen den internen Implementierungsmechanismus und die Designideen des grundlegenden PHP-Frameworks in der PHP-Entwicklung. Sie sind bereits in der Lage, herkömmliche Designmuster für die Anwendungsentwicklung (abstrakte Fabrik/Einzelfall/Beobachter/Befehlskette/Strategie/Adapter und andere Muster) geschickt zu verwenden. Es wird empfohlen, ein eigenes PHP-MVC-Framework zu entwickeln, um die Entwicklung vollständig zu liberalisieren und sich ein umfassendes Verständnis des MVC-Modus zu verschaffen, sodass Sie schnell mit den verschiedenen Codeoptimierungsmethoden von PHP vertraut werden können Lösen Sie die meisten PHP-Sicherheitsprobleme. Machen Sie sich mit den Grundprinzipien des PHP-Ausführungsmechanismus vertraut (Zend-Engine/erweiterter grundlegender Arbeitsmechanismus). /C++-Sprache, Sie müssen in der Lage sein, grundlegenden C/C++-Code zu schreiben und mit der grundlegenden C/C++-Syntax (Zeiger, Array-Operationen, Zeichenfolgen, allgemeine Standard-API) und Datenstrukturen (verknüpfte Listen, Bäume, Hashes, Warteschlangen) vertraut zu sein ein grundlegendes Verständnis der C-Sprachentwicklungskonzepte unter Linux, die Fähigkeit, einfache Makefile-Dateien zu schreiben und die einfache GCC/GDB-Programmkompilierung und einfache Debugging-Arbeiten zu verwenden; ein allgemeines Verständnis der grundlegenden Netzwerkprogrammierung; (Dieser Punkt soll den Grundstein für eine höhere Ebene legen)

7 Frontend:

Machen Sie sich auf der Grundlage der ersten Stufe mit dem grundlegenden HTTP-Protokoll (Protokollcode 200) vertraut /300/400/500, grundlegender HTTP-Interaktionsheader); wenn die Bedingungen es zulassen, können Sie etwas eleganteres HTML+CSS+JavaScript in die Tiefe schreiben oder einige Front-End-Frameworks verwenden (jQuery/YUI/ExtJS/RequireJS/BootStrap). Wenn die Bedingungen es zulassen, können Sie sich eingehend mit der JavaScript-Programmierung befassen, z. B. mit dem Abschlussmechanismus und der DOM-Verarbeitung. (Dieser Artikel ist keine Schlüsselstudie, es sei denn, Sie interessieren sich für das Frontend)

8

Kann die Website-Architektur, die Datenbank und die grundlegende PHP-Framework-Auswahl für die meisten mittelgroßen Systeme entwerfen und Aufgaben durchführen wie: Browser -> > Nginx+PHP -> Grundlegendes Design, Entwicklung und Wartung von Websites mit Millionen bis mehreren Millionen Zugriffen pro Tag; Die dritte Stufe: fortgeschrittene Stufe (leitender PHP-Programmierer)

Wichtige Punkte: Zusätzlich zum grundlegenden LNMP-Programm können Sie auch vertiefendes Lernen in einer bestimmten Richtung oder einem bestimmten Bereich absolvieren. (Tiefendimensionsentwicklung)

Ziel: Neben der Fähigkeit, die grundlegende PHP-Geschäftsentwicklung abzuschließen, können Sie auch die tiefgreifendsten und komplexesten technischen Probleme lösen und mittlere und große Projekte unabhängig entwerfen und abschließen Systemdesign und Entwicklungsarbeit; Sie können unabhängig voneinander in eine bestimmte technische Richtung gehen und sind in diesem Bereich relativ professionell. (Zum Beispiel eingehende Recherche in jede Richtung wie MySQL, Nginx, PHP, Redis usw.)

1. Linux:

Zusätzlich zu den Funktionen der zweiten Stufe Zum regulären Betrieb und zur Leistung unter Linux können Sie zur Überwachung und Nachverfolgung auch viele erweiterte und komplexe Befehle verwenden, um die Arbeit abzuschließen (watch/tcpdump /starce/ldd/ar usw.), Sie können mehr schreiben Komplexe Shell-Skripte (mehr als 500 Zeilen) zur Unterstützung bei der Erledigung vieler Aufgaben, einschließlich Backups, automatisierter Verarbeitung, Überwachung und anderer Aufgaben, sind mit Anwendungen wie awk/sed/perl vertraut und können frei betrieben, gesteuert, verarbeitet werden. Textstatistiken und Analyse von Daten in verschiedenen komplexen Formaten; Sie haben ein gewisses Verständnis für die internen Mechanismen von Linux und Kernel-Modulen. Sie haben grundlegende Kenntnisse über die Verarbeitung von Ladevorgängen, die Behandlung von Startfehlern usw. und verstehen auch einige andere verwandte Dinge, wie z. B. NFS, Datenträgerverwaltung usw .;

2. Nginx:

Auf der Grundlage der oben genannten Stufe konnte ich Nginx sehr kompetent bedienen und tiefergehende Betriebs- und Wartungsarbeiten an Nginx durchführen B. Überwachung, Leistungsoptimierung, komplexe Problemverarbeitung usw.; je nach persönlichem Interesse können Sie sich auf weitere Aspekte konzentrieren, die sich hauptsächlich im Lesen des Quellcodes widerspiegeln Spezifischer Master-/Worker-Arbeitsmechanismus, Nginx-interne Ereignisverarbeitung, Speicherverwaltung usw.; gleichzeitig können Sie die Entwicklung von Nginx-Erweiterungen erlernen und einige Ihrer eigenen privaten Erweiterungen anpassen Grad des Verständnisses von Nginx+Lua, um zu sehen, ob ein besseres Modell kombiniert und angewendet werden kann; die Voraussetzung in dieser Phase ist ein tiefgreifendes Verständnis der Nginx-Prinzipien, und Sie können erwägen, ein vertiefter Profi in der Nginx-Richtung zu werden.

3. MySQL/MongoDB:

Basierend auf der zweiten Stufe können in Bezug auf MySQL-Anwendungen zusätzlich zur vorherigen grundlegenden SQL-Optimierung auch einige komplexe Vorgänge ausgeführt werden, z Datenstapel importieren und exportieren, risikoreiche Vorgänge wie das Ändern von Tabellenstrukturen oder das Hinzufügen oder Löschen von Indexfeldern für große Mengen an Online-Daten, es konnte auch komplexere MySQL-Probleme wie die Ablaufverfolgung bewältigen Auf der MySQL-Anwendungsebene sind verschiedene Probleme und Probleme mit der Master-Slave-Synchronisierung, Datenlösungen für die raumübergreifende Synchronisierung usw. beteiligt. Ich bin mit den Kernschlüsseltechnologien von MySQL vertraut B. Transaktionsmechanismen (Isolationsstufen, Sperren usw.), Trigger, Partitionen und andere Technologien. Die MySQL-Leistung umfasst Festplattenoptimierung (SAS-Migration zu SSD), Serveroptimierung (Speicher, Serverkonfiguration) und andere Kernkompetenzen Leistungsoptimierungsoptionen zusätzlich zur zweiten Stufe (innodb_log_buffer_size/back_log/table_open_cache /thread_cache_size/ innodb_lock_wait_timeout usw.), Verbindungspool-Softwareauswahlanwendung, umfassendes Verständnis von Betriebsanweisungen wie show * (Status anzeigen/Profil anzeigen), und kann die meisten Leistungsprobleme nachverfolgen; umfassende Vertrautheit mit der MySQL-Backup-Technologie, einschließlich Disaster Recovery und Wiederherstellung, umfassendes Verständnis von Binlog, Hot- und Cold-Backup, Multi-IDC-Backup usw.; B. mit dem Lesen einiger Quellcodes für den Arbeitsmechanismus von MySQL beginnen, z. B. dem Erlernen des Quellcodes der Master-Slave-Synchronisationstechnologie (Replikation) oder dem Erlernen des Quellcodes von MySQL. Lernen und verstehen Sie den Quellcode eines bestimmten Speicher-Engine (MyISAM/Innodb/TokuDB) usw. Wenn die Bedingungen dies zulassen, können Sie auf die CSV-Engine zurückgreifen, um Ihre eigene einfache Speicher-Engine zu entwickeln, um einige Daten zu speichern und Ihr Verständnis von MySQL während dieses Prozesses zu verbessern Wenn Sie interessiert sind, können Sie auch eine Weiterentwicklung in Richtung DBA in Betracht ziehen. Auf der MongoDB-Ebene können Sie beispielsweise erwägen, MongoDB online anzuwenden, wenn Sie weniger schreiben und mehr lesen, oder einige Online-Datenanalyse- und -verarbeitungsvorgänge durchzuführen. Die spezifischen Szenarien können auf der Arbeit basieren, aber der Kern besteht darin Wenn die Bedingungen oder Interessen dies zulassen, können Sie bei Anwendungen in anderen Szenarien als NoSQL mehr über den Arbeitsmechanismus von MongoDB erfahren.

4. Redis/Memcached:

Auf der Grundlage der zweiten Stufe können Sie sich bewerben und tiefer lernen. Da Memcached nicht besonders komplex ist, wird empfohlen, den Quellcode, insbesondere den Speicherverwaltungsteil, zu lesen, um ein tieferes Verständnis im Redis-Teil zu ermöglichen. Sie können komplexere Datenstrukturanwendungen durchführen (zset wird für Ranking-Ranking-Operationen verwendet). /Transaktionsverarbeitung, um sicherzustellen, dass Atomicity in Flash-Sale-Szenarioanwendungen verwendet wird. Dabei geht es hauptsächlich um das Erlernen von Anwendungen von Synchronisierungsmechanismen wie AOF und das Entwerfen einer hochverfügbaren Redis-Anwendungsarchitektur und eines Clusters. Es wird empfohlen, den Quellcode von Redis zu studieren Vertiefen und in die zweite Stufe einbringen Das gesammelte Wissen kann angewendet werden. Insbesondere können Sie sich über Kernereignisverwaltung, Speicherverwaltung, interne Kerndatenstruktur usw. informieren, um es vollständig zu verstehen. Wenn Ihr Interesse es zulässt, können Sie ein sehr professioneller Benutzer von Redis werden.

5. PHP:

Als grundlegende Kernkompetenz müssen wir uns auf der Grundlage der zweiten Stufe vertiefen. In Bezug auf die grundlegende Codeanwendung können Sie 95 % der bei der PHP-Entwicklung auftretenden Probleme lösen und die meisten PHP-Frameworks innerhalb eines Tages schnell verwenden und die Vorteile jedes gängigen PHP-Frameworks verstehen Sie können in der Projektentwicklung schnell und bequem eine Technologieauswahl treffen. Zusätzlich zu den Kenntnissen der regulären zweiten Stufe werden Sie auch einige obskurere Konfigurationsoptionen (php auto_prepend_file/auto_append_file) verstehen, einschließlich einiger komplexer erweiterter Konfigurationen in Erweiterungen und Prinzipien (wie memcache.hash_strategy in der Memcached-Erweiterungskonfiguration, apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection in der APC-Erweiterungskonfiguration usw.); Sie haben ein gutes Verständnis des Arbeitsmechanismus von PHP, einschließlich des PHP-FPM-Arbeitsmechanismus (z. B. PHP-FPM ermöglicht die Berechnung und das Prinzip der Prozessanzahl auf verschiedenen Konfigurationsmaschinen), verfügt über grundlegende Kenntnisse der Zend-Engine (VM/GC/Stream-Verarbeitung), hat den grundlegenden PHP-Kernel-Quellcode gelesen (oder verwandte Artikel gelesen) und hat ein Verständnis für den internen Mechanismus von PHP. Sie haben ein Verständnis für die Implementierung der meisten Kerndatenstrukturen (Basistypen/Array/Objekt) und verfügen über ein tiefgreifendes Verständnis der Kerninfrastruktur (zval/hashtable/gc); um die grundlegende PHP-Erweiterungsentwicklung durchzuführen und einige mittlere und fortgeschrittene Kenntnisse der Erweiterungsentwicklung (Minit/Rinit usw.) zu verstehen, mit den Details der verschiedenen Kommunikations- und Interaktionsmethoden zwischen PHP und Apache/Nginx (mod_php/fastcgi) vertraut zu sein. Zusätzlich zur Entwicklung von PHP-Erweiterungen können Sie erwägen, die Entwicklung von Zend-Erweiterungen zu erlernen, um PHP von einer niedrigeren Ebene aus zu verstehen.

6. C/C++:

Auf der zweiten Stufe können Sie ein tieferes Verständnis der C/C++-Sprache erlangen und die Entwicklung kleiner und mittlerer C-Programme abschließen /C++-Systeme. Zusätzlich zur grundlegenden C/C++-Syntax und den Datenstrukturen können Sie in der zweiten Stufe auch einige spezielle Datenstrukturen (b-tree/rb-tree/skiplist/lsm-tree/trie-tree usw.) erlernen .) Um Ihre Anforderungen bei der Systemprogrammierung zu erfüllen, müssen Sie mit der Multiprozess- und Multithread-Programmierung vertraut sein und die meisten Kommunikationsmethoden zwischen Multiprozessen verstehen und flexibel wählen können Kommunikationsmethoden (gemeinsam genutzter Speicher/Semaphor/Pipeline usw.); Sie sind gut in der Multithread-Programmierung und können gleichzeitig Multithread-Programme entwickeln und debuggen Unterschiede und Auswahl von Multiprozessmodellen/Multithread-Modellen/asynchronen Netzwerk-IO-Modellen und mit den Prinzipien und Unterschieden verschiedener asynchroner Netzwerk-IO-Modelle (select/poll/epoll/iocp usw.) vertraut sein Gängige asynchrone Frameworks (ACE/ICE /libev/libev/Boost.ASIO usw.) und deren Verwendung. Wenn Sie Zeit haben, können Sie sich auch einige im Inland entwickelte Bibliotheken ansehen Gleichzeitig in der Lage sein, eine gute Programmarchitektur mit hoher Parallelität zu entwerfen (Leader-Follow/Master-Worker usw.); die meisten Probleme bei der Entwicklung von C/C++-Back-End-Servern verstehen (Speicherverwaltung, Protokolldruck, hohe Parallelität). , Front-End- und Back-End-Kommunikationsprotokoll, Dienstüberwachung), kennen die RPC-Kommunikationsprobleme verschiedener Back-End-Dienste (Struktur/http/thirft/protobuf usw.) und können GCC und GDB besser entwickeln Kompilieren und debuggen Sie Programme und können Sie nach dem Verlust des Online-Programmkerns schnell nachverfolgen. Verfolgen und lösen Sie Probleme im Hinblick auf die allgemeine Modulentwicklung. Sie können einige allgemeine Tools oder Bibliotheken (z. B. asynchrone Netzwerk-Frameworks, Protokollbibliotheken usw.) sammeln oder entwickeln. Speicherpools, Thread-Pools usw.), aber Sie sollten vorsichtig sein, ob Sie sie nach der Entwicklung anwenden, um sich vor der Verfolgung von Fehlern zu schützen:

In -tiefes Verständnis des HTTP-Protokolls (einschließlich jedes detaillierten Protokolls, des speziellen Protokollcodes und der Gründe dafür, z. B. 302 statische Dateien werden zwischengespeichert, 502 bedeutet, dass PHP hinter Nginx ausgefallen ist usw.); Wenn Sie daran interessiert sind, das Front-End zu erlernen, können Sie einige Front-End-Frameworks wie jQuery selbst entwickeln oder einen Rich-Text-Editor usw. entwickeln relativ trivialer Test von JavaScript-Kenntnissen;

8

Grundlegende Kenntnisse in der Grundsprache PHP/C/C++ werden empfohlen. Je nach Ihren persönlichen Interessen und Hobbys können Sie versuchen, verschiedene Programmiersprachen zu erlernen. Für Sprachen können Sie Lisp/Haskell/Scala/Erlang ausprobieren. Für die statistische Datenanalyse können Sie etwas über die Sprache R lernen Um das Geschäft aus einer anderen Perspektive zu betrachten, können Sie Node.js in Kombination mit Nginx usw. ausprobieren. Das Erlernen verschiedener Sprachen dient hauptsächlich dazu, die eigene Sichtweise und die Unterschiede in den Problemlösungsmethoden zu verbessern. Sie werden beispielsweise verstehen, dass es in maschinenübergreifenden Kommunikationsszenarien auch leichtgewichtige Coroutinen gibt Die Lösung von Erlang ist überraschend einfach. Wenn Sie sich beispielsweise nicht für C/C++ entscheiden möchten, gibt es auch ähnlich effiziente Erlang/Golang usw.;

9. Lernen in anderen beruflichen Richtungen:

In dieser Phase werden Sie zusätzlich zu den grundlegenden LNMP-Kenntnissen auch das Erlernen von Kenntnissen in anderen Bereichen in Betracht ziehen. Diese sind je nach Person möglich . Interessen und langfristige Ziele. Derzeit stehen viele Bereiche zur Auswahl, z. B. Cloud Computing (verteilter Speicher, verteiltes Computing, virtuelle Maschinen usw.), maschinelles Lernen (Data Mining, Mustererkennung usw., angewendet auf Statistiken, personalisierte Empfehlungen) und natürliche Sprachverarbeitung (chinesische Wortsegmentierung usw.), Suchmaschinentechnologie, Grafiken und Bilder, Spracherkennung usw. Zusätzlich zu diesen fortgeschrittenen Bereichen gibt es auch viele Bereiche, in denen Sie mehr über Ingenieurwesen lernen können, wie z. B. Hochleistungssysteme, mobile Entwicklung (Android/IOS), Computersicherheit, eingebettete Systeme, Hardware usw.

10. Systemdesign:

Basierend auf der zweiten Stufe kann das Systemdesign die erworbenen Erfahrungen und Fähigkeiten anwenden, um relativ komplexe mittlere und große Systeme zu entwerfen, die die meisten Online-Probleme lösen können. Verschiedene komplexe Systemprobleme, wie z. B. Browser –> Zugriffsschicht –> Backend, Anti-Cheating-Backend, externe Dienste) -> Weitere Backends Jiangzis komplexes Geschäft ist in der Lage, die normale Entwicklung und Wartung von Websites mit Dutzenden bis Hunderten Millionen Traffic pro Tag zu unterstützen.

Dieser Weg lässt Sie nicht nur erwachsen werden, sondern zeigt Ihnen auch, in welchem ​​Stadium Sie sich als PHP-Programmierer befinden. Wenn Sie feststellen, dass Sie noch weit von Ihrem Ziel entfernt sind, können Sie dem oben genannten Weg folgen . Verbessere dich.

Verwandte Empfehlungen:

Eine kurze Diskussion über die Zukunft der PHP-Programmierer

Einige Fallstricke, die Programmierer vermeiden sollten

Sei ein anderer Programmierer

Grundlagen, um ein erfolgreicher Programmierer zu werden

Eine offene Diskussion über Sexthemen: Wie kann Programmierer verbessern ihre Programmierkenntnisse?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Neueste PHP-LernrouteNächster Artikel:Neueste PHP-Lernroute