Beim Übergeben von Java Gold SE 8

Einführung

Dieses Mal habe ich den Java SE 8 Programmer II (Gold) an einem bestimmten Tag im November genommen und erfolgreich bestanden.

In diesem Qiita gibt es verschiedene vorübergehende Erfahrungen, und ich selbst habe darüber nachgedacht, die Goldprüfung im Mai abzulegen, daher glaube ich nicht, dass ich als Kompliment effizient lernen konnte.

Ich habe jedoch das Gefühl, dass ich mich im Laufe der Zeit eingehender mit dem Prozess und den Ideen der Operation befassen konnte. Eigentlich war es keine perfekte Punktzahl, aber ich konnte den Prozess verfolgen und das Problem beim Kauen lösen.

Es war eine gute Erfahrung, die Problemstellung als mein eigenes Wissen aufnehmen zu können, ohne sich auf die dunklen Wolken verlassen zu müssen.

In diesem Artikel werde ich verfolgen, was ich unabhängig von der Häufigkeit interessant fand.

Stream Pipeline

Die Stream-API ist unvermeidlich, wenn Sie die Gold-Prüfung ablegen, verfügt jedoch über einen Mechanismus, der den Ablauf der Operation scheinbar irreführend erscheinen lässt. Sobald Sie es jedoch verstanden haben, denke ich, dass es für Stream-bezogene Probleme nützlich sein wird.

Ein Beispiel ist unten gezeigt.

example.java


public class example{
  public static void main(String[] args){
    Stream<String> fruit = Stream.of("banana", "grape", "orange","apple");
      .filter(s -> s.length() > 5)
      .peek(System.out::print)
      .map(String::toUpperCase)
      .peek(System.out::print);
    long l = fruit.count();
  }
}

Da die Anzahl der Beendigungsoperationen angezeigt wird, wird die in Frucht definierte Zwischenoperation mit einer Verzögerung ausgeführt. Wie werden die einzelnen Elemente des Streams verarbeitet?

Zu Beginn des Lernens stellte ich mir den folgenden Ablauf vor.

図1.png

Das heißt, ich dachte, dass alle Elemente für jede Zwischenoperation überprüft würden. Wenn dies korrekt ist, sollte die Ausgabe "bananaorangeBANANA ORANGE" sein. Auf den ersten Blick scheint es richtig.

In Wirklichkeit war es jedoch anders: ** Die in Stream.of definierten Elemente wurden einzeln bis zum Ende bearbeitet, und dann wurde das nächste Element nach ** verschoben. 図2.png Mit anderen Worten, die Ausführungsreihenfolge von Peek ist ② → ④ → ⑦ → ⑨, daher lautet die Ausgabe "bananaBANANA orange ORANGE".

Möglicherweise müssen Sie sich dessen nicht bewusst sein, wenn Sie Stream tatsächlich verwenden. Wenn Sie jedoch den Ablauf der Operationsreihenfolge verstanden haben, können Sie ihn entwirren, ohne sich zu bewegen, selbst wenn sich das Erscheinungsbild geringfügig ändert. Es ist zu beachten, dass nichts ausgegeben wird, wenn keine Anzahl von Beendigungsoperationen vorhanden ist, da Stream nur eine Zwischenoperation ist. Es wird häufig gefragt, ob der Beendigungsvorgang korrekt beschrieben wird. (Ich habe das Gefühl, dass es viele optionale Verwicklungen gab)

Multi-Catch und Try-with-Resources

Es gibt einige Fragen in den Bereichen Ausnahmen und Behauptungen, aber ich möchte sie nicht verpassen, da sie leichter zu merken sind als die anderen Punkte. Es ist ein Ort (glaube ich), der auch in der Praxis nicht zu vermeiden ist. Ich denke, es ist ein Bereich, in dem Lernen definitiv genutzt werden kann.

Erstens der in SE7 eingeführte Mehrfachfang. Dies ist eine Syntax, mit der Sie die Ausnahmebehandlung gemeinsam beschreiben können, indem Sie sie durch "|" trennen. Hier sind zwei Punkte zu beachten.

