Stack(스택) 이란?

제한적으로 접근할 수 있는 나열 구조이며, 접근 방법은 언제나 목록의 끝에서만 일어납니다. 끝먼저내기 목록이라고도 합니다.

스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last in Firsh Out)으로 되어 있습니다. 자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(Push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데, 이때 꺼내지는 자료는 가장 최근에 푸쉬한 자료부터 나오게 됩니다. 이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO구조 라고 합니다.

나무위키에서 가져온 스택의 구조

그렇다면 이 스택은 어디에 활용이 될까요?

- 웹 브라우저 뒤로가지 : 가장 나중에 열린 페이지부터 뒤로 가기.
- 문서작업에서 Ctrl + Z : 가장 나중에 수정한 내용을 되돌림.
- 재귀적 알고리즘
- 후위 표기법 계산 등등


큐(Queue)란?

스택과 반대로 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 형식을 말합니다.
영어 단어의 queue는 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황을 연상하면 됩니다.
큐는 put(insert) get(delete)을 이용하여 구현된다. put는 큐에 자료를 넣는것, get은 큐에서 자료를 꺼내는 것을 의미합니다. front(head)와 rear(tail)는 데이터의 위치를 가르킨다. 종류에는 선형과 환영이 있습니다.

나무위키에서 가져온 큐의 구조

그렇다면 이 큐는 어디에 활용이 될까요?

- 프린터의 출력 처리
- 윈도 시스템의 메시지 처리기
- 프로세스 관리 등 데이터가 입력된 시간 순서대로 처리해야 할 필요가 있는 상황

오버플로(Overflow)와 언더플로(Underflow)란?

  1. 오버플로는 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할 때 발생합니다.
  2. 언더플로는 특정한 자료구조에 데이터가 전혀 들어 있지 않은 상태에서 삭제 연산을 수행할 때 발생합니다.


Node의 구조 및 동작 원리를 살펴보면 이 안에서도 사용이 됩니다.
예를 들어, 테스크 큐(Task Queue)나 콜스택(Call Stack)처럼 코드가 어떻게 동작하는지 관련해서 알고가는 것이 좋다고 생각하여 정리하게 되었습니다.

 

참고 : https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D

 

스택 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 스택(stack)은 제한적으로 접근할 수 있는 나열 구조이다. 그 접근 방법은 언제나 목록의 끝에서만 일어난다. 끝먼저내기 목록(Pushdown list)이라고도 한다. 스택은

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)

'CS(Computer science) > 자료구조' 카테고리의 다른 글

Hash란?  (0) 2023.04.20

HTTP의 특성

무상태 프로토콜 (Stateless)

🗣 HTTP에서 서버가 클라이언트의 상태를 보존하지 않는다.

  • 장점
    - 서버확장성이 높다
    - 무상태 응답 서버를 쉽게 바꿀 수 있기 때문에 무한한 서버 확장 가능
  • 단점
    - Client가 추가 Data를 전송해야함.

무상태의한계

🚫 로그인과 같이 유저의 상태를 유지해야하는 서비스 (쿠키, 세션, 토큰) 을 이용해 상태를 유지해야 한다.

비연결성 (Connectionless)

🗣 비연결성을 가지는 HTTP에서는 실제로 요청을 주고 받을 때만 연결을 유지하고 응답을 주고 나면 TCP/IP와의 연결을 끊는다.

  • 장점
    - 트래픽이 많지 않고, 빠른 응답을 제공할 수 있는 경우 효율적임.
  • 단점
    - 트래픽이 많고, 큰 규모의 서비스를 운영할 때 비연결성의 한계를 보임.

비연결성의 한계

🚫 (HTTP 1.0) TCP/IP 연결을 새로 맺어야하므로 3-way-handshake 시간이 추가됨 (오버 헤드 발생)

  • 한계 해결
    - HTTP1.1 에서 HTTP 지속 연결(Persistant Connections)이 가능해짐 → 연결이 이루어지고 난 뒤 각각의 자원들을 요청하고, 모든 자원에 대한 응답이 돌아온 후에 연결을 종료합니다.
  • 단점
    - 매번 새로운 연결을 시도/해제의 과정을 거쳐야하므로 오버 헤드가 발생함.
  • 한계 해결
    - KeepAlive : 이에 대한 또다른 해결책으로 오버헤드를 줄이기 위해 HTTP의 keepalive 속성을 사용.

'CS(Computer science)' 카테고리의 다른 글

[CS]HTTP 와 HTTPS의 차이는 무엇일까?  (0) 2024.02.26

+ Recent posts