~/tech-blog/tag/Java — zsh

#Java 47 posts

카테고리를 가로질러 Java를 다룬 글을 모았습니다.

JAVA · JVM

Java 기준 멀티스레드와 레이스 컨디션

Java에서 멀티스레드 프로그래밍 시 발생하는 레이스 컨디션의 원인을 예제로 살펴보고, synchronized·Lock·Atomic을 활용한 해결 방법을 정리합니다.

efa5056 · Java · JVM — 4 min
JAVA · JVM

Garbage Collection(GC)

JVM 메모리 구조와 가비지 컬렉션의 동작 원리를 정리하고, Serial GC부터 G1 GC, ZGC까지 주요 GC 알고리즘의 특징을 비교합니다.

2024.09.13 · efa5056 · Java · JVM — 13 min
JAVA · JVM

Garbage Collection 튜닝

jstat으로 GC 상태를 모니터링하는 방법과 Young/Old/Metaspace 영역별 증상에 따른 GC 튜닝 기준을 정리합니다.

2024.09.13 · efa5056 · Java · JVM — 7 min
JAVA · JVM

공급자 Supplier<T>

Java의 함수형 인터페이스 Supplier의 개념과 사용법, 지연 초기화(Lazy Initialization)에 활용되는 이유를 예제로 정리합니다.

2023.11.05 · c31d7cd · Java · JVM — 1 min
객체지향 · 설계

이펙티브 자바 2장: 객체 생성과 파괴

이펙티브 자바 2장을 바탕으로 정적 팩터리 메서드와 빌더 패턴을 활용한 올바른 객체 생성 방법을 정리합니다.

2023.11.04 · efa5056 · 객체지향 · 설계 — 2 min
클린 코드 WITH JAVA · 1/16

레거시 코드 리팩터링 — 1단계

레거시 QnaService의 삭제 로직을 도메인 모델로 옮기는 리팩터링 과제와 그에 대한 리뷰 피드백을 정리합니다.

2023.06.18 · ea0f709 · 클린 코드 with Java — 2 min
클린 코드 WITH JAVA · 2/16

스트림, 람다, Optional — 1단계

익명 클래스를 람다로 바꾸고 스트림의 map, filter, reduce와 Optional을 활용해 리팩토링한 학습 기록입니다.

efa5056 · 클린 코드 with Java — 3 min
클린 코드 WITH JAVA · 4/16

문자열 계산기 — 1단계

들여쓰기 depth와 메서드 크기 제한, else 금지 조건 아래 문자열 사칙연산 계산기를 구현한 과제와 리뷰 피드백을 정리합니다.

2023.04.25 · ea0f709 · 클린 코드 with Java — 2 min
클린 코드 WITH JAVA · 5/16

문자열 덧셈 계산기로 배우는 TDD — 2단계

문자열 덧셈 계산기를 TDD로 구현하고 리뷰 피드백에 따라 상수화, 책임 분리, 예외 처리를 리팩토링한 기록입니다.

c31d7cd · 클린 코드 with Java — 2 min
클린 코드 WITH JAVA · 6/16

로또 자동 — 2단계

로또 자동 구매 기능을 TDD로 구현하고 리뷰를 통해 상수 위치와 전략 인터페이스 네이밍을 개선한 기록입니다.

c31d7cd · 클린 코드 with Java — 3 min
클린 코드 WITH JAVA · 7/16

로또 게임 2등 — 3단계

로또 2등 당첨 로직을 enum과 일급 컬렉션으로 구현하고 싱글톤, 스트림 리팩토링을 반영한 기록입니다.

c31d7cd · 클린 코드 with Java — 2 min
클린 코드 WITH JAVA · 8/16

로또 수동 — 4단계

로또 수동 구매 기능을 값 객체와 일급 컬렉션으로 설계하고 리뷰를 반영해 구조를 리팩토링한 기록입니다.

c31d7cd · 클린 코드 with Java — 3 min
클린 코드 WITH JAVA · 9/16

사다리 생성 — 2단계

사다리 게임에 참여자 이름을 출력하는 기능을 구현하고, 생성자 책임 분리와 제네릭 활용에 대한 리뷰 피드백을 정리합니다.

c31d7cd · 클린 코드 with Java — 3 min
클린 코드 WITH JAVA · 10/16

사다리 게임 실행 — 3단계

사다리 게임 실행 결과를 출력하는 기능을 구현하고, 유틸리티 클래스 분리와 명령·조회 책임 분리에 대한 리뷰 피드백을 정리합니다.