** 1. Ausnahmen in der Vererbungsbeziehung (polymorph) können nicht zusammen aufgelistet werden ** Wenn Sie beispielsweise "IOException" und "Exception" zusammen schreiben, wird ein Kompilierungsfehler angezeigt.

** 2. Eine Variable ** Selbst wenn viele Ausnahmen zusammen aufgelistet werden müssen, steht am Ende nur eine Variable. Wenn Sie mehr als eine schreiben, tritt ein Kompilierungsfehler auf.

catch(IOException e1 | InterruptedException e2){} //Kompilierungsfehler

Wenn es mehrere catch-Klauseln gibt, ist es auch nicht möglich, eine Unterklassenausnahme nach einer Oberklassenausnahme zu schreiben (da sie vorne abgefangen wird und nicht überprüft werden kann).

Als nächstes ist dies auch eine in SE7 eingeführte Try-with-Resource-Anweisung. Dies ist eine Syntax, die einen Mechanismus bereitstellt, mit dem automatisch geschlossen werden kann, was in der finally-Klausel (z. B. "FileReader") vor SE 6 beschrieben wurde.

Der Mechanismus wird angewendet, indem die Ressource in der hinteren Klammer von try wie unten gezeigt definiert wird.

try(FileReader fr = new FileReader("sample1.txt");
  FileWriter fw = new FileWriter("sample2.txt")){
  //Lese- und Schreibressourcen
}catch(IOException e){
  //Ausnahmebehandlung
}

Hier ist ** die Reihenfolge des Abschlusses die Umkehrung der definierten Reihenfolge **. Wenn die Ressource "AutoClosable" oder "Closable" nicht implementiert, z. B. wenn die Ressource unabhängig definiert wird, tritt ein Kompilierungsfehler auf. In E / A häufig verwendete Klassen können problemlos ausgeführt werden, da sie "AutoClosable" implementieren.

ForkJoinPool

ForkJoinPool definiert drei Arten von Ausführungsmethoden. Von diesen synchronisiert nur Aufruf die Verarbeitung.

Bei asynchroner Methode ändert sich die Ausführungsmethode abhängig vom Rückgabewert. Es ist unten zusammengefasst.

Methodenname Rückgabewert Synchronisieren/非Synchronisieren Vererbungsklasse
execute void asynchron RecursiveAction
invoke T Synchronisieren RecursiveAction/RecursiveTask<V>
submit ForkJoinTask<T> asynchron RecursiveTask<V>

Wenn Sie sich die von Ihnen verwendete Methode ansehen, wird das Ergebnis beim Aufrufen eindeutig, andernfalls ist es undefiniert.

Scrollable ResultSet

Mit ResultSet in JDBC können Sie einen Mechanismus definieren, mit dem Sie den Cursor frei bewegen können.

//Anweisungsdefinition für die Verwendung eines scrollbaren ResultSet
Statement createStatement(int resultType, int resultSetConcurrency) throws SQLException

Die Konstanten, die für das erste und zweite Argument definiert werden können, werden in der ResultSet-Schnittstelle definiert.

Wenn Sie Argumente verwenden, sind zwei erforderlich. Wenn Sie also nur eines schreiben, wird ein Kompilierungsfehler angezeigt.

Wenn bei einem aktualisierbaren ResultSet der Primärschlüssel in der Zieltabelle festgelegt ist, ist jede Operation von Einfügen, Aktualisieren und Löschen möglich, aber die Methode ** insertRow / updateRow / deleteRow muss aufgerufen werden. Wenn es nicht tatsächlich in der DB reflektiert wird **.

abschließend

Im Vergleich zu Silber bin ich der Meinung, dass Gold ein beträchtliches Maß an Auswendiglernen und Verständnis haben musste. Es war oft zu viel und deprimierend. Da es jedoch in meinem eigenen Tempo gut ist, denke ich, dass es eine Qualifikation ist, die ausreichend erworben werden kann, wenn Sie sich die Zeit nehmen, daran zu arbeiten. Die Prüfungsgebühr ist ein Engpass ... </ font>

