Computer Science(16)
-
[ Algorithm ] 핵심 자료구조
1. 배열(Array)가장 기본적인 자료구조이며 여러개의 변수를 담는 공간으로 이해할 수 있다.배열은 인덱스(Index)가 존재하고 인덱스는 0부터 시작한다.특정한 인덱스에 직접적으로 접근이 가능하고 수행시간은 O(1)을 가진다. 장점: 캐시(cache) 히트 적중률이 높고 조회가 빠르다.단점: 배열의 크기를 미리 지정해야 하는 것이 일반적이며 데이터의 추가 및 삭제에 한계가 있다. 캐시히트 적중률이란?CPU(클라이언트)에서 요청한 데이터가 캐시에 존재하여 이를 이행할 수 있을때 캐시 히트(Hit)라고 한다. Memory address0x00000x00040x0008Index012Value103070 2. 연결리스트(Linked List)연결 리스트는 메인 메모리상에서 주소가 연속적이지 않으며 배열과 다..
2023.06.26 -
[ Algorithm ] 자료구조와 Big-O 표기법
알고리즘 이란?어떠한 문제를 해결하기 위한 절차나 방법을 뜻한다.공식화한 형태로 표현한 것을 의미하며 유한성을 가지고 언젠가는 끝나야 하는 속성을 가지고 있다. 알고리즘의 조건알고리즘은 아래 5가지 조건에 만족해야 한다.입력: 외부에서 제공되는 자료가 0개 이상 존재해야 한다.출력: 적어도 2개 이상의 서로 다른 결과를 도출해내야 한다.명확성: 수행과정은 무엇을 하기위한 것인지 정의가 명확해야 한다.유한성: 알고리즘의 명령어대로 수행하여 처리가 되었을때 종료되어야 한다.효율성: 모든 과정이 명백히 실행가능해야 하며 시간적, 공간적 효율성을 가져야 한다. 1. 선형 자료구조하나의 데이터 뒤에 다른 데이터가 하나 존재하는 자료구조이다.데이터가 일렬로 연속적으로(순차적) 연결되어있다.배열, 연결리스트, 스택,..
2023.06.25 -
[ Blocking / Non-Blocking ] 통신 처리방식
1. Blocking 통신 처리방식클라이언트가 서버와 연결 됐을때 서버에서 스레드를 생성하고 클라이언트에게스레드를 할당해준다. 클라이언트에 할당된 스레드는 요청을 체크하는 루프에 들어가게되어스레드가 죽지않고 블로킹되어있는 상태가 된다. 이 후 클라이언트로부터 요청이 들어오면블로킹 되어있던 스레드가 요청을 처리하고 처리가 끝나면 다시요청을 체크하는 루프로 들어가게된다. 이렇게 한 클라이언트에 하나의 스레드를전담으로 할당시켜주는 방식이다. 그렇기 때문에 동기식처리(직렬 처리)만 가능하다. 2. Non-Blocking 통신 처리방식클라이언트가 서버와 연결되면 블로킹 방식이 아닌요청을 리슨하는 eventLoop서버가 요청을 Event Queue에 넣는다.Event Queue에 들어온 요청은 스레드풀에 담겨져 ..
2022.11.26 -
[ TCP / UDP ] 특징과 차이점
1. TCP ( Transmission Control Protocol )연결 지향 방식이다.3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.흐름 제어 및 혼잡 제어.높은 신뢰성을 보장한다.UDP보다 속도가 느리다.전이중(Full-Duplex), 점대점(Point to Point) 방식.TPC는 연결지향 방식이며 이는 패킷을 전송하기 위해서 논리적 경로를 배정한다는 뜻이다.연결형 서비스로 신뢰성을 보장하기에 3-way handshaking과정을 사용한다. TCP는 연속성보다 신뢰성있는 전송이 중요할 때에 사용하는 프로토콜이다.예를 들면 파일 전송과 같은 경우에 사용된다. TCP 서버의 특징서버소켓은 연결만을 담당한다.연결과정에서 반환된 클라이언트 ..
2022.11.26