본문 바로가기

자료구조-Map(Hash) 1. 맵 - 맵(map)은 해시라고도 하며 배열이나 사전과 관련있는 Key-Value 형태의 저장소다. - 자료구조 내부의 원소는 관련된 값을 반환하는 키를 통해 찾을 수 있다. 1.1 해시테이블 - 탐색 알고리즘 - 데이터를 담을 테이블을 미리 크게 확보해 놓은 후 입력받은 데이터를 해시하여 테이블 내의 주소를 계산하고 이 주소에 데이터를 담는 것. - 해시 테이블의 성능은 공간을 팔아 얻어낸 것이다. - Collision(충돌) : ㆍ서로 다른 입력 값에 대한 동일한 해시 값, 즉 해시 테이블 내의 동일한 주소를 반환하는 것 *알고리즘을 통해 유니크한 해시값을 만들어야는데 그렇지 못할 경우 해시 함수가 충돌 - Cluster(클러스터) : ㆍ일부 지역의 주소들을 집중적으로 반환하는 결과로 데이터들이 .. 더보기
소켓 입출력 모델 - 4. Overlapped 모델과 IOCP 4. Overlapped 모델과 IOCP - 기본적으로 Overlapped 와 IOCP를 따로 구분하긴 애매하다. IOCP는 Overlapped 모델을 기반으로 확장한 것이기 때문이다. - Overlapped I/O는 중첩 입출력 or 비동기 입출력(Asynchronous I/O)라고도 부른다. - 어플리케이션은 입출력 함수를 호출한 후 입출력 작업의 완료 여부와 무관하게 다른 작업을 진행 - 입출력 작업이 끝나면 운영체제는 작업완료를 어플리케이션에 알려준다. - 이때 어플리케이션은 다른 작업을 중단하고 입출력 결과를 처리한다. ※ 소켓 입출력 작업이 완료되면, 운영체제는 어플리케이션이 등록한 함수를 자동으로 호출한다. - 쉽게 이야기한다면 IO를 요청했다는 정보가 Device로 날라가게 되며 더이상 쓰.. 더보기
소켓 입출력 모델 - 3. WSAEventSelect 모델 3. WSAEventSelect 모델 - WSAEventSelect() 함수가 핵심적인 역할을 한다는 뜻에서 붙은 이름 - 이벤트 객체를 통해 네트워크 이벤트를 감지 - 각 소켓에 대해 이벤트 객체를 생성하고, 이 이벤트 객체를 관찰함으로써 멀티스레드를 사용하지 않고 여러 개의 소켓을 처리 할 수 있다. - 동작원리 ㆍ각 소켓마다 이벤트 객체를 하나씩 생성하여 짝지어두면, 네트워크 이벤트가 발생할 때마다 이벤트 객체는 신호 상태가 된다. ㆍ따라서 이벤트 객체의 신호 상태를 통해 네트워크 이벤트 발생을 감지 ㆍ그러나 이것만으로는 구체적으로 어떤 종류의 이벤트가 발생했는지 혹은 어떤 오류가 발생했는지 알수 없다는 문제가 있다. 더보기