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, der dieses Mal vorgestellt wird, bezieht sich auf J2SE. Darüber hinaus werden wir in Zukunft einige J2EE-bezogene Inhalte und verschiedene Frameworks in Java vorstellen.
Nach so vielen Jahren der Java-Entwicklung und in Kombination mit etwas Erfahrung in der Befragung von Java-Entwicklern denke ich, dass das Wichtigste, was man über J2SE beherrschen sollte, der folgende Inhalt ist.
1. JVM-bezogenes Wissen (einschließlich der Funktionen jeder Version)
Für diejenigen, die neu in Java sind, ist kein tiefes Verständnis für JVM erforderlich ein einfaches Verständnis der darin enthaltenen Konzepte. 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, folgende ist:
JVM-Speichermodell und -struktur
GC-Prinzipien, Leistungsoptimierung
Optimierung: Thread-Dump, Analyse der Speicherstruktur
Struktur des binären Bytecodes der Klasse, Klassenladesystem, Klassenladeprozess, Instanzerstellungsprozess
Methodenausführungsprozess
Neue Funktionen durch große Java-Versionsaktualisierungen (müssen kurz verstanden werden)
2. Java ausführen (Basic Essentials)
Das mag sehr einfach erscheinen, aber wer weiß nicht, wie man ein Java-Programm ausführt? Aber oft führen wir Java-Programme einfach über die IDE aus. Wie führt die zugrunde liegende IDE Java-Programme aus? Viele Leute verstehen es nicht.
Dieser Wissenspunkt ist der grundlegendste, den Java-Entwickler beherrschen müssen. Wenn Sie neu bei Java sind, besteht der erste Schritt darin, Ihnen beizubringen, wie man Java-Programme auf der Befehlszeile ausführt Wenn Sie Java lernen, vergessen Sie es einfach. Warum betonen Sie, dass Sie dies wissen müssen? Nachdem Sie die reinste Startmethode von Java kennen, können Sie analysieren, wie viele Verzeichnisse zu diesem Zeitpunkt gestartet wurden, wie die Benennung der Ausführung war, welche Parameter vorhanden waren und ob Elemente fehlten als es ein Startproblem gab. 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 des Java-Befehls, wie man die Java-Klasse mit dem Paket in der Befehlszeile startet
Die verschiedenen Pfade Beteiligt am Java-Programm (Klassenpfad, java.library.path, das Home-Verzeichnis, in dem Java ausgeführt wird usw.)
3. Datentyp
Es gibt nicht viel Dazu ist es nichts anderes als die Java-Beherrschung grundlegender Typen und Objekttypen. Sie können mehr darüber erfahren, wie JDK automatisch konvertiert, einschließlich Boxen und Unboxen usw., und darauf achten, dass nach dem Boxen keine Beurteilung der Typgleichheit erfolgt
Wichtige Wissenspunkte:
Grundlegende Typen: 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 , die Erstellung von Objekten
In diesem Zusammenhang 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
Prozess der Instanzerstellung:
1. Keine Vererbung: Speicherplatz zuweisen, Variablen initialisieren, Konstruktor aufrufen
2. Es gibt Vererbung: Verarbeiten statischer Aktionen, Zuweisen von Speicherplatz, Definieren von Variablen als Anfangswerte, von der Basisklasse -> Unterklasse, Verarbeiten der Initialisierung bei der Definition, Ausführen der Konstruktormethode
Zu beachtende Punkte:
Statische Eigenschaften usw . Basisklasse -> Unterklasseninitialisierung
Funktionen im Zusammenhang mit dem Standardkonstruktor ohne Argumente
5. Dies ist auch eine Grundlage für Java-Kapselungsfunktionen , was gemeistert werden muss, sind: public protected default private Modifikation von Klasse, Methode, Feld
6. Prozesssteuerung
Die Grundlage der Java-Prozesssteuerung Obwohl einige Syntaxen nicht unbedingt häufig verwendet werden, müssen Sie sie verstehen und gegebenenfalls verwenden. Was Sie beherrschen müssen, sind:
if, switch, loop, for, while und andere Prozesssteuerungssyntax
Das Konzept der objektorientierten 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:
Drei Hauptmerkmale der Objektorientierung: Kapselung, Vererbung, Polymorphismus; ihre jeweiligen Definitionskonzepte, welche Merkmale reflektiert werden und ihre jeweiligen Verwendungsszenarien
Statisch Die Konzept von Multi-Dispatch, dynamischem Single-Dispatch
Das Konzept und die Verwendung von Überladung
Vererbung: mehrere Implementierungen von Schnittstellen, einzelne Vererbung von Basisklassen
Abstraktion, abstrakte Klassen, Schnittstellen
Polymorphismus: das Konzept und Verwendung der Methodenabdeckung Verwenden Sie
Schnittstellenrückruf
8. Statische Attribute werden auch häufig in der täglichen Java-Entwicklung verwendet. Sie müssen die damit verbundene Verwendung verstehen das statische Schlüsselwort und die Verwendung mit anderen Schlüsselwörtern, z. B. ob es in Verbindung mit abstrakten, endgültigen und anderen Schlüsselwörtern verwendet werden kann. Die wichtigsten Dinge, die Sie beherrschen müssen, sind:
Die Definition und Verwendung statischer Attribute und die Initialisierung beim Laden einer KlasseDie Definition und Verwendung statischer Methoden
Die Definition und Verwendung von statische Klassen
Statische Codeblöcke Definition und Initialisierungszeitpunkt
9. Grundlegende Wissenspunkte
Hier sind hauptsächlich einige verstreute und unsystematisch klassifizierte Java-Wissenspunkte. 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:
equals, hashcode, string/stringbuffer, final, final, finalize
10. Sammlungs-Framework
Dies ist ein Teil, der besser beherrscht werden muss. Bei der Java-Entwicklung kann man sagen, dass es nicht erforderlich ist, das Sammlungs-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ät ist nicht enthalten):
Sammlungsrahmensystem: Basissammlung, Karte Inhalt der spezifischen Sammlungsimplementierung, Liste, Menge, kartenspezifische Implementierung, interne Struktur, spezielle Methoden , anwendbare Szenarien usw.
Verwendung sammlungsbezogener Toolklassen Sammlungen usw.
Ausnahmerahmen
Ausnahmen sind in Java möglicherweise nicht so wichtig Entwicklung ernst genommen werden. 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. In diesem Teil müssen nicht viele Wissenspunkte gemeistert werden, hauptsächlich:
Ausnahmesystem:Throwable
Exception
RuntimeException
Error
Der Unterschied zwischen RuntimeException und allgemeine Ausnahme, insbesondere Verarbeitungsmethoden usw.
12. Java IO
IO ist in Java nicht nur so einfach wie das Lesen und Schreiben von Dateien, sondern umfasst auch Socket, Lesen und Schreiben im Netzwerk usw. Eingabe- und Ausgabevorgänge. Das Lesen des Inhalts von Post in einer Standard-HTTP-Anfrage ist beispielsweise auch ein Ausgabeprozess usw. Für IO stellt Java nicht nur grundlegende APIs für die Eingabe und Ausgabe bereit, sondern auch einige Reader, Writer usw. Die API ist auch in bestimmten Entwicklungsprojekten sehr wichtig (Projekte mit einer großen Anzahl von E/A-Vorgängen) und ist 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 usw.
Das Konzept von NIO, spezifische Nutzungsmethoden und Nutzungsszenarien
13. Multi-Thread-Parallelität
Multithreading gilt allgemein als schwieriger Bereich in Java. 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 zum Thema Multithreading. Ich erläutere nur kurz die Wissenspunkte, die für die anfängliche Verwendung von Multithreading in Java beherrscht werden müssen Szenarien einiger erweiterter Funktionen im Detail.
Implementierung und Start von Multithreading
Unterschiede zwischen aufrufbar und ausführbar
synchronisiert, reentrantLock jeweilige Eigenschaften und Vergleich
Thread-Pool
zukünftige asynchrone Möglichkeit, Ausführungsergebnisse zu erhalten
gleichzeitiges Paket
lock
..
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 Verwendung zeitbezogener APIs vor JDK8 jedoch 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.
Java-Entwickler müssen mit der Verwendung von APIs zur Verarbeitung von Zeit und Datum vertraut sein.
Die spezifischen Wissenspunkte werden hier nicht aufgeführt. Ich werde in Zukunft einen speziellen Artikel schreiben, um die Verwendung der Zeit- und Datums-API in JDK8 zusammenzufassen.
16. XML-Analyse/JSON-Analyse
Tatsächlich sind diese beiden Inhalte nicht in J2SE, aber in der täglichen Entwicklung interagieren sie mit anderen Programmen und konfigurieren Die Dateiinteraktion ist zunehmend untrennbar mit der Analyse dieser beiden Formate verbunden.
Wenn ein Entwickler jedoch einige spezifische Prinzipien und Methoden der XML/JSON-Analyse versteht, kann er in jedem spezifischen Szenario besser die geeignete Methode auswählen, um sein Programm effizienter und robuster zu machen.
XML: Sie müssen die Grundprinzipien des DOM-Parsings und des SAX-Parsings sowie die jeweils anwendbaren Szenarien verstehen.
JSON: Sie müssen die Verwendung einiger gängiger JSON-Frameworks wie Jackson, FastJson, Gson usw. verstehen. .
17. Die Verwendung von Maven
Maven ist kein Teil von Java, aber Maven ist revolutionär und bringt großen Komfort in die Java-Entwicklung. Von der Einführung und Verwaltung von Abhängigkeiten über die Aktualisierung von Entwicklungsprozessen und Release-Ausgaben bis hin zu Versionsaktualisierungen kann der Einsatz von Maven die Komplexität des Entwicklungsprozesses erheblich vereinfachen und dadurch 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, daher werde ich hier nicht auf Details eingehen.
18. Generics
Dies ist tatsächlich ein syntaktisches Konzept, das beim Schreiben von Java-Code hilfreich ist Es handelt sich um eine Geschäftsentwicklung, bei der nur Vorgänge wie das Definieren von Generika verwendet werden können. Bei Bedarf können Sie sich diesen Teil jedoch genauer ansehen , solange Sie es einfach verwenden können. Das ist es.
19. Die Anmerkung
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 normale Entwickler reicht es aus, Anmerkungen zu verwenden. Einige öffentlich organisierte Entwickler müssen möglicherweise die Definition und Implementierung von Anmerkungen 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 nur eine kurze Einführung in einige meiner Ansichten und eine Einführung in diese grundlegenden Java-Wissenspunkte und technischen Punkte. Diese Inhalte basieren auf einigen Zusammenfassungen meiner Verwendung von Java im Laufe der Jahre Diejenigen, die gerade erst mit Java in Kontakt gekommen sind oder planen, mit Java-Entwicklern zu beginnen, verfügen über einige Erfahrung und hoffen, Java effizienter zu erlernen und zu nutzen, Umwege zu vermeiden und wertvolle Zeit zu verschwenden. Es gibt noch einige inhaltliche Unvollkommenheiten, die in zukünftigen Artikeln hinzugefügt werden. Aufgrund meiner begrenzten persönlichen Fähigkeiten wird es natürlich einige Fehler und Auslassungen geben, die ich gemeinsam diskutieren und gemeinsam verbessern kann. Ich hoffe, dass er Menschen in Not wirklich helfen kann.
Das obige ist der detaillierte Inhalt vonEinige Einblicke für Java-Neulinge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!