22.05.24 TIL

Wintering·2022년 5월 24일
0

2022TIL

목록 보기
31/87

5월23일 (월)

내일배움캠프 D+36 📚

  • 아침 Java 개념 공부(CompletableFuture), SQL강의수강(~2주차)
  • 오후(~4시) Spring 강의 수강(~2주차)
  • 4시~ 6시 알고리즘 3문제 (2839, 1463, 20923)
  • ~ 8시30분 토끼반스터디🐰
  • 8시30분~ 알고리즘 + 알고리즘 정리 / Spring 개인강의 수강📚

🔻Java
[Java8]CompletableFuture

  • Java 스터디를 위한 발표 준비를 하면서, Thread에 대해서 조금 깊게 공부했는데도 CompletableFuture는 조금 막연해서 어려웠다. 내용은 이해가 가는데 이걸 실제로 적용하는 건 다른 이야기인 것 같다. 알고리즘을 풀 때 처럼 일단 코드를 쳐놓고 줄일 수 있는 방법을 생각해나가며 적용해나가는 방법으로 익숙해져야 할 것 같다. 뭐든 기본이 탄탄하고, 단순한 방법과 구현 말고, 왜 쓰는지에 대한 개념이 먼저 탑재되어야 활용도 가능한 것 같다.

  • CompletableFuture에서 join()과 get()의 차이에 대해 공부하면서 혼자 이런건가?하고 이해하고 넘어간 부분이 있었는데, 스터디 발표를 들으면서 보다 개념에 가깝게 이해할 수 있던 것 같다.

    get()

    • get() 메소드는 Future interface에 정의되어 있음
    • 작업처리도중 interrupt 되었다면, InterruptedException 발생시킴
      작업처리도중 예외가 발생하면, ExecutionException을 발생시킴
      👉두 예외 모두 RuntimeException을 상속하지 않고 꼭 처리해야하는 CheckeException으로
      try/catch 또는 throws로 예외처리를 해줘야함

    join()

    • join() 메소드는 CompletedFuture에 정의되어 있음
      join()은 InterruptedException과 ExceutionException을 throw하지 않음
      대신 uncheckedExceptinoCompletionException을 던진다.
      👉try/catch 블록이 필요하지 않으며, exceptionally()를 활용하여 예외처리를 해줌
    CompletableFuture<List<String>> cf = CompletableFuture
        .supplyAsync(this::process)
        .exceptionally(this::getFallbackListOfStrings) // Here you can catch e.g. {@code join}'s CompletionException
        .thenAccept(this::processFurther);

    ✅ 결론적으로 CompletedFuture에서는 Join() 이 권장됨!

  • 언젠가의 TIL에 적었던 것 같은데(...), 예외처리를 제대로 공부할 때가 온 것 같다ㅎㅎ
    당장 Java8에 추가된 기능에 대한 스터디는 끝났으니까, 다음주 effective-java 스터디가 시작되기 전까지 Java자체에서 잘 모르는 (사실상 전부) 파트를 정리하면서 다시 공부하는 한 주를 보내야겠다.


🔻Algorthm
no2839 설탕배달
no20923 숫자할리갈리
no1464 1로만들기

  • 오늘 그래도 4문제 중에 3문제를 풀었다!
    숫자할리갈리를 온전히 혼자 힘으로 풀었다는 게 매우 뿌듯하다. 풀어본 것 중에 젤 높은 난이도였는데 딱히 알고리즘 이론이 활용되지 않아서인지 숫자할리갈리랑 아직 풀지 않은 다른 문제가 더 어려운 것 같다.

  • 1로 만들기가 풀리지 않아서, 찾아봤더니 DP (다이나믹 프로그래밍) 이라는 알고리즘 카테고리에 속해있었는데 이것도 뭔가 이론의 영역이라 내일이나 오늘 정리하고 공부해봐야할 것 같다. 이런 것들은 대체 어느 똑똑이가 만든걸까 대단하다.

  • 그래도 일주일동안 열심히 하루도 빼놓지 않고 열심히 했더니 나름 성과가 보이고있다!
    아마 2n일동안 연속으로 알고리즘을 풀었을 때 n단계의 새싹을 주는 거 같은데, 놓치지 않고 받아봐야지! ㅎ-ㅎ


0개의 댓글