"오늘의 문제를, 내일의 기록으로 남깁니다."

막연한 이론보다, 구체적인 코드가 필요할 때. 직접 겪고 해결한 문제들을 기록합니다. 실무에서 부딪히는 진짜 이슈와, 내가 이해한 방식 그대로 정리한 가이드입니다.

반응형

Java 11

Java 파일 입출력(File I/O) 완전 정복: 실무 예제부터 인코딩·복사까지

Java 파일 입출력(File I/O) 완전 정복: 실무 예제부터 인코딩·복사까지Java로 개발하다 보면 파일 입출력은 피할 수 없는 작업 중 하나입니다. 단순히 로그 파일을 쓰거나, 설정 값을 읽거나, 데이터를 백업하는 것부터 이미지 파일을 복사하거나, 외부 API 응답을 저장하는 등 다양한 곳에서 쓰입니다.하지만 막상 직접 구현하려고 하면 예외 처리, 스트림 닫기, 인코딩 문제 등 생각보다 번거로운 부분이 많습니다. 특히 파일을 잘못 다뤄서 데이터가 유실되거나 서버가 뻗는 경우도 있죠.이 글에서는 자바에서 파일 입출력을 처리하는 다양한 방법과 실무에서 자주 사용하는 예제를 하나씩 정리해보겠습니다.1. BufferedReader로 한 줄씩 읽기가장 일반적이고 안정적인 파일 읽기 방식입니다. 성능도 좋고..

웹개발/Java 2025.07.31

자바 객체 복사의 모든 것: 깊은 복사 vs 얕은 복사의 차이와 실전 예제

자바 객체 복사의 모든 것: 깊은 복사 vs 얕은 복사의 차이와 실전 예제개발 중 객체를 복사해서 다른 곳에 넘겼더니, 원본 객체 값이 바뀌는 황당한 일이 발생한 적 있으신가요?“어? 분명 복사했는데 왜 원본까지 같이 바뀌지?”이런 상황은 대부분 얕은 복사(shallow copy) 때문입니다. Java에서 객체를 복사할 땐 얕은 복사와 깊은 복사의 개념을 정확히 이해하고 있어야 예상치 못한 버그를 막을 수 있습니다.이번 글에서는 자바에서 얕은 복사와 깊은 복사의 차이를 명확히 정리하고, 각각을 구현하는 방법과 실전에서 주의할 점을 코드 예제와 함께 소개합니다.얕은 복사(Shallow Copy)란?얕은 복사는 객체 자체만 새로 만들고, 내부 참조 필드는 그대로 공유하는 복사 방식입니다. 즉, 내부에 또 다..

웹개발/Java 2025.07.30

Java에서 NullPointerException 예방법 총정리! 실무에서 유용한 팁 모음

NullPointerException 때문에 실무에서 당황한 적 있으신가요?개발 중 잘 돌아가던 코드가 갑자기 NullPointerException을 터뜨릴 때가 있습니다. 특히 실서비스에서 이런 예외가 발생하면, 사용자는 화면이 멈추고 로그에는 스택트레이스가 한가득... 😓이런 실수를 방지하려면 사전에 점검하고 방어 로직을 갖추는 습관이 중요합니다.이번 글에서는 Java에서 NullPointerException (이하 NPE)을 방지하기 위한 다양한 팁을 상황별로 정리해보겠습니다.1. NPE가 주로 발생하는 상황객체 초기화 없이 메서드 호출의존성 주입 실패 (Spring 등에서 @Autowired 객체가 null)컬렉션 내부 요소가 null인데 접근 또는 연산 시도Optional을 사용하지 않고 무조..

웹개발/Java 2025.07.29

Java HashMap vs Hashtable vs ConcurrentHashMap: 동시성과 성능의 완벽 가이드

Java HashMap vs Hashtable vs ConcurrentHashMap: 동시성과 성능의 완벽 가이드내부 구조와 동작 원리HashMap: 단일 스레드 최적화 설계HashMap은 배열과 연결 리스트(또는 레드-블랙 트리)를 조합한 해시 테이블로 구현됩니다. 키의 해시코드를 배열 인덱스로 변환하여 O(1) 평균 시간 복잡도로 접근합니다.// HashMap 내부 구조 개념Node[] table; // 버킷 배열static class Node { final int hash; final K key; V value; Node next; // 충돌 시 체이닝}Java 8부터 동일 버킷에 8개 이상의 노드가 충돌하면 연결 리스트를 레드-블랙 트리로 변환하여 최악의 경우 O(log n)..

웹개발/Java 2025.07.21

Java Stream API 정렬, 실무에서는 이렇게 씁니다 (Comparable, Comparator 완벽 정리)

Stream으로 정렬한다고 다 같은 정렬이 아니다실제 업무 중, 사용자 목록을 JSON으로 내려주는 API 작업을 하다가 담당자 한 명이 이런 이슈를 제기했다. “왜 정렬이 안 돼서 내려오죠?”확인해 보니 Java 8의 Stream API로 데이터를 가공하고 있었는데, sort()를 누락했거나, Comparator를 잘못 작성해서 정렬 결과가 예상과 달랐다. 특히 정렬 조건이 복잡해질수록 코드가 지저분해지고, 실수도 잦아졌다.이번 글에서는 Java Stream API로 컬렉션 정렬을 구현할 때 자주 쓰는 실전 예제를 중심으로, Comparator, Comparable, 역순 정렬, 다중 조건 정렬, null 처리까지 정리해보겠다.기초: Stream API에서 정렬하는 기본 구조List names = Ar..

웹개발/Java 2025.07.20
반응형