기본 콘텐츠로 건너뛰기

라벨이 java인 게시물 표시

Java Thread ContextClassLoader 완전 정리: getContextClassLoader() 개념과 활용법

Java Thread ContextClassLoader 완전 정리: getContextClassLoader() 개념과 활용법 AI 생성 이미지: Java Thread ContextClassLoader 완전 정리: getContextClassLoader() 개념과 활용법 클래스 로더는 자바 런타임에서 클래스와 리소스를 찾는 핵심 메커니즘입니다. 그중 getContextClassLoader() 는 단순한 조회 호출이 아니라, 표준 위임 모델이 닿지 않는 상황에서 올바른 구현체나 리소스를 찾도록 돕는 실무용 도구입니다. 이 글에서는 개념을 명확히 하고, 실제 환경에서 어떻게 안전하게 활용하는지 단계별로 설명합니다. 1. 🏛️ 자바 클래스 로더의 기본 원칙 (위임 모델) JVM의 클래스 로더는 기본적으로 위임(Delegation) 모델을 따릅니다. 하위 로더가 클래스를 직접 로드하기 전에 먼저 상위 로더에게 요청하며, 상위 로더가 로드를 실패하면 하위 로더가 시도합니다. 이 설계는 충돌 방지와 안정성을 위해 고안되었습니다. 클래스 로더 로드 경로 Bootstrap (부트스트랩) JRE의 핵심 라이브러리 ( rt.jar 등) Extension (확장) JRE의 확장 디렉토리 ( lib/ext ) ...

자바 정규식 예제 모음: 숫자·이메일·전화번호 패턴까지 한 번에

자바 정규식 예제 모음: 숫자·이메일·전화번호 패턴까지 한 번에 AI 생성 이미지: 자바 정규식 예제 모음: 숫자·이메일·전화번호 패턴까지 한 번에 정규식은 텍스트에서 패턴을 찾아내고 검증하며 필요한 부분을 추출할 때 가장 효율적인 도구 중 하나입니다. 이 글, 자바 정규식 예제 모음: 숫자·이메일·전화번호 패턴까지 한 번에에서는 자바의 java.util.regex 를 기반으로 실제로 자주 쓰이는 패턴을 어떻게 정의하고 적용하는지 단계별로 설명합니다. 초반에는 Pattern 과 Matcher 의 핵심 개념을 짚고, 이후 숫자·이메일·전화번호 같은 실무 예제를 통해 바로 활용 가능한 코드를 제공합니다. 자바 정규식 예제 모음: 숫자·이메일·전화번호 패턴까지 한 번에와 함께 실전 감각을 키워보세요. 📚 목차 1. Pattern과 Matcher 기본 개념 2. 정규식 패턴 정의와 Pattern 생성 3. Matcher를 사용한 문자열 검색 4. 자주 사용하는 정규식 패턴 예제 5. 정리 및 활용 팁 1. Pattern과 Matcher 기본 개념 자바에서 정규식을 다룰 때 핵심이 되는 두 클래스는 Pattern 과 Matcher 입니다. 간단히 말해 Pattern 은 정규식 자체(컴파일된 형태)를 나타내고, Matcher 는 특정 입력 문자열에 그 패턴을 적용해 결과를 찾는 역할을 합니다. ...

Java 정규 표현식 완전 정리: matches("[0-9a-zA-Z_]+")로 영문자·숫자·밑줄 검사하기

