Java에서 Annotation의 개념과 활용 방법

Annotation이란? Annotation은 자바 5부터 도입된 메타데이터 기반의 기능으로, 클래스, 메서드, 필드 등 프로그램 요소에 설명 정보를 부여하는 데 사용됩니다. 이는 코드의 실행 로직과 무관하며, 컴파일 타임 또는 런타임 시 특정 프레임워크나 도구가 이를 해석하여 동작을 조정하거나 처리하도록 설계되어 있습니다. Annotation은 마치 수정자처럼 패키지, 클래스, ...

6월 3일 01:28에 게시됨

CORS를 이용한 크로스 도메인 통신

CORS(Cross-Origin Resource Sharing)에 대한 소개입니다. 1. CORS 개요 크로스 도메인 리소스 공유는 보안상의 이유로 브라우저가 현재 도메인 외부의 자원에 대한 AJAX 요청을 허용하지 않는 것을 해결하기 위한 방법입니다. CORS는 클라이언트와 서버 모두에서 지원해야 하며, 모든 주요 브라우저들이 이 기능을 지원하고 있습니다. IE에서는 최소한 버전 10 이상이 ...

6월 3일 00:35에 게시됨

Java Executor 프레임워크: 효율적인 스레드 풀 관리 및 활용

왜 스레드 풀(Executor)이 필요한가? 전통적으로 new Thread()를 직접 사용하는 방식은 여러 문제점을 내포합니다. 매번 새로운 스레드 객체를 생성하는 데 비용이 크게 들고, 생성된 스레드들은 관리되지 않은 '야생 스레드'가 되어 시스템 자원을 무분별하게 소비할 수 있습니다. 특히 스레드가 무제한으로 생성되면 리소스 경쟁이 심화되어 시스템이 다운될 위험이 있 ...

6월 2일 23:51에 게시됨

직각좌표계에서 두점 간의 거리, 두 직선의 교점좌표, 특정점이 직선상에 있는지 여부 계산

두점 간의 거리 계산 예제: Point p1 = new Point(5, 6); // 첫 번째 점의 좌표 (5,6) Point p2 = new Point(7, 8); // 두 번째 점의 좌표 (7,8) // 좌표값 출력 System.out.println("p1의 x 좌표: " + p1.getX()); System.out.println("p1의 y 좌표: " + p1.getY()); System.out.println("p2의 x 좌표: " + p2.getX()); System.out.println("p2의 y 좌표: " + p2.getY()) ...

6월 2일 21:45에 게시됨

WeakHashMap을 활용한 자동 메모리 정리 캐시 구현

WeakHashMap를 이용한 캐시 자동 정리 기법 자바에서 메모리 관리는 특히 캐시 시스템 구현 시 핵심적인 고려 사항입니다. 캐시 항목이 더 이상 사용되지 않으면 자동으로 제거되어야 하며, 수동 삭제 없이도 이를 보장하는 방식이 필요합니다. WeakHashMap은 이러한 요구를 충족시키기 위해 제공되는 유용한 도구로, 키에 약한 참조(weak reference)를 사용하여 메모리 누 ...

6월 2일 21:24에 게시됨

스프링부트와 Vue 기반 문화예술 행사 디지털 홍보 시스템 구현

시스템 개요 및 필요성 현대 사회는 문화 다양성과 예술 접근성에 대한 수요가 급증하고 있다. 글로벌화 속도가 빨라짐에 따라 예술 행사 수가 급격히 증가했지만, 전통적인 홍보 방식인 포스터, 배너, 오프라인 광고 등은 타겟 대상에게 정확하게 도달하기 어렵고, 정보 과잉 상황에서 사용자 관심을 확보하는 데 한계가 있다. 이에 따라 행사 운영자는 높은 홍보 비용, ...

6월 2일 19:11에 게시됨

스프링 부트 애플리케이션에 MinIO 객체 스토리지 연동하기

MinIO 환경 설정 및 설치 MinIO는 고성능, 분산형 객체 스토리지 서버로, 아마존 S3와 호환되는 API를 제공합니다. 스프링 부트 애플리케이션에서 MinIO를 활용하기 위한 기본적인 환경 설정과 설치 방법을 알아봅니다. MinIO 데이터 볼륨 생성 MinIO 인스턴스가 사용할 데이터를 저장할 디렉토리를 호스트 시스템에 생성합니다. 이는 MinIO 설정과 객체 데이터를 영구적 ...

6월 2일 16:53에 게시됨

Netty ByteBuf 기본 개념과 활용

ByteBuf 구조 ByteBuf는 Netty의 핵심 구성 요소 중 하나로, 바이트 데이터를 저장하고 조작하는 유연한 버퍼입니다. 기존의 java.nio.ByteBuffer와 유사한 구조를 가지지만, 더 강력하고 사용하기 편리한 기능을 제공합니다. ByteBuf는 다음과 같은 주요 요소를 가집니다: 읽기 인덱스 (read index): 현재 읽을 위치를 나타냅니다. 쓰기 인덱스 (write index): 현재 쓸 ...

6월 2일 00:37에 게시됨

개푸시(GeTui) 푸시 알림 통합 가이드

개푸시 공식 문서: https://docs.getui.com/getui/server/rest_v2/push/ 먼저 개푸시 공식 계정을 신청하고, 앱을 등록하여 AppID, AppKey, AppSecret, MasterSecret을 획득합니다. 통합 가이드 설정 파일 작성 .yml 파일 수정 pushConfig: appId: OokKLlwRjU7tJMccVVra72 appKey: f8C6lK7OGu1115ckOfVxD8 masterSecret: aTxslPiUJy9kzzZaPONL26 appSecret: sAoJ ...

6월 1일 22:26에 게시됨

Java 스레드基礎 가이드

Java를 학습하는 과정에서 스레드 개념은 반드시 마주치게 된다. Android 개발을 접해보면 스레드가 얼마나 중요한지 실감나게 된다. 이번 글에서는 Java 스레드의 기본적인 사용법을 정리해보고자 한다. 프로세스와 스레드의 차이점 먼저 중요한 개념 정리가 필요하다. 프로세스(Process)와 스레드(Thread)는 서로 다른 개념이다. 프로세스는 실행 중인 프로그램을 의미 ...

6월 1일 21:32에 게시됨