반응형

Java 30

Java에서 try-with-resources를 사용해야 하는 이유

try-catch-finally의 문제점기존 방식으로 파일을 읽는 코드를 보면:FileInputStream fis = null;try { fis = new FileInputStream("example.txt"); // 파일 읽기 작업} catch (IOException e) { e.printStackTrace();} finally { if (fis != null) { try { fis.close(); // 또 다른 try-catch 필요! } catch (IOException e) { e.printStackTrace(); } }}문제점:코드가 복잡하고 길어짐finally에서 또 다른 예외 처리 필요자원..

Java 2025.08.26

HashMap의 get() 메서드 동작 원리

HashMap이란?HashMap은 키-값 쌍을 저장하는 자바의 컬렉션 프레임워크다. 내부적으로 배열과 연결리스트(또는 트리)를 사용해 데이터를 관리한다.get() 메서드의 기본 동작1단계: 해시코드 계산HashMap map = new HashMap();map.put("apple", 100);int value = map.get("apple"); // 여기서 get() 동작 시작먼저 키("apple")의 hashCode() 메서드를 호출한다.2단계: 인덱스 계산해시코드를 배열 크기로 나눈 나머지로 배열 인덱스를 구한다.index = hashCode & (배열크기 - 1)3단계: 버킷 탐색계산된 인덱스의 버킷을 확인한다. 버킷이 비어있으면 null을 반환한다.4단계: 키 비교버킷에 데이터가 있으면 저장된 키와..

Java 2025.08.26

JDK, JRE, JVM의 차이점

자바 개발을 4년간 하면서 신입 때부터 지금까지도 가끔 헷갈리는 개념들이 있다.JDK, JRE, JVM이 대표적인데, 면접에서도 자주 나오고 실무에서도 중요한 개념이라 한 번 정리해보려고 한다.JVM (Java Virtual Machine) - 자바의 핵심정의와 역할자바 바이트코드를 실행하는 가상머신JVM은 자바의 "Write Once, Run Anywhere" 철학을 실현하는 핵심 기술이다.자바 소스코드가 javac로 컴파일되면 .class 파일(바이트코드)이 생성되는데,이를 실제 기계어로 번역해서 실행하는 것이 JVM의 역할이다.주요 구성요소클래스 로더: .class 파일을 메모리에 로드실행 엔진: 바이트코드를 기계어로 번역 (인터프리터 + JIT 컴파일러)메모리 영역: 힙, 메서드 영역, PC 레지..

Java 2025.08.24

JVM이 뭔지 쉽게 알아보자!

JVM을 한 줄로 설명하면?자바 코드를 실행해주는 프로그램윈도우에서 작성한 자바 코드가 맥, 리눅스에서도 돌아가는 이유가 바로 JVM 때문JVM 안에 뭐가 들어있나?집에 비유하면 이해하기 쉽다: 클래스 로더 (Class Loader)현관문 역할.class 파일을 JVM 안으로 가져오는 곳"어서오세요, 자바 클래스님!"메모리 영역 (Runtime Data Area)실제 거주 공간객체들이 살고 있는 곳방이 여러 개로 나뉘어져 있음실행 엔진 (Execution Engine)일꾼 역할바이트코드를 보고 실제로 일을 처리하는 곳메모리는 어떻게 나뉘어져 있나?힙(Heap) - 물건 창고모든 객체가 저장되는 곳String name = "홍길동"; // 이 "홍길동"이 힙에 저장됨List list = new Array..

Java 2025.08.21

Spring Boot Profile별 설정 관리 베스트 프랙티스

Profile 기본 개념Spring Boot의 환경별 설정 분리 메커니즘dev, staging, prod 환경마다 다른 DB 연결정보, 로깅레벨 등 관리@Profile 어노테이션으로 특정 환경에서만 Bean 등록 가능설정 파일 명명규칙application.yml (공통 설정)application-dev.yml (개발환경)application-staging.yml (스테이징환경) application-prod.yml (운영환경)Profile 활성화 방법들spring.profiles.active=dev (application.yml)java -jar app.jar --spring.profiles.active=prodSPRING_PROFILES_ACTIVE=prod (환경변수)IDE 실행 시 VM optio..

Java 2025.08.07
728x90
반응형