목록CS (21)
여름의 서재
💡 HTTP 란? : 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. 이렇게 규약을 정해두었기 때문에 모든 프로그램이 이 규약에 맞춰 개발해서 서로 정보를 교환할 수 있게 되었다. 💡 HTTP의 특징 메세지 교환 형태의 프로토콜: 클라이언트가 보고 싶은 걸 서버에 요청하면 응답이 온다. 비연결성(Connectionless): 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트의 요청을 서버가 응답하면 맺었던 연결을 끊는다. 불특정 다수의 통신을 줄여 더 많은 연결이 가능하지만, 동일한 요청을 새로 요청해야 한다. 무상태(Stateless): 이전 상태를 유지 하지 않는다. 상태를 기억하기 위해서 쿠키, 세션, 토큰이 도입 된다. 💡 HTTP Request (요청) : ..
💡 TCP (Transmission Control Protocol) : 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜. (전송 계층의 대표적인 프로토콜) 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 *패킷의 순서나 데이터 검사 등의 역할을 담당! * 패킷: 인터넷 내에서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 한다. 💡 TCP 특징 1. 연결형 서비스로 가상 회선 방식을 제공한다.: 즉, 발신지와 수신지를 연결하여 패킷을 전송하기 위한 논리적 경로를 배정한다. 2. 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 📌 TCP 3-way ..
💡 RDBMS 란? : 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스 . RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다. 데이터의 원자성, 일관성, 격리 및 내구성을 유지하며 데이터 무결성을 높인다. SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장. 💡 NoSQL 이란? : 유연한 데이터 모델을 갖춘 고성능 비관계형 데이터베이스. 초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에, 비구조적인 데이터를 저장하기 위한 분산 저장 시스템 📌 BASE 1. 기본적인 가용성 (Basically Avaliable) : 부분적인 고장은 있을 수 있으나, 나머지는 ..
💡 Redis란? : 키-값 기반의 인-메모리 데이터 저장소. 키-값 기반이기 때문에 쿼리를 따로 할 필요없이 결과를 바로 가져올 수 있고 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠름. 💡 Redis 특징 1. 빠른 성능 : 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠름. 2. 인 메모리 데이터 구조 - String : 기본적인 데이터 유형. 텍스트 또는 이진 데이터가 이에 해당하며 최대 크기는 512MB - Lists : Array 형식의 데이터 구조. 처음과 끝에 데이터를 넣고 빼는 건 빠르지만, 중간에 데이터를 삽입할 때는 어려움이 있음. - Sets : 순서가 없는 Strings 데이터 집합. 중복된 데이터 하나로 처..
💡 HTTP : 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜. 클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보내면 서버는 요청에 맞는 응답을 클라이언트에게 전송한다. 이 때, HTTP 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용한다. HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이였기 때문에 도청이 가능하고, 통신 상태를 확인하지 않기 때문에 위장이 가능하다. 💡 HTTPS : HTTP 에 암호화와 인증, 그리고 완전성 보호를 더한 프로토콜. HTTP 하부에 SSL과 같은 보안계층을 제공. HTTPS 의 SSL 에서는 대칭키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용한다. 클라이언트..
💡 Tree : 트리는 스택이나 큐와 같은 선형 구조가 아닌 비선형 자료구조이다. 트리는 계층적 관계(Hierarchical Relationship)을 표현하는 자료구조이다. 이 트리라는 자료구조는 표현에 집중한다. 무엇인가를 저장하고 꺼내야 한다는 사고에서 벗어나 트리라는 자료구조를 바라보자. 💡 Binary Tree (이진 트리) : 모든 노드들이 둘 이하의 자식을 가진 트리. 트리에서는 각 층별로 숫자를 매겨서 이를 트리의 Level(레벨)이라고 한다. 레벨의 값은 0 부터 시작하고 따라서 루트 노드의 레벨은 0 이다. 그리고 트리의 최고 레벨을 가리켜 해당 트리의 height(높이)라고 한다. 📌 Perfect Binary Tree (포화 이진 트리), Complete Binary Tree (완전..
💡 Stack 선형 자료구조의 일종으로 Last In First Out (LIFO). 즉, 나중에 들어간 원소가 먼저 나온다. 이것은 Stack 의 가장 큰 특징이다. 차곡차곡 쌓이는 구조로 먼저 Stack 에 들어가게 된 원소는 맨 바닥에 깔리게 된다. 그렇기 때문에 늦게 들어간 녀석들은 그 위에 쌓이게 되고 호출 시 가장 위에 있는 녀석이 호출되는 구조이다. 💡 Queue 선형 자료구조의 일종으로 First In First Out (FIFO). 즉, 먼저 들어간 원소가 먼저 나온다. Stack 과는 반대로 먼저 들어간 놈이 맨 앞에서 대기하고 있다가 먼저 나오게 되는 구조이다. 참고로 Java Collection 에서 Queue 는 인터페이스이다. 이를 구현하고 있는 Priority queue등을 사..
💡 Array 가장 기본적인 자료구조인 Array 자료구조는, 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스(index)로 해당 원소(element)에 접근할 수 있다. 그렇기 때문에 찾고자 하는 원소의 인덱스 값을 알고 있으면 Big-O(1)에 해당 원소로 접근할 수 있다. 즉 random access 가 가능하다는 장점이 있는 것이다. 하지만 삭제 또는 삽입의 과정에서는 해당 원소에 접근하여 작업을 완료한 뒤(O(1)), 또 한 가지의 작업을 추가적으로 해줘야 하기 때문에, 시간이 더 걸린다. 만약 배열의 원소 중 어느 원소를 삭제했다고 했을 때, 배열의 연속적인 특징이 깨지게 된다. 즉 빈 공간이 생기는 것이다. 따라서 삭제한 원소보다 큰 인덱스를 갖는 원소들을 shift해줘야 하..