c31d7cd · 클린 코드 with Java — 3 min
클린 코드 WITH JAVA · 11/16

사다리 리팩터링 — 4단계

사다리 게임 코드를 리팩터링하며 방어적 복사와 전략 인터페이스 설계에 대한 리뷰 피드백을 정리합니다.

c31d7cd · 클린 코드 with Java — 2 min
클린 코드 WITH JAVA · 12/16

자동차 경주 — 3단계

자동차 경주 게임을 처음 구현하며 View 책임 분리와 축약어 지양, 경계값 테스트에 대한 리뷰 피드백을 정리합니다.

c31d7cd · 클린 코드 with Java — 3 min
클린 코드 WITH JAVA · 13/16

자동차 경주 우승자 — 4단계

자동차 이름과 우승자 판별 기능을 추가하며 원시값 포장과 일급 컬렉션 설계에 대한 리뷰 피드백을 정리합니다.

c31d7cd · 클린 코드 with Java — 2 min
클린 코드 WITH JAVA · 14/16

자동차 경주 리팩터링 — 5단계

자동차 경주 코드를 MVC 패턴으로 리팩터링하며 사용자 정의 예외와 전략 패턴 적용에 대한 리뷰 피드백을 정리합니다.

c31d7cd · 클린 코드 with Java — 3 min
클린 코드 WITH JAVA · 15/16

수강신청 도메인 모델 — 2단계

넥스트스텝 수강신청 미션에서 DB 설계 없이 도메인 모델부터 TDD로 구현하며 받은 리뷰 피드백을 정리합니다.

2023.06.18 · ea0f709 · 클린 코드 with Java — 2 min
클린 코드 WITH JAVA · 16/16

수강신청 DB 적용 — 3단계

2단계에서 만든 도메인 구조를 유지하면서 DB 테이블과 매핑한 수강신청 미션 3단계 리뷰 기록입니다.

2023.07.18 · efa5056 · 클린 코드 with Java — 2 min
JAVA · JVM

Stream을 활용한 예제 모음

for문 대신 자바 Stream을 활용해 리스트·맵 변환, 중복 체크, null 처리, reduce 등을 정리한 예제 모음입니다.

2023.05.19 · c31d7cd · Java · JVM — 1 min
객체지향 · 설계

익명 클래스

자바의 익명 클래스가 무엇인지 살펴보고, 중복 코드를 익명 클래스로 리팩토링하는 예제와 인터페이스 구현 방식, 사용 시 얻을 수 있는 이점을 정리합니다.

2023.05.16 · c31d7cd · 객체지향 · 설계 — 2 min
객체지향 · 설계

일급컬렉션

Collection을 감싸고 다른 멤버 변수를 두지 않는 일급 컬렉션의 장점을 로또 번호 예제 코드와 함께 정리합니다.

2023.04.22 · c31d7cd · 객체지향 · 설계 — 2 min
객체지향 · 설계

원시값 포장

원시 타입 변수를 값 객체로 감싸면 유효성 검증 책임이 객체 안으로 옮겨져 코드가 더 명확해지는 이유를 예제로 설명합니다.

2023.04.22 · c31d7cd · 객체지향 · 설계 — 1 min
객체지향 · 설계

정적 팩토리 메소드 패턴

정적 팩토리 메소드 패턴으로 객체 생성 로직을 캡슐화하는 방법과, from·of·getInstance 등 네이밍 컨벤션을 정리합니다.

2023.04.22 · efa5056 · 객체지향 · 설계 — 1 min
SPRING

@JsonIgnoreProperties(ignoreUnknown=true)

@JsonIgnoreProperties(ignoreUnknown=true) 어노테이션으로 정의되지 않은 JSON 프로퍼티를 무시해 역직렬화 오류를 방지하는 방법을 정리합니다.

2023.03.19 · c31d7cd · Spring — 2 min
JAVA · JVM

Collectors.toMap에서 만난 Duplicate Key 예외

Collectors.toMap()에서 키가 중복될 때 발생하는 Duplicate Key 예외와 Merge Function으로 해결하는 방법을 정리합니다.

2023.03.14 · ea0f709 · Java · JVM — 1 min
JAVA · JVM

NPE를 막는 자바 방어 코드 모음

NPE를 예방하기 위해 사용했던 null 체크, partition, Function.identity() 방어 코드를 모아 정리합니다.

2022.11.01 · efa5056 · Java · JVM — 1 min
JAVA · JVM

