최근에 서비스 개발 코드들을 보면서 옛날 클래스 네이밍/아키텍처 패턴을 보고 있습니다. 예를 들어 DTO, DAO 같은 것들 말이죠. 대략적으로는 알지만, 오랜만에 봐서 그런지 헷갈려 정리해놓고자 합니다. 이 글에서는 일반적으로 이런 역할을 가진다라고 이야기하지만 무조건 적인 것은 아닙니다. 변질된 사례도 많고, 구현하는 사람마다 이해하는 바가 다르기 때문입니다. 그리고 개인적인 의견입니다만 최근에는 여기서 말하는 모든 네이밍/패턴은 많이 사용되지 않는다고 생각합니다. 여러 다른 프레임워크/구현체(ex. JPA/Hibernate 등)들이 어느정도 많이 사용되면서 다른 명명 패턴/추상화(ex. Repository 등)를 사용하고 있기 때문입니다. 하지만 그럼에도 팀 및 정해진 인원들이 어느정도 정해진 컨벤..
최근 재미로 Kotlin을 사용해보고 있는데, 한 가지 불편한게 있었다. Java를 사용할 땐 아래의 사진의 빨간 부분처럼 IntelliJ가 hint를 주고 있었는데, Kotlin을 사용하니 이 정보를 주지 않았던 것. 있을 땐, 이게 도움이 되는지 몰랐는데, 없으니 괜히 사소하게 불편했다. 그래서 이 참에 찾아봤는데, 이 기능은 `Inlay hints`라고 한다. Code reference information | IntelliJ IDEA www.jetbrains.com 이를 Kotlin에서 활성화시켰더니, 잘 보인다. 흐흐. 진작 사용할 걸.
Tomcat 같이 Thread pool을 만들어두고 사용하는 경우, ThreadLocal 사용 시 주의해야하는 점이 있습니다. 바로 Thread 반환 시, ThreadLocal을 remove 해주어야 한다는 점입니다. 왜 Thread pool을 사용할까요? Thread pool을 사용하는 경우는 이유가 명확한데요. Thread를 작업 도중 생성하는 것이 시간이 오래 걸리는 비싼 행동이기 때문입니다. 그러므로 특정한 개수(Tomcat의 경우 200개)만큼의 Thread를 미리 만들어두고, 요청이 들어올 때마다 만들어둔 Thread를 이용하도록 합니다. 작업이 끝나면 다시 Thread를 반환하고, 추후 다른 요청을 처리할 때 다시 이용하게 됩니다. 왜 이러한 Thread pool 구조에서 ThreadLoca..
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", ..
Flame Graph ? show the CPU time spent in Java methods, system libraries, and the kernel, all in one visualization. 해석하기 각 사각형은 stack frame을 나타낸다(즉, 함수). 사각형의 가로(width)는 현재 프로파일에 얼마나 존재하는지(실행되는지)를 나타낸다. Graph x축 왼쪽과 오른쪽 순서는 중요하지 않다. stack은 단순히 알파벳 순서대로 정렬된 것이다. y축 stack depth. 함수들간의 호출 depth. Stack의 색상들은 code type에 따라 설정된다. 보통 Java code는 초록색, C++ code는 노란색, System은 빨간색으로 설정된다. 하지만 다른 color scheme..
Java 17이 LTS로 공개되었고, Spring boot도 2.5.5 버전에서 지원하고 있어 새로운 프로젝트에 Java 17을 사용하기로 했다. 그래서 start.spring.io에서 Java 17/Boot 2.5.5로 만들어서 intellij에서 바로 Run 했는데, 아래와 같은 오류가 나왔다. error: invalid source release: 17 이전 java 버전 변경할 때, 자주 겪었던 오류라 preference 및 project structure가서 java 버전을 명시하고 있는 것은 다 17로 바꿔주었다. 근데도 같은 오류를 계속 내뿜었다 ㅠㅠ 상세 설명도 없이.... 진짜 눈에 보이는 JDK 버전은 다 변경한 것 같은데 '뭐지...' 하고 싶던 찰나 gradle 버전 변경하는 것을 ..
Java엔 정말 다양한 Http Client가 있다. 주로 URLConnection, Apache HttpClient, RestTemplate, Feign를 사용하게 되는데 각각의 Proxy를 설정하는 법 또는 System property를 사용해 Proxy를 설정하는 법이 있다. 이런 Proxy 설정에 관하여 회사에서 위키로 작성해 전체 개발 팀에 공유를 했었는데, 좋게 봐주셔서 어쩌다보니 회사 기술 블로그에 글을 작성하게 되었다. 관련하여 궁금한 내용이 있으시다면, 아래 블로그 내용을 참조하시면 도움이 될 것 같습니다 :) Java proxy setting guide | 11번가 TechBlog — 11번가 기술블로그 안녕하세요. 11번가 Platform Engineering 팀의 서버 개발자 김보배..
- Total
- Today
- Yesterday
- Istio
- 백준
- 쿠버네티스
- HTTP
- Spring
- java
- MySQL
- gradle
- 이스티오
- WebFlux
- 하루
- 일상
- Intellij
- Kubernetes
- Algorithm
- 비동기
- sidecar
- container
- docker
- Log
- jasync
- tag
- 알고리즘
- python
- boj
- Spring boot
- k8s
- 로그
- c++
- r2dbc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |