Http 상태코드
·
Computer Science/Network
응답으로 요청의 처리 상태를 알려주는 코드1xx (Informational)2xx (Successful)200 OK: 요청 성공201 Created: 요청 성공 이후 새로운 리소스 생성202 Accepted: 요청이 접수되었으나 처리가 완료되지 않음ex) 요청 접수 후 1시간 뒤에 배치 프로세스가 요청 처리204 No Content: 요청을 성공적으로 처리했지만 응답 페이로드 본문에 보낼 데이터가 없음ex) 웹 문서 편집기의 save 버튼3xx (Redirection)요청을 완료하기 위해 유저 에이전트의 추가 조치 필요3xx 응답의 결과에 Location 헤더가 있으면 Location 위치로 자동 이동(리다이렉트)하는 특징리다이렉션이란?영구 리다이렉션: 특정 리소스의 URI가 영구적으로 이동ex) /me..
HTTP 메서드 활용
·
Computer Science/Network
HTTP 메서드가 어떻게 활용되는지에 대해 알아보자 클라이언트 → 서버 데이터 전송클라이언트가 서버로 데이터를 전송하는 방법은 2가지로 분류할 수 있다쿼리 파라미터를 통한 데이터 전송GET 방식domain.com/static/star.jpg (정적 데이터 조회 요청)domain.com/search?q=hello&hl=ko (동적 데이터 조회 요청)검색어 및 정렬 필터에 주로 사용메시지 바디를 통한 데이터 전송POST, PUT, PATCH회원 가입, 상품 주문, 리소스 등록, 리소스 변경,... 등 메시지 바디를 통해 전송하는 방법HTML Form을 통한 데이터 전송 (GET, POST만 지원)아래와 같은 폼에 클라이언트가 데이터를 입력 후 서버에 요청한다면 어떻게 될까? 전송 domain.com/sa..
데이터베이스 인덱스
·
Computer Science/Database
인덱스란?데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로 저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지한다 (MySql InnoDB 기준) 값을 항상 정렬된 상태로 유지하는 이유는 B-Tree의 변형 구조인 B+Tree 자료구조를 통해 인덱스를 구현하기 때문이다 먼저 B-Tree의 구조를 알아보자 B-Tree B-Tree는 균형 잡힌 트리 구조를 가지며, 데이터를 정렬된 상태로 유지하는 특징을 갖고 있다 B-Tree에서는 크게 3가지의 노드가 존재한다루트 노드 (최상위)리프 노드 (최하위)브랜치 노드 (중간) B-Tree는 모든 데이터를 순회하기 위해서 트리의 모든 노드를 방문해야 한다는 단점이 존재하다 그렇기에 이를 개선한 B+Tree가 인덱스의 자료구조로 채택되었다 B+Tree ..
Redis
·
Computer Science/Database
특징인메모리 기반의 키-값 구조 데이터 관리 시스템모든 데이터를 메모리에 저장하여 빠른 읽기/쓰기 속도 제공싱글 스레드 기반한 번의 하나의 명령만 실행Redis 6.0부터는 멀티스레딩 I/O를 지원하기 시작했지만 코어 로직은 여전히 싱글 스레드 https://charsyam.wordpress.com/2020/05/05/%EC%9E%85-%EA%B0%9C%EB%B0%9C-redis-6-0-threadedio%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90/데이터 구조StringsRedis의 가장 기본적인 데이터 타입최대 512MB의 길이를 가질 수 있음binary safe하며 JPEG image 같은 데이터도 포함할 수 있음Lists삽입 순서로 정렬된 String List..
저장 프로시저 (Stored PROCEDURE)
·
Computer Science/Database
저장 프로시저는 SQL 문장들의 집합으로, 데이터베이스에 저장되어 필요할 때 호출하여 실행할 수 있는 프로그램 단위이다 프로시저의 특징재사용성자주 사용되는 쿼리를 모듈화하여 필요할 때마다 호출 가능성능 향상최초 실행 시 컴파일되어 캐시에 저장, 이후 실행 시 빠른 속도로 처리네트워크 트래픽 감소하나의 요청으로 여러 sql문을 실행할 수 있음보안 강화테이블 직접 접근 대신 프로시저 접근 권한 부여로 보안 강화 단점초기 컴파일 후 변경된 데이터 환경에 대한 최적화 어려움실행 과정최초 실행: 구문 분석, 최적화, 컴파일 과정이후 실행: 캐시된 실행 계획을 사용하여 처리데이터 분포, 데이터의 양, 인덱스 변경, 통계 정보, 하드웨어 리소스 등의 변화가 일어나도 초기에 캐시된 실행 계획을 계속 사용하기 때문에 발..
SQL과 NoSQL
·
Computer Science/Database
SQL관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 프로그래밍 언어장점데이터는 정해진 데이터 스키마에 따라 테이블에 저장 → 무결성 보장스키마: 테이블, 열, 관계, 제약 조건 등의 정보를 포함데이터는 관계를 통해 여러 테이블에 분산정규화 과정 (데이터의 중복을 피하고 일관성을 유지하기 위한 원칙)ACID 원칙을 준수하여 트랜잭션의 안정성 보장단점스키마 변경이 어려워 유연성이 떨어짐복잡한 조인 쿼리로 인한 성능 저하 가능성대체로 수직적 확장만 가능수평적 확장이 어려운 이유테이블 간 관계로 데이터 분산이 복잡함스키마 변경 시 모든 서버에 영향ACID 준수를 위한 오버헤드 발생JOIN 연산이 서버 간에 이루어져야 하므로 성능 저하사용 사례금융, 결제 등 데이터 정합성이 중요한 ..
이진탐색트리
·
Computer Science/Data Structure
이진탐색(Binary Search)탐색에 소요되는 시간: O(log n)삽입/삭제 불가연결리스트(Linked List)탐색에 소요되는 시간: O(n)삽입/삭제에 소요되는 시간: O(1)이진탐색트리(Binary Search Tree)이진탐색(탐색) + 연결리스트(삽입/삭제)탐색/삽입/삭제에 소요되는 시간최적 및 평균: O(log n)트리의 높이에 비례최악: O(n)치우친 트리의 경우 장점검색, 삽입, 삭제 모두 평균적으로 O(log n) 성능중위 순회시 정렬된 순서로 데이터 접근 가능 유연한 크기 조정 가능 단점 균형이 무너지면 성능이 O(n)까지 저하될 수 있음이진탐색트리의 단점인 불균형 문제를 해결하기 위해 자가균형 이진탐색트리(삽입/삭제 연산 시 트리를 재조정)를 사용할 수 있음AVL TreeRed..
힙(heap)
·
Computer Science/Data Structure
힙(heap) : 데이터에서 최댓값과 최솟값을 빠르게 찾기 위해서 고안된 완전 이진 트리 형태의 자료구조 힙을 통해 우선순위큐를 효율적으로 구현할 수 있음힙의 특징완전 이진 트리 구조를 가짐부모 노드와 자식 노드 간의 대소 관계가 성립함 (형제 노드 간 관계 없음)최대 힙(Max Heap)과 최소 힙(Min Heap) 두 종류가 존재최댓값 최솟값 조회의 시간 복잡도: O(1)삽입/삭제 연산의 시간 복잡도: O(log n)완전 이진 트리(Complete Binary Tree): 모든 레벨이 완전히 채워져 있으며, 마지막 레벨에서는 노드들이 가능한 가장 왼쪽부터 채워져 있는 이진 트리 최대 힙: 루트 노드가 최댓값 → 부모 노드(key) ≥ 자식 노드(key)최소 힙: 루트 노드가 최솟값 → 부모 노드(ke..
캐시매핑
·
Computer Science/Operating System
캐시의 크기는 메모리보다 작기 때문에 효율적으로 매핑하는 것이 중요하다적절한 매핑 기법을 사용하면 캐시 적중률을 높일 수 있어 전체 시스템의 성능이 향상된다운영체제의 메모리 관리운영체제는 메모리를 똑같은 크기의 페이지(4kb)로 나눠 관리를 한다 주소 구조가상 주소는 로 구성P(Page Number): 페이지 번호 (20bits로 관리)D(Page Offset): 페이지번호로부터 해당 주소까지의 거리 (12bits로 관리) 가상 주소와 물리 주소가상 주소: 프로그램이 사용하는 주소(20bits)물리 주소: 실제 메모리의 주소(16bits) 주소 변환가상 주소를 물리 주소로 변환할 때 페이지 테이블을 사용Page Number만 변환되고 Page Offset은 그대로 유지 매핑의 종류1. 직접매핑메모리의 특..
캐시히트와 캐시미스
·
Computer Science/Operating System
캐시속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리 캐시는 반응 속도가 빠른 SRAM(Static Random Access Memory)으로 주소가 키(Key)로 주어지면 해당 공간에 즉시 접근할 수 있음이러한 특성은 DRAM(Dynamic Random Access Memory)도 동일하지만 하드웨어 설계상 DRAM은 SRAM보다 느림DRAM은 행과 열을 순차적으로 활성화하여 데이터에 접근하며 이 과정에서 추가적인 지연이 발생하기 때문 캐시를 설정할 때는 자주 사용하는 데이터를 기반으로 설정함이 때 지역성을 기반으로 설정되는데, 시간 지역성과 공간 지역성으로 나뉨 int[] arr = new int[10];for(int i=0; i시간 지역성(temporal local..