2022-05-09-TIL TIL Today I Learned 프로젝트 구조 Spring Boot는 특정 디렉터리 구조를 강제하지 않는다. 다만 Spring Boot 문서는 @SpringBootApplication이 붙은 메인 클래스를 다른 클래스들보다 위의 루트 패키지에 두라고 권한다. 컴포넌트 스캔과 엔티티 스캔이 메인 클래스의 패키지부터 하위로 진행되기 때문이다. 그 아래는... 2022/05/09 2022-TIL
2022-05-03-TIL TIL Today I Learned Elastic Search Elasticsearch는 Apache Lucene 기반의 분산 검색 및 분석 엔진이다. 문서를 JSON으로 저장하고, 저장할 때 텍스트를 분석기(analyzer)로 토큰으로 나눠 역색인(inverted index)을 만든다. 역색인은 단어에서 그 단어가 들어 있는 문서 목록으로 가는 색인이라... 2022/05/03 2022-TIL
2022-04-27-TIL TIL Today I Learned Music App Open Sources GitHub의 음악 플레이어 오픈소스 프로젝트를 모았다. 대부분 Android 앱이다. 저장소 설명, 언어, 라이선스, 보관 여부는 나중에 GitHub에서 다시 확인한 상태를 기준으로 적었다. 보관(archived) 상태인 저장소는 더 이상 유지 보수되지 않으므로 코드 구조를 참... 2022/04/27 2022-TIL
2022-04-25-TIL TIL Today I Learned ZGC vs G1GC 둘 다 HotSpot JVM의 가비지 컬렉터이고, 목표가 다르다. G1(Garbage-First): 힙을 같은 크기의 리전으로 나누고, 쓰레기가 많은 리전부터 수집한다. 처리량과 정지 시간 사이의 균형을 목표로 하며 -XX:MaxGCPauseMillis로 목표 정지 시간을 지정한다. JEP ... 2022/04/25 2022-TIL
2022-04-22-TIL TIL Today I Learned B-Tree Index 대부분의 RDBMS 인덱스는 B-Tree 계열 자료구조다. 키가 정렬된 상태로 저장되고 트리 높이가 낮게 유지되므로, 일치 검색뿐 아니라 범위 검색(BETWEEN, >, LIKE 'abc%')과 정렬(ORDER BY)에도 쓸 수 있다. 데이터가 추가되거나 삭제되면 노드를 분할하거나 합쳐 균형... 2022/04/22 2022-TIL
2022-04-21-TIL TIL Today I Learned JPA Duplicated JPA 엔티티는 같은 이름으로 여러개 생성할 수 없다. 엔티티 이름은 JPQL에서 엔티티를 가리키는 이름이고, 따로 지정하지 않으면 패키지를 뺀 클래스 이름이 된다. 그래서 다른 패키지에 같은 이름의 클래스(order.domain.Item과 product.domain.Item)를 각각 엔티티... 2022/04/21 2022-TIL
2022-04-20-TIL TIL 2022-04-20-TIL Today I Learned QueryDSL https://jojoldu.tistory.com/401 https://blog.leocat.kr/notes/2019/09/05/querydsl-sql-case-statement https://bottom-to-top.tistory.com/45 https://... 2022/04/20 2022-TIL
2022-04-18-TIL TIL Today I Learned Memory Leak Java는 GC(가비지 컬렉터)가 메모리를 회수하므로 C처럼 free를 잊어서 생기는 누수는 없다. 그런데도 메모리 누수는 생긴다. Oracle의 트러블슈팅 가이드는 애플리케이션이 의도치 않게 객체 참조를 계속 쥐고 있어서 GC가 그 객체를 회수하지 못하는 상황을 Java의 메모리 누수로 정의한다.... 2022/04/18 2022-TIL
2022-04-16-TIL TIL Today I Learned Index 인덱스는 특정 컬럼 값으로 행을 빨리 찾기 위한 자료구조다. MySQL 문서는 인덱스가 없으면 MySQL이 첫 행부터 테이블 전체를 읽으며 찾아야 하고, 테이블이 클수록 비용이 커진다고 설명한다. 인덱스가 있으면 데이터 중간의 어느 위치로 이동해야 할지 바로 알 수 있다. 대신 인덱스는 공짜가 아니다. 행을... 2022/04/16 2022-TIL
2022-04-15-TIL TIL Today I Learned Health Checks with Spring Boot Spring Boot Actuator의 /actuator/health 엔드포인트는 애플리케이션과 DB, 디스크, Redis 같은 의존 대상의 상태를 모아 UP/DOWN으로 알려 준다. Actuator 문서에 따르면 상세 정보 노출은 management.endpoin... 2022/04/15 2022-TIL