[원티드_프리온보딩]3.컴퓨터공학 핵심개념 정리
컴퓨터공학 핵심개념 정리
객체지향 프로그래밍 (Object-Oriented Programming, OOP)
-
객체지향 프로그래밍(OOP): 프로그램을 객체라는 단위로 구성하여 소프트웨어를 설계하는 방법론입니다. 객체는 데이터와 그 데이터를 처리하는 함수를 하나의 단위로 묶은 것입니다.
- 주요 개념:
- 클래스(Class): 객체를 생성하기 위한 청사진으로, 속성과 메서드를 정의합니다.
- 객체(Object): 클래스의 인스턴스로, 실제로 메모리에 할당된 구조입니다.
- 상속(Inheritance): 기존 클래스를 확장하여 새로운 클래스를 생성하는 기능으로, 코드 재사용성을 높입니다.
- 다형성(Polymorphism): 동일한 인터페이스나 메서드를 통해 다른 동작을 수행할 수 있는 기능입니다.
- 캡슐화(Encapsulation): 객체의 속성과 메서드를 하나로 묶고, 외부에서 접근을 제한하여 데이터 보호를 강화합니다.
- 주요 개념:
관계형 데이터베이스 (RDBMS)와 SQL
-
관계형 데이터베이스(RDBMS): 데이터를 테이블 형식으로 저장하며, 데이터 간의 관계를 설정하여 효율적으로 관리합니다. 각 테이블은 고유한 키를 가지고 있으며, 이를 통해 다른 테이블과의 관계를 정의합니다.
-
SQL (Structured Query Language): 데이터베이스 관리 및 조작을 위한 표준화된 언어로, 데이터를 삽입, 삭제, 수정, 조회하는 다양한 명령어를 제공합니다.
- 기본 SQL 명령어:
- SELECT: 데이터 조회
- INSERT: 데이터 삽입
- UPDATE: 데이터 수정
- DELETE: 데이터 삭제
- 기본 SQL 명령어:
REST API
-
REST(Representational State Transfer): 웹 상에서 클라이언트와 서버 간의 자원을 교환하기 위한 아키텍처 스타일로, HTTP 프로토콜을 기반으로 합니다.
- HTTP 메서드:
- GET: 데이터 조회
- POST: 데이터 생성
- PUT: 데이터 수정
- DELETE: 데이터 삭제
- 특징:
- 무상태성(Stateless): 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다.
- 자원(Resource): URL을 통해 자원을 식별하며, 메서드를 통해 자원에 대한 작업을 수행합니다.
- HTTP 메서드:
기본 자료구조
- 배열(Array): 동일한 데이터 타입의 요소들을 연속적으로 저장하는 자료구조입니다.
- 링크드 리스트(Linked List): 노드가 포인터로 연결된 형태로, 요소들이 비연속적으로 저장되는 자료구조입니다.
- 스택(Stack): LIFO(Last In First Out) 방식으로 작동하는 자료구조로, 가장 최근에 추가된 요소가 먼저 제거됩니다.
- 큐(Queue): FIFO(First In First Out) 방식으로 작동하는 자료구조로, 가장 먼저 추가된 요소가 먼저 제거됩니다.
- 해시 테이블(Hash Table): 키-값 쌍을 저장하며, 해시 함수를 통해 데이터에 빠르게 접근할 수 있습니다.
- 트리(Tree): 계층적인 구조로 데이터를 저장하는 자료구조로, 각 노드가 자식 노드를 가질 수 있습니다.
- 그래프(Graph): 정점과 간선으로 이루어진 구조로, 정점 간의 관계를 표현합니다.
기본 알고리즘
- 정렬 알고리즘: 데이터를 특정 순서로 정렬하는 알고리즘으로, 버블 정렬, 퀵 정렬, 합병 정렬 등이 있습니다.
- 탐색 알고리즘: 데이터 내에서 특정 값을 찾는 알고리즘으로, 이진 탐색, 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS) 등이 있습니다.
- 동적 프로그래밍(Dynamic Programming): 문제를 하위 문제로 분할하여 해결한 결과를 저장하고 재사용하는 기법으로, 피보나치 수열, 최적 경로 문제 등에 사용됩니다.
GitHub
-
GitHub: 소프트웨어 개발 및 협업을 위한 플랫폼으로, Git 버전 관리 시스템을 기반으로 합니다.
- 주요 기능:
- 리포지토리(Repository): 프로젝트 파일과 변경 내역을 저장하는 공간
- 커밋(Commit): 파일의 변경 내역을 기록하는 단위
- 브랜치(Branch): 독립적인 작업 흐름을 나타내는 포인터
- 풀 리퀘스트(Pull Request): 변경 사항을 병합 요청하는 기능
- 기본 명령어:
- git clone: 원격 리포지토리를 로컬로 복사
- git init: 새로운 로컬 리포지토리 생성
- git add: 변경된 파일을 스테이징 영역에 추가
- git commit: 스테이징 영역의 변경 사항을 커밋
- git pull: 원격 리포지토리의 변경 사항을 로컬로 가져옴
- git push: 로컬 리포지토리의 변경 사항을 원격에 업로드
- 주요 기능:
컴퓨터 구조
-
CPU (Central Processing Unit): 컴퓨터의 중앙 처리 장치로, 명령어 해석 및 연산을 수행합니다. 구성 요소로는 산술논리장치(ALU), 제어장치(CU), 레지스터 등이 있습니다.
- 메모리 계층 구조:
- 캐시(Cache): CPU에 가장 가까운 메모리로, 데이터 접근 속도를 향상시키기 위해 사용됩니다.
- 주 메모리(Main Memory): 실행 중인 프로그램과 데이터를 저장하는 RAM입니다.
- 보조 기억 장치: 하드디스크(HDD)나 SSD와 같은 장기 저장 장치입니다.
-
파이프라이닝(Pipelining): 명령어를 여러 단계로 나누어 병렬로 처리하여 CPU의 효율을 높이는 기술입니다.
-
슈퍼스칼라 아키텍처: 여러 명령어를 동시에 실행할 수 있도록 설계된 CPU 구조입니다.
-
캐시 메모리: 데이터를 빠르게 접근하기 위해 사용하는 작은 크기의 고속 메모리입니다.
-
가상 메모리(Virtual Memory): 물리 메모리의 크기를 초과하는 데이터를 저장할 수 있도록 하는 메모리 관리 기법입니다.
-
인터럽트(Interrupt): 특정 이벤트가 발생했을 때 CPU의 실행 흐름을 변경하는 메커니즘입니다.
- DMA (Direct Memory Access): CPU의 개입 없이 메모리와 장치 간 데이터를 전송하는 방법입니다.
웹 서버
-
웹 서버(Web Server): 클라이언트(주로 웹 브라우저)로부터 HTTP 요청을 받아들여, 요청된 자원을 제공하거나 서버 측에서 처리한 결과를 응답으로 보내는 소프트웨어입니다.
-
HTTP (Hypertext Transfer Protocol): 웹 서버와 클라이언트 간에 데이터를 주고받기 위한 프로토콜입니다.
-
가상 호스팅(Virtual Hosting): 하나의 물리적 서버에서 여러 개의 웹사이트를 호스팅할 수 있는 기능으로, 도메인 기반과 IP 기반으로 나눌 수 있습니다.
-
리버스 프록시(Reverse Proxy): 클라이언트를 대신하여 서버의 리소스를 요청하는 프록시 서버입니다.
-
로드 밸런싱(Load Balancing): 여러 서버에 트래픽을 분산시켜 시스템의 효율성을 높이는 기술입니다.
-
HTTPS: HTTP에 SSL/TLS를 추가하여 보안을 강화한 프로토콜입니다.
-
캐싱(Caching): 데이터 접근 속도를 높이기 위해 데이터를 임시 저장하는 기법입니다.
클라우드 서비스
-
클라우드 컴퓨팅(Cloud Computing): 인터넷을 통해 IT 자원(서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어 등)을 제공하고 관리하는 서비스입니다.
-
IaaS (Infrastructure as a Service): 서버, 스토리지, 네트워크 등 기본적인 컴퓨팅 자원을 가상화하여 제공하는 서비스입니다. (예: AWS EC2, Google Compute Engine)
-
PaaS (Platform as a Service): 애플리케이션 개발에 필요한 플랫폼을 제공하는 서비스로, 인프라 관리를 하지 않고 개발에 집중할 수 있습니다. (예: AWS Elastic Beanstalk, Google App Engine)
-
SaaS (Software as a Service): 소프트웨어를 서비스 형태로 제공하는 방식으로, 사용자는 웹 브라우저를 통해 소프트웨어를 사용합니다. (예: Google Workspace, Microsoft Office 365)
-
가상화(Virtualization): 물리적 하드웨어를 여러 가상 인스턴스로 분할하여 독립적으로 운영하는 기술입니다. (예: VMware, Hyper
댓글남기기