Java 정규 표현식 완전 정리: matches("[0-9a-zA-Z_]+")로 영문자·숫자·밑줄 검사하기 AI 생성 이미지: Java 정규 표현식 완전 정리: matches("[0-9a-zA-Z_]+")로 영문자·숫자·밑줄 검사하기 정규 표현식(Regular Expression) 은 문자열 검증, 검색, 치환 작업에서 가장 실용적인 도구 가운데 하나입니다. Java에서는 String.matches() , Pattern , Matcher 를 조합해 다양한 형태의 입력을 간결하게 검사할 수 있습니다. 이 글은 특히 혼동이 잦은 패턴과 메서드의 차이를 명확히 설명합니다. 핵심은 [0-9a-zA-Z_] 와 matches() 의 동작 방식 이며, 예제를 통해 “영문자·숫자·밑줄만 허용하는 문자열 검증” 을 실무에 바로 적용할 수 있게 정리합니다. 목차 1. Java 정규 표현식과 matches() 메서드의 기본 2. 정규 표현식 [0-9a-zA-Z_] 의 의미 3. 한 글자 매칭 vs 여러 글자 매칭: [...] 와 + 의 차이 4. 예제 코드로 이해하는 matches("[0-9a-zA-Z_]+") 5. 실무 예시: 아이디/변수명 유효성 검사 6. 정리 7. 자주 묻는 질문(FAQ) 1. Java 정규 표현식과 matches() 메서드의 기본 Java에서 특정 패턴에 문자열이 정확히 일치하는지 확인할 때 자주 쓰는 방법은 String.matches(String regex) 입니...

Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기

Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기 AI 생성 이미지: Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기 순수 Java로 작동하는 경량 코덱 라이브러리 JCodec을 이용해 .mp4, .mov 같은 동영상 파일에서 특정 프레임을 이미지로 뽑아내는 실무용 코드를 정리합니다. Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기는 파일 목록 서비스나 업로드 파이프라인에서 썸네일 생성 자동화에 특히 유용합니다. 아래 예제는 서버 부하를 줄이도록 조건부로 동작하며, 실제 운영 환경에 바로 적용할 수 있게 구성했습니다. 1. 💡 JCodec 소개 및 Maven 설정 썸네일 생성은 JCodec의 코덱 처리 모듈과 AWT 기반 이미지 처리를 제공하는 javase 모듈을 조합해 구현합니다. 안정적인 의존성 버전을 사용하면 호환성 문제를 줄일 수 있습니다. Maven pom.xml 의존성 <dependencies> <!-- JCodec Core Library (코덱 처리) --> <dependency> <groupId>org.jcodec</groupId> <artifactId>jcodec</artifactId> <version>0.2.5</version> <!-- 최신 안정화 버전 사용 권장 --> </dependency> <!-- JCodec JavaSE (AWT 유틸리티 및 이미지 처리) --> <dependency> <groupId>org.jcodec</groupId> <artifactI...

Java 5~14 주요 변화 총정리 | AI 개발·LLM 통합 시대의 핵심 언어

