> For the complete documentation index, see [llms.txt](https://jinwon-yoon.gitbook.io/jinonys-blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jinwon-yoon.gitbook.io/jinonys-blog/daily-log/2022.11.11.md).

# 2022.11.11

## 할일 및 한일&#x20;

* [x] 이것이 자바다 15장(컬렉션 프레임워크) 마무리 및 세미나&#x20;
* [x] 스프링 강의 수강 및 공부&#x20;
* [x] 백준 알고리즘 문제 풀이&#x20;

## 경험 및 배움&#x20;

### 이것이 자바다 15장(컬렉션 프레임워크)&#x20;

오늘은 우선 이것이 자바다 컬렉션 프레임워크 부분을 마무리하고, 세미나를 진행하였다.

**이진 트리 구조, `TreeSet` , `TreeMap` 과 정렬할 때 자주 쓰이는 `Comparable` , `Comparator`** 에 대해 익혀보았다. 또한 자료구조 시간 때 배웠었던 **스택과 큐**, 그리고 요소들을 삽입, 삭제 등등 여러 메소드들에 대해 공부하였다.

### 스프링 강의 수강&#x20;

오후에는 스프링 강의를 수강하고, 정리하며 공부하였다.

회원 관리 예제를 따라 실습해보면서 **리포지토리, 서비스를 생성해보고 의존성 주입**도 해보았다. 또한 **테스트 케이스를 생성하여 코드를 미리 테스트**해보았다.

테스트 케이스는 처음 들어보았는데, 실무에서 굉장히 중요하다고 하다. 또한 요새 실무에서 많이 쓰이는 기능들에 대해 알아보았다.

**`Optional` 은 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 `NullPointerException` 이 발생하지 않도록 도와준다**. 따라서 **`if` 문을 이용한 `null` 체크를 대체**할 수 있다고 한다.

`Optional` 은 다음과 같은 장점이 있다.

{% hint style="info" %}

* **코드가 길어짐에 따라 코드의 가독성이 점점 떨어지게 된다는 점을 줄일 수 있다.**
* **각 변수마다 null값을 체크해야 될 필요가 없기 때문에 프로그래머의 실수를 유발할 가능성이 낮아진다.**
  {% endhint %}

또한 이번에 배운 컬렉션 프레임워크에서 나온 **`ConcurrentHashMap`** 또한 실무에서 많이 쓰인다고 한다. 병렬 처리를 스레드에 안전하게 멀티 스레드가 진행할 수 있다고 한다.

자세한 정리 내용은 링크를 첨부한다.

{% embed url="<https://jinwonyoon.notion.site/MVC-DB-47075201e4dd4bfda6a4f29b9da3d6a8>" %}

### 백준 알고리즘 문제 풀이&#x20;

오늘 처음으로 백준에서 알고리즘 문제 풀이를 해보았다.

자바 세미나때 멘토분들이 과제로 내주셔서 풀어보았는데, 어려운 문제는 아니였지만 성취감이 있었다.

또한 써보지 않은 **`BufferedReader` , `StringTokenizer` , `StringBuilder`** 등에 대해 찾아보고 공부해보는 기회가 되었다. 위의 클래스에대해서는 따로 공부하여 정리할 예정이다.

문제 풀이 정리 링크를 첨부한다.

{% embed url="<https://jinwonyoon.notion.site/Stack-10828-03d6f76cc90e489bbf7ae8670fe35d3d>" %}

## 개선 및 목표&#x20;

* 내일은 주말이니 충분한 휴식을 취하고, 또 달려보자.&#x20;
