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

박철현·2023년 4월 9일
0

영상후기

목록 보기
75/160

movie

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

  • DS(Data Structure) : 자료구조, ADT 정의된 동작을 실제로 구현한 것

  • 스택 : LIFO 형태로 데이터 저장

  • 주요 동작
    1) push
    2) pop
    3) peek : 아이템을 빼내진 않지만 최상단 데이터가 뭔지 알 수 있음

  • 큐 : FIFO 형태로 데이터를 저장하는 구조

  • 주요동작
    1) enqueue
    2) dequeue
    3) peek : 꺼내진 않지만 꺼낼 예정인 값을 알 수 있음

  • 스택 사용 사례 : 스택 메모리 & 스택 프레임
    -> 함수 호출되면 스택 프레임에 쌓이고, 함수 끝나면 사라짐

  • 큐 사용 사례 : producer/consumer architecture

  • 기술 문서에서 큐 : 항상 FIFO를 의미하지는 않음
    -> 우선순위 큐 일수도 있음
    -> 뭉뚱그려서 대기공간 느낌으로 queue로 사용할 수도 있음으로 자세히 읽어봐야 함

  • 스택/큐 관련 에러와 해결 방법
    -> StackOverflowError : 재귀함수에서 탈출 못해서 발생(탈출 조건 점검, 조건이 맞더라도 무지막지하게 깊이가 깊어지면..)
    -> OutOfMemoryError : Java의 힙 메모리를 다 썼을 때 발생(큐에 데이터가 계속 쌓이가만 한다면 발생) -> 큐 사이즈를 고정하는 것이 좋음
    --> 큐가 다 찬다면 어떻게 해야할까?

  • OutOfMemoryError 해결책
    1) 예외(exception) 던지기 : 큐가 다 찼을때 데이터를 넣으려 할 때
    2) 특별한 값(null or false) 반환 : 실패 했다고 알려주기
    3) 성공할 때까지 영원히 스레드 블락 : 큐에 공간이 생길 때까지 대기
    -> 스레드 낭비 발생 가능
    4) 제한된 시간만 블락되고 그래도 안되면 포기

  • LinkedBlockingQueue : 위 4가지 방식을 구현한 클래스 중 하나

profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보