본문 바로가기

공부 기록/영상 후기

스택과 큐 설명! 참 쉽죠~~? 기술 문서 읽다가 큐 만났을 때 팁과 스택/큐와 관련된 에러들 그리고 해결책도 설명드려요!!

https://youtu.be/-2YpvLCT5F8

ADT, Abstract Data Type : 추상 자료형. 개념적으로 어떤 동작이 있는지만 정의. 구현에 대해서는 다루지 않음

DS, Data Structure : 자료구조. ADT에서 정의된 동작을 실제로 구현한 것

  

스택(stack)

- LIFO(Last In First Out) 형태로 데이터를 저장하는 구조

- 주요 동작 : push, pop, peek

- 사용 사례 : stack memory, stack frame

  

큐(queue)

- FIFO(First In First Out) 형태로 데이터를 저장하는 구조

- 주요 동작 : enqueue, dequeue, peek

- 사용 사례 : producer/consumer architecture

- 기술 문서에서 큐를 만났을 때 팁 : 항상 FIFO를 의미하지는 않음(우선순위 큐도 있다.)

  

스택/큐 관련 에러와 해결 방법(자바 기준)

StackOverflowError : 스택 메모리 공간을 다 썼을 때 발생하는 에러. 대부분 재귀 함수에서 탈출하지 못해 발생

OutOfMemoryError : 자바의 힙 메모리를 다 썼을 때 발생. 큐에 데이터가 계속 쌓이기만 한다면 발생 => 큐 사이즈 고정. 큐가 가득 차면?

- 예외(Exception) 던지기

- 특별한 값(null or false) 반환

- 성공할 때까지 영원히 스레드 block

- 제한된 시간만 block되고 그래도 안되면 포기(Times out)

위 네 가지를 구현한 클래스들이 있다. => LinkedBlockingQueue