본문 바로가기

전체 글

(115)
SPA(Single Page Application) - SPA (Single Page Application) : 단어를 그대로 해석하면 단일 페이지 어플리케이션이다. 서버로부터 새로운 페이지(HTML)를 불러오지 않고 현재의 페이지를 동적으로 다시 작성함으로써 사용자에게 더 나은 UX를 제공할 수 있다. SPA는 웹 앱에 필요한 모든 정적 리소스를 처음에 한번 다운로드한다. 페이지 간 이동 시, 페이지 갱신에 필요한 데이터만을 Json으로 전달받아 페이지를 갱신하므로 전체적인 트래픽을 감소할 수 있고, 전체 페이지를 다시 렌더링하지 않고 변경되는 부분만을 갱신하므로 새로고침이 발생하지 않는다. 위의 그림들을 보면 더 직관적으로 이해할 수 있을 것이다. - 장점 1. 자연스러운 사용자 경험(UX) : 전체 페이지를 업데이트할 필요가 없어서 깜빡거림이 안생긴..
Node.js - Node.js 1. 자바스크립트를 브라우저 밖에서도 실행시킬 수 있게 만든 자바스크립트 런타임(실행 환경) 2. Single Thread Non-Blocking Model 3. SIngle Thread지만 비동기 I/O 작업을 통해 요청들을 서로 Blocking 하지 않음 4. 동시에 많은 요청들을 비동기로 수행함으로써 Single Thread지만 Non-Blocking이 가능 5. 이벤트 기반으로 동작 - 이벤트 기반 : 이벤트가 발생할 때 미리 지정해둔 작업을 처리하는 방식, Node.js는 이벤트 리스너에 등록해둔 콜백 함수를 실행하는 방식으로 동작(이벤트 루프가 이를 가능하게 해줌) 6. Clustering을 통해 프로세스를 fork하여 Multi Thread 처럼 사용 가능하여 서버의 확정성..
Web browser 동작 과정 사용자가 크롬과 같은 웹 브라우저 주소창에 URL을 입력하면 이를 DNS로부터 IP 주소를 받은 뒤(어떻게 IP 주소를 받는지 보러가기), 웹서버를 통해 해당 IP의 화면에 보여줄 Data를 요청한다. 받은 Data를 이용하여 화면에 출력을 한다. 어떤 방식으로 Data를 처리하여 화면에 출력하는지 정리해보려고 한다. 우선 받은 Data(HTML, CSS, Img 등)는 웹 표준화 기구인 W3C의 명세에 따라 해석한다. - 용어 1. DOM (Document Object Model) : 파싱한 HTML 파일 내용과 구조를 자바스크립트가 이해할 수 있는 객체 행태로 변경한 것 2. CSSOM (Cascading Style Sheets Object Model) : 파싱한 CSS 정보를 객체 형태로 변경한 것..
힙(Heap) - 힙 (Heap) 이진 힙(binary Heap)이라고도 하며, 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전 이진트리(Complete Binary Tree)를 기본으로 한 자료 구조 오로지 부모 노드의 값과 자식 노드의 값 사이에는 대소관계가 성립한다. 형제 사이에는 대소관계는 의미 없음. 우선 순위 큐, 다익스트라 알고리즘 등에 사용 - 힙의 종류 1. 최대 힙 (Max Heap) : 부모 노드의 값이 자식 노드의 값보다 크거나 같은 힙, 가장 큰 값이 루트 노드에 있음 2. 최소 힙 (Min Heap) : 부모 노드의 값이 자식 노드의 값보다 작거나 같은 힙, 가장 작은 값이 루트 노드에 있음 - 힙 표현 : 일반적으로 배열로 표현, 개발 편의성과 가독성 때문에 배열 인덱스 1..
이진 탐색 트리(Binary Search Tree, BST) - 이진 탐색 트리 (Binary Search Tree) 정렬된 이진 트리로 다음과 같은 규칙을 갖는다. 1. 이진 탐색 트리의 노드에 저장된 값은 유일하다. 2. 부모의 값은 왼쪽 하위 트리 노드들의 값보다 항상 크다. 3. 부모의 값은 오른쪽 하위 트리 노드들의 값보다 항상 작다. 4. 왼쪽 및 오른쪽 하위 트리도 각각 이진 검색 트리여야 한다. BST의 검색에 대한 시간 복잡도는 균형 상태면 O(log n)의 시간이 걸리고 불균형 상태(편향 트리 Skewed Tree)라면 최대 O(n)의 시간이 걸린다. 이러한 문제를 막기 위해 Rebalancing 기법이 등장하였다. (ex. Red-Black Tree 등) - 이진 탐색 트리의 연산 1. 검색 : 이진 탐색 트리에서 특정 요소의 위치를 찾는다. ..
이진 트리(Binary Tree) - 이진 트리 (Binary Tree) 모든 노드들이 둘 이하(공집합 포함)의 자식을 가진 트리 - 이진 트리 유형 1. 전 이진트리 (Full Binary Tree or Strict Binary Tree) : 모든 노드가 0개 또는 2개의 자식 노드를 갖는 트리 2. 완전 이진 트리 (Complete Binary Tree) : 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있는 트리, 마지막 레벨은 꽉 차 있지 않아도 되지만 노드가 왼쪽에서 오른쪽으로 채워져야 함 3. 포화 이진 트리 (Perfect Binary Tree) : 모든 내부 노드가 두 개의 자식 노드를 가지며 모든 리프 노드가 동일한 깊이 또는 레벨을 갖음 4. 균형 이진 트리 (Balanced Binary Tree) : 왼쪽과 오른쪽..
트리(Tree) - 트리 (Tree) 계층적 관계를 표현하는 비선형 자료 구조, 연결된 비순환 무방향성 그래프 트리 내에 다른 하위 트리가 있고 그 하위 트리안에는 또 다른 하위 트리가 있는 재귀적 자료 구조 - 기본 용어 1. 노드 (Node) : 트리를 구성하고 있는 기본 요소, 키 또는 값과 하위 노드에 대한 포인터를 가지고 있음 2. 간선 (Edge) : 노드와 노드 간의 연결선 3. 루트 노드 (Root Node) : 트리 구조에서 부모가 없는 최상위 노드 4. 부모 노드 (Parent Node) : 자식 노드를 가진 노드 5. 자식 노드 (Child Node) : 부모 노드의 하위 노드 6. 형제 노드 (Sibling Node) : 같은 부모를 가지는 노드 7. 외부 노드 (External Node, Oute..
그래프(Graph) - 그래프 (Graph) 정점의 집합과 간선의 집합으로 구성된 비선형 데이터 구조 - 정점 : 자료를 저장하려는 자료의 단위 (= 노드) - 간선 : 정점 사이를 연결하는 선으로 두 정점 쌍(n1, n2)으로 표현 - 방향성(유향) 간선 (Directed edge) : 뱡향을 가진 정점의 쌍(u, v)으로 화살표로 표현하고 단방향을 가리킴 u는 출발점 v는 도착점을 의미. 방향성 간선을 가진 그래프를 방향성 그래프(Directed Graph)라고 함. - 무방향성(무향) 간선 (Undirected edge) : 방향이 없는 정점의 (u, v)으로 직선을 표현하며 양방향을 가리킴 간선 (u, v)와 (v, u)는 같다. 무방향성 간선을 가진 그래프를 무방향성 그래프(Undirected Graph)라고 함...

반응형