스택과 큐 : 기술 문서 읽다가 큐 만났을 때 팁과 스택/큐와 관련된 에러 해결책

KIM YONG GU·2023년 10월 15일
0

쉬운코드

목록 보기
16/18

Abstract Data Type과 Data Structure

ADT(Abstract Data Type)

  • 추상자료형
  • 개념적으로 어떤 동작이 있는지만 정의
  • 구현에 대해서는 다루지 않음

DS (Data Structure)

  • 자료구조
  • ADT에서 정의된 동작을 실제로 다룸

이 영상은 stack과 queue를 ADT의 관점에서 다룸. stack과 queue의 구현을 설명하지는 않음.

스택과 큐의 개념 설명

스택

  • LIFO(Last In First Out) 형태로 데이터를 저장하는 구조
  • 스택의 주요동작 push, pop, peek

  • FIFO(First In First Out) 형태로 데이터를 저장하는 구조
  • 큐의 주요동작 enqueue, dequeue, peek

스택과 큐의 사용사례

스택 사용 사례 : stack memory & stack frame

큐 사용 사례 : producer/consumer architecture

기술 문서에서 큐를 만났을 때 팁

  • 항상 FIFO를 의미하지는 않음 (대기 공간의 의미로 사용되는 경유도 있음)

스택/큐 관련 에러와 해결방법

StackOverflowError

  • 스택 메모리 공간을 다 썼을 때 발생하는 에러
  • 재귀함수(recursive function)에서 탈출 못해서 발생
  • 예시) 피보나치 함수

OutOfMemoryError

  • Java의 힙(Heap) 메모리를 다 썼을 때 발생
  • 큐에 데이터가 계속 쌓이기만 한다면 발생
  • 해결방법 : 큐 사이즈를 고정
  • 큐가 다 찼을 때 해결방법
    • 예외(exception) 던지기
    • 특별한 값(null or false)을 반환
    • 성공할 때까지 영원히 스레드 블락(block)
    • 제한된 시간만 블락되고 그래도 안되면 푁

LinkedBlockingQueue

profile
Engineer, Look Beyond the Code.

0개의 댓글

관련 채용 정보