Tiny Star

📚 CS [ComputerScience] 11

Computer Science - 데이터베이스 기초

데이터베이스(Datavase) 체계적으로 구성된 데이터의 집합이며, 이 데이터들은 컴퓨터에서 쉽게 접근, 관리, 업데이트, 저장될 수 있도록 구성 데이터는 다양한 목적으로 사용되며, 조직이나 기업에서는 중요한 정보와 자료를 보관하고 관리하기 위해 사용됨 데이터베이스는 정보의 효율적 관리를 위해 일반적으로 컴퓨터 시스템 내에서 구축 데이터 베이스의 특징 · 구조화된 데이터 : 데이터베이스는 구조화된 형태로 저장되며, 데이터가 테이블, 열, 행 등의 구조로 구성되어 있어 정보를 쉽게 파악하고 처리가 가능 · 중복 최소화 : 여러 사용자가 동시에 데이터베이스에 접근하여 데이터를 공유하고, 필요한 정보를 동시에 처리가 가능 · 데이터의 공유 및 동시 접근 : 데이터베이스는 사용자의 권한에 따라 데이터 접근을 제..

Computer Science - 네트워크 기초 MAC 주소, IP 주소 및 주소체계, DHCP, NAT, HTTPS

· MAC 주소(Media Access Control) : 네트워크 인터페이스 카드(NIC)가 제조사에 의해 할당된 고유한 주소로 데이터 링크 계층에서 사용되며, 네트워크에서 장치들을 식별하는 역할 · IP 주소 및 주소체계 : 네트워크 상에서 장치들이 서로를 식별하기 위한 주소 IPv4/IPv6 두가지 종류가 있음 ✅ IPv4 : 32비트 주소 체계로 약 42억개의 주소를 제공하지만 인터넷 확장으로 주소 부족 문제가 발생 : 네트워크와 호스트 부분으로 나뉘고 클래스 기반 및 서브넷팅을 통해 관리 장점 : 보편성, 설치 및 유지보수가 쉬움, 호환성 단점 : 주소 부족, 보안이 취약함 ✅ IPv6 : 128비트 주소 체계로 약 340억 10^28개의 주소를 제공하며 급격한 인터넷 사용증가에 대비 : 종단간..

Computer Science - 네트워크 기초

