안녕하세요. 도서관 토이 프로젝트에서 logging을 하는 기능을 추가하려고 했습니다. 이 중에, client의 ip address와 Host name, 그리고 요청 id 등을 추가해야 했는데요. 이를 어떻게 처리해야 하나 찾던 도중에 logback의 MDC를 알게 되었습니다. 그리고, 이것이 어떤 식으로 동작하는지 간단하게 질문글들을 찾아보니, 내부적으로 ThreadLocal을 쓴다는 답변이 있었습니다. java의 ThreadLocal은 처음 들어봤는데요. 꽤 오래 전부터 있었던 듯 해서, 이번 기회에 간단하게 정리해 보았습니다. 먼저, ThreadLocal에는 get, set, remove 이 정도밖에 없어요. 저 3개를 쓰는 간단한 예제 먼저 보고, 어떤 식으로 동작하는지 간단하게 내부만 보도록 하..
코딩/Java 검색 결과
최근에 제 토이 프로젝트를 손 보면서, 바꾼 것이 몇 가지 있습니다. 이 중에서 UserService 단에서 예외 처리하는 부분을 추가하였습니다. 해당 부분은 여기서 볼 수 있어요. 현재 제 토이 프로젝트 레포에 있는 예외 처리 코드들이 살짝 비대한 경향이 있어서 추가적인 리팩토링을 할 예정입니다. 그 부분은 나중에 언급할 기회가 있을 듯 싶습니다. 이 글에서 설명할 부분은 이 문서와 일맥 상통한 내용이니 간단하게 읽어보시면 도움이 될 듯 합니다. 원래 regUser는 위와 같이 구현이 되어 있었습니다. 그리고 예외가 발생하면 Service 단에서도, Controller 단에서도 처리가 되지 않는 구조였습니다. 제 도서관 api의 db에 저장되어 있는 user_name은 위와 같습니다. 'cho'가 있으..
안녕하세요. chogahui05입니다. 최근에 코딩 테스트를 개최하면서, 다중 정렬을 람다로 구현한 풀이를 보고 배울 점이 많다고 느꼈어요. 람다는 정렬할 때도 쓰고, stream에서도 많이 써 먹긴 합니다. 그런데, 이 글에서는 따로 언급해 드리지는 않겠습니다. 대신에, 람다를 이해할 때 필수적으로 이해했으면 좋을만한 apply 메서드만 언급해 보겠습니다. 제가 computeXXX 시리즈를 설명할 때도 언급이 되었습니다. 그러니, 이 포스팅을 보고 오셔도 좋겠네요. [관련글] computeIfPresent에 대해서 알아봅시다. map 인터페이스에 있는 computeIfAbsent와 computeIfPresent를 예로 들어 설명해 보겠습니다. 이 메서드 들을 이해하면, 어느 정도는 람다가 이런 것이구나..
이펙티브 자바를 보다 보면, 표준 예외를 사용하라는 item이 있습니다. 여기에 언급되는 exception들을 보면 Collections에서도 자주 보이는 예외가 몇 개 있는데요. 이번 시간에는 이 중에 UnsupportedOperationException에 대해서 보도록 하겠습니다. 저번에 예를 들었던 것 중에, CopiesList를 들고 오겠습니다. 이것은 AbstractList를 상속받는다고 되어 있어요. 명세를 보면, immutable list를 리턴한다고 되어 있어요. 저번에 본 바로는 CopiesList가 Collection 내부에 private 클래스로 되어 있었어요. 그리고, 계속 읽어보면, n copies of the specified Object라고 되어 있는데요. 특수 오브젝트의 n개..
안녕하세요. 이번 시간에는 Java의 switch 문에 대해 알아보겠습니다. c언어의 switch문하고 다를 것은 없고요. 이번에 제가 낸 문제에서, 쓰면 좋겠다 싶어서 소개를 해 보려고 해요. 이 글에서는 string switch문이 어떻게 돌아가는지를 먼저 소개하고, 어떻게 적용할 수 있는지 알아보겠습니다. string 빼고 나머지는 제가 예전에 c언어 시간에 소개했던 switch문과 동일하므로, 관련 글의 연장선 정도라고 보시면 좋겠습니다. [관련글] c언어 switch문에 대해 알아봅시다. java에서는 String도 switch문이 됩니다. 저만 몰랐을 수도 있겠지만요. 이 프로그램은, 간단합니다. acquire를 입력받으면, 뎁스를 하나 증가시키고 acquire!를 출력합니다. release를..
최근댓글