Java 5~14 주요 변화 총정리 | AI 개발·LLM 통합 시대의 핵심 언어 AI 생성 이미지: Java 5~14 주요 변화 총정리 | AI 개발·LLM 통합 시대의 핵심 언어 🚀 Java 버전별 변화 (Java 5 ~ Java 14) 자바는 꾸준한 진화를 통해 언어 기능과 런타임 성능을 개선해왔습니다. 이 글, "Java 5~14 주요 변화 총정리 | AI 개발·LLM 통합 시대의 핵심 언어"는 Java 5부터 Java 14까지 도입된 핵심 기능을 실용적 관점에서 정리합니다. int java5 = 5 ; int java6 = 6 ; int java7 = 7 ; int java8 = 8 ; int java9 = 9 ; int java10 = 10 ; int java11 = 11 ; int java12 = 12 ; int java13 = 13 ; int java14 = 14 ; 🧠 각 버전의 주요 변화 Java 5: 제네릭스와 열거형(Enum), 애노테이션을 도입해 타입 안정성과 메타데이터 활용이 쉬워졌습니다. Java 6: JVM과 라이브러리의 최적화로 실행 성능이 개선되었고, JSR 223을 통한 스크립팅 연동이 가능해졌습니다. Java 7: try-with-resources로 자원 관리를 간소화하고, switch에서 문자열 사용을 지원합니다. Java 8: 람다 표현식과 스트림 API가 추가되어 컬렉션 처리와 병렬 처리가 훨씬 직관적입니다. Java 9: 모듈 시스템(Project Jigsaw)이 도입되어 대규모 애플리케이션의 모듈화와 보안 경계 설정이 가능해졌습니다. Java 10: 지역 변수의 타입 추론(var)이 추가되어 코드 가독성과 간결성이 향상됩니다. Java 11: LTS로서 장기 지원을 제공하며, 새로운 HTTP Client와 문자열 API ...

Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용

Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용 AI 생성 이미지: Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용 Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용 이 글, Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용은 반복되는 접근자와 생성자 코드를 줄여 더 깔끔한 DTO/Entity 설계를 돕기 위해 작성되었습니다. Lombok 라이브러리를 적용하면 소스가 간결해지고 유지보수가 쉬워집니다. 실무에서 바로 쓸 수 있는 설정과 주의사항을 중심으로 정리합니다. 1. Lombok 설치 및 설정 Maven 기반 프로젝트에서는 pom.xml 에 Lombok을 의존성으로 추가해야 합니다. 아래 예시는 표준 설정이며, 프로젝트에 맞는 버전으로 변경해 사용하세요. <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> 또한 IDE(예: IntelliJ IDEA, Eclipse)에 Lombok 플러그인을 설치해야 어노테이션 기반 자동완성 및 컴파일 오류를 예방할 수 있습니다. 빌드 도구와 IDE 설정이 일치하는지 확인하세요. 2. Lombok 주요 애노테이션 @Getter : 각 필드에 대한 읽기 접근자(getter)를 자동으로 생성합니다. @Setter : 필요한 필드에 쓰기 접근자(setter)를 추가합니다. @AllArgsConstructor : 모든 필드를 매개변수로 받는 생성자를 생성합니다. @NoArgsCo...

BitMEX WebSocket 인증(authKeyExpires) 구현 예제 (Java + XChange 코드 포함)

Java XChange로 BitMEX WebSocket 인증 서명 만들기 (SignatureUtil + wss 예제) 암호화폐 마진 거래소인 BitMEX 는 REST API뿐 아니라 WebSocket(wss) 인터페이스를 통해 실시간 시세, 주문 정보 등을 제공합니다. 이때, 개인 계정 정보나 주문 정보를 사용하려면 WebSocket 인증(authKeyExpires) 을 통과해야 합니다. 이 글에서는 Java + XChange 라이브러리 를 사용하여 authKeyExpires 에 필요한 signature 를 생성하는 방법과 직접 구현한 SignatureUtil 클래스를 정리합니다. BitMEX WebSocket 인증(authKeyExpires) 개념 XChange의 BitmexDigest 와 ExpirationTimeFactory 활용 SignatureUtil 구현 코드 ws.sendText 로 실제 WebSocket 인증 요청 보내기 1. BitMEX WebSocket 인증(authKeyExpires)란? BitMEX WebSocket에서 개인 데이터(포지션, 주문 등)에 접근하려면 authKeyExpires 메시지를 한 번 보내서 인증을 받아야 합니다. 요청 포맷은 다음과 같은 JSON 형태입니다. { "op": "authKeyExpires", "args": [ "API_KEY", EXPIRES, "SIGNATURE" ] } API_KEY : BitMEX에서 발급받은 API 키 EXPIRES : 만료 시간(Unix timestamp 등, BitMEX 규격에 맞게 설정) SIGNATURE : VERB + ENDPOINT ...

SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리

SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 AI 생성 이미지: SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 현대의 Java / Spring 애플리케이션에서는 로그를 일관되게 수집하고 분석하는 것이 매우 중요합니다. SLF4J를 로깅 추상화 계층으로 쓰고 Log4j2를 실제 구현체로 연결하면 안정적이고 확장성 있는 로깅 체계를 구축할 수 있습니다. 또한 Log4jdbc를 함께 사용하면 JDBC 레벨에서 실행된 SQL과 바인딩 값, 실행 시간을 손쉽게 캡처할 수 있습니다. 이 문서에서는 SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 라는 목표로, Maven 의존성, log4j2 구성 파일, 그리고 DataSource 적용 방법을 실제 예제와 함께 단계별로 설명합니다. 운영 환경과 개발 환경 모두에서 활용할 수 있도록 실용적인 팁도 포함했습니다. 📚 목차 1. Maven 의존성 설정 (pom.xml) 2. Log4j2 설정 (log4j2.xml) 3. DataSource에 Log4jdbc 적용하기 4. 마무리 및 활용 팁 1. 📦 Maven 의존성 설정 (pom.xml) 먼저 Maven 프로젝트에 필요한 라이브러리를 추가해야 합니다. ...