이미지 다운로드에서 터진 NPE와 방어 코드

프록시 서버를 거쳐 이미지를 받아오는 코드에서 방어 코드와 예외 처리가 부실해 발생한 NPE를 해결한 과정을 정리합니다.

2022.10.20 · ea0f709 · Java · JVM — 1 min
스프링 부트와 JPA 활용 · 1/4

스프링 부트와 JPA로 만드는 API 기본

회원 등록·수정·조회 API를 예제로, 엔티티 대신 DTO를 사용해 API 스펙과 엔티티를 분리하는 방법을 정리합니다.

2022.04.26 · c31d7cd · Spring JPA — 3 min
알고리즘

완전 탐색 문제 풀이

프로그래머스 완전 탐색 문제 중 모의고사 문제를 풀이하며 접근 방법을 정리합니다.

efa5056 · 알고리즘 — 1 min
알고리즘

프로그래머스 — 해시

HashMap을 활용한 프로그래머스 문제 완주하지 못한 선수, 전화번호 목록, 위장을 자바로 풀이합니다.

efa5056 · 알고리즘 — 3 min
알고리즘

프로그래머스 — 정렬

정렬을 활용한 프로그래머스 문제 K번째 수와 가장 큰 수를 자바로 풀이하고 compareTo 동작 원리를 정리합니다.

c31d7cd · 알고리즘 — 3 min
알고리즘

문자열 다루기

문자 카운트, 대소문자 변환, 팰린드롬 판별, 문자열 압축 등 문자열 처리 문제 12개를 자바로 풀이합니다.

c31d7cd · 알고리즘 — 2 min
알고리즘

투 포인터와 슬라이딩 윈도우

투 포인터와 슬라이딩 윈도우 기법으로 배열 병합, 최대 매출, 연속 부분수열 등 문제 6개를 자바로 풀이합니다.

c31d7cd · 알고리즘 — 3 min
알고리즘

스택과 큐

스택과 큐를 이용해 괄호 검증, 후위 연산, 카카오 인형뽑기 등 코딩 테스트 문제 8개를 자바로 풀이합니다.

efa5056 · 알고리즘 — 8 min
알고리즘

정렬과 이분 탐색

선택·버블·삽입 정렬, LRU 캐시, 이분 탐색 기반 결정 알고리즘까지 코딩 테스트 문제 5개를 자바로 풀이합니다.

c31d7cd · 알고리즘 — 3 min
알고리즘

해시맵과 트리셋

HashMap과 TreeSet을 활용해 투표 집계, 아나그램 판별, 슬라이딩 윈도우 매출 분석 등 문제 5개를 자바로 풀이합니다.

c31d7cd · 알고리즘 — 3 min
알고리즘

BFS와 DFS

BFS와 DFS를 이용해 최단 경로, 부분집합, 배낭형 문제 등 코딩 테스트 문제 6개를 자바로 풀이합니다.

c31d7cd · 알고리즘 — 5 min
알고리즘

배열 — 1차원과 2차원

1차원·2차원 배열을 활용해 정렬, 소수 판별, 격자 탐색 등 코딩 테스트 기본 문제 8개를 자바로 풀이합니다.

efa5056 · 알고리즘 — 4 min
스프링 MVC · 2/4

서블릿

스프링 부트 내장 톰캣 환경에서 서블릿을 등록하고, HttpServletRequest와 HttpServletResponse로 요청과 응답을 다루는 방법을 정리합니다.

c31d7cd · Spring — 11 min
스프링 MVC · 3/4

서블릿, JSP, MVC 패턴

서블릿과 JSP만으로 회원 관리 애플리케이션을 만들어보며 한계를 확인하고, 컨트롤러·모델·뷰로 역할을 분리하는 MVC 패턴을 적용합니다.

efa5056 · Spring — 11 min
스프링 MVC · 4/4

MVC 프레임워크 만들기

프론트 컨트롤러 패턴을 v1부터 v5까지 점진적으로 발전시키며, 스프링 MVC의 핵심 구조가 만들어지는 과정을 정리합니다.

c31d7cd · Spring — 14 min
스프링 입문 · 12/12

AOP가 필요한 상황, 사용법

함수 실행 시간 측정을 예로 삼아 핵심 로직과 공통 관심사를 분리하는 AOP의 필요성과 사용법을 정리합니다.

ea0f709 · Spring — 1 min
● main 214 posts UTF-8 LF © 2026 코징 RSS · GitHub