Computer Science

공부한 내용을 정리합니다
Computer Science/Network

서브넷

정보처리기사 실기 준비하며 정리한 내용입니다. 서브넷 마스크 구하기 A 클래스 = 255.0.0.0 B 클래스 = 255.255.0.0 C 클래스 = 255.255.255.0 서브넷의 수 서브넷의 수 = 몇 개로 나눌 것인가 (몇 개 회사에 나눠줄 것인가) 2는 안빼도됨 서브넷 비트의 수 = 전체 1의 개수 다 세면 됨 (255.255.255.128 인 경우 앞에 있는 255에 속한 1들도 까먹지 말자) 호스트의 수 호스트의 수 = 한 회사 당 몇 개 IP를 나눠줄 것인가 (-2 까먹지 말자) 4번째로 사용가능한 IP는? (첫번째 못쓴다) 사용가능한 마지막 IP는? (마지막 못쓴다) 서브네트 ID는? (첫번째다) 브로드캐스트는? (마지막꺼다) IP 192.168.1.0**/25** 가 의미하는 서브넷 마..

Computer Science/Algorithm

해시표, 로그시간, 역추적, 이차시간, 링크분석 개념

책 를 정리했습니다. 배열의 대안 : 연관배열 = 사전 = 해시표 둘의 공통점 하나의 집합에 데이터를 보관한다 둘의 차이점 해시표는 즉각적 검색 (=상수시간 검색) 상수시간 검색의 공식이 해시함수 해시함수는 특정 더미에 어떤 항목을 포함 시켜놓고, 그 항목을 빨리 찾을 수 있게 한다. 이런 식으로 이미 알고있는 사실(기억력)을 이용한 해결방법은 반복 작업에 유용하다. 로그시간 선형시간에서 로그시간으로 바꾸는 이점은 아주 많다. 로그시간은 물건이 정렬되어있을 때 유용하다. 로그시간의 예시 : 사전, 전화번호부, index ⇒ 정보폐기 방법 → 이진검색! 로그는 천천히 증가한다 = 방법이 항목의 수에 크게 영향을 받지 않는다는 뜻 역추적 미노스 아리아드네의 실 이야기 = 미로 탐색할 때, 실패 시 갈림길로 ..

Computer Science/Algorithm

알고리즘의 기본

알고리즘이란? 알고리즘이란 뭔가를 수행하는 방식의 집합이다. 알고리즘은 문제나 과제를 해결하기 위한 절차다. 문제 해결은 예를 들자면 사용설명서, 요리 레시피, 악보 같은 것이다. 대부분의 경우 문제 해결은 그저 우리가 가지고 있는 직관이나 생각들을 기계나 다른 사람들이 이해할 수 있는 방식으로 번역하는 것에 불과하다. 알고리즘을 기계가 이해할 수 있도록 프로그래밍 언어로 작성한 것이 프로그램이다. 예를 들어 로봇청소기는 사람이 미리 만들어 둔 알고리즘에 따라 움직이는 것이다. 방 청소라는 일을 하나씩 분해하여 순서대로 실행하도록 절차를 지시한 것이다. 절차가 알고리즘이기 위한 조건 정확한 결과를 얻을 수 있어야 한다. 문제 해결 = 올바른 답 출력 or 원하는 결과를 얻을 수 있다. 얻어진 결과가 틀리..

Computer Science/Network

HTTP 기본 지식 (1) TCP&UDP, URI, 무상태 프로토콜, 비연결성

모든 개발자를 위한 HTTP 웹 기본 지식을 듣고 정리한 내용입니다. 네트워크의 흐름 IP 프로토콜을 보완한 것이 TCP와 UDP IP 프로토콜은 도착지와 목적지의 정보를 갖고 있다 비연결성 비신뢰성 IP 프로토콜의 문제점이란? 순서가 뒤죽박죽으로 도달할 수 있다. 패킷이 소실될 수 있다. 상대방의 연결이 끊겨있는데도 보내려고 할 수 있다 패킷이라는 단어 패키지+버킷의 합성어 전송 과정 데이터를 만들면 (ex.채팅 메시지) 소켓 라이브러리로 전달되고 TCP 정보를 생성, 메시지 데이터 포함해서 내리고 IP 패킷 생성, TCP 데이터를 포함해서 내리고 랜카드로 나갈 땐 이더넷 프레임을 포함해서 나간다 TCP 3 way handshake SYN : 접속요청. 연결되어있나 확인하는 것 SYN+ACK : 요청 ..

Computer Science/Basics

프로그래밍

