
새 책으로 새 스터디를 시작했다.이번 1회차에서는 <1장> 디자인 패턴과 프로그래밍 패러다임에 대해 공부해보자.디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것을

프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다.예를 들어 객체지향 프로그래밍은 프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 하는 반면에, 함수형 프로그래밍은 상태 값을 지니지 않는 함수 값들의

Chapter2 네트워크를 공부해보자.네트워크란 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합을 말한다.여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미한다.네트워크를 구출할 때는 좋은 네트워크로 만드는 것이

인터넷 프로토콜 스위트(internet protocol suite)$\\rarr$ 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데 쓰이는 프로토콜의 집합.이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명하기도 한다.TCP/IP 계층은 네 개의 계층을

네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있다.그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다. 예를 들어 L7 스위치는 애플리케이션 계

컴퓨터와 컴퓨터 간의 통신은 IP 주소에서 ARP를 통해 MAC 주소를 기반으로 통신한다.ARP란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜이다.ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환한다.이와

HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었다. 이는 RTT의 증가를 불러오게 된다.서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점이 있다.RTT : 패킷이 목적지에 도달하고

CS 스터디 3주차 Chapter 3 운영체제를 공부해보자.CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에서 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다.메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관

메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다.레지스터 : CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적다.캐시 : L1, L2 캐시를 지칭한다. 휘발성, 속도 빠름 기억 용량이 적다. L3 캐시도 있다.주기억장치

프로세스는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰인다. 스레드는 프로세스 내 작업의 흐름을 지칭한다.프로세스는 프로그램이 메모리에 올라가 인스턴스화된 것을 말한다. 프로그램을 만드는 과정은 만드는

CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당한다.프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 이 알고리즘은 CPU 이용률은 높게, 주어진 시간에 많

데이터베이스는 일정한 규칙 혹은 규약을 통해 구조화되어 저장되는 데이터 모음이다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할

ERD(Entity Relationship Diagram)는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것이다. 만약 서비스를 구축한다면 가장 먼저 신경 써야 할 부분이다.시스템의 요구 사항을 기반으로 작성됨디버깅 또는 재

4.3 트랜잭션과 무결성 4.3.1 트랜잭션 트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며 데이터베이스에 접근하는 방법은 쿼리이므로, 즉 여러 개의 쿼리들을 하나로 묶는 단위를 말한다. ACID 특징을 가짐 : 원자성, 일관

관계형 데이터베이스는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리키며 SQL 이라는 언어를 써서 조작한다. MySQL, PostgreSQL, 오라클, SQL Server 등이 있다. MySQL은 대부분의 운영체제와 호환되며 현재 가장 많이 사

인덱스란 데이터를 빠르게 찾을 수 있는 하나의 장치를 말한다. - 마치 책의 마지막 장의 '찾아보기'인덱스는 보통 B-트리라는 자료 구조로 이루어져 있다.이는 루트 노드, 리프 노드, 루트 노드와 리프 노드 사이의 브랜치 노드로 나뉜다.인덱스가 효율적인 이유는 효율적

조인은 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것이다.MySQL : JOIN 쿼리MongoDB : lookup 쿼리MongoDB의 lookup 연산은 관계형 데이터베이스 조인 연산보다 성능이 떨어지므로, 여러 테이블을 조인하는 작업이 많을 경우 관계형 데

중첩 루프 조인 (NLJ, Nested Loop Join)이란, 중첩 for 문과 같은 원리로 조건에 맞는 조인을 하는 방법이다.랜덤 접근에 대한 비용이 많이 증가하므로 대용량의 테이블에서는 사용하지 않는다.중첩 루프 조인에서 발전한 블록 중첩 루프 조인(BNL, Bl

자료구조는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합을 말한다.문제를 해결하는 데 걸리는 시간과 입력의 함수 관계이다.어떠한 알고리즘의 로직이 얼마나 오랜 시간이 걸리는지를 나타내는 데 쓰인다.빅오 표기법으로 나타낸다.입력 범위 n을

선형 자료 구조란 요소가 일렬로 나열되어 있는 자료 구조를 말한다.연결 리스트란,데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료 구조이다.삽입과 삭제가 O(1)이 걸리며 탐색에는 O(n)이 걸린다.데이터의 삽입과 삭제가 빈번하게 일어나는 경우에

비선형 자료 구조란 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말한다. 일반적으로 트리나 그래프를 말한다.그래프는 정점과 간선으로 이루어진 자료구조를 말한다.정점(Vertex): 그래프에서 하나의 개체를 나타내는 점으로 표현한다.간선(Edge): 정점과 정