본문 바로가기

Computer Science10

[Network] HTTP OSI 7계층의 7계층인 응용계층에서 HTTP, HTTPS 프로토콜을 통해 통신을 한다. 그렇다면 한번쯤은 들어봤을 이 프로토콜에 대해서 알아보자! HTTP 란? Hyper Text Transfer Protocol의 약자로, 웹 브라우저와 웹 서버가 HTML로 작성된 웹 페이지나 동영상, 음성 파일 등등을 주고받기 위한 프로토콜(통신규약)이다. 즉, 서버/클라이언트 모델을 따른다. HTTP 통신 - 메시지 HTTP 메시지는 서버와 클라이언트 간에 통신 규약(HTTP)에 맞게 데이터가 교환되는 방식을 뜻한다. 메시지 타입은 두 가지가 있다. 요청(request)는 클라이언트가 서버에 요청 메시지를 보내는 것 응답(response)는 요청에 대한 서버의 답변 즉, 클라이언트가 서버에 요청 메시지를 보내고, .. 2021. 6. 22.
[Network] 웹페이지가 사용자에게 보여지는 과정 (feat. Google) 이전 글에서 네트워크 통신에 대해 공부했었다. 그리고 TCP/IP 프로토콜을 기반으로 인터넷이 통신하는 것까지! 아래 사진은 우리가 브라우저(크롬)에서 들어가고 싶은 웹 사이트가 있을 때 검색해서 그 사이트가 눈 앞에 보이기까지의 과정을 간략하게 그림으로 나타낸 것이다. 과정에 대해서, 추가로 관련 용어와 개념까지 자세히 알아보자! URL 입력 브라우저(크롬 ,사파리 등) 주소표시줄에 URL을 입력하고 Enter를 클릭한다. 혹은 링크를 클릭하면 주소창에 입력된다. URL 처리 웹 브라우저가 URL을 해석한다. URL의 구조 https://www.example.com:80/path/to/myfile.html ?key1=value1&key2=value2#SomewhereInTheDocument https .. 2021. 6. 14.
[Network] 네트워크 통신 컴퓨터를 이용하면서 네트워크란 말을 한 번도 들어본적이 없는 사람은 없을 것이다?! 우리는 이 네트워크를 통해 파일공유, 미디어 스트리밍, 게임 등 데이터를 주고 받는 다양한 것들을 할 수 있다. 모든 종류의 작업을 가능하게 하는 이러한 장점이 존재하는 반면 바이러스, 악성코드, 해킹과 같은 보안상의 문제라는 단점 또한 존재한다. 그렇기에 네트워크에 대해 좀 더 알아보는 시간을 가지려고 한다! 네트워크(Network)란? 분산되어 있는 컴퓨터들을 자원이나 정보를 공유하기 위하여 통신망으로 연결한 것을 의미 네트워크 정의에 대해 컴퓨터들을 연결한 것이라고 했는데, 컴퓨터 뿐만 아니라 휴대폰, IoT, 프린터 등 여러 기기들을 연결하여 사용하는 것도 네트워크다. 왜 연결하여 사용하는 것일까? 바로 통신 즉,.. 2021. 6. 14.
[OS] 프로그램, 프로세스, 스레드 운영체제(OS)란? 이전에 운영체제가 하는 일을 잠시 알아봤다. 그 중 하나는 시스템 자원 관리를 하는 것이었는데, 이에 대해 알아보자. 우리는 컴퓨터를 사용하면서 프로그램을 실행시킨다고 한다. 이 프로그램은 사용자가 원하는 일을 처리할 수 있도록 미리 명령어(코드)와 데이터들을 종합해 놓은 묶음 즉, 실행파일이다. 이를 컴퓨터(보조기억장치 - 하드디스크,SSD)에 미리 저장해 놓는다. 예를 들면 파워포인트, 게임, 워드 등이 있다. 그렇다면 우리가 컴퓨터를 켰을 때 알아서 켜지고 작동하는가? 를 생각해보면 아니다. 우리는 실행시키기 위해 더블클릭을 한다. 우리가 더블 클릭을 하면 이때 운영체제가 클릭한 프로그램에 메모리, CPU를 할당해준다. 그러면 우리는 원하는 행동을 할 수 있다. ppt를 만들거나.. 2021. 6. 3.
[OS] 운영체제(OS)란? 지금까지 컴퓨터를 사용하면서 어떻게 상호작용?이 일어났는지 한번도 생각해본 적이 없었던 것 같다. 그저 키보드를 입력하면 입력이 되었구나~, 더블클릭하면 파일이 열리겠구나~ 하고 넘어갔다. 그런데 앞으로 개발자라는 직업을 가지면서 컴퓨터에 대해 기초적인 지식들을 모른다면 내가 원하던 개발자 상?은 아닐거란 확신이 들게 되었다. 그래서 오늘부터 차근차근 공부를 해보려고 한다! 운영체제(OS)란 ? 일반적으로 하드웨어를 관리하고, 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어로 정의할 수 있다. 즉, 운영체제는 시스템의 자원과 동작을 관리하는 소프트웨어다. * 인터페이스(interface) - 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템 쉽게 한.. 2021. 6. 3.
[Algorithm] 반복문(iteration) vs 재귀(recursion) 지금까지 반복적인 작업이 필요한 알고리즘 문제들(거의 필연적인..?)을 풀면서 일반 반복문(while, for)이나 재귀함수를 번갈아가며 사용했었다. 하지만 코드나 접근방식에 오류가 생겼을 때, 발생하는 현상은 달랐다. 일반 반복문은 시간 초과(무한 루프), 재귀함수는 stack overflow가 발생했다. 재귀함수의 경우 stack이라는 메모리 공간을 계속 이용하기 때문에 메모리의 제한이 있는 한 stack overflow가 뜨면서 메모리가 터진다고 한다. 반복문의 경우에는 메모리를 이런식으로 사용하지 않아 단지, 프로그램이 종료되지 않을 뿐이다. 그렇다면 재귀함수의 경우 반복문에 비해 메모리를 많이 사용한다는 확연한 단점을 가지고 있는데 왜 자주 사용하게 될까? (사실 나 또한 while이 어색해서 .. 2021. 6. 1.
Graph (그래프) ✅ Graph (그래프)란? 노드(node)와 간선(edge)으로 이루어진 자료 구조 Graph 종류 그래프는 방향성에 따라 무방향 그래프(Undirected Graph), 방향 그래프(Directed Graph)로 나눌 수 있다. 1. 무방향 그래프 (Undirected Graph) 간선을 통해서 양 방향으로 갈 수 있다. 정점 A와 정점B를 연결하는 간선은 (A, B)와 같이 정점의 쌍으로 표현한다. (A, B) = (B, A) 동일 2. 방향 그래프 (Directed Graph) 간선에 방향성이 존재한다. A ➡ B로만 갈 수 있는 간선은 로 표현한다. 는 와 다름 Graph 용어 노드(node) 위치라는 개념 (node라고도 부름) 간선(edge) 위치 간의 관계 즉, 노드를 연결하는 선 인접 정.. 2021. 1. 24.
Hash Table (해시 테이블) ✅ Hash Table (해시 테이블)란? 해시 테이블은 Key-Value로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조다. 해시 테이블이 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블은 각각의 Key에 해시함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용해 값을 저장하거나 검색하게 된다. 해시 테이블(hash table) key-value를 넣으면 해시함수를 거쳐 인덱스로 변환 후 저장하는 자료구조 해시함수(hash function) key를 (저장소의) index로 바꾸는 함수 해싱(hashing) 해시함수를 통해 key를 index로 바꾸는 작업 해시값(hash value) inde.. 2021. 1. 23.
Linked List (연결 리스트) ✅ Linked List (연결 리스트)란? 각 노드가 데이터와 링크를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조 노드 Data : 값을 저장 Link : 다음 주소를 가리키는 공간 위 그림과 같이 노드는 Data를 저장하는 공간과 다음 주소를 가리키는 공간이 필요하다. 사용자가 입력하는 정보를 Data공간에 담고 노드가 추가될 때마다 Link를 통해 다음 노드와 연결하는 것이다! 좀더 자세히 알아보자! Linked List(연결리스트)는 노드로 연결되어있다고 했다. 하지만 각 노드는 연속된 공간에 저장되어 있지 않고 메모리의 여러 부분에 분포되어 있다. 그래서 각 노드에 다음 노드의 주소를 저장함으로써 다음 노드를 탐색할 수 있다. (예를 들면 전화를 하면 각 부서로 연결해주는.. 2021. 1. 22.
Stack&Queue ✅ 자료 구조(Data Structure)란? 자료 구조 자료(Data)의 집합을 의미 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 정의 목적 자료를 더 효율적으로 저장하고, 관리하기 위해 사용 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 용량의 절약을 이끌어 낼 수 있다. ✅ 스택(Stack)이란? 스택(stack)이란 간단하게 말해 쌓아올린다는 것을 의미한다. 따라서 스택 자료구조는 쌓아 올린 형태의 자료구조를 뜻한다. 특징 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. 즉, 자료가 들어오고 나갈 수 있는 곳이 한 곳이고, 한 번에 하나의 데이터만 처리할 수 있다. 이를 LIFO(Last In, First Ou.. 2021. 1. 20.