Crash Course: Computer Science를 정리했습니다. 초기의 프로그래밍 방직기 이는 최초의 프로그래밍 방식 중 하나다. 펀치 카드 인구조사 통계 건으로 의뢰해 개발한 그것이다. 그러나 이는 단지 도표화 하나만 가능했으며 프로그래밍은 아니었다. 플러그보드 여기에 점점 빼고 곱하고 나누는 기능이 추가된다. 이런 기능을 수행할 수 있도록 프로그래머는 Control Panel 제어 패널을 조작한다. 이 패널은 작은 소켓들로 채워져 있고, 프로그래머가 케이블을 연결하여 값이나 신호를 기계의 다른 부분으로 보낼 수 있었다. Stored-Program Computers 프로그램을 물리적인 플러그보드의 선으로 저장하는 대신에, 전체 프로그램을 이제 메모리 안에 저장할 수 있게 되었다! 폰 노이만 구조..

Computer Science/Basics

컴퓨터는 어떻게 계산할까?

Crash Course: Computer Science를 정리했습니다. 부울 연산과 논리 게이트 Boole 부울 대수학은 George Boole이 창안한 참 거짓을 다루는 분야이다. 이를 활용해 true일 경우 전기가 통하고, false일 경우 전기가 통하지 않는 것으로 하여, 하나의 트랜지스터로 인풋 아웃풋이 모두 가능하게 했다. Gate 게이트는 전류의 흐름을 통제하기에 붙여진 이름이다. NOT Gate NOT 논리표와 같다 삼각형모양 AND Gate 둘다 참이어야만 참 두개의 인풋 하나의 아웃풋 트랜지스터 두개가 같이 켜져있어야만 전류가 흐르다 D 모양 OR Gate 하나만 참이어도 참 두 트랜지스터를 병렬로 연결했을 때 우주선 모양 XOR (Exclusive or) 모든 입력이 참이면 거짓이 된다..

Computer Science/Basics

컴퓨팅의 역사, 트랜지스터, 튜링

Crash Course: Computer Science를 듣고 정리했습니다. Computing's History Computing's Origins The Abacus 주판 컴퓨팅의 기원은 계산기이며, 그 계산기의 기원은 '주판'이다. 기원전 2500 년전 메소포타미아에서 발명되었다. 이후 인간은 다양한 계산기를 개발한다. Astrolabe 천문 관측 장치.배가 바다 위에서 그들이 있는 위도를 알 수 있게 해준다. The Slide Rule 계산자.곱셈과 나눗셈을 할 때 도움을 준다. 이외에도 일출,밀물, 썰물, 천체의 움직임을 계산할 수 있는 장치들을 개발한다. Leibniz' Step Reckoner 계단식 계산기 또는 라이프니츠 계산기 1672년경 독일의 수학자 고트프리트 빌헬름 라이프니츠가 발명하..

Computer Science/Operating System

Crash Course의 운영체제의 역사 정리

Crash Course: Computer Science의 운영체제 부분을 정리했습니다. 운영체제(Operating System)는 컴퓨터가 스스로 프로그램을 실행할 수 있는 능력이 필요해짐에 따라 탄생하게 되었다. 다른 프로그램을 실행하고 관리할 수 있는, 컴퓨터 전원 켰을 때 시작하는 프로그램이다. Batch Processing 일괄 처리 1950년대에 시작되었다. 처음에는 수동 작업(직접 펀치카드 넣는..)의 보강 용도로 고안되었다. 한 작업을 완료하면 자동으로 다음 작업을 즉시 시작하는 것을 뜻한다. Device Drievers 초기 프로그래머들의 고통을 덜어주기 위해, 운영체제는 소프트웨어 프로그램과 하드웨어 주변 장치의 중개자로서의 단계를 밟았다. 구체적으로, Device Drievers 라고 ..

Computer Science/Basics

'컴퓨터 과학'에 대해

우리가 공부하는 소프트웨어 공학, 운영체제 등은 모두 ‘컴퓨터 과학’이라는 큰 학문 산하의 분야이다. 컴퓨터 과학은 알고리즘, 계산 및 정보에 대한 이론적 연구에서부터 하드웨어와 소프트웨어의 계산 시스템 구현에 대한 실질적인 문제에 이르기까지 다양한 주제에 걸쳐 있다. 이처럼 광범위하기에 '컴퓨터 과학'의 본질에 관한 학계의 논쟁은 아직도 활발하다고 한다. 모두를 위한 컴퓨터 과학 CS50 2019에서 정의하는 컴퓨터 과학 컴퓨터 과학이란 문제 해결에 대한 학문이다. 문제 해결이란 입력(input)을 전달받아 출력(output)을 만들어내는 과정이며, 그 중간에 있는 과정이 바로 컴퓨터 과학이다. 이러한 입력과 출력을 표현하기 위해선 우선 모두가 동의할 약속(표준)이 필요한데, 우리가 10진법을 당연히 ..