Skip to main content

Command Palette

Search for a command to run...

Series

Java

  1. 리플렉션 (Reflection) 이란?

    리플렉션(Reflection) 은 런타임에 클래스, 메서드, 필드 등의 메타데이터를 조회하거나 조작할 수 있는 기능을 말합니다. 자바, C#, 파이썬 등 다양한 언어에서 제공하며, 특히 자바 리플렉션 API는 스프링, 하이버네이트 같은 프레임워크의 핵심 기술로 사용됩니다. 리플렉션의 특징 컴파일 타임이 아닌 런타임에 동작 클래스의 구조(필드, 메서드, 생성자)에 접근 가능 private 멤버도 강제로 접근 가능 (setAccessible...

    Jul 31, 20252 min read3
  2. 자바 동시성 프로그래밍 : 경쟁상태, 원자성, 가시성

    멀티스레드 환경에서는 성능을 높일 수 있지만, 동시에 Race Condition 같은 동시성 문제가 발생할 수 있습니다. 특히 원자성(Atomicity) 과 가시성(Visibility)은 이 문제를 이해하는데 중요한 핵심 키워드 입니다. 동시성 문제란? 동시성 문제는 여러 스레드가 동시에 같은 자원에 접근하면서 실행 순서에 따라 결과가 달라지거나 데이터가 손상되는 상황을 말합니다. 대표적인 동시성 문제 (Race Condition) 두 개 ...

    Aug 1, 20254 min read2
  3. try-with-resources란?

    Java에서는 파일, 소켓, DB커넥션 등 외부 자원을 사용할 경우 반드시 사용 후 자원을 닫아줘야 합니다. 그렇지 않으면 메모리 누수, 파일 잠금, 성능 저하 등의 문제가 발생할 수 있습니다. 이를 안전하고 간결하게 처리할 수 있도록 Java 7부터 도입된 문법이 바로 try-with-resources 입니다. 기존 방식의 한계 그동안은 아래처럼 try-catch-finally 구문을 사용해 닫는 방식이 일반적이었습니다. BufferedRe...

    Aug 6, 20252 min read1
  4. Java에서 String이 불변(Immutable)인 이유

    Java에서 String은 **불변 객체(Immutable Object)**입니다. 즉, 한 번 생성된 String 객체는 내부 상태를 변경할 수 없습니다. Java의 창시자 제임스 고슬링(James Gosling)은 다음과 같이 말했습니다. “가능하면 언제나 불변 객체를 사용하라.” 그 이유로는 캐싱, 보안, 재사용성, 동기화, 성능 향상 등을 언급했죠. 이번 포스팅에서는 왜 String이 불변으로 설계되었는지, 그리고 리터럴과 생성자의 ...

    Aug 6, 20253 min read6
  5. Java에서 Object를 String 으로 변환할 때 주의할 점

    Java에서 Object 타입의 value를 String으로 변환할 때는 보통 두 가지 방식이 사용됩니다. 명시적 타입 캐스팅 String.valueOf(value) 메서드 각 방식은 동작 방식과 안정성 면에서 중요한 차이가 있습니다. 1. 명시적 타입 캐스팅 전제 조건: value가 반드시 String 타입이어야 함. 그렇지 않으면 ClassCastException이 발생함. 예시 Object value = "hello"; ...

    Aug 7, 20252 min read2
  6. Java Collection Framework

    컬렉션 프레임워크(Collection Framework)란? 자바에서 컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스와 인터페이스 집합입니다. 즉, 데이터를 저장하는 자료구조과 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현한 것입니다. 모든 컬렉션 프레임워크는 자바의 인터페이스를 기반으로 구현됩니다. JFC(Java Collection Framework)의 도입 배경 JCF 이전에는 ...

    Aug 14, 20254 min read2