[개발 일기] 2025.07.09 - Nested Loop Join
·
개발 일기
💡 개요 오늘은 조인 기법 중 하나인 NL Join(Nested Loop Join)에 대해 정리해 보자. 🛠️ NL Join NL Join이란 INNER Join을 수행하는 방법 중 하나로, "바깥 테이블의 각 행에 대해, 안쪽 테이블 전체를 검사한다" 라는 방식이다. 역시 말로만 들으면 이해가 안된다. NL Join을 자바 코드로 보면 다음과 같다. for (rowA in TableA) { for (rowB in TableB) { if (rowA.fk == rowB.key) { // 매칭된 결과를 출력 } }} 그런데 만약 3중 조인, 4중 조인처럼 여러 테이블이 동시에 조인되는 쿼리에서 NL Join이 수행된다면 어떻게 될까? 결국 이는 3중 for문, 4중 fo..
[개발 일기] 2025.07.08 - 카카오 vs 네이버 로그인, 하나의 메서드로 못 묶는 이유
·
개발 일기
💡 개요 왜 카카오 로그인과 네이버 로그인을 따로 구현했을까.. 많은 개발자들은 카카오나 네이버 소셜 로그인 기능을 구현할 때, 각 기능의 메서드를 아예 따로 구현한다고 한다. @Service@RequiredArgsConstructor@Transactional(readOnly = true)public class AuthServiceImpl implements AuthService { ... @Override @Transactional public AuthLoginResponse naverLogin(String code) { String naverAccessToken = toRequestNaverAccessToken(code); OAuthInfoRespon..
[개발 일기] 2025.07.07 - await과 async
·
개발 일기
💡 개요 오늘은 React나 Flutter와 같은 프론트엔드에서 자주 사용되는 await와 async에 대해 정리해 보자. 🛠️ await와 async await와 async 둘 다 비동기를 위해 사용되는 키워드이다. async는 단어 그대로 비동기를 의미한다. await 키워드를 사용한 메서드는 반드시 async가 사용된 메서드여야 한다. 그리고 async가 사용된 메서드는 Future을 반환해야 한다. Future의 의미는 말 그대로 ‘미래’ 라는 뜻은 아니고, 미래에 완료될 값 또는 작업의 결과를 나타내는 객체이다. Future fetchData() async { await Future.delayed(Duration(seconds: 2)); return "데이터 도착!";} Fu..
[개발 일기] 2025.07.05 - _ ?
·
개발 일기
💡 개요 유독 프론트엔드와 관련된 프레임워크를 다룰 때, 변수 시작부분에 _가 있는 걸 자주 본다. 왜 그럴까? 🛠️ _ 변수명 앞에 붙는 밑줄(_)은 private 혹은 내부에서만 사용되는 변수임을 나타내기 위한 관습적인 표현이다. 쉽게 이해하자면 자바에서 사용되는 private 접근 제어자와 같은 개념이다. 특히 Dart와 Flutter 같은 프론트엔드 프레임워크에서는 이 밑줄이 단순한 관습이 아니라 실제로 접근 제어에 영향을 미친다. 예를 들어, Dart에서는 변수나 메서드 이름 앞에 _를 붙이면 해당 요소는 해당 파일 내부에서만 접근 가능한 private 멤버가 된다.
[개발 일기] 2025.07.04 - 단위 테스트는 열린 창문만 이용하기!
·
개발 일기
💡 개요 오늘은 “코드 품질 개선 기법 시리즈 소개 : 문을 없애고 테스트하기”에 관한 내용을 정리해 보자. 🛠️ 열린 창문만 이용해 테스트하기 단위 테스트에서는 내부의 세부적인 작동보다는 관찰 가능한 작동이 사양과 일치하는지를 테스트하는 것이 더 바람직합니다. 즉, 단위 테스트에서 확인해야 할 것은 주로 다음 두 가지 사항입니다.1. 함수의 반환값 및 예외2. 외부에서 제공되는 객체와의 상호작용(실제 인수로 입력된 객체나 생성자 인수로 입력된 객체 혹은 주입된 객체 등) 이를 “열린 창문만 이용해 테스트하기” 라고 표현한다. 열린 창문이란 내가 보기엔 public 메서드를 의미하는 것 같다. public 메서드는 어느 곳에서나 접근할 수 있다. 그런데 대부분의 public 메서드는 내부적..
[개발 일기] 2025.07.03 - JVM Eden 영역?? Commited Space??
·
개발 일기
💡 개요 OKKY 글을 보다가 아래 문장을 봤다. 부하 테스트를 진행하는데, Commited heap 메모리가 자꾸 감소해서 GC가 심각하게 증가… JVM Eden 영역은 뭐고, Commited Heap 메모리는 뭐고, 왜 Commited Heap 메모리가 감소해서 GC가 증가할까..? 🛠️ JVM Eden 영역 JVM Eden 영역은 Young Generation 내의 세 영역 중 하나로, 객체가 생성되어 처음으로 할당되는 공간이다. Young Generation이란 객체가 생성되고 짧은 생명주기, 즉 금방 삭제되는 객체를 보관하는 공간이다. Eden : 생성된 객체가 처음 저장되는 곳S0, S1 : Eden에서 살아남은 객체가 이동하는 곳 대부분의 객체는 Eden 영역에서 빠르게 생성..