- 웹 서버는 클라이언트가 웹 브라우저로 특정 페이지 요청을 하면
HTML, CSS, JS, img, file 등 정적 컨텐츠를 즉시 제공해주는 서버입니다.
동적 컨텐츠를 요청받으면 해당 요청을 WAS로 넘겨주게 되고,
WAS로부터 받은 응답을 다시 클라이언트에게 전달해줍니다.
대표적인 웹 서버로는 Apache Web Server가 있습니다.- WAS는 HTTP 프로토콜을 통해 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행하여 데이터를 조회하거나 변경하는 동적 컨텐츠를 처리합니다.
JSP, Servlet을 제공해주기 때문에 웹 컨테이너, 서블릿 컨테이너 라고도 불립니다.
대표적인 WAS로는 Tomcat이 있습니다.- 용도에 따라 웹서버와 WAS로 각각 기능을 분리시켜서 서버 부하를 방지할 수 있습니다.
- Stack은 push와 pop 연산을 통한 LIFO, Last In First Out 방식의 자료구조입니다.
웹 브라우저 뒤로가기나 실행 취소 등
마지막에 들어온 데이터를 먼저 처리해야 하는 경우 사용합니다.- Queue는 put과 get 연산을 통한 FIFO, First In First Out 방식의 자료구조입니다.
고객 대기열, 메시지 처리와 같이
데이터를 들어온 순서대로 순차적으로 처리해야 하는 경우 사용합니다.- Array는 주로 Stack 영역에 할당된 메모리 공간에 데이터를 연속으로 저장하는 자료구조입니다.
인덱스만 알면 특정 위치의 값을 빠르게 가져올 수 있고, 데이터의 연속적인 처리에 유리합니다.
하지만 데이터 삽입이 많아서 초기에 선언했던 Array의 크기를 초과하는 경우,
들어온 데이터를 버리거나 아니면 새 Array를 만들어 기존 내용을 전부 옮겨야 하고,
Array 내에서 데이터 추가 삭제 시 데이터의 순서 유지를 위해 O(N)의 속도로 모두 한칸씩 옮겨야 하는 등 단점이 있습니다.- Linked List는 배열과 달리 Heap 영역에 데이터들이 서로 다른 메모리 공간상에 분산되어 존재하지만
각 노드를 포인터로 연결하여 순차적으로 탐색이 가능하도록 만든 자료구조입니다.
때문에 정해진 크기가 없으므로 데이터를 계속해서 추가가 가능하고,
데이터 추가삭제 시 O(1)의 속도로 특정 데이터만 삭제하고 앞 뒤 노드를 다시 연결만 해주면 되므로 데이터 추가 삭제가 빈번한 경우 유리합니다.
하지만 Array와 달리 특정 인덱스만으로 빠른 접근이 불가능하고 Head에서부터 순차적인 탐색만 가능하여 조회 속도가 O(N)으로 상대적으로 느린 단점이 있습니다.