분류 전체보기

CS/Database

MySQL Lock과 트랜잭션 격리 수준 정리 | 데이터베이스 Lock & Isolation Level 이해

MySQL 기본적인 Locking & 격리 수준MySQL의 기본적인 Lock기본적으로 REPEATABLE READ 격리 수준을 사용한다.MVCC (Multi-Version Concurrency Control)을 활용하여 데이터 일관성을 유지합니다.트랜잭션이 진행되는 동안 동일한 데이터를 읽으면 변경된 데이터는 보이지 않습니다. (커밋된 새로운 트랜잭션의 데이터가 반영되지 않음)SELECT 시 Read Lock 걸지 않음select 쿼리는 잠금을 걸지 않음MVCC를 사용해 트랜잭션이 시작된 시점의 데이터 스냅샷 반환UPDATE / DELETE 시 Record Lock (행 단위)행에 대해 Record Rock을 획득합니다.해당 행이 다른 트랜잭션에서 수정되지 않도록 방지GAP Lock (Phantom Re..

CS/Network

Segment vs Packet: OSI 전송 계층과 네트워크 계층 이해하기

Segment와 Packet 정보 차이결론Segment는 전송 계층에서 다루는 데이터 단위Packet은 네트워크 계층에서 다루는 데이터 단위1. 애플리케이션이 데이터를 보냅니다. (웹 요청)2. 전송 계층에서 TCP/UDP가 데이터를 세그먼트로 나눕니다.2-1. TCP의 경우 데이터 흐름 제어, 오류 검출 등을 위한 헤더를 추가합니다.3. 네트워크 계층에서 IP가 Segment를 감싸고 목적지 주소를 추가합니다.3-1. IP 헤더를 추가하여 Packet을 생성합니다.4. 패킷이 네트워크를 통해 전송된다. Internet Layer3계층은 (네트워크 계층, Internet Layer, Packet) 데이터가 서로 다른 네트워크 간에 전달될 수 있도록 경로를 결정하고 (IP 주소 기반) 패킷을 라우팅 하는 ..

Spring Framework/Spring

Spring DI 방식 비교: 생성자 주입과 필드 주입의 차이점 정리

QnA. 생성자 주입과 필드 주입의 차이 생성자 주입은 객체 생성 시 의존성이 즉시 주입된다.반면, 필드 주입은 일단 빈 객체를 먼저 생성하고, 스프링 컨테이너가 초기화된 이후에 관련 의존성들이 주입된다. 생성자 주입 추가 설명@Componentpublic class FooBean { private final FooService fooService; @Autowired public FooBean(FooService fooService) { this.fooService = fooService; }}생성자 주입은Spring Container가 FooBean을 생성하기 전에 FooService 빈을 먼저 찾습니다.FooService 빈이 컨테이너에 있는 경우, 이를 Foo..

JAVA

Java 버전별 변화 및 주요 기능 - java 8, 11, 17, 21

Java 버전별 차이 요약 Java 8LambdaStreaminterface default methodOptional : Nullable한 값 제공Lambda// beforeRunnable runnable = new Runnable(){ @Override public void run(){ System.out.println(*"Hello world !"*); } }; // afterRunnable runnable = () -> System.out.println(*"Hello world two!"*);interface Vehicle { void start(); // 추상 메서드 // default 메서드 (구현을 포함) default void stop() { S..