멀티스레드 학습 필수 9가지 방법

서론: Thread 클래스를 상속하거나 Runnable 인터페이스를 구현하는 방법 외에 run() 메서드를 재정의해야 합니다. 이 run() 메서드 내에서 발생하는 예외는 try...catch 를 통해만 처리할 수 있으며, 예외를 상위로 던jar는 것은 불가능합니다. 이는因為 run() 메서드가 예외를 던질 수 없도록 설계되었기 때문입니다. 이번 기고에서는 멀티스레드 학습 과정에서 반드시 ...

7월 15일 16:45에 게시됨

자바 ArrayList 핵심 로직 직접 구현하기

자바 컬렉션 프레임워크에서 가장 널리 사용되는 ArrayList는 내부적으로 동적 배열을 기반으로 동작합니다. 이번 글에서는 ArrayList의 핵심 동작 원리를 깊이 이해하기 위해, 최소한의 코드로 커스텀 리스트를 직접 구현해 보겠습니다. 기본 구조 및 변수 정의 먼저 SimpleList라는 제네릭 클래스를 정의합니다. ArrayList와 마찬가지로 데이터를 저장하기 위해 Object ...

7월 15일 16:35에 게시됨

JSON 데이터를 위한 쿼리 언어 JSONPath

모ダン 웹 개발에서 JSON(JavaScript Object Notation)은 데이터 교환의 표준 형식으로 사용되고 있습니다. 그 간결함과 쉬운 가독성으로 인해 널리 환영받고 있지만, 데이터 구조가 복잡해지면서 필요한 정보를 효과적으로 추출하는 방법은 개발자들에게 과제가 되고 있습니다. 이에 JSONPath가 등장했습니다. JSONPath는 JSON 데이터에서 정보를 추출하는 데 도움을 주는 ...

7월 15일 06:12에 게시됨

디코레이터 패턴: 동적 기능 확장 방법

디코레이터 패턴 개요 디코레이터 패턴은 객체의 기능을 동적으로 확장할 수 있도록 하는 구조적 디자인 패턴입니다. 이 패턴은 기존 클래스를 수정하지 않고 추가적인 책임을 부여할 수 있는 메커니즘을 제공하며, 특히 단일 책임 원칙을 준수하는 시스템에서 유용하게 활용됩니다. 구성 요소 인터페이스: 기능 확장이 가능한 기본 객체 타입 정의 기본 클래스: 인터페이 ...

7월 15일 03:21에 게시됨

WeBASE 서비스 배포를 위한 환경 설정 및 실행 가이드

WeBASE는 분산원장기술(DLT) 기반의 FISCO BCOS 블록체인 노드를 관리하고 애플리케이션 개발을 지원하는 웹 기반 플랫폼입니다. 본 가이드는 Ubuntu 운영체제에서 WeBASE 서비스를 성공적으로 배포하고 운영하기 위한 필수 환경 설정 및 설치 과정을 상세히 안내합니다. 1. 시스템 기본 환경 구성 WeBASE 배포에 앞서, 시스템 패키지를 최신 상태로 업데이트하고 필요한 ...

7월 15일 01:24에 게시됨

Java 23가지 디자인 패턴 핵심 요약 및 구현 가이드

1. 생성 패턴 (Creational Patterns) 객체 생성 프로세스를 추상화하여 시스템이 객체 생성, 구성, 표현 방식에 독립적일 수 있도록 돕습니다. 1.1 싱글톤 패턴 (Singleton) 클래스의 인스턴스가 오직 하나만 생성되도록 보장하고 이에 대한 전역적인 접근점을 제공합니다. // Bill Pugh Singleton (권장되는 방식) public class AppConfig { private AppConfig() {} ...

7월 15일 00:38에 게시됨

Java 웹 MVC 프레임워크: 요청 파라미터 바인딩 구현

이전 단계에서는 기본적인 웹 프레임워크의 토대를 마련했습니다. 이제 사용자 요청에 포함된 매개변수를 백엔드 컨트롤러 메서드로 어떻게 전달하고 매핑할지에 대해 살펴보겠습니다. 이는 웹 애플리케이션에서 사용자 입력을 처리하는 데 필수적인 기능입니다. 1. 매개변수 매핑을 위한 사용자 정의 어노테이션 정의 메서드 매개변수에 프론트엔드 파라미터 이 ...

7월 14일 20:59에 게시됨

Java Swing 이미지 필터 프로젝트 | 취소 기능(다중 레이어 Undo) 완벽 구현

서론 이미지 처리 기능은 대부분 구현 완료했지만, 사용자들의 주요 불편 사항이 있었습니다. "실수로 잘못된 필터를 적용했으면 다시 되돌릴 수 없을까?"라는 질문이 많았습니다. 초기 구현에서는 BufferedImage에 직접 그렸기 때문에 취소 기능 자체가 불가능했습니다. 하지만 레이어 배열 개념을 활용하면 50줄 이하의 코드만 추가하면 진정한 의미의 다단계 취소 기능 ...

7월 14일 19:52에 게시됨

ForkJoinPool 스레드풀의 동작 원리와 ThreadPoolExecutor 비교

ForkJoinPool이란 ForkJoinPool은 Java에서 제공하는 특수한 스레드풀으로서, 대규모 계산 작업을 처리하는 데 최적화되어 있습니다. 이 스레드풀의 핵심 개념은 작업을 여러 개의 작은 하위 작업으로 분할하고, 각 하위 작업을異なる 스레드에서 병렬로 실행한 후, 결과를 다시 하나로 합치는 것입니다. 작업 도용(Work Stealing) 메커니즘 ForkJoinPool의 가장 중요한 ...

7월 14일 18:39에 게시됨

Java 리플렉션 완벽 가이드: 동적 프로그래밍의 핵심

리플렉션이란 무엇인가? Java 보안은 역직렬화 취약점에서 시작될 수 있으며, 역직렬화 취약점은 다시 리플렉션에서 출발합니다. 리플렉션은 대부분의 프로그래밍 언어에서 필수적인 부분이며, 객체를 통해 해당 클래스를 얻을 수 있고, 클래스를 통해 모든 메서드(비공개 포함)를 가져올 수 있으며, 가져온 메서드를 호출할 수 있습니다. 요컨대 "리플렉션"을 ...

7월 14일 18:34에 게시됨