정상적인 TDD 방식은 Controller, Repository, Service 각각을 Test하는 방식으로 개발해야 한다.
그러나, 현재 수업에서는 시간관계상 컨트롤러만 TDD 방식으로 개발하고 있다.
그래서 Controller에서 service와의 연결을 끊고 Mock MVC를 활용해 TDD를 진행하는 것이다. Mock MVC는 실제 서비스 로직을 호출하지 않고, 가짜 객체를 사용하여 테스트를 수행할 수 있게 해준다.
이를 통해 컨트롤러의 동작을 독립적으로 검증할 수 있다.
HTTP 통신: 일반적인 웹 요청 등에서 사용되며, 클라이언트가 서버에 요청을 보내고 서버가 응답하는 방식이다. 이 방식은 요청-응답 모델을 기반으로 하며, 상태가 없는(stateless) 특성을 가진다.
cf) 상태가 없는(stateless) 특성을 가진다
>>> '서버가 클라이언트의 이전 요청에 대한 정보를 저장하지 않는다'는 의미
Server-Sent Events (SSE): 실시간 알림, 주식 시세 업데이트 등에서 사용되며, 서버가 클라이언트에 데이터를 푸시하는 방식이다. 클라이언트는 서버에 연결을 유지하고, 서버는 클라이언트에게 지속적으로 데이터를 전송할 수 있다.
WebSocket 통신: 실시간 채팅 등에서 사용되며, 클라이언트와 서버 간의 양방향 통신을 가능하게 한다. HTTP 헤드에 WebSocket 통신을 위한 정보를 포함해 연결을 위한 암호키를 수립한다. 이후 클라이언트와 서버는 Ping-Pong, Heartbeat 등을 통해 연결 상태를 유지 확인한다.
HTTP 통신, Server-Sent Events (SSE), WebSocket 통신 이 3가지 정도만 알아둬도 무방하다.
| 탐색 방법 | 설명 | 구현 방법 | 유형 |
|---|---|---|---|
| DFS | 한 노드부터 깊게 탐색하는 방식 | 스택, 재귀함수 사용 | 경로 찾기 (모든 경로 탐색) |
| BFS | 여러 노드를 동시에 탐색하는 방식 | 큐 사용 | 최단 경로 찾기 (레벨 순서로 탐색) |
조합, 최대, 최적의 길, 최단거리와 같은 유형의 문제는 탐색을 통해 해결해야 한다. 이러한 문제는 주어진 조건에 따라 여러 경로를 탐색하고, 최적의 해답을 찾는 것이 중요하다.
예를 들어, 몇 번의 길을 통해 목적지에 도달하는지, 지도와 좌표를 기반으로 최단거리를 계산하는 등의 문제는 DFS나 BFS를 활용하여 해결할 수 있다.
DFS/BFS 구현하는 게 어렵다면 기본적인 문제의 소스 코드를 암기하고 이후 응용 문제를 스스로 풀어보자!!