CS42 [자료구조] 헷갈리는 트리 종류 정리 이진 트리 (Binary Tree) 이진트리는 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료구조입니다. 이진트리에는 여러 종류가 있습니다. 정이진트리(Full binary tree), 포화이진트리(Perfect binary tree), 완전이진트리(Complete binary tree), 균형이진트리(Balanced binary tree), 이진 탐색 트리 (Binary Search Tree), 균형 이진 트리, AVL Tree 등이 있습니다. 이 중에서도 이진 탐색 트리, 균형 이진 트리, 균형 이진 탐색 트리, AVL Tree에 관해 알아보도록 하겠습니다. 이진 탐색 트리 (Binary Search Tree) 이진 트리 기반의 탐색을 위한 자료구조입니다. 특성으로는 모든 원소의 키는 유일.. CS/자료구조 2023. 10. 30. [OS] 동기와 비동기, 블록과 논블럭의 차이 오늘은 동기, 비동기 그리고 블록과 논블록의 차이점에 대해서 알아보도록 하겠습니다. 동기와 비동기의 차이 동기 (synchronous) 정의 요청에 대해 결과값을 기다렸다 처리하는 것을 말합니다. 여기서 요청이란 API, 함수에 대한 호출을 말합니다. 장점 설계가 매우 간단하고 직관적이다. 단점 결과가 주어질 때까지 기다려야 하므로, 여러 요청들을 빠르게 처리할 수 없다. 비동기 (asynchronous) 정의 요청의 결과값을 기다리지 않고 처리하는 것을 말합니다. 장점 요청을 보낸 직후, 바로 다른 작업을 수행할 수 있습니다. 단점 동기식보다 설계가 복잡합니다. 블록과 논블록의 차이 블록 (block) 특징 동기에서 파생된 개념입니다. 정의 동기로 처리될 때, 응답을 대기해야 합니다. 이 때, 쓰레드에.. CS/OS 2023. 10. 16. [GIT] .gitignore가 작동하지 않을 때 대처 방법 .gitignore에 제외하고 싶은 파일을 추가했음에도 반영되지 않는 경우가 있습니다.그럴 땐 .git에 남아있는 캐시 때문인데요, 캐시를 제거해주기 위해선 아래와 같이 입력해주면 됩니다.git rm -rf --cached .캐시를 제거하면 기존에 staging 영역에 있던 파일들이 unstaged 되므로, git add . 를 해줍니다.이상으로 글을 마치겠습니다. CS/Git 2023. 6. 23. [Architecture] (2) 시스템 요구사항의 종류 서론 이번 글에서는 시스템 요구사항 중 6가지 (성능, 확장성, 신뢰성, 보안, 배포, 기술 스택)에 대해 자세히 알아보겠습니다. Performance 먼저, Performance (성능)에 대해서 알아보겠습니다. 성능은 하드웨어 스펙과 작업량이 주어졌을 때, latency (대기 시간)을 최소화하고 throughput (처리량)을 최대화하는 것을 말합니다. 퍼포먼스 이슈의 원인은 요청이 쌓여서 응답이 느려지는 것이며, 이는 네트워크, db io, os run queue 등 다양한 요소에서 발생할 수 있습니다. 성능 측정 방법과 원칙 성능 측정 방법은 스펙과 작업량을 고정하는 것입니다. 성능을 향상시키기 위해서는 1) 효율성과 2) 동시성, 3) 성능, 4) 확장성의 원칙을 고려해야 합니다. 효율성은 리.. CS 2023. 6. 8. [Architecture] (1) 소프트웨어 아키텍처를 알아야 하는 이유 서론 오늘은 소프트웨어 아치텍처에 관해서 알아보도록 하겠습니다. 소프트웨어 아키텍처, 왜 배워야 할까? 여러분은 개발자와 소프트웨어 엔지니어의 차이를 아시나요? 저는 이 차이가 소프트웨어를 단순히, 개발하는 능력에만 국한되는 것이 아니라, 시스템 요구사항을 분석하고 개발할 수 있는 능력에서 온다고 생각합니다. 일반적으로 소프트웨어를 만들기 위해서는 기획 요구사항과 디자인에 대해 분석하고 개발합니다. 웹 프로그램을 만든다고 하면, 화면 설계에 맞게 UI와 페이지 디자인을 구현하고 DB ERD를 설계하고 백엔드 로직을 작성합니다. 개발은 이렇게 끝날 수 있습니다. 그렇지만 이렇게 한다고해서 시스템 요구사항을 만족시키느냐? 그렇지 않습니다. 대체, 시스템 요구사항이 뭔데? 시스템 요구사항이란 다음 6가지 기준.. CS 2023. 6. 8. [DataStructure] 자바스크립트로 구현하는 '트리' 자료구조 (1) 이진트리 트리 자료구조의 필요성 - 트리 자료구조는 결리스트의 검색 시, 노드의 처음부터 찾아가야하는 단점을 보완했음. 이진탐색의 장점을 활용함. 트리 자료구조 실생활 예시 - 회사나 정부의 조직도 - 나라, 지방, 시•군별, 계층적인 데이터의 저장 - 인덱스 - DOM Tree 이진트리의 조건 - 모든 노드는 왼쪽 가지에 포함되는 어떤 숫자보다도 큰 숫자가 된다. - 모든 노드는 그 노드의 오른쪽 가지에 포함되는 어떤 숫자보다 작은 숫자가 된다. 용어 - 노드 - 루트노드 : 가장 꼭대기 노드. - 노드 : 트리 구조에서의 기본 데이터 저장 단위. - 리프 노드 : 차수가 0인 노드, 즉 맨 끝에 달린 노드를 말함. - 관련 용어 - 차수 : 선택한 노드의 부속 트리의 개수를 말함. - 트리의 차수 : 전체 트.. CS/알고리즘 2020. 12. 2. [DataStructure] 자바스크립트로 구현하는 '연결리스트(Linkedlist)' 자료구조 리스트의 정의 특정한 순서로 배치된 일련의 항목 배열리스트의 장/단점 바로 바로 해당 요소에 접근할 수 있음. 요소의 삽입/삭제를 위해 상당한 수의 연산이 요구됨. 다시 인덱싱하기 위해, 메모리 상에서 위치를 재조정해줘야 함. 배열리스트보다 링크드리스트로 구현하면 좋은 상황 배열과 리스트로 본다면 삽입과 수정이 자주 이뤄지는 경우 (전화번호부, 성적 등등) 필요한 메소드 add ( ) remove ( ) search ( ) find ( ) 필요한 객체 Node 객체 next data Linkedlist 객체 head tail length index 코드 console.log("좋은 건 한번 더"); // 링크드리스트가 관리해야 할 정보는 this.head, this.tail, this.count func.. CS/알고리즘 2020. 11. 24. [DataStructure] 자바스크립트로 구현하는 '스택(Stack)' 자료구조 스택 자료구조로 구현된 것들 웹 브라우저의 방문기록 : 가장 나중에 열린 페이지부터 보여준다. 역순 문자열 만들기 : 가장 나중에 입력된 문자부터 출력한다. 실행 취소 : 가장 나중에 실행된 것부터 실행을 취소한다. 이처럼 평소에 우리가 자주 쓰는 기능들 중 스택 자료구조를 이용하는 것들이 꽤나 많다. 그래서 오늘은 스택 자료구조를 직접 구현해볼 것이다. 상태 표시 top ( ) : 스택의 마지막 요소가 나타내준다. empty ( ) : 스택이 비었다면 1을 반환하고 그렇지 않다면 0을 반환한다. 필요한 메소드 pop ( ) : 스택 가장 마지막 요소를 뺀다. push ( ) : 가장 마지막에 요소를 추가한다. 배열 기반으로 구현하기 console.log("손쉬운 방법으로 스택 자료구조를 구현해봅시다.".. CS/알고리즘 2020. 11. 23. (TIR+4) ③ 브라우저는 OS의 프로토콜 스택에 메시지 송신을 의뢰한다 지난 시간에는 DNS 서버와의 통신을 통해, URL에 숨겨져 있는 웹 서버의 IP 주소를 알아내는 것까지 알아보았다. 이번에는 브라우저가 OS 내부에 존재하는 프로토콜 스택에 의뢰하는 과정과 실제 내부 동작에 대하여 살펴볼 예정이다. 이미 프로토콜 스택에 대해서는 다룬 바 있다. 위의 그림을 참조하여 보면, 이미 웹 브라우저는 HTTP를 통해 전송될 HTTP Request 메세지는 작성한 상태이므로 5번 Layer를 지난 상태이다. 그러나 데이터가 실제로 전송되기 위해선, OS 내부의 네트워크 제어용 소프트웨어(프로토콜 스택, 4번&3번&2번 Layer)와 네트워크용 하드웨어(LAN 어댑터, 1번 Layer)가 브라우저에서 받은 메시지를 서버에 송출하여야 한다. 이를 위해 브라우저는 프로토콜 스택에 메시.. CS/Network 2020. 11. 18. [Network] 프로토콜 스택이란 무엇인가? 네트워크에 대한 설명을 할 때, 빠지지 않는 것이 있다면 'OSI(Open System Interconnection) 7계층 참조 모델'과 'TCP/IP Protocol'입니다. 둘 다 계층형 구조로 네트워크를 설명한다는 공통점이 있지만, TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지 않습니다. OSI 표준 모델은 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면, 실질적인 통신을 설명할 땐 TCP/IP 모델을 주로 사용하곤 합니다. 그 중 오늘은 프로토콜 스택에 대해서 알아보겠습니다. 프로토콜 스택이란 데이터 통신에 활용되는 프로토콜의 구조에 관한 개념으로, 계층화된 구조(스택 구조)로 모여 있는 프로토콜의 집합을 의미합니다. 프토토콜 슈.. CS 2020. 11. 17. (TIR+3) ② OS에 HTTP 메시지를 송신하기 위해 웹 서버의 IP 주소를 DNS 서버에 조회한다 지난 시간에는 URL에 관하여 알아보았다. 이번 시간에는 브라우저가 URL을 해독하는 방법에 관하여 알아보도록 하자. ⅰ. 브라우저는 웹 서버에 보내는 메시지를 작성하기 위해 URL을 해독한다. ⅱ. 브라우저는 OS에 HTTP 메시지를 송신하기 위해 웹 서버의 IP 주소를 DNS 서버에 조회한다. ⅲ. 브라우저는 OS의 프로토콜 스택에 메시지 송신을 의뢰하며, ⅳ. OS는 데이터의 송/수신 동작을 실행함으로써, 브라우저에게 수신한 정보를 전달한다. 그리고 URL을 통해 원하는 웹 사이트의 정보를 열람할 수 있는 까닭은 다음과 같다고 이야기했다. 웹 클라이언트인 웹 브라우저는 웹 서버로부터 정보(html, css, javascript 파일들)를 받아와, 화면에 해당 정보들을 표시해준다. 이 때 사용되는 네.. CS/Network 2020. 11. 16. [Network] 인터넷과 음성통화 그리고 웹 우리는 일상 속에서 인터넷과 웹을 거의 구분하지 않고 생활하는 것 같다. 웹서핑을 할 때, 흔히 "인터넷을 한다"고 이야기하는 걸 보면 말이다. 오늘 그 차이에 대해서 구분짓고 넘어가보자. 인터넷과 음성통화 먼저 인터넷을 알기 위해서는 네트워크에 대하여 알아야한다. 네트워크란 흔히 컴퓨터 네트워크를 말하며, 이는 여러 컴퓨터가 각각 클라이언트와 서버로써 서로 연결되어 구성된 망을 말한다. 인터넷은 이러한 컴퓨터 네트워크가 전 세계적인 규모로 수없이 많이 모여서 이루어진 일종의 컴퓨터 네트워크 시스템이다. 즉, 인터넷이란 수많은 클라이언트 컴퓨터와 서버 컴퓨터, 그리고 이들로 구성된 네트워크들의 집합체이다. 네트워크의 원리는 전화와 같은 무선통신의 원리를 따져보면, 간단하다. 음성통화에서의 통신 방식 발신.. CS/기타 2020. 11. 11. 이전 1 2 3 4 다음 반응형