컴퓨터공학 21

네트워크 기초 - 네트워크 장비

Hub 네트워크 분배기 역할을 하는 장치(Dummy Hub) 데이터를 연결된 모든 장치에 보냄 데이터 수신자가 자신이 목적지인지를 MAC Address로 판단 여러 단말장치들이 데이터를 발송하면 데이터 충돌이 발생(Collision Domain)한계 허브는 한 번에 데이터 1개씩만 단말장치에 전송할 수 있기 때문에 네트워크 회선이 지원하는 전송 대역폭을 충분히 보장하지 않음 Switch 데이터의 충돌 영역을 줄이고, 네트워크 전송 대역폭을 보장하기 위해 개발된 장비(Switch Hub) 데이터는 Switch에 있는 MAC Address Table을 참조하여 목적지까지 경로를 결정함 Switch는 자신을 지나는 데이터의 MAC 주소를 가지고 MAC 주소 테이블을 갱신함(MAC Learning) Switch..

네트워크 기초 - 단말장치

Netwrok Interface Card 소규모 네트워크에 연결해주는 장치 NIC는 고유 주소는 MAC Address를 가지고 있음 MAC Address 16진수 12자리(48bit)로 이루어져 있는 NIC의 고유 주소 앞 6자리(24bit) --> 제조사 식별코드 뒤 6자리(24bit) --> 장비코드(시리얼번호) FF:FF:FF:FF:FF:FF --> 브로드캐스트 주소로 지정되어 있음 Internet Protocol Address 네트워크에서 단말장치에 할당되는 주소IPv4 8bit마다 옥텟으로 구분되는 32bit 길이의 주소체계사설 IP, 공인 IP 사설 IP : 내부망에서만 사용하는 IP 공인 IP : 외부망(인터넷)에서 사용하는 IP Network Address Translation 사설 IP ..

블로킹/논블로킹과 동기/비동기

Blocking/Non-Blocking 함수 호출에서의 관점입니다. 어떤 함수의 호출에서 어떤 행위의 결과를 기다리면 블로킹입니다. 어떤 함수의 호출에서 어떤 행위의 수행여부와 관계없이 결과를 바로 받으면 논블로킹입니다. Synchronous/Asynchronous 동기/비동기는 행위에 대한 관점입니다. 여러 행위가 순차적으로 수행된다면 동기입니다. 여러 행위가 비순차적으로 수행된다면 비동기입니다.

컴퓨터공학 2021.06.20

동시성(Concurrency)과 병렬성(Parallelism)

동시성/병행성(Concurrency) 하나의 코어(CPU)가 여러 스레드를 번갈아가며 작업을 수행하는 것입니다. 한꺼번에 여러 작업을 다룹니다. 아래의 방법을 통해서 교착상태(Deadlock)에 빠지지 않도록 주의해야 합니다. 상호배제, 임계 영역, 동기화 TCB를 바탕으로 Context Switching이 발생합니다. 병렬성(Parallelism) 여러 개의 코어(CPU)가 각각 물리적으로 작업을 수행합니다. 한꺼번에 여러 작업을 처리합니다. PCB를 바탕으로 Context Switching이 발생합니다.

스레드(Thread)와 프로세스(Process)

소개 스레드 프로세스 내부의 흐름 공유자원(code, data, heap)과 개별자원(stack)이 있음 TCB에 상태정보 저장 프로세스 프로그램 각각 독립된 메모리 영역이 있음(code, data, stack, heap) 서로 간 메모리 영역을 침범할 수 없음 프로세스 당 최소 1개의 스레드가 있음 PCB에 상태정보 저장 멀티 프로세싱 CPU가 여러 개가 존재하여 1개 이상의 프로세스를 동시에 처리하는 것입니다.(병행성) 메모리 침범 문제가 OS 차원에서 해결되어 메모리의 독립성이 보장됩니다. 각 프로세스가 메모리 상에 독립적인 영역을 소유하여 작업량이 많을수록 오버헤드가 발생합니다. Context Switching으로 인하여 성능 저하가 발생합니다. 멀티 스레딩 1개의 프로그램에서 여러 스레드가 각각..

RESTful API

