Linked Lists
해당 포스팅은 'Cracking the Coding Interview'를 읽으며 정리한 내용을 담은 포스팅으로 이론 내용 및 모든 문제의 출처는 'Cracking the Coding Interview'에 있습니다. 문제 자체에 대한 설명은 담고 있지 않으며 원문 파일은 GitHub 및 원문 책 사이트를 통해 다운로드하실 수 있습니다. 연결리스트 : 차례로 연결된 노드를 표현해주는 자료구조 단방향 연결리스트 : 개별 노드 :arrow_right: 다음 노드 양방향 연결리스트 : 개별 노드 :arrow_right: 다음 노드 & 이전 노드 ⭐️ 시작 지점에서의 아이템 추가 및 삭제 연산이 상수 시간 소요 1. Creating a Linked List 단방향 연결리스트 구현 코드 class Node { Nod..
2023.06.29
Arrays and Strings
해당 포스팅은 'Cracking the Coding Interview'를 읽으며 정리한 내용을 담은 포스팅으로 이론 내용 및 모든 문제의 출처는 'Cracking the Coding Interview'에 있습니다. 문제 자체에 대한 설명은 담고 있지 않으며 원문 파일은 GitHub 및 원문 책 사이트를 통해 다운로드하실 수 있습니다. 1. Hash Tables 해시테이블 : 효율적인 탐색을 위한 자료구조 키(key)를 값(value)에 대응한다. 간단한 해시테이블 구현 방법 연결리스트(linked list), 해시 코드 함수(hash code function) 해시테이블 데이터 삽입 과정 키의 해시 코드를 계산한다. 키의 자료형은 보통 int 혹은 long 이 된다. :arrow_right: 이는 서로 ..
2023.06.28
no image
Big-O Notation
해당 포스팅은 'Cracking the Coding Interview'를 읽으며 정리한 내용을 담은 포스팅으로 이론 내용 및 모든 문제의 출처는 'Cracking the Coding Interview'에 있습니다. 문제 자체에 대한 설명은 담고 있지 않으며 원문 파일은 GitHub 및 원문 책 사이트를 통해 다운로드하실 수 있습니다. 1. An Analogy 디스크에 있는 파일을 다른 지역에 살고 있는 친구에게 가능한 빨리 보내려고 한다고 가정해보자. 대부분의 사람들은 문제를 듣자마자 온라인 의 방식을 생각하곤 한다. But, 경우에 따라 맞을 수도 틀릴 수도 있다. 파일의 크기가 작다면 당연히 온라인을 통한 전송이 빠를 것이다. 그러나 파일의 크기가 아주 크다면 비행기를 통해 물리적으로 배달하는 게 더..
2023.06.26
no image
Chapter 11. Network Programming
11.1 The Client-Server Programming Model 서버-클라이언트 모델 서버 프로세스는 한 개 또는 여러 개의 클라이언트 프로세스로 구성된다. 서버 : 리소스 관리, 리소스 조작 → 클라이언트를 위한 서비스 제공 서버-클라이언트의 근본적인 연산은 ‘트랜잭션’이다. 아래와 같은 총 4가지 스텝으로 트랜잭션이 이루어진다. ⚠️ 클라이언트와 서버는 프로세스이며, 머신이나 호스트는 아니다. 11.2 Networks 클라이언트와 서버는 별도의 호스트에서 돌아가며, 컴퓨터 네트워크의 H/W 및 S/W를 사용해서 통신한다. 호스트에게 네트워크는 또 다른 I/O 디바이스 이다. I/O bus의 확장 슬롯에 어댑터가 꽂혀있으며, 네트워크에 물리적인 인터페이스를 제공한다. 네트워크에서 수신한 데이터..
2022.12.20
no image
Ch9. Dynamic Memory Allocation(9.9)
추가적인 가상메모리를 런타임에 획득할 필요가 있을 때 동적 메모리 할당을 사용한다. 편리성, 호환성 Intro. 동적 메모리 할당 malloc, garbage collector 힙(heap)을 관리한다. 프로세스의 가상메모리 영역 초기화되지않은 데이터 영역 직후에 시작해서 위쪽(낮은 주소에서 높은 주소로) 커지는 메모리 영역 각각의 프로세스에 대해서 커널은 힙의 꼭대기를 가리키는 변수 brk(break) 를 사용한다. 힙을 다양한 크기의 블록들의 집합으로 관리한다. 각 블록은 할당 or 가용한 가상메모리의 연속적인 묶음이다. 할당된 블록 : 응용하기 위해 명시적으로 보존된다. Ex. C의 malloc으로 동적 메모리가 할당된 상태 할당된 블록은 메모리 할당기에 자신에 의해 ‘명시적(..
2022.12.06
no image
Ch1. A Tour of Computer Systems(1.7 ~ 1.9)
1-7. The Operating System Manages the Hardware 운영체제 : 하드웨어와 소프트웨어 사이에 위치한 소프트웨어 계층 응용 프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해야한다. 운영체제의 목적 응용프로그램들이 하드웨어를 잘못 사용하는 것 방지 응용프로그램이 저수준의 하드웨어 장치를 효율적으로 조작할 수 있도록 함 운영체제의 추상화 운영체제의 목적을 추상화(abstraction)를 통해 달성한다. 파일 : 입출력 장치의 추상화 가상메모리 : 메인 메모리와 디스크 입출력 장치의 추상화 프로세스 : 프로세서, 메인 메모리, 입출력 장치 모두의 추상화 결과 💡 운영체제에서의 추상화(Abstraction)? 정의하고자 하는 대상의 디테일, 자세하고 사소한 특징들을 숨기고 주..
2022.12.06
no image
Ch1. A Tour of Computer Systems(1.1 ~ 1.6)
프로그램 실행 이전에 어떤 일이 일어나는 가를 탐구 1-1. Information is bits + Context 소스 프로그램 : 비트들의 연속, 8 비트라 불리는 바이트로 구성되어 있다. 대부분의 컴퓨터 시스템에서는 바이트 표준으로 텍스트 문자를 표현한다. hello.c 프로그램은 일련의 byte로 저장이된다. (Figure 1.2) 각 바이트는 일부 문자와 해당하는 정수 값을 의미한다. 이후 \n 개행 문자에 의해 줄 바꿈이 일어난다. ASCII 문자로 구성된 파일을 텍스트 파일이라고 한다. 그 외에 다른 모든 파일들은 바이너리 파일이다. 시스템의 모든 정보는 모두 비트 묶음으로 표시된다. 동일한 바이트 시퀀스더라도 정수형, 실수형, 문자열, 기계어로 나타낼 수 있다. 프로그램 실행시, 각 문자열을..
2022.11.03
no image
[OS/공룡책] Ch1. Introduction
Overview 운영체제 : 컴퓨터 사용자와 하드웨어간의 중개자 역할을 수행 목적 : 사용자가 편리하고 효율적으로 프로그램을 실행할 수 있는 환경 제공 컴퓨터 하드웨어를 관리하는 소프트웨어 Why study operating system? 대부분의 코드가 운영 체제 위에서 실행되기 때문에 운영 체제의 작동 방식에 대한 지식은 적절하고 효율적이며 효과적인 보안 프로그래밍에 매우 중요하다! 1. What Operating Systems Do 컴퓨터 시스템 하드웨어(hardware) : 시스템의 기본 컴퓨팅 리소스 제공 운영체제(operating system) : 하드웨어 제어와 응용 프로그램 간의 하드웨어 사용 조정 운영체제는 다른 프로그램이 유용한 작업을 수행할 수 있는 환경을 제공한다. 응용 프로그램(a..
2022.07.27
no image
[TCP/IP] 라우팅
라우팅 최적의 경로를 선택하고 선택된 경로를 따라 패킷을 전달하는 과정 AS(Autonomous System) : 동일한 관리 도메인에 속하는 네트워크나 라우터의 집합 관리의 용이성과 효율성을 위함 내부 게이트웨이 프로토콜 IGP(Interior Gateway Protocol) RIP(Routing Informaion Protocol) IGRP(Interior Gateway Routing Protocol) EIGRP(Enhanced Interior Gateway Routing Protocol) OSPF(Open Shortest Path First) 외부 게이트웨이 프로토콜 EGP(Exterior Gateway Protocol) BGP(Border Gateway Protocol) 라우팅 알고리즘 정적 라우..
2022.01.14