Java
글 79편
2026
- CI에서만 실패하던 테스트, ack보다 되감기가 먼저 도착했다
네트워크로 가는 ack와 직접 호출한 되감기의 순서가 뒤바뀌던 테스트
- shutdownNow()가 버린 작업 때문에 끝나지 않던 future
shutdownNow()가 대기 중인 작업을 버려서 future가 끝나지 않던 문제
- TableView에서 message 전체를 쓰고 싶을 때
PIP-445로 Pulsar 5.0.0 TableView에 더한 createMapped와 TableViewMessageMapper의 사용법, mapper가 불리는 때와 실패 규칙, 리뷰에서 API 모양이 바뀐 과정
2025
- 파일을 한 번 더 열던 try-with-resources 블록
BootZipCopyAction이 같은 파일을 한 번 더 열던 이유
- at+jwt는 통과하고 AT+JWT는 거부되던 이유
JwtTypeValidator가 typ 값의 대소문자를 구분하던 문제
2023
- ReflectionTestUtils로 단위 테스트의 엔티티 ID 설정하기
DB에 저장하지 않은 엔티티의 ID를 테스트 안에서 설정해 작성자 검증을 수행한 기록입니다.
- Facade로 답변 생성 로직의 의존성 분리하기
회원과 질문 조회를 AnswerFacade로 옮긴 리팩터링과 남은 고민을 기록합니다.
- LeetCode 133: 방문한 노드를 기억하며 그래프 복사하기
깊이 우선 탐색과 원본 노드에서 복제 노드로의 매핑을 사용한 Clone Graph 풀이입니다.
- LeetCode 208: 단어와 접두사를 구분하는 Trie 구현
문자별 자식 노드와 단어 끝 표시로 Trie의 삽입 및 검색을 구현한 기록입니다.
- LeetCode 230: BST에서 k번째로 작은 값 찾기
중위 순회로 방문 횟수를 세어 k번째 노드의 값을 저장하는 풀이입니다.
- LeetCode 530: BST 중위 순회로 가장 작은 차이 찾기
이진 탐색 트리를 오름차순으로 방문하며 이웃한 값의 차이를 비교하는 풀이입니다.
- LeetCode 162: 이분 탐색으로 Peak Element 찾기
중간 값과 오른쪽 값을 비교해 봉우리가 있는 구간을 좁히는 풀이입니다.
- LeetCode 1: HashMap으로 Two Sum의 두 인덱스 찾기
앞서 본 값과 인덱스를 저장해 합이 target이 되는 두 원소를 찾는 풀이입니다.
- LeetCode 155: 이전 최솟값을 함께 저장하는 Min Stack
스택에서 최솟값이 빠질 때 이전 최솟값을 복원하도록 구현한 기록입니다.
- LeetCode 125: 문자열을 뒤집어 팰린드롬 확인하기
영문과 숫자만 남긴 문자열을 뒤집어 원래 문자열과 비교한 풀이입니다.
- LeetCode 80: 정렬된 배열의 중복을 두 개까지 남기기
연속된 중복 횟수를 세어 같은 값을 최대 두 개만 남기는 풀이입니다.
- LeetCode 26: 정렬된 배열에서 중복을 하나씩만 남기기
마지막으로 남긴 값과 현재 값을 비교해 중복을 제거하는 풀이입니다.
- LeetCode 27: 같은 배열 안에서 특정 값 제거하기
남길 값만 배열 앞쪽으로 옮겨 유효한 길이를 반환하는 Remove Element 풀이입니다.
- LeetCode 88: 정렬된 배열을 뒤에서부터 합치기
배열을 합친 뒤 정렬하는 풀이에서 뒤쪽부터 비교해 채우는 풀이로 바꾼 기록입니다.
- IntelliJ 빌드 중 TypeRepr ClassCastException을 만났을 때
IntelliJ의 모듈 빌드 오류를 Rebuild Project로 해결했던 짧은 기록입니다.