본문 바로가기

PS/기타

Overlapped Model 윈도우는 Overlapped I/O 모델을 사용하는데, 운영체제가 직접 입력 데이터를 유저 영역으로 복사하며, 복사가 완료된 시점에 통지를 해준다. 이 과정을 자세히 알아보자. 소켓은 기본적으로 블록/동기로 만들어진다. 여기서 데이터 입출력을 수행하는 동안 블록이 발생한다. 블록/논블록, 동기/비동기에 관한 설명은 링크를 참고. 이 모델로는 하나의 쓰레드에서 두 개 이상의 소켓을 다루기 힘들다. 하나의 소켓으로 데이터 입출력을 처리하는 동안 블록 되어 대기상태가 되기 때문이다. 이 모델을 사용하면서 두 개 이상의 소켓을 다루기 위해서는 멀티 쓰레드 기술을 사용해야 한다. 이 문제는 입출력 모델을 블록/비동기 또는 논블록/비동기를 사용하여 해결할 수 있다. 블록/비동기 모델을 사용하는 기술이 select ..
[알고리즘]배열의 부분 최대합 [알고리즘]배열의 부분 최대합주어진 배열에서 연속된 구간 중 합이 최대가 되는 곳을 찾는 문제이다. 다음과 같이 재열이 주어졌을 때, 2 ~ 4 구간의 합이 11로 최대값을 가진다. 이를 찾기 위한 첫 번째 방법은 배열을 순회하며 모든 구간의 합을 구하여 최대값을 찾는 것이다. 이를 코드로 표현하면 다음과 같다.xxxxxxxxxxint sol1(const vector& arr){ int max = INT_MIN; for (int i = 0; i = end) return arr[start];​ int mid = (start + end) / 2;​ //중앙에 걸친 부분합을 구한다. int sum = 0; int left = INT_MIN; for (int i = mid; i >= start; i--) { s..