자바에서 예외 처리와 실행 흐름 이해하기

프로그램이 예외를 처리하지 않으면 즉시 종료됩니다. 예외 처리는 예외 발생 시 대체 경로를 활성화하여 프로그램이 정상적으로 계속 작동하도록 보장하는 메커니즘입니다. 자바에서는 예외 처리를 위해 try, catch, finally 세 가지 블록을 사용합니다. 이 중 try와 catch는 반드시 함께 존재해야 하며, finally는 선택 사항이지만, 항상 실행되도록 설계되어 있습니다. ...

8월 1일 03:20에 게시됨

Java String 클래스 소스 코드 분석

Java String 클래스 소스 코드 분석 package java.lang; 코드 블록 1 public final class String implements Comparable<String>, CharSequence { // 1. 핵심 기본 배열: 문자열 각 문자 저장 private final char[] value; // 2. 해시값 캐시, 기본값 0 private int hash; // 기본 생성자: 빈 문자열 생성 public String() { ...

7월 31일 11:04에 게시됨

자바로 구현한 버블 정렬, 선택 정렬, 삽입 정렬

버블 정렬: 버블 정렬은 배열을 반복적으로 순회하며 두 개의 요소를 비교하고 필요에 따라 교환하는 과정을 통해 정렬을 수행합니다. 이 과정이 배열이 정렬될 때까지 계속됩니다. 특징: 비교적 안정적이며, 작은 크기의 배열에서 잘 작동합니다. package sorting.example; public class BubbleSortExample { private static boolean validateArray(int[] array) { ...

7월 31일 10:38에 게시됨

상태 패턴과 전략 패턴, 어떻게 구분하고 선택해야 할까?

서론: 비슷해 보이지만 본질이 다른 두 디자인 패턴 소프트웨어 설계에서 상태 패턴(State Pattern)과 전략 패턴(Strategy Pattern)은 종종 혼동된다. 두 패턴 모두 인터페이스를 기반으로 다형성을 활용하며, UML 클래스 다이어그램 상으로는 거의 동일한 구조를 가진다. 그러나 이 둘은 추구하는 목적과 적용되는 시나리오가 근본적으로 다르다. 어떤 패턴을 선택하느냐 ...

7월 25일 06:01에 게시됨

스프링부트 3.x와 엘라스틱서치 8.x 통합 가이드

엘라스틱서치 Docker 배포 컨테이너 구성 (docker-compose.yml) version: "3.1" # 서비스 구성 services: elasticsearch: container_name: elasticsearch-8.8.1 image: docker.elastic.co/elasticsearch/elasticsearch:8.8.1 # 컨테이너 root 권한 부여 (보안에 취약하므로 실제 운영 환경에서는 제거) privileged: true # Linux의 ulimit ...

7월 21일 09:39에 게시됨

스프링 클라우드 슬루스: 분산 추적 도구

스프링 클라우드 슬루스 소개 스프링 클라우드 슬루스는 스프링 클라우드용 분산 추적 도구입니다. 이 도구는 Dapper, Zipkin, HTrace의 개념을 차용하여 개발되었습니다. 빠른 시작 스프링 부트 애플리케이션의 클래스패스에 슬루스를 추가하면(메이븐과 그래들 예제는 "프로젝트에 슬루스 추가" 참조), 요청을 로깅하는 경우 상관 데이터가 로그에 수집되는 것을 볼 수 ...

7월 15일 01:52에 게시됨

자바 스레드 풀의 원리와 활용

스레드 풀이란? 스레드 풀은 일종의 작업 스레드 관리 컨테이너로 이해할 수 있다. 애플리케이션이 시작될 때 미리 여러 개의 스레드를 생성하여 풀 안에 보관하고, 작업이 필요할 때마다 새로 스레드를 만들지 않고 이 풀에서 꺼내 사용한다. 작업이 끝나면 스레드는 다시 풀로 반환되어 다음 작업을 기다린다. 기존 방식의 문제점 자바 1.5 이전에는 각각의 작업마다 ne ...

7월 6일 22:41에 게시됨

디자인 패턴 - 싱글톤 패턴 완벽 이해하기

생성 패턴의 핵심 목표는 객체 생성 과정과 사용을 분리하는 것입니다. 이를 통해 시스템의 결합도를 낮추고, 사용자는 객체가 어떻게 생성되는지 알 필요 없이 사용할 수 있습니다. 생성 패턴의 종류는 다음과 같습니다: 싱글톤 패턴 팩토리 메서드 패턴 추상 팩토리 패턴 프로토타입 패턴 빌더 패턴 싱글톤 패턴이란? 싱글톤 패턴은 클래스의 인스턴스가 오직 하나 ...

7월 5일 04:46에 게시됨

행위 기반 설계: 전략과 어댑터 패턴의 활용

전략 패턴은 동일한 작업 흐름 내에서 다양한 알고리즘을 교체 가능하게 만드는 디자인 접근법이다. 다음 예제는 문자열 처리 과정에서 각기 다른 전략을 적용하는 방식을 보여준다. public abstract class TextProcessor { public String identifier() { return getClass().getSimpleName(); } public abstract String transform(String input); } ...

6월 30일 02:28에 게시됨

자바를 활용한 네트워크 프로그래밍 기초

네트워크 프로그래밍은 종종 복잡하고 신비로운 기술로 인식되지만, 사실 그 핵심은 간단한 통신 메커니즘에 기반합니다. 이 글에서는 자바에서 제공하는 네트워크 기능을 중심으로 기본적인 TCP 기반 통신 구현 방법을 알아봅니다. 우선 명확히 해야 할 점은, 웹 개발과 네트워크 프로그래밍은 동일하지 않다는 것입니다. 웹은 네트워크 통신의 한 형태일 뿐이며, 네트워 ...

6월 26일 21:34에 게시됨