En passant Java Gold SE 8

introduction

Cette fois, j'ai pris le Java SE 8 Programmer II (Gold) un certain jour de novembre et je l'ai réussi.

Il y a diverses expériences de réussite dans ce Qiita, et j'ai moi-même pensé à passer l'examen d'or vers le mois de mai, donc je ne pense pas que j'ai pu étudier efficacement en guise de compliment.

Cependant, je sens que j'ai pu approfondir le processus et les idées de l'opération au fil du temps. En fait, ce n'était pas un score parfait, mais j'ai pu suivre le processus et résoudre le problème en mâchant.

Ce fut une bonne expérience de pouvoir assimiler la collection de problèmes comme mes propres connaissances sans compter sur les nuages sombres lors de l'obtention de la qualification.

Dans cet article, je vais suivre ce que j'ai trouvé intéressant quelle que soit la fréquence.

Stream Pipeline

L'API Stream est inévitable lors de l'examen Gold, mais elle dispose d'un mécanisme qui rend le déroulement des opérations apparemment trompeur. Cependant, une fois que vous l'aurez compris, je pense que ce sera utile pour les problèmes liés à Stream.

Un exemple est présenté ci-dessous.

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();
  }
}

Etant donné que le décompte des opérations de terminaison est montré, l'opération intermédiaire définie dans fruit est exécutée avec un retard. Alors, comment chaque élément du Stream est-il traité?

Au début de l'apprentissage, j'ai imaginé le flux suivant.

図1.png

Autrement dit, je pensais que tous les éléments seraient vérifiés pour chaque opération intermédiaire. Si cela est correct, la sortie doit être «bananaorangeBANANA ORANGE». À première vue, cela semble correct.

Cependant, en réalité, c'était différent, ** les éléments définis dans Stream.of ont été manipulés un par un jusqu'à la fin, puis l'élément suivant a été déplacé vers **. 図2.png En d'autres termes, l'ordre d'exécution de peek est ② → ④ → ⑦ → ⑨, donc la sortie est bananaBANANA orange ORANGE.

Vous n'avez peut-être pas besoin d'en être conscient lorsque vous utilisez réellement Stream, mais une fois que vous comprenez le déroulement de l'ordre d'opération, vous pouvez le démêler sans bouger même si l'apparence change un peu. Il convient de noter que s'il n'y a pas de décompte d'opérations de fin, rien n'est sorti car Stream n'est qu'une opération intermédiaire. Il est souvent demandé que l'opération de terminaison soit correctement décrite. (Je pense qu'il y avait beaucoup d'enchevêtrements facultatifs)

multi-catch et try-with-resources

Il y a quelques questions dans les domaines des exceptions et des assertions, mais je ne veux pas les manquer car elles sont plus faciles à retenir que les autres éléments. C'est un endroit (je pense) qui ne peut être évité même dans la pratique, donc je pense que c'est un domaine où l'apprentissage peut certainement être utilisé.

Premièrement, la multi-capture introduite dans SE7. Il s'agit d'une syntaxe qui vous permet de décrire collectivement le traitement des exceptions en le séparant par "|". Il y a deux points à noter ici.

** 1. Les exceptions dans la relation d'héritage (polymorphe) ne peuvent pas être répertoriées ensemble ** Par exemple, écrire ʻIOException et ʻException ensemble entraînera une erreur de compilation.

** 2. Une variable ** Même s'il existe de nombreuses exceptions à répertorier ensemble, il n'y a qu'une seule variable à la fin. Si vous en écrivez plusieurs, une erreur de compilation se produira.

catch(IOException e1 | InterruptedException e2){} //Erreur de compilation

De plus, s'il existe plusieurs clauses catch, il n'est pas possible d'écrire une exception de sous-classe après une exception de superclasse (car elle est interceptée au début et ne peut pas être inspectée).

Ensuite, il s'agit également d'une instruction try-with-resource introduite dans SE7. Il s'agit d'une syntaxe qui fournit un mécanisme qui peut fermer automatiquement ce qui était décrit dans la clause finally (par exemple, FileReader) avant SE 6.

Le mécanisme est appliqué en définissant la ressource dans la parenthèse arrière de try, comme indiqué ci-dessous.

try(FileReader fr = new FileReader("sample1.txt");
  FileWriter fw = new FileWriter("sample2.txt")){
  //Ressources de lecture et d'écriture
}catch(IOException e){
  //Gestion des exceptions
}

Ici, ** l'ordre de fermeture est l'inverse de l'ordre défini **. De plus, si la ressource n'implémente pas ʻAutoClosable ou Closable, comme lorsque la ressource est définie indépendamment, une erreur de compilation se produira. Les classes couramment utilisées dans les E / S peuvent être exécutées sans problème car elles implémentent ʻAutoClosable.

ForkJoinPool

ForkJoinPool définit trois types de méthodes d'exécution. Parmi ceux-ci, uniquement invoquer synchronise le traitement.

De plus, dans le cas de l'asynchrone, la méthode d'exécution change en fonction de la valeur de retour. Il est résumé ci-dessous.

Nom de la méthode Valeur de retour Synchroniser/非Synchroniser Classe d'héritage
execute void asynchrone RecursiveAction
invoke T Synchroniser RecursiveAction/RecursiveTask<V>
submit ForkJoinTask<T> asynchrone RecursiveTask<V>

En regardant la méthode que vous utilisez, si elle est invoquée, le résultat sera unique, sinon il ne sera pas défini.

