분류 전체보기
DB Index에 대하여
인덱스란? 인덱스는 추가적인 쓰기 작업과 저장 공간을 활용하여 테이블의 검색 속도를 향상시키기 위한 자료구조입니다. 예시를 들면 다음과 같은 멤버 테이블이 있다고 가정해보겠습니다. a라는 칼럼이 '13' 이라는 값을 지니는 멤버를 찾으려면 모든 테이블을 다 뒤져야 찾을 수 있게 됩니다. 이것은 풀 테이블 스캔, 혹은 풀 스캔이라고 부릅니다. 만약 이를 인덱스를 사용하게 된다면, a 칼럼의 모든 데이터들이 정렬된 상태로 새로운 저장소를 만들어 저장되게 됩니다. 물론 해당 값이 기존의 테이블에 어디에 위치해있는지 가리키는 포인터 또한 저장됩니다. 인덱스 테이블을 활용하여 a=13을 찾는다면 b-tree의 root부터 시작하여 13이 위치한 노드까지 binary search 방식을 활용하여 빠르게 찾아낼 수 ..
TCP/IP 에 대하여
TCP/IP란? TCP/IP는 패킷 통신을 위한 인터넷 규약입니다. 태초에 통신은 연결이 이루어지고 나서 끊어질 때 까지 해당 회선을 완전히 독점하여 사용했습니다. 이러한 통신 방식을 서킷 통신이라고 부릅니다. 이 때 다른쪽에서는 해당 회선을 이용하지 못하고 기다려야 하는 상황이 발생합니 다. 서킷통신의 이러한 단점을 해결하기 위해 나온 방식이 패킷 통신입니다. 패킷통신은 다중망을 사용할 뿐만 아니라 보내는 내용을 잘게 잘라서 보내게 됩니다. 따라서 특정 회선이 끊어지거나 누가 사용하여 통신을 못하게 되는 경우를 예방할 수 있습니다. TCP와 IP의 특징을 살펴보자면, IP는 패킷 전달 여부를 보증하지 않습니다. 또한 패킷을 보낸 순서와 받는 순서가 다를 수도 있습니다. 이에 반하여 TCP는 IP위에서 ..
Heap(힙)에 대하여
Heap(힙) 완전 이진 트리의 일종으로 우선순위 큐를 위하여 만들어진 자료구조입니다. 여러 개의 값중에 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조입니다. 힙은 반정렬 상태(느슨한 정렬 상태)를 유지합니다. [ 완전 이진 트리의 의미 ] 완전 이진 트리에서 완전이라는 말의 의미는 마지막 레벨을 제외한 모든 노드가 채워져 있으면서 모든 노드가 왼쪽부터 채워져 있어야 하는 것을 의미합니다. 위 그림에서 완전 이진트리는 마지막 레벨을 제외한 모든 노드가 채워져 있고 왼쪽부터 채워진 형태를 볼 수 있습니다. 만약 마지막 레벨의 노드가 모두 채워져 있으면 이를 포화 이진트리라고 부르게 됩니다. [ 힙의 반정렬(느슨한 정렬) 상태 ] 힙은 어떻게 최댓값 또는 최솟값을 빠르게 찾아낼 수 있을까요? 힙이 ..
캐시 메모리
Cache Memory(캐시 메모리) 캐시 메모리는 속도가 빠른 장치와 느린 장치 간의 속도차에 따른 병목 현상을 줄이기 위한 범용 메모리입니다. CPU가 처리하는 속도보다 RAM에서 데이터를 인출해오는 속도가 느리기 때문에 시간의 낭비가 발생하게 됩니다. 캐시 메모리는 사용한다면 둘 사이의 속도 차이로 인한 병목현상을 해결 할 수 있습니다. 캐시메모리는 CPU와 메모리 사이에 위치해 있으며 레지스터 보다는 용량이 크고 메모리보다는 빠른 저장 장치입니다. 캐시메모리는 CPU와 가까운 순서대로 계층을 구성합니다. CPU와 가장 가까운 캐시 메모리를 L1 캐시, 그 다음으로 가까운 캐시를 L2 캐시, 그 다음 가까운 캐시 메모리를 L3라고 부릅니다. 캐시 메모리의 용량은 L1, L2 ,L3 순으로 커지고 속..