Docker를 활용한 Java 개발 환경 필수 소프트웨어 설치 가이드
본 문서는 Java 개발 환경 구축에 필요한 다양한 소프트웨어를 Docker 컨테이너를 사용하여 설치하는 방법을 안내합니다.
1. JDK 설치
AdoptOpenJDK 8 버전을 Docker 이미지로 설치합니다.
docker pull adoptopenjdk/openjdk8
docker run -di --name=jdk1.8 adoptopenjdk/openjdk8
docker exec -it jdk1.8 /bin/bash
2. MySQL 설치
MySQL 8.0 버전을 설치하고, ...
7월 23일 22:00에 게시됨
Android BlockedNumberProvider를 통한 수신 차단 시스템 커스터마이징
Android 환경에서 전화는 누구나 접근 가능한 개방형 통신 채널입니다. 이로 인해 원치 않는 스팸 전화나 메시지로부터 사용자를 보호하는 기능은 필수적입니다. Android 7.0(Nougat) 이전에는 표준 API의 부재로 인해 서드파티 앱들이 수신 차단을 구현하는 데 한계가 있었으나, 7.0 버전부터 BlockedNumberProvider가 도입되면서 시스템 차원의 통합 관리가 가능해졌습니 ...
7월 23일 20:02에 게시됨
Java 멀티스레딩 기초와 동시성 제어 핵심 요약
멀티스레드의 이해와 구현 방법
멀티스레딩은 하나의 프로세스 내에서 여러 실행 흐름을 동시에 처리하는 기술입니다. Java에서 스레드를 생성하고 실행하는 방법은 크게 세 가지로 나뉩니다.
1. Thread 클래스 상속
가장 기본적인 방법으로, Thread 클래스를 상속받아 run() 메서드를 오버라이드합니다.
public class WorkerThread extends Thread {
@Override
...
7월 23일 09:30에 게시됨
Java 메서드의 개념과 구조 및 활용 가이드
Java 메서드란 무엇인가
Java에서 메서드(Method)는 특정 기능을 수행하기 위해 모인 일련의 문장들의 집합입니다. 프로그래밍에서 메서드는 다음과 같은 특징을 가집니다.
특정 문제를 해결하기 위한 절차를 논리적으로 결합한 단위입니다.
클래스 내부에 존재하며 객체의 동작을 정의합니다.
한 번 작성하면 프로그램 내 어디서든 호출하여 재사용할 수 있 ...
7월 23일 07:40에 게시됨
Jackson 라이브러리 핵심 가이드
Jackson은 Java 진영에서 가장 널리 채택되는 JSON 처리 엔진으로, FasterXML이 관리하고 있다. 단순한 JSON 파싱을 넘어 XML, YAML, CSV 등 다양한 포맷을 지원하며, 뛰어난 성능과 유연한 확장성으로 Spring 생태계의 사실상 표준이 되었다. 이번 글에서는 Jackson의 내부 메커니즘과 실무 활용법을 살펴본다.
핵심 모듈 구성
모듈명
Maven Artifact
역할
jackson ...
7월 23일 07:37에 게시됨
자바 I/O 스트림: 파일 데이터 처리의 기초
자바 애플리케이션에서 파일이나 네트워크를 통해 데이터를 교환하는 것은 매우 흔한 작업입니다. 이러한 데이터 교환은 '입력(Input)'과 '출력(Output)'이라는 두 가지 주요 흐름을 통해 이루어지며, 자바에서는 이를 I/O(Input/Output) 스트림이라는 개념으로 추상화합니다. I/O 스트림은 데이터의 원천(Source)과 목적지(Destination)를 연결하는 파이프라인과 같다고 ...
7월 23일 04:55에 게시됨
Java 상속과 다형성 핵심 정리
상속(Inheritance) 기본 개념
여러 클래스에 공통으로 존재하는 속성이나 기능이 있다면, 이를 별도의 클래스로 분리하여 다른 클래스에서 재사용할 수 있다. 이것이 상속의 핵심 목적이다.
접근 제한자 활용
멤버 변수는 일반적으로 private으로, 메서드는 public으로 선언하는 것이 관례이다. 패키지 내에서만 접근 가능한 default와 상속 관계에서만 접근 가능한 pro ...
7월 23일 02:57에 게시됨
Java Stream API와 람다 표현식 활용 가이드
중복 제거
두 개의 리스트 객체 조건에 따른 중복 제거
List<Member> memberList와 List<Employee> employeeList
// memberList의 Member id가 employeeList의 Employee id와 일치하지 않는 객체 제거
List<Member> filteredList = memberList.stream()
.filter(member -> !employeeList.stream().map(emp -> emp.getEmployeeId()).collect ...
7월 23일 01:21에 게시됨
Java 과제 1~3 요약 및 분석
서론
세 주간의 Java 개발 과정을 통해, 과제는 단순한 문제 설계에서 복잡한 논리로 점진적으로 깊어졌습니다. 이 세 번의 과제는 Java 언어 기본에 대한 이해뿐만 아니라 객체 지향 설계, 예외 처리, 복잡한 자료 구조 사용까지 다루고 있습니다. 세 번의 과제를 마친 후, 이에 대한 요약을 제공합니다. 먼저 과제의 양은 점차 줄어들었지만, 난이도는 분명히 증가했습니 ...
7월 22일 23:42에 게시됨
Arthas를 활용한 JDBC 드라이버 클래스 데드락 문제 해결 과정
문제 상황
마이크로서비스 프로젝트를 개발하던 중, 데이터베이스 연결 생성 과정에서 블로킹 상태에 빠지는 문제가 발생했습니다. 프로그램이 로그를 출력한 후 멈춰서 더 이상 새로운 로그가 표시되지 않았습니다. 이에 Arthas를 사용하여 문제를 추적하고, 발견된 원인을 해결했습니다.
환경
소프트웨어버전
JDK1.8
Spring Boot2.1.1.RELEASE
Hutool5.5.5
문제 원 ...
7월 22일 05:54에 게시됨