인스턴스 동기화와 클래스 동기화의 잠금 범위 분석
Java의 synchronized 키워드는 잠금 대상에 따라 동작 방식이 완전히 달라진다. 인스턴스 메서드와 정적 메서드에 각각 적용했을 때 어떤 차이가 있는지 살펴본다.
잠금 대상의 핵심 차이
다음 클래스를 통해 두 가지 동기화 방식을 비교한다:
public class Resource {
// 인스턴스 잠금 - 각 객체마다 별도의 락
public synchronized void instanceLockA() {}
...
7월 10일 16:26에 게시됨
Java 기초 학습 10 - 알고리즘
큐 구조 기초
큐는 선입선출(FIFO) 구조를 가진 자료구조입니다. 배열을 이용하여 큐를 구현할 수 있으며, 기본 구현과 원형 큐(Circular Queue) 방식으로 나뉩니다.
기본 배열 큐(비최적화)
필요 변수: front = -1, rear = -1, maxSize, int[] arr
큐가 가득 찬 조건: rear == maxSize - 1, 큐가 빈 조건: rear == front
삽입(enqueue): 큐가 가득 찼는지 확인 후, rear ...
7월 10일 06:31에 게시됨
Java for 루프로 인덱스 얻기
Java 배열에서 인덱스를 활용하는 방법
Java 프로그래밍을 하다 보면 배열이나 컬렉션의 각 요소를 순회하면서 현재 위치 정보를 알아야 하는 경우가 많습니다. 이 글에서는 전통적인 for 문을 사용하여 배열의 인덱스와 값을 동시에 가져오는 방법을 단계별로 알아보겠습니다.
구현 단계
배열의 인덱스와 값을 출력하는 전체 과정은 다음과 같습니다:
단계설명코드
1 ...
7월 10일 04:34에 게시됨
Spring Boot, Vue.js, UniApp을 활용한 대학생 온라인 사진 플랫폼 구축
핵심 기술 소개
이 온라인 사진 플랫폼은 Spring Boot, Vue.js, MyBatis를 포함한 최신 기술 스택을 기반으로 구축되었습니다. 각 기술은 시스템의 특정 측면을 담당하며, 효율적이고 확장 가능한 아키텍처를 제공합니다.
백엔드 프레임워크: Spring Boot
Spring Boot는 개발자가 독립적으로 실행 가능하며 프로덕션 수준의 표준을 충족하는 Spring 기반 애플리케이션을 ...
7월 9일 23:20에 게시됨
클래스 로더의 부모 위임 모델과 SPI 기술 이해
부모 위임 모델의 작동 원리
부모 위임 모델은 자바 가상 머신(JVM) 내 클래스 로딩 과정에서 적용되는 핵심 규칙으로, 강제적인 제약이 아닌 권장 방식입니다. 하위 클래스 로더는 자신이 직접 클래스를 로드하기 전에 상위 클래스 로더에게 우선적으로 로딩을 위임합니다. 상위 로더가 해당 클래스를 처리하지 못하면, 하위 로더가 스스로 로드하는 구조입니다.
자바 시 ...
7월 9일 19:30에 게시됨
합병 정렬(Merge Sort) 의 분할 병합 전략과 실장 예시
분할 정복 알고리즘 개요
배열 정렬을 위해 널리 사용되는 합병 정렬은 분할 정복(Divide and Conquer) 패러다임을 기반으로 합니다. 이 방식은 주어진 데이터를 작은 단위로 재귀적으로 쪼갠 후, 각 단위를 정렬된 상태로 다시 결합하여 전체 순서를 맞춥니다.
단계 1: 데이터 분할 로직
먼저 배열을 두 개의 하위 부분으로 나누는 과정을 정의합니다. 이때 중간 지점을 ...
7월 9일 17:16에 게시됨
Java 8 핵심 기능 완벽 가이드
Java 8 주요 특징
Java 8(2014년 3월 Oracle 공식 릴리스)은 Java 생태계의 중대한 전환점입니다. 함수형 프로그래밍 패러다임을 도입하여 코드의 간결성과 가독성을 크게 향상시켰습니다.
Lambda 표현식
Lambda는 익명 클래스의 축약형 문법으로, 메서드를 값처럼 전달할 수 있게 합니다. 화살표 연산자 ->를 기준으로 좌측에는 매개변수, 우측에는 실행 본문을 배치 ...
7월 9일 04:51에 게시됨
Java 접근 제어자 및 기타 수정자
1. 개요
Java에서 클래스, 인터페이스, 변수, 메서드 등 요소에 적용 가능한 수정자(Modifiers)는 해당 요소의 **접근 범위**, **행동 특성**, **생애 주기**를 정의합니다. 주요 분류는 다음과 같습니다:
접근 제어 수정자: 시스템 내부/외부에서의 가시성 조절
비접근 제어 수정자: 행동 특성 설정 (static, final, abstract 등)
2. 접근 제어 수정자
Java는 4가지 ...
7월 9일 02:32에 게시됨
스프링 부트에서 Chuanglan 253 SMS 인증 연동
스프링 부트 프로젝트에서 SMS 인증 기능을 구현하기 위한 설정 및 코드 예시입니다.
1. SMS 설정 프로퍼티
sms.url=
sms.username=
sms.password=
실제 값은 Chuanglan 공식 사이트에서 확인 가능합니다.
2. 요청 데이터 모델
public class SmsRequest {
private String user;
private String pass;
private String content;
private String variables;
priv ...
7월 8일 19:22에 게시됨
자바 JDBC 데이터베이스 프로그래밍 실습 가이드
자바 JDBC를 활용한 데이터베이스 연동
이 문서는 자바 애플리케이션에서 JDBC(Java Database Connectivity)를 사용하여 데이터베이스를 조작하는 방법을 안내합니다. 기본적인 SQL 명령어부터 시작하여 JDBC API를 통한 데이터베이스 연결, 쿼리 실행, 효율적인 코드 패턴 및 고급 기능까지 다룹니다.
1. 데이터베이스 기본 조작 (콘솔 환경)
JDBC 프로그래밍에 앞서, My ...
7월 8일 19:06에 게시됨