최근에 서비스 개발 코드들을 보면서 옛날 클래스 네이밍/아키텍처 패턴을 보고 있습니다. 예를 들어 DTO, DAO 같은 것들 말이죠. 대략적으로는 알지만, 오랜만에 봐서 그런지 헷갈려 정리해놓고자 합니다. 이 글에서는 일반적으로 이런 역할을 가진다라고 이야기하지만 무조건 적인 것은 아닙니다. 변질된 사례도 많고, 구현하는 사람마다 이해하는 바가 다르기 때문입니다. 그리고 개인적인 의견입니다만 최근에는 여기서 말하는 모든 네이밍/패턴은 많이 사용되지 않는다고 생각합니다. 여러 다른 프레임워크/구현체(ex. JPA/Hibernate 등)들이 어느정도 많이 사용되면서 다른 명명 패턴/추상화(ex. Repository 등)를 사용하고 있기 때문입니다. 하지만 그럼에도 팀 및 정해진 인원들이 어느정도 정해진 컨벤..

이번 글에서 R2DBC, Spring data r2dbc를 사용해 Join을 다뤄보자. 학습 기록용. 피드백은 언제나 환영입니다. 사용한 모든 예제코드는 github을 참고해주세요. 이전 글 R2DBC를 사용해보자 (1) - 왜 사용할까? 이번 글에서 R2DBC란 무엇이고, 왜 사용하고, 어떻게 사용했는지 경험에 대해 이야기해보고자 한다. 잘못된 내용이 있으면 피드백은 언제든지 환영입니다 :) R2DBC는 언제 사용할까? Reactive Programming binux.tistory.com R2DBC를 사용해보자 (2) - CRUD를 만들어보자 이번 글에서는 R2DBC, Spring data r2dbc를 사용해 코드를 작성해보자. 잘못된 내용이 있으면 피드백은 언제든지 환영입니다 :) 사용한 모든 예제코..

이번 글에서는 R2DBC, Spring data r2dbc를 사용해 코드를 작성해보자. 학습 기록용. 피드백은 언제나 환영입니다. 사용한 모든 예제코드는 github을 참고해주세요. 이전 글 R2DBC를 사용해보자 (1) - 왜 사용할까? 이번 글에서 R2DBC란 무엇이고, 왜 사용하고, 어떻게 사용했는지 경험에 대해 이야기해보고자 한다. 잘못된 내용이 있으면 피드백은 언제든지 환영입니다 :) R2DBC는 언제 사용할까? Reactive Programming binux.tistory.com 예제 환경은 다음과 같다. Java: JDK 17 Build tool: Gradle Database: MySQL Dependency 사용하기 위해서는 의존성을 먼저 추가해주어야 한다. 데이터베이스에 맞는 R2DBC d..

이번 글에서 R2DBC란 무엇이고, 왜 사용하고, 어떻게 사용했는지 경험에 대해 이야기해보고자 한다. 학습 기록용. 피드백은 언제나 환영입니다. 시리즈 R2DBC를 사용해보자 (2) - CRUD를 만들어보자 이번 글에서는 R2DBC, Spring data r2dbc를 사용해 코드를 작성해보자. 학습 기록용. 피드백은 언제나 환영입니다. 사용한 모든 예제코드는 github을 참고해주세요. 이전 글 R2DBC를 사용해보자 (1) - 왜 사 binux.tistory.com R2DBC를 사용해보자 (3) - Join (Many-To-One, One-To-One, One-To-Many) 이번 글에서 R2DBC, Spring data r2dbc를 사용해 Join을 다뤄보자. 학습 기록용. 피드백은 언제나 환영입니다..
Tomcat 같이 Thread pool을 만들어두고 사용하는 경우, ThreadLocal 사용 시 주의해야하는 점이 있습니다. 바로 Thread 반환 시, ThreadLocal을 remove 해주어야 한다는 점입니다. 왜 Thread pool을 사용할까요? Thread pool을 사용하는 경우는 이유가 명확한데요. Thread를 작업 도중 생성하는 것이 시간이 오래 걸리는 비싼 행동이기 때문입니다. 그러므로 특정한 개수(Tomcat의 경우 200개)만큼의 Thread를 미리 만들어두고, 요청이 들어올 때마다 만들어둔 Thread를 이용하도록 합니다. 작업이 끝나면 다시 Thread를 반환하고, 추후 다른 요청을 처리할 때 다시 이용하게 됩니다. 왜 이러한 Thread pool 구조에서 ThreadLoca..

최근 JDK 17 release 되었고, JDK 11 다음의 LTS 버전으로서 오랫동안 지원이 되는 만큼 업무/개인프로젝트 등에서 적극적으로 사용하고 있다. Stream.toList() JDK17 기반에서 Stream을 사용해 List로 변환(collect)하다보면 IntelliJ에서 자주 보는 메세지가 있다. 위의 경우인데, collect(toList()) 대신 Stream.toList() 를 사용할 수 있다는 정보성 메시지이다. 그래서 나는 보통 JDK 17로 개발을 할 때, 아래와 같이 사용했다. // Before jdk 17 var peopleName = people.stream() .map(Person::name) .collect(Collectors.toList()); // jdk 17 var ..
Java Stream 사용 시, debugging이 어려울 때가 있다. IntelliJ IDEA에서는 Stream debugging 시 시각적으로 데이터를 확인할 수 있는 기능을 제공하고 있는데, 이게 정말 편리하다. 이를 활용해보자. 예제 간단한 예제를 만들었다. (참고: Java 17 (LTS) 을 사용했다) public static void main(String[] args) { var people = List.of( new Person("Sim", 47, City.SEOUL), new Person("Lee", 31, City.BUSAN), new Person("Kim", 23, City.SEOUL), new Person("Park", 18, City.JEJU), new Person("Song", ..
OOME = Out Of Memory Error 간단히 잘 설명된 글 [Java Memory Profiling에 대하여] 1. JVM 메모리의 이해와 케이스 스터디 [Java Memory Profiling에 대하여] 2. 메모리 모니터링과 원인 분석 2차 가공이 불가능한 글이라 내용은 첨부하지 않는다. 오류의 예제 상황을 설명하고 있고, Grafana Heap Graph/jstat/mat 등을 통해 GC 실행 수/Memory 상황/dump 등을 보며 오류 상황을 확인할 수 있도록 제공하고 있다.
- Total
- Today
- Yesterday
- OpenTelemetry
- container
- Log
- 하루
- Clean Architecture
- Spring boot
- java
- k8s
- Kubernetes
- 백준
- 알고리즘
- 로그
- Intellij
- tag
- docker
- Algorithm
- MySQL
- jasync
- c++
- 일상
- 비동기
- WebFlux
- python
- HTTP
- boj
- 클린 아키텍처
- Spring
- gradle
- Istio
- 쿠버네티스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |