본문 바로가기
728x90

IT지식6

연결 리스트(Linked List) 연속적인 메모리 위치에 저장되지 않는 선형 데이터 구조 (포인터를 사용해서 연결된다) 각 노드는 데이터 필드와 다음 노드에 대한 참조를 포함하는 노드로 구성 왜 Linked List를 사용하나? 배열은 비슷한 유형의 선형 데이터를 저장하는데 사용할 수 있지만 제한 사항이 있음 배열의 크기가 고정되어 있어 미리 요소의 수에 대해 할당을 받아야 함 새로운 요소를 삽입하는 것은 비용이 많이 듬 (공간을 만들고, 기존 요소 전부 이동) 장점 동적 크기 삽입/삭제 용이 단점 임의로 액세스를 허용할 수 없음. 즉, 첫 번째 노드부터 순차적으로 요소에 액세스 해야함 (이진 검색 수행 불가능) 포인터의 여분의 메모리 공간이 목록의 각 요소에 필요 노드 구현 const n1 = { data: 100 } const n2 .. 2023. 5. 15.
배열 (Array) Method Array를 쓰다보면 주로 사용하는 메소드만 쓸 뿐 다른 메소드에 대해선 헷갈려 하던 부분이라 공부도 할 겸 Array method를 정리해보았다. 몇가지 빠진 Method는 추후에 공부를 하면서 추가할 예정이다. length - 배열의 길이는 인덱스 번호와 다르다. 배열의 길이를 확인하는. length에 -1을 하면 인덱스 번호의 끝을 알 수 있다. var arr = [ 1, 2, 3, 4 ]; console.log( arr.length ); // 4 console.log( arr.length - 1); // 3 pop() - 배열 뒷부분의 값을 삭제 var arr = [ 1, 2, 3, 4 ]; arr.pop(); console.log( arr ); // [ 1, 2, 3 ] push() - 배열 뒷.. 2023. 5. 12.
Array vs ArrayList vs LinkedList Array는 index로 빠르게 값을 찾는 것이 가능함 LinkedList는 데이터의 삽입 및 삭제가 빠름 ArrayList는 데이터를 찾는데 빠르지만, 삽입 및 삭제가 느림 좀 더 자세히 비교하면? 우선 배열(Array)는 '선언할 때 크기와 데이터 타입을 지정'해야 한다. int arr[10]; String arr[5]; 이처럼, array은 메모리 공간에 할당할 사이즈를 미리 정해놓고 사용하는 자료구조다. 따라서 계속 데이터가 늘어날 때, 최대 사이즈를 알 수 없을 때는 사용하기에 부적합하다. 또한 중간에 데이터를 삽입하거나 삭제할 때도 매우 비효율적이다. 4번째 index 값에 새로운 값을 넣어야 한다면? 원래값을 뒤로 밀어내고 해당 index에 덮어씌워야 한다. 기본적으로 사이즈를 정해놓은 배열.. 2023. 5. 11.
캐시 메모리(Cache Memory) 속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. Ex1) CPU 코어와 메모리 사이의 병목 현상 완화 Ex2) 웹 브라우저 캐시 파일은, 하드디스크와 웹페이지 사이의 병목 현상을 완화 CPU가 주기억장치에서 저장된 데이터를 읽어올 때, 자주 사용하는 데이터를 캐시 메모리에 저장한 뒤, 다음에 이용할 때 주기억장치가 아닌 캐시 메모리에서 먼저 가져오면서 속도를 향상시킨다. 속도라는 장점을 얻지만, 용량이 적기도 하고 비용이 비싼 점이 있다. CPU에는 이러한 캐시 메모리가 2~3개 정도 사용된다. (L1, L2, L3 캐시 메모리라고 부른다) 속도와 크기에 따라 분류한 것으로, 일반적으로 L1 캐시부터 먼저 사용된다. (CPU에서 가장 빠르게 접근하고, 여기서.. 2023. 5. 10.
728x90