CS

CS/Network

직렬화 vs 역직렬화 차이 이해하기: Serialize, Deserialize

Serialize직렬화는 객체를 바이트 데이터로 변환하는 과정을 의미합니다.Serialization is the process of converting an object’s state to a byte stream. Serialization allows us to save the data associated with an object and recreate the object in a new location Serialization FormatJSON, XML, Binary 등 다양한 포맷으로 변환시킬 수 있습니다. (JSON, XML은 사람이 읽기 쉬운 형태여서 현재 자주 사용되는 포맷입니다.) 스프링에서는 Jackson을 통해 간편하게 객체 → JSON 형태로 변환하여 클라이언트에게 전달해 줍니다. ..

CS/OS

OS 메모리 관리: 페이징과 세그멘테이션의 차이점 완벽 정리

QnA. Memory Paging과 Sementation 차이메모리 공간을 분리하는 방법으로 페이징과 세그먼트가 있습니다. 가장 큰 차이점은 페이징은 고정된 크기로 메모리 공간을 나누며, 세그멘테이션은 서로 다른 크기로 메모리 공간을 다룹니다.두 방식에서 생기는 내부 단편화, 외부 단편화 문제가 있으며, 세그멘테이션 방식에서 세그먼트 테이블에 세그먼트 번호, 시작 주소, 세그먼트 크기 정보를 가지고 있어 페이징 테이블보다 메모리 비용과 관리 비용이 높습니다. 가상 메모리란실제 물리적 메모리의 크기를 넘어서는 메모리 공간을 제공하기 위해 사용되는 메커니즘이다.(메모리에 로드된) 실행 중인 프로세스가 가상의 공간을 참조하여 더 큰 물리 메모리를 갖고 있는 것처럼 사용할 수 있도록 해줍니다. 내가 실행하고자 ..

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 주소 기반) 패킷을 라우팅 하는 ..