목록CS (33)
Welcome! Everything is fine.
HTTPS(Hyper Text Transfer Protocol Secure) HTTPS는 보안 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜이다. SSL(Secure Socket Layer)은 넷스케이프에서 개발한 암호화 프로토콜이다. 이 SSL을 보완해 새로 만든 프로토콜이 TLS(Transport Layer Security)이다. 현재 HTTPS에서 통용되는 방식은 TLS지만, SSL이라는 명칭은 사라지지 않아 SSL 또는 SSL/TLS라고 부른다. HTTPS 이러한 암호화 프로토콜을 통해 데이터 암호화를 거치지 않아 보안에 취약한 HTTP의 약점을 보완하였다. HTTPS에서는 HTTP는 SSL과 통신하고, SSL이 TCP와 통신하게 된다. SSL/TLS의 암호화 방식 HT..
인덱스(Index)란? 인덱스란 데이터베이스 테이블의 검색 속도를 향상시켜주는 자료 구조이다. 책에서 원하는 내용을 빠르게 찾기 위해 책의 앞이나 뒤에서 볼 수 있는 색인과 같다. 특정 값을 검색할 때, 테이블에 있는 데이터를 모두 돌아보고 검색한다면 시간이 많이 걸릴 것이다. 인덱스를 활용하면 면 해당 컬럼의 값과 저장된 주소를 키와 값의 쌍으로 만들어둘 수 있다. 인덱스는 왜 사용할까? 인덱스는 검색 속도를 높이기 위한 목적으로 사용한다. 이미 정렬이 되어있기 때문에 SELECT 쿼리의 검색에 효율적이지만, 반대로 정렬된 상태를 계속 유지시켜주어야 하기 때문에 DML(DELETE, INSERT, UPDATE)이 자주 일어나는 컬럼에는 사용을 피해야 한다. 인덱스의 장점 검색과 정렬 속도를 향상시킬 수..
동시성과 병렬성멀티 프로세스와 멀티 스레드 개념을 잘 이해하려면 동시성과 병렬성에 대해 알아야 한다.동시성(concurrency) : 하나의 코어(싱글 코어)에서 여러 작업을 번갈아 가면서 처리하는 방식CPU는 한 번에 하나의 작업만 처리할 수 있어서 여러 작업을 돌아가며 처리 → Context Switching Context Switching의 비용은 프로세스 > 스레드이다. 스레드는 stack 영역을 제외한 모든 영역을 공유하기 때문!병렬성(parallelism) : CPU가 여러 개(멀티코어) 있어 각 CPU에서 각 작업을 동시에 처리하는 방식멀티 프로세스응용 프로그램 하나를 여러 프로세스로 구성하는 것을 의미장점 : 한 프로세스가 죽어도 다른 프로세스에 영향을 주지 않아 안정적단점 : 시간과 메..
힙(Heap)이란? 힙(Heap)은 완전 이진 트리로, 최댓값 또는 최솟값을 빠르게 찾을 수 있는 자료구조다. 우선순위 큐를 효율적으로 구현하는 데 자주 사용한다. 힙의 종류로는 최대 힙과 최소 힙이 있다. 최대 힙(max heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리. 최소 힙(min heap) : 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리. 힙의 삽입과 삭제 힙의 삽입과 삭제 연산은 책에 나와있는 내용을 다시 써보며 정리해보았다. 더보기 힙(Heap) | 👨🏻💻 Tech Interview (gyoogle.dev) 기술 면접 대비 CS 전공 핵심요약집 | 이수진 - 교보문고 (kyobobook.co.kr)
트리(Tree)란? 트리는 비선형 자료구조 중 하나로, 나무를 거꾸로 뒤집어 놓은 듯한 모양으로 인해 트리(Tree)라고 불린다. 마치 회사 조직도나 가계도처럼 생긴 트리는 계층적 구조를 잘 표현할 수 있다. 트리는 그래프의 일종으로 노드(Node)와 간선(Edge)으로 이루어져 있다. 트리에서 사용하는 용어는 다음과 같다. 루트 노드(root node) : 부모노드가 없는 노드 부모 노드(parent node) : 루트 노드 방향으로 연결된 노드 자식 노드(child node) : 루트 노드의 반대 방향으로 연결된 노드 단말 노드(leaf node) : 자식 노드가 없는 노드 형제 노드(sibling node) : 부모 노드가 같은 노드 레벨(level) : 루트노드로부터 노드의 상대적 위치를 의미 높..
이번 주는 기술 면접에서 많이 물어본다는 Array와 LinkedList의 특징과 차이점에 대해 정리해보았다. 같은 선형 자료구조이면서 정적 자료구조(Array)와 동적 자료구조(LinkedList)로 나뉘어서 자주 나오는 질문이 아닐까 싶다! Array 배열(Array)은 메모리 상에 원소를 연속하게 배치한 자료구조이다. 특징을 간단히 정리하자면 다음과 같다. 인덱스를 사용해 값에 바로 접근 가능하다. 배열의 크기는 한 번 선언하면 줄이거나 늘릴수 없다. (따라서 배열을 확장하기 위해서는 기존 배열의 내용을 새로운 배열에 복사하는 식으로 확장해야한다.) 새로운 값을 삽입하거나 삭제하기가 비효적이고 어렵다. (임의의 위치에 있는 원소를 추가/제거하는 시간 복잡도 O(N)) 데이터를 조회하는 연산이 많을 ..
스택(Stack)스택은 한쪽 끝에서만 데이터를 넣고 뺄 수 있는 자료구조이다. 다시 말해 후입선출(LIFO, Last-In-First-Out) 구조로, 왼쪽 그림과 같이 가장 마지막에 들어간 데이터가 가장 먼저 나오는 자료구조이다. 쌓아올려진 팬케이크를 생각하면 쉽다. 가장 위에 있는 팬케이크 먼저 없어질 것이다. 이 외에도 웹 페이지에서 뒤로가기 버튼을 눌렀을 때, 문서를 작성하다가 Ctrl+Z를 눌렀을 때 등 스택이 활용되는 상황이 많다. 스택에서 데이터가 추가/제거되는 곳을 top이라고 한다.스택 메서드 Object pop() : 맨 위에 저장된 객체를 꺼내서 반환한다. Object push(Object item) : 새로운 객체를 맨 위에 저장한다. Object peek() : 맨 위에 있는 데이..
하드 드라이브에 보관되어있던 프로그램을 실행시키면 프로그램이 메모리에 올라온다. 이때 프로그램은 실행 중인 프로그램, 즉 프로세스가 된다. 이렇게 메모리에 올라온 프로세스를 CPU에서 가져다가 사용하는 것이다. 다시 말하자면, 프로세스들이 메모리에 저장되어있다가 하나씩 CPU로 가서 실행된다는 것이다. 이때, 어떤 프로세스에 CPU와 메모리를 할당할지 결정해주는 것이 스케줄러의 역할이다. 스케줄러의 종류에는 장기 스케줄러, 단기 스케줄러, 중기 스케줄러 3가지가 있다. 장기 스케줄러(Long-term Scheduler) = 작업 스케줄러(Job Scheduler) 디스크와 메모리 사이의 스케줄링을 관리함. 현대 운영체제에서는 장기 스케줄러 없이 바로 준비큐에 넣어줌. 어떤 프로세스를 준비큐에 삽입할지 결..