Java로 텔레그램 인라인 버튼 봇 만들기: TelegramBots API CallbackQuery 실전 예제

Java로 텔레그램 인라인 버튼 봇 만들기: TelegramBots API 실전 예제 텔레그램 봇으로 메뉴 버튼을 띄우고, 버튼 클릭 이벤트(CallbackQuery)를 처리 하는 예제입니다. 사용자가 1 을 입력하면 인라인 키보드 버튼이 표시되고, 버튼을 클릭하면 콜백 데이터와 메시지 ID 를 다시 보내주는 구조입니다. 📚 목차 예제 기능 개요 전체 코드 정리 (Java) onUpdateReceived() 로직 상세 설명 CallbackQuery 처리와 버튼 동작 방식 실무에서 쓸 때 고려할 점 (토큰, 구조 개선 등) 1. 예제 기능 개요 이 텔레그램 봇 예제는 TelegramBots Java 라이브러리 를 사용합니다. 주요 기능은 다음과 같습니다. 사용자가 채팅 창에 1 을 입력하면 “메뉴를 선택하세요”라는 메시지와 함께 인라인 버튼 출력 버튼 텍스트: “버튼” , callbackData: “CheckBtn” 버튼 클릭 시 콜백 데이터(callData) + 메시지 ID 를 채팅으로 다시 전송 즉, 인라인 키보드(InlineKeyboardMarkup) 와 CallbackQuery 처리 를 한 번에 이해할 수 있는 기본 구조입니다. 2. 텔레그램 인라인 버튼 봇 전체 코드 아래는 질문에 포함된 코드를 보기 좋게 정리한 버전 입니다. import org.telegram.telegrambots.ApiContextInitializer; import org.telegram.telegrambots.TelegramBotsApi; ...

Java로 텔레그램 봇 만들기 – ReplyKeyboard 버튼 메뉴 구현 예제

Java로 텔레그램 봇 만들기 – ReplyKeyboard 버튼 메뉴 구현 예제 AI 생성 이미지: Java로 텔레그램 봇 만들기 – ReplyKeyboard 버튼 메뉴 구현 예제 이 글에서는 Java TelegramBots 라이브러리 를 활용해 사용자가 1 을 입력하면 자동으로 ReplyKeyboard 가 나타나는 실용적인 예제를 단계별로 소개합니다. Java로 텔레그램 봇 만들기 – ReplyKeyboard 버튼 메뉴 구현 예제는 초보자도 따라 하기 쉽도록 핵심만 추려 설명합니다. 텔레그램 봇을 개발하다 보면 흔히 발생하는 요구는 “메시지 내용에 따라 버튼 메뉴를 보여주고 싶다” 는 것입니다. 본 예제는 바로 그런 상황을 빠르게 구현할 수 있는 기본 뼈대를 제공합니다. 📚 목차 1. 예제 기능 개요 2. 전체 소스 코드 (Java 텔레그램 봇 예제) 3. 코드 설명 – main & 봇 등록 4. onUpdateReceived와 키보드 버튼 처리 5. CallbackQuery 처리(버튼 클릭 후 데이터) 6. 마무리 정리 1. 예제 기능 개요 이 Java 예제는 다음 흐름으로 동작합니다. Java로 텔레그램 봇 만들기 – ReplyKeyboard 버튼 메뉴 구현 예제의 목적은 최소한의 코드로 버튼 메뉴를 띄우는 방법을 분명히 보여주는 것입니다. ...