Ich konnte die Studie von Kuromoto in den Referenzen bestehen. Wenn Sie nur an die Prüfung denken, reichen dieses Buch und die offizielle API-Prüfung aus. Wenn Sie ein tieferes Verständnis und eine vollständige richtige Antwort wünschen, können Sie die Verwendung lila Bücher in Betracht ziehen.

Ich denke, es gibt keinen Verlust, die Herausforderung anzunehmen. Wenn Sie Java lernen möchten, wollen wir Silber und Gold erwerben!

Verweise

[Gründliche Erfassung der Java SE 8 Gold-Problemsammlung [1Z0-809] Korrespondenz](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7% 95% A5-Java-Gold-% E5% 95% 8F% E9% A1% 8C% E9% 9B% 86-1Z0-809 / dp / 4295000035)

Recommended Posts

Beim Übergeben von Java Gold SE 8
Die Geschichte von Java Gold SE8
Ich habe Java SE8 Gold genommen.
Java SE Bronze (1Z0-818) Erfahrung bestehen
Erhaltener Oracle Certified Java Programmer, Gold SE 8
[Qualifikation] Java Silver SE11 Passing Experience
Übersicht über Java SE
Oracle Certified Java Silver SE 8 Passing-Erfahrung
Java SE 7 Hinweis
Java SE-Abonnement
[Qualifikationstest] (Java SE8 Gold) Lernbericht & Zusammenfassung
Wie man Java SE8 Gold bekommt und studiert
Java SE8 Silver bestanden
Installieren Sie Java auf dem Mac
Java Silver Passing Erfahrung
Führen Sie PostgreSQL unter Java aus
Java Se 8 Programmierer Ⅰ Memo
[Java] Java SE 8 Silver Note
Java Gold misst: Format
Hinweise zur Java8 Gold-Prüfung
Java Gold misst: Lokalisierung
[Java Silver] Lernmethode, die Java SE 8 Silver bestanden hat [Erfahrung bestanden]
Einrichtungsverfahren für das Java SE Development Kit (JDK) unter Windows
Geschichte des Bestehens von Java Silver SE8 (Oracle Certified Java Programmer, Silver SE 8)
Java SE 8 Sliver Problem Collection Zusammenfassung
Ich habe Java Gold gestartet (Kapitel 1-1)
Installieren Sie OpenJDK7 (JAVA) unter Ubuntu 14.04
Downgrade von Java unter openSUSE Linux
Reflexion über die Manipulation von Java-Strings
Oracle Java 8 unter Docker Ubuntu
Installieren Sie Java unter WSL Ubuntu 18.04
Führen Sie das Java-Applet auf Ubuntu aus
Fügen Sie Oracle Java 8 in CircleCI 2 ein
Java SE8 Silver Passing Erfahrung
[Frühlingssicherheit] Frühlingssicherheit auf GAE (SE)
Ändern Sie die Java-Version unter CentOS
Was Sie gelernt haben, als Sie Java SE 8 Silber und Gold erworben haben
Installieren Sie Java 1.8.0 unter Amazon Linux2
Lassen Sie uns über die vorübergehende Erfahrung von Java SE 8 Programmer II sprechen
Das Verhalten von JS auf Java SE 8 Nashorn änderte sich plötzlich
Führen Sie die Java EE-Anwendung unter CICS aus
OSX 10.15 (Catalina) Verwenden von Java mit β
So lernen Sie Java Silver SE 8
Berücksichtigung des Java Persistence Framework 2017 (Zusammenfassung) -1
Überlegungen zum Java Persistence Framework 2017 (6) Ebean
[Hinweis] Java Silver SE8-Qualifikation erworben
Holen Sie sich Java Silver in Ihrer Pendelzeit!
Überlegungen zum Java Persistence Framework 2017 (5) Iciql
Straße nach Java SE 11 Silberakquisition
Berücksichtigung des Java Persistence Framework 2017 (7) EclipseLink
Java Open JDK 8 unter CentOS 7 installieren
Ist Java unter AWS Lambda langsam?
Hallo Welt mit AWS Lambda + Java
Hinweise zur Signalsteuerung in Java
Überlegungen zum Java Persistence Framework 2017 (1)
Berücksichtigung des Java Persistence Framework 2017 (8) Hibernate5
Testinhalt der Java SE Bronze Prüfung