진짜 개발자
본문 바로가기

CS(Computer Science) (총 73개)

Network - TCP의 성능에 대한 고려 TCP 성능에 대한 고려 TCP의 성능Application들은 네트워크를 통해 메시지를 전달하기 위해 TCP를 이용하게 됩니다. 따라서 Client 와 Server 간 Web 요청과 응답을 주고 받기위해 사용하는 HTTP 프로토콜 역시 TCP의 성능에 영향을 받을 수 밖에 없습니다. 이번 포스팅에서는 TCP 프로토콜의 성능에 영향을 미치는 요인들에 대해 정리를 해보고자 합니다. 고성능의 HTTP Application사실 엄청난 고성능의 HTTP이 아니라면 TCP의 지연 요소들에 자세히 알 필요까지는 없습니다. 반대로 고성능의 어플리케이션을 만들고자 한다면 필히 숙지 해야합니다. TCP 성능에 영향을 미치는 요소TCP성능에 영향을 미치는 요소들은 아래와 같습니다. TCP 연결 핸드셰이크 지연(연결지향)새로..
Network - SSL , HTTPS, CA 개념 (SSL인증서) ssl개념과 인증서 종류에대해서 알아보도록 하겠습니다 ssl개념에대해서 알아보도록 하겠습니다. 1. SSLSSL(secure socket layer)은 네트워크에서 메시지 전송시 보안을 위해 개발된 표준 프로토콜입니다. 즉, HTTP만을 위한 프로토콜이 아닌 응용계층의 여러 프로토콜의 보안을 위해 발명된 프로토콜입니다. 조금 더 정확히 말씀드리자면, TCP를 보호하는 프로토콜입니다. 클라이언트 또는 서버에서 메시지를 만들어 상대에게 전달할때, 응용계층에서 만들어진 메시지가 전송계층으로 가기전 SSL을 통해 데이터가 암호화가 됩니다. 그 후 전송계층을 통해 네트워크로 데이터가 상대에게 전달이 됩니다. 1.1 SSL 장점SSL은 3가지의 장점을 제공합니다. 기밀성(암호화)데이터 무결성서버인증 1.2 SSL없..
알고리즘 - Dynamic Programming(동적프로그래밍)이란? Dynamic Programming(동적계획법) 이란 1. Dynamic Programming(동적계획법)이란?큰 문제를 작은문제로 나누어 푸는 문제를 일컫는 말입니다. 동적 계획법이란 말 때문에 어떤 부분에서 동적으로 프로그래밍이 이루어지는 찾아볼 필요가 없습니다. 바로 동적프로그래밍이란 말을 창조한 사람도 이것이 단지 멋있어서 부여한 이름이라고 합니다. 1.1 Divide and Conquer(분할정복)과 비슷한데요?네, 거의 비슷하지만 결정적인 차이점이 있습니다. 바로 작은 문제가 중복이 일어나는지 안일어나는지 입니다. 분할정복은 큰 문제를 해결하기 어려워 단지 작은 문제로 나누어 푸는 방법입니다. 특징은 작은 문제에서 반복이 일어나는 부분이 없다는 점입니다. 동적프로그래밍은 어떨까요? 네, 작은 ..
자료구조 - 힙(Heap)이란? 힙 힙(Heap) 이란?- 힙은 최댓값, 최솟값을 찾아내는 연산을 쉽게하기 위해 고안된 자료형이다.- 힙(Heap)은 각 노드의 키(Key)값이 그 자식의 키값보다 작지않거나(최대 힙), 그 자식의 키값보다 크지 않은(최소 힙) 완전 이진 트리이다. 아래 그림은 최대힙(Max Heap)을 나타내는 그림이다. 최대 힙(Max Heap) - 각 노드의 키값이 그 자식노드의 키값보다 큰 힙최소 힙(Min Heap) - 각 노드의 키값이 그 자식노드의 키값보다 작은 힙 힙 연산아래의 연산들은 최대(Max Heap)힙을 기준으로 설명한다. 삽입 연산- 힙은 완전이진트리의 구조를 유지해야 하므로 삽입시 트리의 가장 마지막에 원소를 추가하는 것으로 시작한다. 5를 키로 가지는 원소 삽입우선 힙은 완전이진트리의 구조를..
자료구조 - 큐(Queue)란? Queue란 Queue란- 큐는 한쪽 끝(rear)에서는 삽입연산만 이루어지며 다른 한쪽 끝(front)에서는 삭제연산만 이루어지는 유한 순서 리스트이다. 특성- 구조상 먼저 삽입된 item이 먼저 삭제가 이루어진다. (FIFO) 큐의 표현1. 순차 표현- 1차원 배열을 이용한 순차표현이다.- 인덱스를 값으로 가지는 front, rear 라는 두개의 변수와 큐의 사이즈를 나타내는 n이라는 변수를 사용한다.- front, rear를 -1로 초기화 하여 큐가 empty임을 나타낸다. (front == rear일 때 큐는 공백)- rear에서 삽입 되므로 rear가 점차 증가하여 rear==n-1인 경우 큐는 full상태이다. 문제점- 큐에 삽입이 되며 점차 rear가 증가하게 되면 결국 full상태가 된다...
알고리즘 - 그리디01 그리디(Greedy) 알고리즘이란? 그리디(Greedy) 알고리즘 이란- 그리디(Greedy) 알고리즘이란 탐욕알고리즘이란 뜻으로 각 단계에서 최선책만을 선택하며 다음단계로 진행하는 알고리즘을 말한다. - 최적의 해를 구하는 알고리즘은 아니다 최적의 해의 근사의 해를 구하는 알고리즘이다.- 동적프로그래밍이 지나치게 많은 일을 하는 것에서 착안하여 고안된 알고리즘이며 동적프로그래밍을 대체하는 것은 아니고 서로 보완하며 사용되는 알고리즘이다.- 각 단계에서 최선책만을 선택하기 때문에 현재의 선택에 의해 다음 단계의 조건이 변하는 경우에는 부적합한 알고리즘이다. 최적의 해가 아닌 이유?- 그리디 알고리즘은 당장 선택할 수 있는 경우중 최선의 선택을 하기 때문이다. 예를 들어 지금 당장 금을 팔면 1돈에 10000원인데 내일은 1돈에 12000원..
자료구조 - Array(배열과) List 비교 Array(배열) 과 List의 차이점 Array(배열) 과 List의 차이점Array? - 다수의 데이터를 그룹핑해서 효율적으로 관리 가능한 자료형으로 데이터에 접근하기 위한 인덱스가 존재한다.장점- 인덱스를 통해 데이터를 가져오기 때문에 조회 속도가 빠르다.단점- 인덱스를 통해 데이터를 가져온다 즉, 데이터의 위치가 인덱스와 맵핑되어 고정된다. 추후 데이터가 삭제되는 경우 배열의 빈부분의 메모리가 낭비된다.- 위의 이유로 배열의 해당 인덱스에 데이터가 존재하는지 파악하는 로직이 추가적으로 필요하다. List? - 배열이 가진 인덱스의 장점을 버리고 대신 빈틈없이 데이터를 적재하는 장점을 취한 자료형. - 순서가 있으며 중복이 허용되는 자료형. 간단한 이해Array(배열) - 주민등록번호와 비교하면 된..
운영체제 - 프로세스 동기화란? 프로세스 동기화 프로세스 동기화프로세스 동기화란하나의 자원을 한 순간에 하나의 프로세스만이 이용하도록 제어하는 것 스레드 동기화란하나의 코드블록 또는 메소드를 한순간에 하나의 스레드만이 이용하도록 보장하는 것 동기화가 없다면- 데이터 일관성이 깨짐 => 즉, 한 순간 하나의 데이터의 값이 여러개일 수도 있게 됨, 다시 말해 여러개의 스레드가 하나의 변수에 대한 값이 제각각일 수 있게 됨. 배경협력적 프로세스는 시스템 내에서 실행중인 다른 프로세스의 실행에 영향을 주거나 받는 프로세스 이다. 협력적 프로세스는 논리 주소 공간(코드, 또는 데이터)를 직접 공유 하거나 파일 또는 메시지에 의해서 공유가 이루어진다 전자의 방법을 통해 논리 주소 공간을 공유하는 것은 스레드(Thread)를 통해 달성할 수 있다...