Scrollable ResultSet

ResultSet dans JDBC vous permet de définir un mécanisme qui vous permet de déplacer le curseur librement.

//Définition de l'instruction pour l'utilisation d'un ResultSet déroulant
Statement createStatement(int resultType, int resultSetConcurrency) throws SQLException

Les constantes qui peuvent être définies pour les premier et deuxième arguments sont définies dans l'interface ResultSet.

--Premier argument --TYPE_FORWARD_ONLY: avancer uniquement --TYPE_SCROLL_INSENSITIVE: Défilement, DB non reflété --TYPE_SCROLL_SENSITIVE: Scrollable, DB reflétée --Deuxième argument --CONCUR_READ_ONLY: ne peut pas être mis à jour ResultSet --CONCUR_UPDATABLE: ensemble de résultats pouvant être mis à jour

Deux sont nécessaires lors de la prise d'arguments, donc en écrire un seul entraînera une erreur de compilation.

Dans le cas d'un ResultSet modifiable, si la clé primaire est définie dans la table cible, chaque opération d'insertion, de mise à jour et de suppression est possible, mais la méthode ** ʻinsertRow / ʻupdateRow / deleteRow doit être appelée. S'il n'est pas réellement reflété dans le DB **.

en conclusion

Comparé à Silver, je pense que Gold devait avoir une mémorisation et une compréhension approfondies. C'était souvent trop et déprimant. Cependant, comme c'est bon à mon rythme, je pense que c'est une qualification qui peut être suffisamment acquise si on prend le temps de travailler dessus. Les frais d'examen sont un goulot d'étranglement ... </ font>

J'ai réussi l'étude avec Kuromoto dans les références. Si vous ne pensez qu'à l'examen, ce livre et la vérification officielle de l'API suffisent. Si vous voulez avoir une compréhension plus profonde et une réponse correcte complète, vous pouvez envisager d'utiliser des livres violets.

Je pense qu'il n'y a aucune perte à relever le défi. Si vous envisagez d'apprendre Java, essayons d'acquérir de l'argent et de l'or!

Les références

[Capture approfondie de la collecte des problèmes Java SE 8 Gold [1Z0-809] correspondance](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7% 95% A5-Java-Or-% E5% 95% 8F% E9% A1% 8C% E9% 9B% 86-1Z0-809 / dp / 4295000035)

Recommended Posts

En passant Java Gold SE 8
Histoire du passage de Java Gold SE8
J'ai pris Java SE8 Gold.
Java SE Bronze (1Z0-818) Expérience de réussite
Reçu un programmeur Java certifié Oracle, Gold SE 8
[Qualification] Expérience de réussite Java Silver SE11
Présentation de Java SE
Expérience de réussite certifiée Oracle Java Silver SE 8
Remarque sur Java SE 7
Abonnement Java SE
[Test de qualification] (Java SE8 Gold) Évaluation et résumé de l'apprentissage
Comment obtenir et étudier Java SE8 Gold
Java SE8 Silver réussi
Installez Java sur Mac
Expérience de passage Java Silver
Exécutez PostgreSQL sur Java
java se 8 programmeur Ⅰ mémo
[java] Java SE 8 Silver Note
Mesures Java Gold: Format
Notes sur l'examen Java8 Gold
Mesures Java Gold: localisation
[Java Silver] Méthode d’étude ayant réussi Java SE 8 Silver [Passing experience]
Procédure d'installation du Java SE Development Kit (JDK) sous Windows
Histoire de passer Java Silver SE8 (programmeur Java certifié Oracle, Silver SE 8)
Résumé de la collecte des problèmes Java SE 8 Sliver
J'ai commencé Java Gold (Chapitre 1-1)
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Rétrograder Java sur openSUSE Linux
Réflexion sur la manipulation de chaînes Java
Oracle Java 8 sur Docker Ubuntu
Installez Java sur WSL Ubuntu 18.04
Exécutez l'applet java sur ubuntu
Mettez Oracle Java 8 dans CircleCI 2
Expérience de passage Java SE8 Silver
[Spring Security] Spring Security sur GAE (SE)
Changer la version java sur CentOS
Ce que vous avez appris lors de l'acquisition de Java SE 8 Silver and Gold
Installez java 1.8.0 sur Amazon linux2
Parlons de l'expérience passagère de Java SE 8 Programmer II
Le comportement de JS fonctionnant sur `Java SE 8 Nashorn` a soudainement changé
Exécutez l'application Java EE sur CICS
OSX 10.15 (Catalina) Utilisation de Java avec β
Comment étudier Java Silver SE 8
Considération sur le cadre de persistance Java 2017 (résumé) -1
Considération sur le cadre de persistance Java 2017 (6) Ebean
[Note] Qualification Java Silver SE 8 acquise
Obtenez Java Silver dans votre temps de trajet!
Considération sur le framework de persistance Java 2017 (5) Iciql
En route vers l'acquisition de Java SE 11 Silver
Considérations sur le cadre de persistance Java 2017 (7) EclipseLink
Installation de Java Open JDK 8 sur CentOS 7
Java sur AWS Lambda est-il lent?
Hello World avec AWS Lambda + Java
Remarques sur le contrôle du signal en Java
Considération sur le framework de persistance Java 2017 (1)
Considérations sur le cadre de persistance Java 2017 (8) Hibernate5
Contenu du test de l'examen Java SE Bronze