2024/12/26 3

Blocking vs Non-Blocking

Blocking과 Non-Blocking은 프로세스나 스레드가 작업을 처리하는 방식에서 중요한 개념으로, 동기적 처리와 비동기적 처리와도 밀접하게 연관되어 있다.1. BlockingBlocking은 작업이 완료될 때까지 해당 프로세스나 스레드가 기다리는 방식입니다. 즉, 작업이 끝날 때까지 다음 작업으로 진행하지 못하고 멈춘 상태로 대기합니다.특징동기적 처리: 대부분의 Blocking 작업은 동기적으로 이루어집니다.대기 상태: 작업이 완료될 때까지 다른 작업을 수행하지 못함.단순한 구현: 구현이 간단하며 디버깅이 용이.장점예측 가능한 동작 방식.구현 및 유지보수가 쉬움.단점대기 시간 동안 자원이 낭비됨.시스템의 응답 속도가 저하될 가능성.예시파일 읽기/쓰기: read() 또는 write() 호출이 완료될..

데이터베이스(DB) Lock

데이터베이스에서 Lock은 동시성 제어의 핵심 메커니즘으로, 여러 트랜잭션이 동시에 데이터를 접근하거나 변경할 때 데이터 무결성을 보장하기 위해 사용됩니다.1. Lock의 개념Lock은 트랜잭션이 특정 데이터나 자원에 대해 접근할 때 다른 트랜잭션이 해당 데이터나 자원에 접근하지 못하도록 제한하는 메커니즘입니다. 이는 데이터의 무결성을 보장하고 교착 상태(Deadlock)나 경합 상태(Race Condition)를 방지하는 데 사용됩니다.Lock이 필요한 이유데이터 무결성 보장트랜잭션 간 충돌 방지동시성 문제 해결2. Lock의 종류Lock은 여러 기준에 따라 분류됩니다. 주요 분류는 다음과 같습니다:2.1. 잠금 수준에 따른 분류Row-Level Lock특정 행(Row)에만 잠금을 설정합니다.동시성을 ..

@Component와 @Configuration란?

Spring Framework에서 자주 사용되는 두 가지 중요한 애노테이션이 있습니다: @Component와 @Configuration. 이 두 애노테이션은 모두 빈(Bean)을 정의하는 데 사용되지만, 사용하는 목적과 동작 방식에서 큰 차이가 있습니다. 이 글에서는 각각의 애노테이션에 대해 상세히 알아보고, 어떤 상황에서 어떤 애노테이션을 선택해야 하는지 명확히 이해할 수 있도록 설명하겠습니다.1. @Component란?@Component는 Spring에서 관리되는 일반적인 빈(Bean)을 정의하기 위해 사용됩니다. Spring 컨테이너는 @Component가 붙은 클래스를 스캔하여 자동으로 빈으로 등록합니다.주요 특징:자동 감지:@Component는 클래스 레벨에서 선언되며, Spring의 컴포넌트 ..