본문 바로가기

Boaz/Computer Science17

[CS 전공지식 #17] 챕터5. 자료 구조 목차5.1 복잡도5.2 선형 자료 구조5.3 비선형 자료 구조 챕터5. 자료 구조자료구조 data structure: 효율적으로 데이터를 관리, 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합본 책 C++ 기반으로 자료 구조 설명 예정 5.1 복잡도복잡도: 시간 복잡도, 공간 복잡도 5.1.1 시간 복잡도시간 복잡도: 문제를 해결하는 데 걸리는 시간과 입력의 함수 관계빅오 표기법:입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내느 것가장 영향을 많이 끼치는 항의 상수 인자를 빼고 나머지 항을 없앤 것$10n^2+n$ → $O(n^2)$시간 복잡도의 존재 이유: 효율적인 코드로 개선하는 데 쓰이는 척도 5.1.2 공간 복잡도공간 복잡도: 프로그램을 실행시켰을 때 필요로 하는 자원 공간의 .. 2025. 4. 16.
[CS 전공지식 #16] 챕터4-6~7. 조인과 조인의 원리 목차4.6 조인의 종류4.7 조인의 원리4.7.1 중첩 루프 조인 NLJ, Nested Loop Join4.7.2 정렬 병합 조인4.7.3 해시 조인 챕터4. 데이터베이스 4.6 조인의 종류조인 join하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것MySQL에서는 JOIN이라는 쿼리, MongoDB에서는 lookup 이라는 쿼리로참고로, MongoDB 사용 시, lookup 최대한 사용 XMongoDB는 조인 연산에 대해 관계형 데이터베이스보다 성능이 떨어짐여러 테이블 조인하는 작업 많을 경우MongoDB보다는 관게형 데이터베이스 사용 필요조인의 종류: 내부 조인, 왼쪽 조인, 오른쪽 조인, 합집합 조인 4.6.1 내부 조인두 테이블 간에 교집합 4.6.2 왼쪽 조인테이블 .. 2025. 2. 24.
[CS 전공지식 #15] 챕터4-4~5. 데이터베이스의 종류와 인덱스 목차4.4 데이터베이스의 종류4.4.1 관계형 데이터베이스4.4.2 NoSQL 데이터베이스4.5 인덱스4.5.1 인덱스의 필요성4.5.2 B-트리4.5.3 인덱스 만드는 방법4.5.4 인덱스 최적화 기법 챕터4. 데이터베이스 4.4 데이터베이스의 종류 4.4.1 관계형 데이터베이스관계형 데이터베이스 RDBMS행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스SQL을 써서 조작. 각각의 제품에 특화시킨 SQL 사용MySQL대부분의 운영체제와 호환 가능, 가장 많이 사용되는 데이터베이스스토리지 엔진: 모듈식 아키텍처로 쉽게 교체 가능데이터 웨어하우징, 트랜잭션 처리, 고가용성 처리에 강점스토리지 엔진 위에는 커넥터 API 및 서비스 계층을 통해 MySQL 데이터베이스와 쉽게 상호작용 가능쿼리 캐.. 2025. 2. 24.
[CS 전공지식 #14] 챕터4-3. 트랜잭션과 무결정 목차4.3 트랜잭션과 무결정4.3.1 트랜잭션4.3.2 무결성 챕터4. 데이터베이스 4.3 트랜잭션과 무결정 4.3.1 트랜잭션트랜잭션데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위여러 개의 쿼리들을 하나로 묶는 단위특징: 원자성, 일관성, 독립성, 지속성 = ACID 특징원자성 atomicity트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징all or nothing예) 트랙잭션 커밋 → 문제 발생 → 롤백 → 그 이후에 모두 수행되지 않음을 보장트랜잭션 단위로 여러 로직들을 묶을 때 외부 API를 호출하는 것이 있으면 X커밋 commit:여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어트랜잭션 단위로 수행, 변경된 내용이 모두 영구적으로 저장되는 것커밋이 수행 .. 2025. 2. 24.
[CS 전공지식 #13] 챕터4-2. ERD와 정규화 과정 목차4.2 ERD와 정규화 과정4.2.1 ERD의 중요성4.2.2 예제로 배우는 ERD4.2.3 정규화 과정  챕터4. 데이터베이스 4.2 ERD와 정규화 과정ERD Entity Relationship Diagram데이터베이스를 구축할 때 가장 기초적인 뼈대 역할릴레이션 간의 관계를 정의한 것서비스 구축 시 가장 먼저 신경 써야 할 부분 4.2.1 ERD의 중요성ERD: 시스템의 요구 사항을 기반으로 작성ERD를 기반으로 데이터베이스 구축데이터베이스 구축 이후에도 디버깅 또는 비즈니스 프로세스 재설계 필요한 경우에 설계도 역할 담당관계형 구조로 표현할 수 있는 데이터 구성에 유용단점) 비정형 데이터 충분히 표현 불가 4.2.2 예제로 배우는 ERD영업 부서의 ERD영업 사원: 0~n명의 고객 관리고객: .. 2025. 2. 24.
[CS 전공지식 #12] 챕터4-1. 데이터베이스의 기본 목차4.1 데이터베이스의 기본4.1.1 엔티티4.1.2 릴레이션4.1.3 속성4.1.4 도메인4.1.5 필드와 레코드4.1.6 관계4.1.7 키 챕터4. 데이터베이스 4.1 데이터베이스의 기본데이터베이스 DB, DataBase일정한 규칙, 혹은 규약을 통해 구조화 되어 저장되는 데이터의 모음실시간 접근과 동시 공유 가능DBMS DataBase Management System해당 데이터베이스를 제어, 관리하는 통합 시스템특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등 수행 가능데이터베이스 위에 DBMS, 그 위에 응용 프로그램예) MySQL 이라는 DBMS, 그 위에 응용 프로그램에 속하는 Node.js 나 php 프로그램 4.1.1 엔티티엔티티 entity: 사람, 장소, 물건,.. 2025. 2. 24.
[CS 전공지식 #11] 챕터3-4. CPU 스케줄링 알고리즘 목차4. CPU 스케줄링 알고리즘3.4.1 비선점형 방식3.4.2 선점형 방식 챕터3. 운영체제 4. CPU 스케줄링 알고리즘CPU 스케줄러:CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당프로그램이 실행될 때, CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정 3.4.1 비선점형 방식프로세스가 스스로 CPU 소유권을 포기하는 방식강제로 프로세스 중지 x→ 컨텍스트 스위칭으로 인한 부하가 적음FCFS First Come, First Served:가장 먼저 온 것을 가장 먼저 처리하는 알고리즘단점) 길게 수행되는 프로세스 → 준비 큐에서 오래 기다리는 현상 발생SJF Shortest Job First실행 시간이 가장 짧은 프로세스를 가장 먼저.. 2025. 2. 17.
[CS 전공지식 #10] 챕터3-3. 프로세스와 스레드 목차3. 프로세스와 스레드3.3.1 프로세스와 컴파일 과정3.3.2 프로세스의 상태3.3.3 프로세스의 메모리 구조3.3.4 PCB Process Control Block3.3.5 멀티프로세싱3.3.6 스레드와 멀티스레딩3.3.7 공유 자원과 임계 영역3.3.8 교착 상태 챕터3. 운영체제 3. 프로세스와 스레드프로세스 process: 컴퓨터에서 실행되고 있는 프로그램CPU 스케줄링의 대상이 되는 작업 TASK이라는 용어와 거의 같은 의미스레드는 프로세스 내 작업의 흐름 지칭 3.3.1 프로세스와 컴파일 과정프로세스: 프로그램이 메모리에 올라가 인스턴스화된 것예)프로그램: 구글 크롬 프로그램 exe 와 같은 실행 파일프로세스: exe를 두 번 클릭하면 프로세스로 변환됨프로그램을 만드는 과정은 언어마다 상.. 2025. 2. 17.
[CS 전공지식 #9] 챕터3-2. 메모리 목차2. 메모리3.2.1 메모리 계층3.2.2 메모리 관리  챕터3. 운영체제 2. 메모리CPU는 “메모리”에 올라와있는 프로그램의 명령어들을 실행메모리 계층과 메모리 관리 3.2.1 메모리 계층메모리 계층 구성레지스터: CPU 안에 있는 작은 메모리. 휘발성, 속도 가장 빠름, 기억 용량 가장 작음캐시: L1, L2 캐시. 휘발성, 속도 빠름, 기억 용량 적음 (L3 캐시도 있음)주기억장치: RAM. 휘발성, 속도 보통, 기억 용량 보통보조기억장치: HDD, SSD. 비휘발성, 속도 낮음, 기억 용량 많음RAM: 하드디스크로부터 일정량 데이터 복사, 임시 저장, 필요시 CPU에 빠르게 전달계층 위로 올라갈수록 가격 비싸짐. 용량 작아지고 속도 빨라지는 특징계층 존재 이유: 경제성, 캐시캐시 cache데.. 2025. 2. 17.
[CS 전공지식 #8] 챕터3-1. 운영체제와 컴퓨터 목차1. 운영체제와 컴퓨터3.1.1 운영체제의 역할과 구조3.1.2 컴퓨터의 요소  챕터3. 운영체제운영체제(OS, Operating System): 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스한정된 메모리나 시스템 자원을 효율적으로 분배cf) 펌웨어 firmware: 운영체제와 유사, 소프트웨어 추가 설치 불가 1. 운영체제와 컴퓨터하드웨어, 소프트웨어(유저 프로그램) 관리하는 운영체제, CPU, 메모리 등 3.1.1 운영체제의 역할과 구조운영체제의 역할 4가지CPU 스케줄링과 프로세스 관리메모리 관리디스크 파일 관리I/O 디바이스 관리운영체제의 구조유저 프로그램 → GUI → 시스템콜 → 커널 → 드라이버 → 하드웨어운영체제: GUI, 시스템콜, 커널, 드라이버 부분GUI 없고 CUI 만 있는 리.. 2025. 2. 17.
[CS 전공지식 #7] 챕터2-5. HTTP 목차5. HTTP2.5.1 HTTP/1.02.5.2 HTTP/1.12.5.3 HTTP/22.5.4 HTTPS2.5.5 HTTP/3  5. HTTPHTTP: 전송 계층 위에 있는 애플리케이션 계층, 웹 서비스 통신에 사용됨HTTP/1.0 ~ HTTP/3 2.5.1 HTTP/1.0한 연결당 하나의 요청을 처리하도록 설계됨→ RTT 증가 발생서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속 열어야 하기 때문RTT: 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간서버 부담 증가, 사용자 응답 시간 증가RTT 증가를 해결하기 위한 방법이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩 사용이미지 스플리팅: 많은 이미지를 다운로드받게 되면 과부하 → .. 2025. 2. 10.
[CS 전공지식 #6] 챕터2-4. IP 주소 목차4. IP 주소2.4.1 ARP2.4.2 홉바이홉 통신2.4.3 IP 주소 체계  챕터2. 네트워크 4. IP 주소인터넷 계층에 IP 주소 사용 2.4.1 ARP“ 컴퓨터와 컴퓨터 간의 통신: IP 주소 기반 통신”를 정확히 이야기 하자면→ IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신ARP (Address Resolution Protocol)IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환(반대로) RARP를 통해 실제 주소인 MAC 주소를 가상 주소인 IP주소로 변환(그림)장치 A가 ARP Request 브로드캐스트를 보내서 IP주소인 120.70.80.3에 해당.. 2025. 2. 9.
[CS 전공지식 #5] 챕터2-3. 네트워크 기기 목차3. 네트워크 기기2.3.1 네트워크 기기의 처리 범위2.3.2 애플리케이션 계층을 처리하는 기기2.3.3 인터넷 계층을 처리하는 기기2.3.4 데이터 링크 계층을 처리하는 기기2.3.5 물리 계층을 처리하는 기기   챕터2. 네트워크  3. 네트워크 기기네트워크는 여러 개의 네트워크 기기를 기반으로 구축됨  2.3.1 네트워크 기기의 처리 범위네트워크 기기는 계층별로 처리 범위 나눌 수 있음물리 계층 처리할 수 있는 기기, 데이터 링크 계층을 처리할 수 있는 기기 등상위 계층 처리하는 기기는 하위 계층 처리 가능하위 계층 처리하는 기기는 상위 계층 처리 불가애플리케이션 계층: L7 스위치인터넷 계층: 라우터, L3 스위치데이터 링크 계층: L2 스위치, 브리지물리 계층: NIC, 리피터, AP  2.. 2025. 2. 9.
[CS 전공지식 #4] 챕터2-2. TCP/IP 4계층 모델 목차2. TCP/IP 4계층 모델2.2.1 계층 구조2.2.2 PDU   챕터2. 네트워크 2. TCP/IP 4계층 모델인터넷 프로토콜 스위트 internet protocol suite인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명이 책에서는 4계층 모델을 중심으로 설명이 계층 모델은 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성됨  2.2.1 계층 구조TCP/IP 계층은 네 개의 계층을 가짐. OSI 7계층과 많이 비교함OSI 계층은애플리케이션 계층을 세 개로 쪼갬링크 계층을 데이터 링크 계층, 물리 계층으로 나눠서 표현인터넷 계층을 네트워크 계층으.. 2025. 2. 3.
[CS 전공지식 #3] 챕터2-1. 네트워크의 기초 목차1. 네트워크의 기초2.1.1 처리량과 지연 시간2.1.2 네트워크 토폴로지와 병목 현상2.1.3 네트워크 분류2.1.4 네트워크 성능 분석 명령어2.1.5 네트워크 프로토콜 표준화  챕터2. 네트워크네트워크: 컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어네트워크 기초, 네트워크 계층, 장치 등  1. 네트워크의 기초네트워크: 노드 node와 링크 link가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미노드: 서버, 라우터, 스위치 등 네트워크 장치를 의미링크: 유선 또는 무선   2.1.1 처리량과 지연 시간좋은 네트워크: 많은 처리량 처리 가능, 지연 시간이 짧고, 장애 빈도가 적고, 좋은 보안을 갖춘처리량 throughtput링크 내에서 성공적으.. 2025. 2. 3.
[CS 전공지식 #2] 챕터1-2. 프로그래밍 패러다임 목차2. 프로그래밍 패러다임2.1 선언형과 함수형 프로그래밍2.2 객체지향 프로그래밍2.3 절차형 프로그래밍2.4 패러다임의 혼합/a>  챕터1. 디자인 패턴과 프로그래밍 패러다임.  2. 프로그래밍 패러다임프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론예1) 객체 지향 프로그래밍프로그래머들이 프로그램을 상호 작용하는 객체들의 집합으로 볼 수 있게 함예2) 함수형 프로그래밍상태 값을 지니지 않는 함수 값들의 연속으로 생각할 수 있게 해줌언어에 따라 특정 패러다임을 지원하기도 함여러 패러다임을 지원하는 언어: C++, 파이썬, 자바스크립트자바의 경우,jdk 1.8 이전에는 객체지향 프로그래밍 지향 지원1.8부터는 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, .. 2025. 1. 27.
[CS 전공지식 #1] 챕터1-1. 디자인 패턴 목차1. 디자인 패턴1.1 싱글톤 패턴1.2. 팩토리 패턴1.3 전략 패턴1.4 옵저버 패턴1.5 프록시 패턴과 프록시 서버1.6 이터레이터 패턴1.7 노출모듈 패턴1.8 MVC 패턴1.9 MVP 패턴1.10 MVVM 패턴    챕터1. 디자인 패턴과 프로그래밍 패러다임.라이브러리 & 프레임워크: 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것라이브러리: 폴더명, 파일명 등에 대한 규칙 X, 프레임워크에 비해 자유로움프레임워크: 규칙 존재, 라이브러리에 비해 좀 더 엄격 1. 디자인 패턴디자인 패턴: 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용해 해결할 수 있도록 하나의 “규약”형태로 만들어 놓은 것을 의미  1.1 싱글톤 패턴싱글톤 패턴 singleton pattern.. 2025. 1. 27.