· 네트워크 : 컴퓨터 및 기타 장치들 간에 데이터를 교환할 수 있게 하는 연결된 시스템 토폴로지(Topology) · 네트워크의 물리적인 구조 또는 논리적인 배치 스타 토폴로지 : 중앙에 허브 또는 스위치가 있고, 각 장치가 직접 연결 ✅ 허브 또는 스위치에 장애가 발생하면 전체 네트워크에 영향 버스 토폴로지 : 모든 장치가 하나의 중앙 통신 라인에 연결 ✅ 충돌이 발생할 수 있고, 단일 포인트 오브 실패(single point of failure)가 존재 링 토폴로지 : 각 장치가 정확히 두 개의 이웃에 연결된 구조 ✅ 한 장치의 장애가 전체 네트워크에 영향을 미칠 수 있 망 토폴로지 : 여러 개의 토폴로지를 조합하여 만든 복합 구조 ✅ 유연성이 높지만 관리가 복잡함 네트워크 분류 · LAN (Lac..

Computer Science - 선형 자료구조

자료구조 데이터를 효과적으로 저장하고 관리하기 위한 구조의집합 선형 자료구조 데이터가 일렬로나열되어 있는구조로 각 데이터는 바로 앞이나 뒤의 데이터와 관계를 맺고 있음 선형 자료구조의 특징 1. 순차적인 구조 : 선형 자료구조는 데이터가 순차적으로 저장되어 있음 2. 인덱스 또는 포인터 사용 : 각 요소에 접근하기 위해서 인덱스(배열) 또는 포인터(연결 리스트) 등을 사용해야 함 선형 자료구조의 종류 1. 배열 (Array) : 동일한 자료형들의 요소들을 순차적으로 나열한 자료구조 · 인덱스를 통해 빠른 접근이 가능하며, 메모리에 연속적으로 할당 · 빠른 읽기와 쓰기 작업이 필요한 경우, 정해진 크기의 고정된 데이터 집합에 적합 2. 연결 리스트 (Linked List) : 각 노드가 데이터와 다음 노드..

Computer Science - 프로그래밍 패러다임

프로그램을 설계하고 구현하는 방식을 나타내는 체계 또는 철학으로 다양한 프로그래밍 패러다임이 존재하며, 이러한 패러다임은 언어 및 도구의 선택과 코드 구조/스타일에 영향을 줌 프로그래밍 패러다임의 종류 1. 선언형 프로그래밍 패러다임 선언형 프로그래밍은 "무엇을" 수행할 것인지를 명시하고 "어떻게" 수행할 것인지에 대한 세부 사항은 숨기는 방식 예시: SQL, HTML, CSS 목표가 무엇이어야 하는지를 선언하며, 어떻게 달성할지에 대한 구체적인 단계는 나타내지 않음 2. 함수형 프로그래밍 패러다임 함수형 프로그래밍은 함수를 일급 객체로 다루며, 상태 변경을 피하려는 패러다임 예시: Haskell, Lisp, JavaScript (함수형 프로그래밍 지원) 함수 조합, 불변성, 순수 함수 등의 개념을 강조..

Computer Science - MVC 패턴과 MVVM 패턴의 비교

MVC (Model-View-Controller) 패턴 Model: 데이터와 비즈니스 로직을 관리하는 부분 View: 사용자 인터페이스를 표시하고 사용자 입력을 수신하는 부분 Controller: Model과 View 사이의 상호 작용을 조정하고 사용자 입력을 처리하는 부분 의존성 View는 Model에 종속되지만, Model과 View는 직접 통신하지 않음 Controller는 Model과 View 사이의 중재자 역할을 하고, Model과 View 간의 의존성을 관리함 데이터 바인딩 데이터 바인딩은 일반적으로 수동으로 처리됨 Controller가 Model에서 데이터를 가져와서 View에 수동으로 표시함 ✅ 전통적이고 간단한 패턴으로 익숙한 개발자가 많음 ✅ 상대적으로 쉽게 이해하고 구현할 수 있음 ✅..

Computer Science - 디자인 패턴

디자인 패턴 소프트웨어 개발에서 특정한 문제를 해결하기 위한 구조화된 방법론 또는 설계 템플릿 즉, 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것 -> 반복적으로 발생하는 소프트웨어의 디자인 문제를 해결하기 위한 검증된 솔루션을 제공하고 개발자들 간에 공통된 언어와 접근 방식을 통해 협업을 쉽게 할 수 있음 디자인 패턴을 사용하는 이유 디자인 패턴은 다양한 이점을 제공하는데, 1. 재사용성 : 이미 검증된 솔루션을 제공하므로 개발자들은 이를 재사용하여 빠르게 프로그래밍이 가능 2. 유지보수성 : 코드가 이미 구조화 되어 있기 때문에 패턴에 따라 코드를 작성하게 되므..

Computer Science - 페이징과 세그멘테이션

페이징과 세그멘테이션 두 가지 모두 메모리 관리 기법으로 컴퓨터 시스템에서 프로세스의 가상 주소 공간을 물리적 메모리에 매핑하는 방법 페이징은 내부 단편화 문제를 해결하고 페이지 교체 알고리즘을 사용하여 페이지 부재를 처리하는데 유용하고 세그멘테이션 논리적인 세그먼트를 사용하여 가상 메모리보다 직관적으로 관리할 수 있으며 동적 크기 세그멘트를 지원하는데 적합 페이징의 동작 가상 메모리 공간과 물리 메모리 공간을 일정한 크기의 고정 크기 페이지로 나누고 물리 메모리를 동일한 크기의 페이지 프레임으로 분할 -> 프로세스의 가상 주소를 페이지 번호와 오프셋(offset)으로 나누어 관리하며, 가상 메모리와 물리 메모리 사이에서 페이지 테이블을 사용하여 주소 변환이 가능 페이징의 특징 1. 고정 크기 페이지를 ..

Computer Science - 메모리

메모리 컴퓨터에서 데이터와 프로그램을 저장하고, 필요에 따라 이를 검색하고 사용하는 장치나 시스템 컴퓨터의 핵심 구성 요소로 데이터 및 명령어를 저장하고 처리에 필요한 정보들을 제공 메모리의 특징 1. 메모리는 중앙 처리 장치 (CPU)에 가까운 위치에 있어 빠른 데이터 접근이 가능하고 이로 인해서 프로그램의 실행속도가 향상 2. 일시적으로 데이터를 저장하는 역할을 하며, 전원이 꺼지면 데이터가 소멸 3. 주소를 통해 데이터에 접근하므로 데이터 위치를 정확하게 식별 메모리의 종류와 장단점 1. 주기억장치 - RAM : 프로그램 및 데이터의 일시적 저장소로 사용(휘발성 메모리) ✅ 장점 : 빠른 데이터 접근, 프로그램 및 데이터 저장 ✅ 단점 : 전원이 꺼지면 데이터 손실, 한정된 용량 2. 보조기억장치 ..

Computer Science - 멀티 프로세스와 멀티 스레드

우선 프로그램, 프로세스, 스레드에 대해 한 줄로 요약해보자면 이렇다. [프로세스] · 정의 : 운영체제로부터 시스템 자원을 할당받는 작업단위로, 메모리 상에서 독립적으로 실행환경을 갖춘 프로그램의 객체 · 특징 1) 각 프로세스는 독립적으로 코드, 데이터, 스택 등의 정보를 포함한 메모리 공간을 할당받고, 운영체제에 의해서 개별적으로 관리된다. 2) 각 프로세스는 최소 1 개 이상의 스레드를 가진다. 3) 각 프로세스는 운영 체제에 의해서 독립적으로 관리가 되기 때문에 타 프로세스에 영향없이 실행이 가능하다. 4) 프로세스 간 통신이 필요한 경우 별도의 메커니즘 사용이 되어야 한다. * IPC(inter-Process Communication)로 데이터 통신 가능 [스레드] · 정의 : 프로세스 내에서..