Skip to content

Commit

Permalink
Merge pull request #47 from duke-certification/develop
Browse files Browse the repository at this point in the history
General fixes
  • Loading branch information
rcmoutinho authored Sep 13, 2019
2 parents 70056eb + d817f5c commit 1953fa7
Show file tree
Hide file tree
Showing 31 changed files with 57 additions and 51 deletions.
2 changes: 1 addition & 1 deletion A-tricks-to-succeed.asc
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class Duke {
. O código compila e roda, imprimindo "Java6".
. O código compila mas dá erro em execução.

Se você escolheu a opção 1, você errou... Esse exemplo tem outra pegadinha com o conceito de _shadowing_. Usa-se o mesmo nome de váriável mas com um escopo diferente. Inicialmente o tipo `int` engana sua reposta mas esse código não compila ao tentar atribuir um valor `int` à uma variável do tipo `String[]`.
Se você escolheu a opção 1, você errou... Esse exemplo tem outra pegadinha com o conceito de _shadowing_. Usa-se o mesmo nome de variável mas com um escopo diferente. Inicialmente o tipo `int` engana sua reposta mas esse código não compila ao tentar atribuir um valor `int` à uma variável do tipo `String[]`.

- - -
_Resposta: 2_
Expand Down
4 changes: 2 additions & 2 deletions book/03-localization/sections/02-resource-bundle.asc
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ include::{resource-package}/Text_es_ES.properties[]
include::{resource-package}/Text_pt.properties[]
----
+
Neste exemplo, não é possível ver, mas existem 3 espaços no final da linha. O resultado é o mesmo que escrever `paper=papel{sp}{sp}{sp}`.
Neste exemplo, não é possível ver, mas existem 3 espaços no final da linha. O resultado é o mesmo que escrever `paper=papel\{sp}\{sp}\{sp}`.

. Em arquivos `.properties`, se você terminar a linha com uma contrabarra, pode quebrar a linha.
+
Expand Down Expand Up @@ -304,4 +304,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/tutorial/i18n/resbundle/concept.html[About the ResourceBundle Class.] Java Documentation.
****
****
6 changes: 2 additions & 4 deletions book/03-localization/sections/03-date-time.asc
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@ include::{section-java-package}/datetime/localdate/LocalDate_Manipulate.java[tag
+2 semanas: 2019-06-03
+2 meses: 2019-07-20
+2 anos: 2021-05-20
+2 anos: 2021-05-20
+2 décadas: 2039-05-20
-2 dias: 2019-05-18
-2 semanas: 2019-05-06
Expand Down Expand Up @@ -399,7 +398,6 @@ include::{section-java-package}/datetime/localdatetime/LocalDateTime_Manipulate.
+2 semanas: 2019-06-03T09:20:12
+2 meses: 2019-07-20T09:20:12
+2 anos: 2021-05-20T09:20:12
+2 anos: 2021-05-20T09:20:12
+2 décadas: 2039-05-20T09:20:12
-2 dias: 2019-05-18T09:20:12
-2 semanas: 2019-05-06T09:20:12
Expand Down Expand Up @@ -545,7 +543,7 @@ include::{section-java-package}/datetime/instant/Instant_Immutability.java[tag=c
2001-09-09T01:47:40Z
----

. Você pode transformar um `LocalDateTime` em um `Instant`, e vice-versa, caso informe um fuso horário, .
. Você pode transformar um `LocalDateTime` em um `Instant`, e vice-versa, caso informe um fuso horário.
+
[source,java,indent=0]
.{java-package}/datetime/instant/Instant_Convert.java
Expand Down Expand Up @@ -840,4 +838,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://stackoverflow.com/questions/32437550/whats-the-difference-between-instant-and-localdatetime/32443004[What's the difference between Instant and LocalDateTime?]
****
****
3 changes: 1 addition & 2 deletions book/03-localization/sections/05-time-zones.asc
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ include::{section-java-package}/timezones/ZonedDateTime_Manipulate.java[tag=code
+2 semanas: 2019-06-03T09:20:12.000001-03:00[America/Sao_Paulo]
+2 meses: 2019-07-20T09:20:12.000001-03:00[America/Sao_Paulo]
+2 anos: 2021-05-20T09:20:12.000001-03:00[America/Sao_Paulo]
+2 anos: 2021-05-20T09:20:12.000001-03:00[America/Sao_Paulo]
+2 décadas: 2039-05-20T09:20:12.000001-03:00[America/Sao_Paulo]
-2 dias: 2019-05-18T09:20:12.000001-03:00[America/Sao_Paulo]
-2 semanas: 2019-05-06T09:20:12.000001-03:00[America/Sao_Paulo]
Expand Down Expand Up @@ -193,7 +192,7 @@ America/Guatemala
...
----
+
A lista do console irá apresentar todos os `ZoneId` disponíveis. O exemplo acima contempla apeanas parte dos `ZoneId`.
A lista do console irá apresentar todos os `ZoneId` disponíveis. O exemplo acima contempla apenas parte dos `ZoneId`.
+
Além disso, existem muitos `ZoneId` duplicados, pois representam o mesmo fuso horário, como por exemplo `America/Sao_Paulo` e `Brazil/East`.

Expand Down
4 changes: 2 additions & 2 deletions book/04-lambda/sections/04-method-reference.asc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Develop code that uses a method reference, including refactoring a lambda expres
Desenvolver código que utiliza uma referência a método, incluindo a refatoração de uma expressão lambda para uma referência a método.
--------------------------------------------------

A sintaxe de referência a um método é uma novidade do Java 8. Com ela é possível fazer referência a métodos específicos, em quatro ocasições diferentes:
A sintaxe de referência a um método é uma novidade do Java 8. Com ela é possível fazer referência a métodos específicos, em quatro ocasiões diferentes:

* Referências a métodos estáticos -> `String::valueOf`
* Referências a métodos de um objeto -> `instanciaDeString::isEmpty`
Expand Down Expand Up @@ -170,4 +170,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html[Method References.] The Java™ Tutorials.
****
****
4 changes: 2 additions & 2 deletions book/05-java-streams/sections/01-using-streams.asc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ A partir dos exemplos a seguir, essa explicação ficará mais clara.

==== Criando um _Stream_

Geralmente, um _Stream_ é criado a partir de um conjunto de dados, como uma lista ou outro tipo de coleção. O objeteivo da certificação deixa explícito que é necessário conhecer os métodos `Arrays.stream()` e `IntStream.range()`. Mas, além dessas, serão apresentadas também algumas outras formas comuns de criar um _Stream_.
Geralmente, um _Stream_ é criado a partir de um conjunto de dados, como uma lista ou outro tipo de coleção. O objetivo da certificação deixa explícito que é necessário conhecer os métodos `Arrays.stream()` e `IntStream.range()`. Mas, além dessas, serão apresentadas também algumas outras formas comuns de criar um _Stream_.

. É possível criar um Stream a partir de um `Array` utilizando o método `Arrays.stream()`.
+
Expand Down Expand Up @@ -777,4 +777,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/8/docs/api/?java/util/stream/Stream.html[Interface Stream<T>.] Java Plataform SE 8.
****
****
5 changes: 3 additions & 2 deletions book/06-concurrency/sections/01-concurrent-package.asc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ O pacote `java.util.concurrent` inclui inúmeras classes para serem utilizadas e

Muitas das classes do pacote concurrent são apenas versões das coleções comuns, porém com blocos __syncronized__, garantindo que múltiplas _threads_ poderão acessá-las ao mesmo tempo mantendo sua integridade. As classes __ConcurrentHashMap__, _ConcurrentLinkedQueue_ e _ConcurrentLinkedDeque_ são exemplos disso. Por isso é importante conhecer e lembrar das coleções comuns do Java 6.

Todas as seções deste capítulo podem conter exemplos maiores do que os que foram apresentados até agora, principalmente quando for necessário a criação de mútiplas __Threads__. É importante dedicar um tempo maior para entender cada um desses exemplos.
Todas as seções deste capítulo podem conter exemplos maiores do que os que foram apresentados até agora, principalmente quando for necessário a criação de múltiplas __Threads__. É importante dedicar um tempo maior para entender cada um desses exemplos.

. É possível criar uma *Fila* que lança uma exceção após um tempo predefinido utilizando a classe ``LinkedBlockingQueue``.
+
Expand Down Expand Up @@ -120,6 +120,7 @@ Thread-2: Terceira Parte
----

.Referências
****
* Using Concurrent Collections
Expand All @@ -134,4 +135,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html[Package java.util.concurrent.] Java Plataform SE 8.
****
****
3 changes: 2 additions & 1 deletion book/06-concurrency/sections/02-locks.asc
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ Thread-0: Conseguiu o Lock de leitura
+
Perceba que neste exemplo o _lock_ de escrita está sendo obtido *antes* do de leitura, de tal forma que apenas a primeira _thread_ que foi executada conseguiu obter os dois __locks__.

.Referências
****
* Applying Locks
Expand All @@ -170,4 +171,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/package-summary.html[Package java.util.concurrent.locks.] Java Plataform SE 8.
****
****
7 changes: 4 additions & 3 deletions book/06-concurrency/sections/03-execute-tasks.asc
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Retorno da tarefa: String que será retornada
+
Nesse caso a instância de `Future` representa o valor retornado pela tarefa, uma ``String``.
+
É necessário o bloco `catch` para capturar as exeções que podem ser lançadas pelo método `get` da classe `Future`.
É necessário o bloco `catch` para capturar as exceções que podem ser lançadas pelo método `get` da classe `Future`.

. É possível passar uma lista de tarefas para serem executadas utilizando o método ``invokeAll``.
+
Expand Down Expand Up @@ -167,7 +167,7 @@ As outras tarefas são interrompidas ou, como neste caso só temos uma __thread_
+
Em um exemplo com inúmeras __threads__, é possível que qualquer uma das 3 tarefas finalize primeiro e interrompa as outras duas.

. `Runnable` não possui retorno nem pode lançar exceção checada, enquanto `Callable` possui retorno e pode lançar execeção checada. É importante saber diferenciar qual versão do método `submit` está sendo chamado.
. `Runnable` não possui retorno nem pode lançar exceção checada, enquanto `Callable` possui retorno e pode lançar exceção checada. É importante saber diferenciar qual versão do método `submit` está sendo chamado.
+
[source,java,indent=0]
.{java-package}/executetasks/Tasks_RunnableCallable.java
Expand Down Expand Up @@ -353,6 +353,7 @@ Execução 5: pool-1-thread-2 - 16:33:39.838
+
Duas _threads_ e _delay_ de 3 segundos em todos os agendamentos.

.Referências
****
* Creating Threads with the ExecutorService
Expand All @@ -365,4 +366,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* hhttps://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html[Interface ExecutorService.] Java Plataform SE 7.
****
****
4 changes: 2 additions & 2 deletions book/06-concurrency/sections/04-fork-join.asc
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Resultado da execução: 26
+
Perceba também que o processamento da String retorna quantos caracteres foram impressos, e por isso foi utilizada a classe `RecursiveTask`.


.Referências
****
* Managing Concurrent Processes
Expand All @@ -84,4 +84,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html[Fork/Join.] The Java™ Tutorials.
****
****
5 changes: 3 additions & 2 deletions book/07-file-io/sections/01-paths.asc
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ java.lang.IllegalArgumentException: 'other' is different type of Path
at org.j6toj8.fileio.paths.Paths_Relativize.main(Paths_Relativize.java:40)
----
+
Todas essas combinações podem aparecere no exame, então entenda bem como cada uma delas se comporta. Lembre-se principalmente de que não é possível derivar um `Path` absoluto de um relativo, e vice-versa.
Todas essas combinações podem aparecer no exame, então entenda bem como cada uma delas se comporta. Lembre-se principalmente de que não é possível derivar um `Path` absoluto de um relativo, e vice-versa.

. É possível converter um `Path` sintético, que não aponta de fato para um arquivo no sistema de arquivos, em um `Path` real, que aponta para um arquivo ou diretório que existe no sistema de arquivos.
+
Expand All @@ -260,6 +260,7 @@ java.nio.file.NoSuchFileException: /home/rinaldo/arquivoQueNaoExiste.txt
+
Perceba que é lançada exceção caso o arquivo realmente não exista no sistema de arquivos.

.Referências
****
* Introducing NIO.2
Expand All @@ -272,4 +273,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html[Path Operations.] The Java™ Tutorials.
****
****
5 changes: 3 additions & 2 deletions book/07-file-io/sections/02-files.asc
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Path 3 e Path 4 são iguais? true
Path 1 e Path 4 são iguais? true
----
+
Perceba que nesse exemplo todos os `Path` são iguais, pois apontam para o mesmo arquivo. Ou seja, o método realmetne verifica se o arquivo no sistema de arquivos é o mesmo, indepenente da forma como o diretório está sendo representado no `Path`. Isso funcionará inclusive para links simbólicos que apontam para o mesmo arquivo.
Perceba que nesse exemplo todos os `Path` são iguais, pois apontam para o mesmo arquivo. Ou seja, o método realmente verifica se o arquivo no sistema de arquivos é o mesmo, independente da forma como o diretório está sendo representado no `Path`. Isso funcionará inclusive para links simbólicos que apontam para o mesmo arquivo.

. É possível criar arquivos utilizando a classe `Files`.
+
Expand Down Expand Up @@ -353,6 +353,7 @@ Data de Criação alterada: 2019-08-14T19:24:32.995Z
+
Perceba que a partir da classe `BasicFileAttributeView` também é possível ler os atributos do arquivo chamando o método `readAttributes`.

.Referências
****
* Introducing NIO.2
Expand All @@ -365,4 +366,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html[Path Operations.] The Java™ Tutorials.
****
****
3 changes: 2 additions & 1 deletion book/07-file-io/sections/03-recursive-access.asc
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ Arquivo visitado: /home/rinaldo/arquivos/subpasta1/arquivo13.txt
Arquivo visitado: /home/rinaldo/arquivos/arquivo2.txt
----

.Referências
****
* Working with Directories
Expand All @@ -195,4 +196,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/tutorial/essential/io/pathOps.html[Path Operations.] The Java™ Tutorials.
****
****
4 changes: 2 additions & 2 deletions book/07-file-io/sections/04-file-improvements.asc
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ Conteúdo do arquivo:
5
----


.Referências
****
* Presenting the New Stream Methods
Expand All @@ -163,4 +163,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html[Class Files.] Java Plataform SE 7.
****
****
3 changes: 2 additions & 1 deletion book/07-file-io/sections/05-watch-service.asc
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ Perceba que o primeiro `poll` retorna imediatamente, mesmo que nenhum evento ten
+
Nos cenários de monitoração, o ideal é utilizar o `take`, caso contrário seria necessário invocar o `poll` inúmeras vezes, enquanto o `take` apenas aguarda indefinidamente até que haja um evento.

.Referências
****
* Monitoring a Directory for Changes
Expand All @@ -133,4 +134,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://docs.oracle.com/javase/tutorial/essential/io/notification.html[Watching a Directory for Changes.] The Java™ Tutorials.
****
****
3 changes: 2 additions & 1 deletion book/08-java-collections/sections/01-diamond.asc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ O Diamond Operator (ou Operador Diamante) foi criado no Java 7 para remover cód
include::{section-java-package}/diamond/Collections_Diamond.java[tag=code]
----

.Referências
****
* Using the Diamond Operator
Expand All @@ -26,4 +27,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://www.baeldung.com/java-diamond-operator[Guide to the Diamond Operator in Java.]
****
****
3 changes: 2 additions & 1 deletion book/08-java-collections/sections/02-collections-lambda.asc
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ include::{section-java-package}/lambda/CollectionsLambda_Combined.java[tag=code]
54
----

.Referências
****
* Using Streams
Expand All @@ -87,4 +88,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://www.baeldung.com/java-8-streams[The Java 8 Stream API Tutorial.]
****
****
3 changes: 2 additions & 1 deletion book/08-java-collections/sections/03-data-search.asc
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ allMatch: false
noneMatch: false
----

.Referências
****
* Using Streams
Expand All @@ -49,4 +50,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://www.baeldung.com/java-8-streams[The Java 8 Stream API Tutorial.]
****
****
3 changes: 2 additions & 1 deletion book/08-java-collections/sections/04-calculations.asc
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ include::{section-java-package}/calculations/Collections_PartitioningBy.java[tag
Mapa de pares e ímpares: {false=[1, 3, 5, 7, 9], true=[2, 4, 6, 8]}
----

.Referências
****
* Using Streams
Expand All @@ -90,4 +91,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://www.baeldung.com/java-8-streams[The Java 8 Stream API Tutorial.]
****
****
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ Map antes do computeIfPresent: {A=65, B=66}
Map depois do computeIfPresent: {A=4225, B=4356}
----

.Referências
****
* Using Streams
Expand All @@ -80,4 +81,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://www.baeldung.com/java-8-streams[The Java 8 Stream API Tutorial.]
****
****
3 changes: 2 additions & 1 deletion book/08-java-collections/sections/06-merge-map.asc
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ l
+
Perceba que uma transformação que resulta em outro Stream é percorrida como se fosse o próprio Stream original.

.Referências
****
* Additions in Java 8
Expand All @@ -90,4 +91,4 @@ Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8
* https://www.baeldung.com/java-merge-maps[Merging Two Maps with Java 8.]
****
****
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import java.util.List;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.ForkJoinTask;
import java.util.concurrent.RecursiveAction;
import java.util.concurrent.RecursiveTask;

public class ForkJoin_RecursiveTask {
Expand Down
4 changes: 2 additions & 2 deletions src/org/j6toj8/fileio/files/Files_DeletePath.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ public static void main(String[] args) {
Files.createFile(path);
System.out.println("Path existe? " + Files.exists(path));

Files.delete(path); // tenta apagadar o Path e lança exceção se ele não existir
Files.delete(path); // tenta apagar o Path e lança exceção se ele não existir
System.out.println("Path existe? " + Files.exists(path));

Files.deleteIfExists(path); // tenta apagadar o Path e não faz nada se ele não existir
Files.deleteIfExists(path); // tenta apagar o Path e não faz nada se ele não existir
System.out.println("Path existe? " + Files.exists(path));
} catch (IOException e) {
e.printStackTrace();
Expand Down
Loading

0 comments on commit 1953fa7

Please sign in to comment.