Der Zweck des Schreibens dieses Artikels besteht darin, einige meiner Erfahrungen mit der Verwendung von Java im Laufe der Jahre zusammenzufassen, die sich hauptsächlich auf einige grundlegende Java-Wissenspunkte beziehen. Daher hoffe ich, ihn auch mit Java-Programmierern zu teilen, die gerade erst begonnen haben, und solchen, die dies planen Für diejenigen, die neu in der Java-Entwicklungsbranche sind, hoffe ich, dass ich Ihnen etwas Erfahrung geben kann, damit Sie Java besser lernen und verwenden können.
Der Hauptinhalt dieser Einführung bezieht sich auf J2SE. Nach so vielen Jahren der Java-Entwicklung und in Kombination mit etwas Erfahrung in der Befragung von Java-Entwicklern besteht meiner Meinung nach das Wichtigste für J2SE darin, Folgendes zu beherrschen einige Inhalte.
1. JVM-bezogenes Wissen (einschließlich der Funktionen jeder Version)
Für diejenigen, die gerade erst mit Java in Berührung gekommen sind, erfordert JVM-bezogenes Wissen nicht unbedingt ein tiefes Verständnis der dahinter stehenden Konzepte Ein einfaches Verständnis genügt. Für einen leitenden Entwickler mit mehr als drei Jahren Java-Erfahrung ist es jedoch nahezu inakzeptabel, JVM nicht zu kennen.
JVM ist die Grundlage für die Ausführung von Java. Es ist kaum zu glauben, dass Leute, die nichts über JVM wissen, die Java-Sprache gründlich verstehen können. Wenn ich Entwickler mit mehr als drei Jahren Java-Erfahrung interviewe, ist JVM fast eine Pflichtfrage. Natürlich ist JVM nicht die einzige Interviewfrage, die die Qualität der technischen Fähigkeiten bestimmt, aber sie kann das Niveau der Java-Entwicklungsfähigkeiten beweisen.
In der Kategorie JVM denke ich, dass das Wissen, das beherrscht werden muss, folgendes ist:
JVM-Speichermodell und -struktur
GC-Prinzip, Leistungsoptimierung
Optimierung: Thread-Dump, Analyse der Speicherstruktur
Klassen-Binärbytecode-Struktur, Klassenladesystem, Klasse Ladeprozess, Instanzerstellungsprozess
Methodenausführungsprozess: Neue Funktionen, die durch große Java-Versionsaktualisierungen bereitgestellt werden (müssen kurz verstanden werden)
2. Java-Betrieb (grundlegend Wesentlich )
Wer weiß nicht, wie man ein Java-Programm ausführt? Wie führt die zugrunde liegende IDE das Java-Programm aus? Die Leute verstehen es nicht.
Dies ist der grundlegendste Wissenspunkt, den Java-Entwickler beherrschen müssen. Wenn Sie Java zum ersten Mal lernen, besteht der erste Schritt darin, Ihnen beizubringen, wie man Java-Programme auf der Befehlszeile ausführt Ich habe das Erlernen von Java und IDE abgeschlossen. Sobald Sie es verwenden, vergessen Sie es. Warum sollten Sie die Notwendigkeit betonen, dies zu wissen? Nachdem Sie die reinste Startmethode von Java kennen, können Sie analysieren, wie viele Verzeichnisse zu diesem Zeitpunkt gestartet wurden, wie die Ausführungsbenennung lautet, welche Parameter vorhanden sind und ob wann welche fehlen Es liegt ein Startproblem vor. Dies wird Ihnen helfen, seltsame Probleme zu lösen, die während der tatsächlichen Entwicklung möglicherweise mit der Umgebung zusammenhängen.
Das Wissen, das Sie hier beherrschen müssen, ist:
javac kompiliert Java-Dateien in Klassendateien
Die Verwendung von Java Befehl, So starten Sie die Java-Klasse mit dem Paket in der Befehlszeile
Die verschiedenen Pfade, die am Java-Programm beteiligt sind (Klassenpfad, java.library.path, das Hauptverzeichnis, in dem Java ausgeführt wird, usw.)
3. Datentypen
Dazu gibt es nicht viel zu sagen, es geht lediglich um die Beherrschung der Grundtypen und Objekttypen in Java. Sie können mehr darüber erfahren, wie JDK automatisch konvertiert, einschließlich Boxen und Unboxen usw., und darauf achten, die Typgleichheit nach dem Boxen nicht zu beurteilen
Wichtige Wissenspunkte:
Grundtypen: int, long, float, double, boolean, . . .
Entsprechender Objekttyp: Konvertierung von Integer und anderen Typen in Basistypen, Boxing und Unboxing
Objekttyp: gleich, Hashcode
Eigenschaften des String-Typs
4. Objekte und Instanzen, Objekterstellung
Hier In dieser Hinsicht müssen Entwickler die Konzepte von Klasse und Instanz und die Unterschiede zwischen ihnen verstehen, was eine Grundlage für die objektorientierten Funktionen von Java darstellt. Die wichtigsten Wissenspunkte sind:
Die Konzepte von Klasse und Instanz;
Instanzerstellungsprozess: 1. Keine Vererbung: Speicherplatz zuweisen, Initialisierungsvariablen, Aufruf des Konstruktors; 2. Vererbung: Behandeln Sie statische Aktionen, weisen Sie Speicherplatz zu, definieren Sie Variablen als Anfangswerte, von der Basisklasse -> Unterklasse, behandeln Sie die Initialisierung bei der Definition, führen Sie die Konstruktionsmethode aus; >
Zu beachtende Punkte: Statische Attribute usw. werden von der Basisklasse initialisiert -> Unterklassenfunktionen, die sich auf den Standardkonstruktor ohne Argumente beziehen.öffentlich geschützt Standard privat für Änderungseffekte von Klasse, Methode und Feld
Was Sie beherrschen müssen, sind: if, switch, loop, for, while und andere Prozesssteuerungssyntax
7 -orientierte Programmierung
Dies ist ein Kernkonzept von Java, das jeder Java-Entwickler beherrschen muss. Viele Funktionen oder Wissenspunkte in Java hängen mit objektorientierten Java-Programmierkonzepten zusammen. Nach meinem Verständnis muss ein guter Entwickler nicht nur diese Funktionen (Wissenspunkte) selbst verstehen, sondern auch wissen, wie sich diese Objekte in den objektorientierten Programmierkonzepten von Java widerspiegeln, was für Entwickler, die Java beherrschen, förderlicher ist sowie andere objektorientierte Programmiersprachen. Hier ist nur eine kurze Liste der wichtigsten Wissenspunkte:
Die drei Hauptmerkmale der Objektorientierung: Kapselung, Vererbung, Polymorphismus und welche Merkmale sich darin widerspiegeln. jeweilige Nutzungsszenarien
Statischer Mehrfachversand, das Konzept des dynamischen Einzelversands
Das Konzept und die Verwendung von Überladung
Vererbung: mehrere Implementierungen von Schnittstellen, einzelne Vererbung von Basisklassen
Abstrakt, abstrakte Klasse, Schnittstelle
Multiple State: Das Konzept und die Verwendung von Methodenüberschreibungen
Schnittstellenrückrufe
8. Statisch
Statische Attribute in täglich Java-Entwicklung Es wird auch häufig verwendet, um die Verwendung des Schlüsselworts static und seine Verwendung mit anderen Schlüsselwörtern zu verstehen, z. B. ob es in Verbindung mit Schlüsselwörtern wie abstract und final verwendet werden kann.
Die wichtigsten Dinge, die Sie beherrschen müssen, sind:
Die Definition und Verwendung statischer Eigenschaften und die Initialisierung beim Laden einer Klasse
Statische Definition und Verwendung von Methoden
Definition und Verwendung statischer Klassen
Definition und Initialisierungszeitpunkt statischer Codeblöcke
9. Grundlegende Wissenspunkte
Hier sind hauptsächlich einige verstreute Java-Wissenspunkte aufgeführt, die nicht systematisch klassifiziert sind. Es wird auch häufig in der täglichen Entwicklung verwendet. Eigentlich gibt es noch viel mehr zu diesem Inhalt, aber ich habe diese hier nur vorübergehend zusammengefasst:
Einschließlich: equal, hashcode, string/stringbuffer, final, final, finalize
10. Collection Framework
Dies ist ein Teil, der besser beherrscht werden muss. Bei der Java-Entwicklung kann man sagen, dass es nicht erforderlich ist, das Collection Framework zu verwenden, was sehr wichtig ist. Die Wissenspunkte hier sind jedoch nicht schwierig, aber es ist am besten, die interne Implementierung von Sammlungen zu verstehen, da dies Ihnen bei der Auswahl eines geeigneten Frameworks zur Lösung des Problems in verschiedenen Szenarien hilft. Beispielsweise erfordert eine Sammlung mit 10.000 Elementen häufig die Ausführung Enthält eine Beurteilungsoperation. Wenn Sie die Merkmale oder die interne Implementierung der Sammlung kennen, ist es einfach, die richtige Wahl zu treffen.
Der folgende Inhalt ist hier enthalten (Parallelitätsbezogene Inhalte sind nicht enthalten):
Sammlungsrahmensystem: Basissammlung, Karte
Inhalte spezifischer Sammlungsimplementierungen, spezifischer Implementierungen von List, Set und Map, interner Strukturen, spezieller Methoden, anwendbarer Szenarien usw.
Verwendung sammlungsbezogener Werkzeugklassen Sammlungen, usw.
11. Ausnahmerahmen
Ausnahmen werden in der Java-Entwicklung möglicherweise nicht so ernst genommen. Wenn eine Ausnahme auftritt, kann sie im Allgemeinen direkt ausgelöst oder beiläufig behandelt werden, ohne dass dies große Auswirkungen auf den Gesamtbetrieb des Programms hat. Beim Design und der Entwicklung auf Unternehmensebene hängt die Qualität des Ausnahmedesigns und der Ausnahmebehandlung jedoch häufig von der Gesamtstabilität des Systems ab. Für Entwickler sollte die Ausnahmebehandlung eines guten Systems einheitlich sein, um zu vermeiden, dass überall im System eine Ausnahmebehandlungslogik verstreut ist. Ausnahmen sollten kontrollierbar und einfach zu bedienen und zu warten sein. Nach dem Auftreten bestimmter Ausnahmen sollte es Möglichkeiten geben, damit umzugehen Obwohl das Ausnahme-Framework sehr einfach ist, ist die Ausnahmebehandlung für die gesamte Anwendungsentwicklung auf Unternehmensebene sehr wichtig. Um Ausnahmen gut zu handhaben, müssen Sie das Ausnahmesystem in Java verstehen.
Es gibt nicht viele Wissenspunkte, die in diesem Teil gemeistert werden müssen, die wichtigsten sind:
Abnormales System:
Auswerfbar
Ausnahme
RuntimeException
Fehler
RuntimeException Der Unterschied zu allgemeinen Ausnahmen, spezifischen Verarbeitungsmethoden usw.
12. Java IO
IO ist nicht nur das Lesen von Dateien in Java. Das Schreiben ist so einfach und umfasst auch alle Eingabe- und Ausgabevorgänge wie das Lesen und Schreiben von Socket-Netzwerken. Beispielsweise ist das Lesen des Inhalts von Post in einer Standard-HTTP-Anfrage auch ein Ausgabeprozess usw.
Für IO stellt Java nicht nur grundlegende Eingabe- und Ausgabe-bezogene APIs bereit, sondern auch einige Reader, die dies vereinfachen Operationen, Writer und andere APIs sind auch in bestimmten Entwicklungen (Projekte mit einer großen Anzahl von E/A-Vorgängen) sehr wichtig und auch an der allgemeinen täglichen Entwicklung beteiligt (Protokolle, Lesen und Schreiben temporärer Dateien usw.).
Die wichtigsten Wissenspunkte hier sind:
Grundlegendes IO-System: einschließlich InputStream, OutputStream, Reader/Writer, Dateilesen, verschiedene Stream-Lesen Machen Sie sich mit dem Konzept von NIO vertraut, Spezifische Nutzungsmethoden und Nutzungsszenarien
13. Multithread-Parallelität
Multithreading gilt in Java allgemein als schwieriger Bereich. Multithreading kann die CPU-Auslastung effektiv erhöhen und die Gesamtsystemeffizienz verbessern, insbesondere wenn eine große Anzahl von E/A-Vorgängen blockiert wird. Wenn es jedoch nicht richtig verwendet wird, wird sich das System nicht wesentlich verbessern Es gibt keine Verbesserung und es treten auch Probleme wie das Debuggen zwischen Multithreads auf.
Es gibt viele Inhalte im Multithreading. Ich erläutere nur kurz die Wissenspunkte, die für den anfänglichen Einsatz von Multithreading in Java beherrscht werden müssen Stellen Sie die Verwendungsszenarien einiger erweiterter Funktionen im Detail vor.
Multithreading-Implementierung und Start
Der Unterschied zwischen aufrufbar und ausführbar
synchronisiert, reentrantLock bzw. Funktionen und Vergleich
Thread-Pool
zukünftige asynchrone Möglichkeit, Ausführungsergebnisse zu erhalten
Gleichzeitiges Paket
Sperre
..
14. Netzwerk
Java bietet auch APIs, die das TCP-Protokoll und das UDP-Protokoll direkt bedienen können. Wenn die Netzwerkleistung im Vordergrund steht, kann TCP/UDP direkt für die Kommunikation verwendet werden. Durch Anzeigen des Quellcodes von Tomcat usw. können Sie die Verwendung dieser zugehörigen APIs sehen. Allerdings wird TCP im Allgemeinen selten direkt verwendet und Frameworks wie MINA und Netty werden für die Verarbeitung verwendet. Da es in diesem Bereich keine große Entwicklung gibt, werde ich es nicht im Detail auflisten.
15. Zeit- und Datumsverarbeitung
Für fast jede Anwendung kann die Zeit- und Datumsverarbeitung nicht umgangen werden, die Zeit vor JDK8 ist jedoch mit der API-Nutzung verbunden nicht freundlich. Zu dieser Zeit waren Zeitrahmen wie Joda verfügbar. Nach der Veröffentlichung von JDK8 integriert die neue Zeit-API grundsätzlich die Vorteile anderer Frameworks und kann direkt verwendet werden.
Für Java-Entwickler müssen Sie mit der Verwendung von APIs für den Umgang mit Uhrzeit und Datum vertraut sein.
Die spezifischen Wissenspunkte werden nicht mehr aufgeführt. Ich werde in Zukunft einen speziellen Artikel schreiben, um die Verwendung der Zeit- und Datums-API in JDK8 zusammenzufassen.
16.XML-Parsing/JSON-Parsing
Tatsächlich sind diese beiden Inhalte nicht in J2SE, aber in der täglichen Entwicklung interagieren sie miteinander Bei Programmen ist die Interaktion mit Konfigurationsdateien zunehmend untrennbar mit dem Parsen dieser beiden Formate verbunden.
Wenn ein Entwickler jedoch einige spezifische Prinzipien und Methoden der XML/JSON-Analyse versteht, kann er die geeignete Methode besser auswählen, um sein Programm in jedem spezifischen Szenario effizienter und robuster zu machen.
XML: Sie müssen die Grundprinzipien des DOM-Parsings und des SAX-Parsings und ihre jeweiligen anwendbaren Szenarien verstehen.
JSON: Sie müssen einige allgemeine Prinzipien verstehen Verwendung von JSON-Frameworks wie Jackson, FastJson, Gson usw.
17. Die Verwendung von Maven
Maven ist nicht Teil von Java, aber Maven ist revolutionär für die Java-Entwicklung. Bringt enormen Komfort . Von der Einführung und Verwaltung von Abhängigkeiten über die Aktualisierung und Freigabe von Entwicklungsprozessen bis hin zu Versionsaktualisierungen kann der Einsatz von Maven die Komplexität des Entwicklungsprozesses erheblich vereinfachen und so viel Zeit sparen. Man kann sagen, dass Maven zum Standard für Java-Entwickler geworden ist. Daher halte ich Maven für einen notwendigen Grundwissenspunkt für einen Java-Entwickler. In Zukunft werde ich einige meiner Erfahrungen und Fähigkeiten in der Verwendung von Maven usw. hinzufügen, sodass ich hier nicht auf Details eingehen werde.
18. Generics
Dies ist ein neues Konzept, das in JDK5 eingeführt wurde. Es handelt sich tatsächlich um einen Syntaxzucker, der beim Schreiben von Java-Code etwas praktisch ist. Im Allgemeinen müssen Sie es nur für die Anwendungs- oder Geschäftsentwicklung verwenden. Sie müssen jedoch nicht unbedingt Operationen wie das Definieren von Generika verwenden. Sie können sich diesen Teil jedoch bei Bedarf genauer ansehen. Im Allgemeinen, solange Sie einfach wissen, wie man es einfach benutzt.
19 Die Annotation
wurde auch nach jdk5 eingeführt. Spring ist ein hervorragendes Framework, das von Anfang an XML als Standardkonfigurationsdatei verwendet. Nach Spring 3, insbesondere nach dem Aufkommen von Spring Boot, ist die Verwendung von Anmerkungen zur Vereinfachung von XML-Konfigurationsdateien jedoch immer beliebter geworden. Für Entwickler kann dies viel Zeit bei der XML-Konfiguration sparen. Der Nachteil besteht jedoch darin, dass die Annotationen im Gegensatz zu XML auf verschiedene Klassen verteilt sind und alle Konfigurationen global verstanden und verwaltet werden können, sodass es keine Möglichkeit gibt, alle XML-Anmerkungen vollständig zu ersetzen. Für allgemeine Entwickler reicht es aus, Annotationen zu verwenden. Einige öffentlich organisierte Entwickler müssen möglicherweise die Definition und Implementierung von Annotationen verstehen und können bei Bedarf einen genaueren Blick darauf werfen.
20.RMI
RemoteMethodInvocation, eine für die Java-Sprache einzigartige Remote-Aufrufschnittstelle, ist relativ einfach und bequem zu verwenden. Wenn jedoch eine sprachübergreifende Unterstützung erforderlich ist, müssen andere Methoden wie Webservice zur Unterstützung verwendet werden. Im Allgemeinen müssen Programme RMI nicht verwenden, es kann jedoch unter bestimmten Umständen verwendet werden. In einem Projekt habe ich RMI verwendet, um den Fernstart und -stopp des Programms zu steuern.
21.JNI
Java Native Interface, das den Aufruf lokaler Schnittstellenmethoden in Java ermöglicht, wird im Allgemeinen zum Aufrufen von C/C++-Code verwendet. Zu beachten ist das Pfadproblem beim Laden von so/dll-Dateien in Java. Der Aufruf der Schnittstelle selbst ist nicht kompliziert, aber die Überprüfung, ob die erforderliche lokale Schnittstellenbibliothek geladen ist, nimmt oft viel Zeit in Anspruch.
Das Obige ist eine Zusammenfassung von 21 technischen Punkten und Wissenspunkten zu Java. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !