Wie man lernt, sich von einem Junior-Java-Programmierer zu einem qualifizierten Architekten zu entwickeln, oder welche Art von technischem Wissen ein qualifizierter Architekt haben sollte. Dies ist nicht nur eine Frage für einen Junior-Programmierer, der gerade erst den Arbeitsplatz betreten hat wird oft von erfahrenen Programmierern gefragt, die nach drei bis fünf Jahren Arbeit verwirrt sind. Ich hoffe, dass dieser Artikel die umfassendste und maßgeblichste Antwort ist, die Sie je gesehen haben.
1: Grundlagen der Programmierung
Ob C oder C++, ob Java oder PHP, wenn Sie ein qualifizierter Programmierer werden möchten, grundlegende Datenstrukturen und Algorithmus-Grundlagen müssen noch vorhanden sein. In den folgenden Artikeln werden häufig verwendete Datenstrukturen und klassische Algorithmen für Sie von der Idee bis zur Implementierung erläutert.
1-1 Gemeinsame Datenstrukturen
Array, verknüpfte Liste, Heap, Stapel, Warteschlange, Hash-Tabelle, Binärbaum usw.
1-2 Algorithmusideen
Analyse und Berechnung der zeitlichen und räumlichen Komplexität des Algorithmus
Algorithmusideen: Rekursion, Rekursion, Erschöpfung, Gier, Teile und Herrsche, dynamische Programmierung, Iteration, verzweigt
1- 3 klassische Algorithmen
Klassische Sortierung: Einfügungssortierung, Blasensortierung, schnelle Sortierung (geteilte Austauschsortierung), direkte Auswahlsortierung, Heap-Sortierung, Zusammenführungssortierung
Klassische Suche: sequentielle Suche, binäre Suche, Binäre Sortierbaumsuche
1-4 Erweiterte Datenstrukturen
B+/B-Zahlen, Rot-Schwarz-Bäume, Diagramme usw.
1-5 Erweiterte Algorithmen
Graph-Tiefensuche, Graph-Breitensuche, topologische Sortierung, Dijkstra-Algorithmus (Single-Source-Shortest-Path), Huffman-Codierung, euklidische Division, minimaler Spannbaum usw.
2: Grundlagen der Java-Sprache
Die Java-Sprache, die vor etwas mehr als 20 Jahren geboren wurde, ist weit verbreitet in Web-Websites, in mobilen Geräten und Desktop-Anwendungen Viele Jahre in Folge stand es an der Spitze der TOBIE-Programmiersprachen-Rangliste und hat kürzlich die Meisterschaft angeführt. Was die herausragenden und markanten Merkmale von Java sind, muss zunächst geklärt werden.
2-1 Grundlegende Syntax
Java-Syntaxformat, Konstanten und Variablen, Variablenbereich, Methoden und Methodenüberladung, Operatoren, Programmflusskontrolle, verschiedene grundlegende Datentypen und Verpackungsklasse
2-2 Wichtig: Sammlungsklasse
Sammlung und verschiedene Listen-, Mengen-, Warteschlangen-, Kartenimplementierungs- und Integrationsbeziehungen, Implementierungsprinzipien
Sammlungen und Arrays
2-3 Andere JavaAPI
String und StringBuffer, System- und Runtime-Klassen, Date- und DateFomat-Klassen
java.lang-Paket
java.util-Paket ( Sammlungsklassensystem, reguläre Ausdrücke, zip , sowie Zeit, Zufallszahlen, Eigenschaften, Ressourcen und Timer usw.)
java.math-Paket
java.NET-Paket
java.text-Paket (verschiedene Formatierungsklassen usw.)
java.security-Paket
2-4 Objektorientiert, schnittstellenorientiert
Die drei Hauptmerkmale von Objekten: Kapselung und Vererbung Und Polymorphismus , Vor- und Nachteile
Wie man eine Klasse entwirft, Gestaltungsprinzipien einer Klasse
dieses Schlüsselwort, letztes Schlüsselwort, statisches Schlüsselwort
Der Instanziierungsprozess eines Objekts
Umschreiben und Überladen von Methoden; der Parameterübergabeprozess von Methoden und Methoden
Konstruktor
Innere Klassen, abstrakte Klassen, Schnittstellen
Polymorphismus von Objekten (Konvertierung zwischen Unterklassen). und übergeordnete Klassen, Verweise auf übergeordnete Kartonklassen), Anwendung abstrakter Klassen und Schnittstellen im Polymorphismus
2-5 JVM-Speichermodell, Garbage Collection
2-6 Über Ausnahmen
Auslösbar/Fehler/Ausnahme, geprüfte Ausnahme vs. ungeprüfte Ausnahme, Abfangen und Auslösen von Ausnahmen, Prinzipien zum Abfangen von Ausnahmen, Verwendung von „finally“
2-7 Multithreading
Konzepte von Threads und Prozessen
So erstellen Sie Multithreading in einem Programm, Thread-Sicherheitsprobleme, Kommunikation zwischen Threads
Thread-Synchronisierung
Analyse des Deadlock-Problems
Thread-Pool
2-8 IO
java.io-Paket, verstehen Sie die Designideen des IO-Systems basierend auf dem Pipeline-Modell und den allgemeinen IO-Klasseneigenschaften und Nutzungssituationen.
Datei- und verwandte Klassen, Byte-Streams InputStream und OutputStream, Zeichen-Streams Reader und Writer sowie entsprechende Puffer-Streams und Pipe-Streams, Byte- und Zeichenkonvertierungs-Streams, Verpackungs-Streams und häufig verwendete Verpackungsklassen
Analysieren Sie die E/A-Leistung
2-9XML
Seien Sie mit den Vor- und Nachteilen von SAX, DOM und JDOM vertraut und können Sie eines davon verwenden, um die XML-Analyse und Inhaltsverarbeitung abzuschließen des Parsens Methodenprinzipien
2-10 Einige erweiterte Funktionen
Reflexion, Proxys, Generika, Aufzählungen, reguläre Java-Ausdrücke
2-11 Netzwerkprogrammierung
Grundsätze und anwendbare Szenarien von Netzwerkkommunikationsprotokollen, Socket-Programmierung und Arbeitsprinzipien von WEB-Servern
2-11 Jede Version von JDK1.5, JDK1.6, JDK1.7 und JDK1.8 ist besser als zur Vorgängerversion Welche neuen Funktionen hinzugefügt und welche Verbesserungen vorgenommen wurden
3: Datenbankbezogen
Wie bereits erwähnt, die Datenstruktur ist einfach wie ein elektronischer Aktenschrank und ein Lager, das Daten gemäß einer bestimmten Datenstruktur organisiert, speichert und verwaltet.
3-1 Theoretische Basis
Prinzipien und Paradigmen des Datenbankdesigns
Transaktionen (ACID, Arbeitsprinzip, Transaktionsisolationsstufe, Sperren, Transaktionsweitergabemechanismus)
3-2 Analyse der Vor- und Nachteile und Nutzungsszenarien verschiedener Datenbanken
MySQL/SQLServer/Oracle und verschiedener NoSQL (Redis, MongoDB, Memcached, Hbase, CouchDB, etc.)
3 - 2 SQL-Anweisungen
Datenbankerstellung, Berechtigungszuweisung, Tabellenerstellung, Hinzufügung, Löschung, Änderung, Abfrage, Verbindung, Unterabfrage
Trigger, gespeicherte Prozeduren, Transaktionssteuerung
3 -3 Optimierung
Indexprinzip und -anwendung, Optimierung großer Tabellenabfragen, Optimierung von Mehrtabellenverbindungsabfragen, Unterabfrageoptimierung usw.
3-4 Unterdatenbank, Untertabelle, Sicherung, Migration
Importieren, Exportieren, Unterdatenbank, Untertabelle, Cold-Standby und Hot-Standby, Master-Slave-Backup, Dual-Machine-Hot-Standby, vertikale Erweiterung, horizontale Erweiterung
3-5 JDBC
JDBC-Verbindung, Anweisung, PreparedStatement, CallableStatement, ResultSet und andere verschiedene Verwendungsarten
Verbindungspool (Konfigurationsnutzung, Implementierungsprinzip)
ORM, DAO
Viertens: JavaWeb Core-Technologie (einschließlich einiger Frontends)
HTML5/Css/js native/jQuery
Ajax (domänenübergreifend usw.)
JSP/JavaBean/Servlet/EL/JSTL /TabLib
JSF
JSON
EJB
Serialisierung und Deserialisierung
Regelmaschine
Suchmaschine
Vorlagenmaschine
Cache
Authentifizierung
Testen
Cluster
Persistenz
Generierung statischer Seitentechnologie
Hohe Leistung
Sicherheit
Transaktions-JTA
Andere Dinge, die Sie tun müssen wissen, wie zum Beispiel: Management JMX, Sicherheit JCCA/JAAS, integrierte JCA, Kommunikation JNDI/JMS/JavaMain/JAF, SSI-Technologie
5. Mainstream-Frameworks und Tools
Struts1/Struts2
Spring (IoC, AOP usw.), SpringMVC
Persistenz: Ruhezustand/MyBatis
Log: Log4j
Unit-Test: JUnit
Nachrichtenwarteschlange: ActiveMQ, RabbitMQ usw.
Lastausgleich: Nginx/HaProxy
Webserver: Tomcat, JBoss, Jetty, Resin , WebLogic, WebSphere usw.
Kommunikation: WebService (cxf Soap, Restful Protocol)
Cache: Redis, Memcached
Workflow: Aktivität, JBPM
Suchmaschine: Lucene, Solr basierend auf Lucene-Kapselung
Vorlagen-Engines: Velocity, FreeMaker
Big Data: Hadoop (HDFS und MapReduce)
Build-Tools: Ant/Maven
6, JavaWeb-Systemdesign und -Architektur
Java-Entwurfsmuster
JAVA- und UML-Modellierung
Serviceorientierte Architektur: SOA/SCA/ESB/OSGI/EAI, Micro Service
Ressourcenorientierte Architektur: ROA/REST
Cloud-orientierte Architektur: COA/Saas/Cloud Computing
Große Website-Lastverteilung, Systemoptimierung usw.
Mehr
Fähigkeit zur Fehlerbehebung:
Anhand der Ausnahmeinformationen und des ungefähren Standorts sollte es möglich sein, die Ursache des Problems schnell zu lokalisieren
Optimierungsfunktionen
Codespezifikation und Codeverwaltung:
verfügt über ein eigenes Codespezifikationssystem und der Code kann gut lesbar sein
Breites Wissen:
Verstehen verschiedene Netzwerkprodukte und -funktionen verstehen, verschiedene Middleware verstehen, wissen, wo die Fallstricke liegen, und mit verschiedenen Technologien vertraut sein, die Vor- und Nachteile der Lösung kennen, wissen, wie man verschiedene Ressourcen integriert und optimale Ergebnisse erzielt.... verschiedene Technologien verstehen und Anwendungsszenarien und verfügen über genügend Berufserfahrung, um verschiedene seltsame Probleme bei der Integration zu lösen
Technisches Management/technischer Direktor:
Produktmanagement, Projektmanagement, Teambildung, Teamverbesserung
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Weg zur Java-Weiterentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!