Spring Boot 환경에서 전략 패턴과 팩토리 패턴을 결합한 다형성 프로토콜 처리
비디오 스트리밍 또는 SDI 출력 기능을 구현할 때, UDP나 SRT와 같이 서로 다른 전송 프로토콜을 지원해야 하는 경우가 많습니다. 각 프로토콜은 고유한 네트워크 설정과 초기화 로직을 요구하며, 향후 새로운 프로토콜이 추가될 가능성을 고려해야 합니다. 이러한 상황에서 단순한 조건문(if-else)은 코드의 유지보수성을 심각하게 떨어뜨립니다. 전략 패턴(Strategy Patt ...
9월 12일 13:40에 게시됨
Java에서 시간 관련 스크립트 사용하기
Calendar 클래스를 활용한 날짜 조작
1. Calendar 설정 및 날짜 조작
1.1 날짜 더하기/빼기
java.util.Date currentDate = new java.util.Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(currentDate);
calendar.add(Calendar.DATE, -1); // 날짜를 하루 전으로 이동
currentDate = calendar.getTime();
java.sql.Date sqlDate = new java.s ...
9월 12일 01:16에 게시됨
Bucket4j와 Redis를 연동한 분산 환경의 고성능 트래픽 제어 시스템 구축
마이크로서비스 아키텍처(MSA)와 같이 여러 대의 서버로 구성된 분산 환경에서는 개별 서버 단위의 로컬 제한만으로는 전체 시스템의 부하를 정밀하게 관리하기 어렵습니다. 모든 인스턴스가 동일한 상태를 공유하며 일관된 제한 정책을 적용하기 위해 분산 트래픽 제한(Distributed Rate Limiting)이 필요합니다. 이를 위해 Java 진영의 대표적인 토큰 버킷 알고리즘 라이 ...
9월 11일 19:40에 게시됨
Java 기초 문법과 핵 개념 정리
Java의 설계 목표
단순성
객체 지향
분산 환경 지원
강건성
보안성
아키텍처 중립
높은 이식성
바이트코드 해석 실행
른 실행 성능
멀티스레드
동적 성질
번째 Java 프로그램
public class Intro {
public static void main(String[] args) {
System.out.println("Java 기초 학습 시작");
}
}
프로그램 구성 요소:
public: 접근 제어자로, 외부에서 ...
9월 10일 21:23에 게시됨
자바 스레드 생성 방식: Thread 클래스 상속과 Runnable 인터페이스 구현 비교
자바에서 새로운 스레드를 생성하고 실행하는 가장 기본적이고 널리 사용되는 두 가지 접근 방식은 Thread 클래스를 상속하는 방법과 Runnable 인터페이스를 구현하는 방법입니다. 각 방식의 구현 세부 사항과 코드 구조를 살펴보겠습니다.
1. Thread 클래스 상속
Thread 클래스를 직접 상속하여 스레드를 생성하는 방식은 직관적입니다. 사용자 정의 클래스가 Thread를 ...
9월 10일 11:52에 게시됨
리로드하는 React Native 구형 프로젝트: 문제 해결기와 솔루션 공유
최근 5년 전에 React Native (버전 0.59.9)로 개발된 구형 프로젝트를 재개하기 위해 다양한 문제에 직면하고 그 해결 과정을 통해 결국 성공적으로 실행시킬 수 있었습니다.
이번 글에서는 마주친 도전과 그에 따른 해결 방법을 상세히 설명하여, 유사한 상황에 처한 개발자들에게 유용한 정보를 제공하고자 합니다.
이 프로젝트의 기초 환경 버전 정보는 다음과 같습니다 ...
9월 9일 17:26에 게시됨
이진 탐색을 활용한 피크 요소 찾기
문제 설명
LeetCode 162번 문제인 "피크 요소 찾기"를 해결하는 방법에 대해 알아보겠습니다. 이 문제에서는 주어진 배열에서 피크 요소(즉, 그 이웃보다 큰 요소)를 찾아야 합니다.
해결 전략
배열의 인접한 요소들은 서로 같지 않으며, 피크는 여러 개 존재할 수 있습니다. 전체 배열의 최댓값은 항상 피크 중 하나입니다. 따라서 단순히 배열을 순회하며 최 ...
9월 9일 01:15에 게시됨
Java JDBC와 DAO 패턴으로 회원 로그인·가입 기능 구현하기
먼저 회원 정보를 저장할 테이블을 만듭니다.
CREATE TABLE member (
user_id VARCHAR(20) PRIMARY KEY,
user_pw VARCHAR(255) NOT NULL
);
JavaBean는 데이터를 담는 객체 역할을 합니다. 실제 데이터베이스 접근은 DAO(Data Access Object)가 담당하며, DAO는 데이터베이스와 비즈니스 로직 사이에서 CRUD를 수행합니다. 여기서는 데이터 접근 로직을 DAO로 ...
9월 8일 03:18에 게시됨
자바 예외 처리와 컬렉션 프레임워크 심화 (Collection, List)
예외 처리의 이해와 활용
프로그램 실행 중 발생할 수 있는 오류 상황을 효과적으로 관리하기 위해 자바는 예외(Exception) 기반의 에러 처리 메커니즘을 제공한다. 이를 적절히 다루지 않으면 애플리케이션이 비정상 종료되며 사용자 경험을 크게 해칠 수 있다.
예외의 종류와 발생 원리
자바에서는 두 가지 주요 유형의 예외를 구분한다:
컴파일 시 예외 (Checked ...
9월 6일 18:29에 게시됨
재귀 호출을 명시적 반복문으로 전환한 트리 순회 구현 패턴
트리 노드 데이터 모델
N-ary 트리 구조를 표현하기 위해 식별자, 레이블, 그리고 하위 노드 컬렉션을 필드로 구성한다. 불변성을 유지하면서 안전한 객체 생성이 가능하도록 생성자 기반 초기화 방식을 채택한다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TreeNode {
private final String identifier;
...
9월 5일 18:53에 게시됨