목록CS (13)
백엔드 개발자
데이터베이스 인덱스란?인덱스는 책의 목차처럼 테이블에 저장된 데이터에 빠르게 접근하기 위해 사용되는 구조이다.인덱스에 사용되는 키를 기준으로, 데이터를 정렬된 방식으로 저장하여 데이터의 검색 속도를 크게 향상한다.그 대신 데이터를 추가, 수정, 삭제할 때 정렬 과정과, 추가적인 저장 공간을 차지하기 때문에 오버헤드를 유발할 수 있다.클러스터드 인덱스와 논클러스터드 인덱스인덱스는 클러스터드 인덱스와 논클러스터드 인덱스로 나뉜다.클러스터드 인덱스는 테이블의 데이터 자체가 인덱스에 의해 정렬이 된다. 물리적인 데이터 정렬을 의미하기 때문에 하나만 존재한다.논클러스터드 인덱스는 인덱스를 위한 별도의 테이블이 생성된다.클러스터드 인덱스 (Clustered Index):물리적 데이터 정렬: 테이블의 데이터 자체가 ..
TCP/IP란 무엇인가?TCP/IP는 인터넷과 네트워크의 기본이 되는 통신 규약(Protocol)의 모음이다.네트워크에서 애플리케이션 간의 데이터 전송, IP 주소간의 통신 등 다양한 규칙이 필요한데 이런 규칙들을 모아놓은 것이다.TCP/IP는 서로 다른 기기 간에 신뢰성 있고 효율적으로 전송될 수 있도록 설계된 구조로, 계층적 설계(layered architecture)를 기반으로 동작한다. 이를 통해 TCP/IP는 다양한 하드웨어와 소프트웨어 환경에서도 통합적으로 작동할 수 있다.Layered 계층 구조란?Layered 계층 구조는 네트워크를 여러 독립적인 계층으로 나누어 각각의 계층이 특정 기능을 담당하도록 설계된 모델이다. 각 계층은 상위 계층이나 하위 계층과 상호작용하지만, 자신의 역할에만 집중..
레이스 컨디션(Race Condition)과 동기화 기법의 필요성레이스 컨디션은 여러 스레드가 동일한 자원에 동시에 접근하거나 작업을 수행할 때 발생하는 동기화 문제다. 각 스레드의 실행 순서에 따라 매번 결과가 달라질 수 있어 데이터 무결성이 깨지거나 의도치 않은 동작이 발생할 수 있다.동기화 기법 Lock멀티스레드 환경이나 멀티프로세스 시스템에서는 여러 작업이 동일한 자원에 동시에 접근할 경우 데이터 일관성이 깨지거나 충돌이 발생할 수 있다(Race Condition 문제). 이를 방지하기 위해 동기화(Synchronization) 기법이 필요하며, 이 중 가장 널리 사용되는 것이 바로 Lock 기법이다.Lock은 특정 자원에 대한 접근 권한을 하나의 스레드나 프로세스가 독점적으로 가지도록 보장하여 ..
가상 메모리란?메모리 공간을 추상화해서 제공하는 것이라고 할 수 있다.프로세스는 RAM에 올라와서 실행이 되는 것인데, 이 메모리 공간(RAM)은 보호 영역에서 운영체제가 관리한다. 그렇기 때문에 운영체제에서 이러한 메모리 영역을 추상화하여 제공하고 각 프로세스에 독립적인 메모리 주소 공간을 제공하여 메모리를 보호한다. 또한, 실제 메모리 보다 큰 메모리로 보이도록 하고, 실제보다 더 큰 메모리 사용을 가능하게 만들어주는 방법이다.요구 페이징가상메모리의 핵심 요소 중 하나는 필요한 메모리만 올려서 실행하여 실제보다 더 큰 메모리 사용이 가능하도록 해주는 것이다.예를 들어 어떤 프로그램은 3G의 메모리를 사용해야 하는데 실제 메모리 크기가 2G라면 전체 데이터를 모두 올리지 못할 것이다. 또, 멀티프로그래..
프로세스 (Process)1. 간단한 정의프로세스는 프로그램을 실행해서 메모리에 올라와 CPU 할당을 받을 수 있는 상태라고 할 수 있다.프로그램을 실행하면 OS는 프로그램을 메모리에 적재하고, 이를 위한 프로세스 제어 블록(PCB)을 초기화한다. 그리고 Ready Queue에 추가되어 CPU 할당을 받을 수 있는 준비 상태가 된다.2. 메모리 구조2.1. 코드 영역실행할 프로그램의 명령어(코드)가 저장된 영역이다.예를 들어, 함수 정의, 루프, 조건문 등의 실제 기계어 코드가 여기에 포함된다.읽기 전용(Read-Only)으로 설정되어 보통 변경되지 않는다.2.2. 데이터 영역전역 변수와 정적 변수 등이 저장된다.초기화된 변수는 초기화 데이터 세그먼트에 저장되며, 초기화되지 않은 변수는 BSS(Block..
동기(Synchronous)- 작업을 순차적으로 실행한다.- 호출자가 작업 완료를 기다리며, 작업이 끝난 후에만 다음 작업을 진행한다.- 코드가 단순하고 직관적이지만 앞 작업이 완료될때까지 기다려야 한다.비동기(Asynchronous)- 호출자가 작업을 요청한 후 결과를 기다리지 않고 다른 작업을 수행한다.- 예: 네트워크 요청에서 비동기 콜백을 설정하여 응답 도착 시 처리.- 호출자가 대기하지 않으므로 효율적이지만 콜백과 상태 관리로 코드가 복잡해질 수 있다.동기와 비동기는 작업의 흐름과 실행 순서를 설명하는 개념이다. 동기는 실행 시점이 일치하기 때문에 작업이 끝나는 동시에 다른 작업이 시작된다.반면 비동기는 실행 시점이 다를 수 있다.기본적으로 JAVA에서는 동기이다. 예를 들어 어..
1. 트랜잭션(Transaction)이란?트랜잭션은 데이터베이스에서 수행되는 하나의 작업 단위로, 데이터베이스의 상태를 일관성 있게 유지하고, 여러 작업을 하나의 원자적 작업으로 묶어 처리할 수 있도록 한다. 즉, 트랜잭션 내에서 여러 쿼리가 실행되며, 그 결과가 모두 성공적으로 처리되거나, 아무것도 처리되지 않은 상태로 롤백되어야 한다.하나의 논리적인 작업 단위라고 할 수 있다.A가 B에게 돈을 송금한다.라는 작업은 A의 계좌를 확인하고, 돈을 인출하고, B의 계좌를 확인하고, 돈을 더하는 작업으로 이루어질 수 있을 것이다.실제 작업과 다를 수 있지만 간단하게 나타내면 이렇게 표현할 수 있을 것이다.이런 트랜잭션은 다음과 같은 ACID 속성을 만족해야 한다:Atomicity (원자성): 트랜잭션은 모든..
HTTP란 무엇인가?HTTP(Hypertext Transfer Protocol)는 웹 상에서 클라이언트와 서버 간 데이터를 교환하기 위한 규칙이자 프로토콜입니다.HTTP는 신뢰할 수 있는 전송 프로토콜(TCP) 위에서 동작하며, 클라이언트-서버 모델을 따릅니다. HTTP의 확장성 덕분에 현재는 하이퍼텍스트 문서 뿐만 아니라 이미지와 비디오, JSON 등 다양한 데이터 포맷을 지원합니다.OSI 7계층에서 HTTP의 위치HTTP는 애플리케이션 계층(OSI 7계층의 7층)에 위치합니다. OSI 모델에서 각 계층은 특정 역할을 담당하며, HTTP는 데이터를 직접 전달하는 것이 아니라 하위 계층을 통해 전송되기 때문에 네트워크의 상세 동작을 이해하려면 하위 계층인 전송 계층(TCP/IP 4계층의 전송 계층)도 함..