소개 REST란 Representational State Transfer의 약자로 2000년에 Roy Fielding의 박사학위 논문에서 최초로 등장했습니다. 로이 필딩은 HTTP의 주요 저자 중 한 사람으로서 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표했습니다. 구성 REST API는 아래의 요소로 이뤄져 있습니다. 자원(Resource) : URI 행위(Verb) : HTTP Method 표현(Representations) 특징 Uniform Interface URI로 지정한 자원에 대한 조작 방법을 통일하고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일입니다. Stateless 작업을 위한 상태정보를 저장하고 관리하지 않습니다. 세션/쿠키를 관리하지 않기 때문에 API 서버는 단..

SQL DML

SELECT 기본 검색 SELECT [ALL || DISTINCT] 속성_리스트 FROM 테이블_리스트; SELECT 뒤에 속성에 산술연산을 수행할 수 있습니다. (+, -, *, /) 조건 검색 SELECT [ALL || DISTINCT] 속성_리스트 FROM 테이블_리스트 WHERE 속성 비교연산자 값; 비교 연산자 (=, , , =) 논리 연산자 (AND, OR, NOT) LIKE 검색 SELECT [ALL || DISTINCT] 속성_리스트 FROM 테이블_리스트 WHERE 속성 LIKE 부분값; _ : 1개의 문자 % : 0개 이상의 문자 NULL 검색 SELECT [ALL || DISTINCT] 속성_리스트 FROM 테이블_리스트 WHERE 속성 IS [NOT] NULL; 정렬 검색 SELEC..

SQL DDL

CREATE TABLE CREATE TABLE 테이블_이름 ( 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값] ... [PRIMARY KEY (속성1, 속성2, ...)] [UNIQUE (속성1, 속성2, ...)] [FOREIGN KEY (속성1, 속성2, ...) REFERENCES 테이블_이름(속성1, 속성2, ...)] [ON DELETE 옵션] [ON UPDATE 옵션] ... [CONSTRAINT 이름] [CHECK(조건)] ... ); ALTER TABLE 새로운 속성 추가 ALTER TABLE 테이블_이름 ADD 속성_이름 데이터_타입 [NOT NULL] [DEFAULT 기본_값]; 기존 속성 삭제 ALTER TABLE 테이블_이름 DROP COLUMN 속성_이름; 새..

OOP(Object Oriented Programming)

개요 인간 지향적 프로그래밍 OOP의 4대 특성 캡슐화 : 정보은닉 접근 제한자 public, protected, default, private 상속 : 재사용 + 확장 is a kind of 관계 자바는 클래스 간 다중 상속 불가능 자바는 인터페이스를 이용한 다중 상속의 이점을 취했음 추상화 : 모델링 구체적인 것을 분해하여 관심 영역(애플리케이션)에 있는 특성만을 가지고 재조합하는 것 다형성 : 사용 편의 overriding : 상하로 쌓임 overloading : 좌우로 쌓임 OOP 설계 5대 원칙 결합도와 응집도 결합도 : 모듈 간 상호 의존도 응집도 : 모듈 내부 요소의 기능적 관련성 SRP(Single Responsibility Principle) : 단일 책임 원칙 어떤 클래스를 변경해야 하..

컴퓨터공학 2021.06.01

HTTP 메시지

개요 HTTP 메시지는 HTTP 애플리케이션 간 주고받는 데이터, 블록입니다. HTTP 메시지는 클라이언트, 서버, 프록시 사이를 흐릅니다. 메시지 방향 인바운드 : 트랜잭션 방향. 메시지가 서버로 향하는 것 아웃바운드 : 트랜잭션 방향. 메시지가 서버에서 처리되고 사용자 에이전트로 돌아오는 것 모든 메시지는 다운스트림으로 흐름. 절대 업스트림으로 흐르지 않음. 메시지 구조 시작줄(메시지 형태), 헤더(메시지의 속성), 엔티티 본문(데이터) 엔티티는 텍스트, Binary를 가지고 있거나 비어있을 수 있습니다. 메시지 문법 Request(요청) 시작줄 : 메서드 요청 URL 버전 헤더 엔티티 본문 Response(응답) 시작줄 : 버전 상태 코드 사유 구절 헤더 엔티티 본문 메서드 GET 서버에서 리소스를..