채팅 구현 예제 w/ Polling, Long Polling, SSE, WebSocket
📌 개요 Polling, Long Polling, SSE, WebSocket를 사용하여 채팅 기능을 구현하자. 명시된 기술들의 구현 방식에 초점을 맞추어 작성되었다. Polling은 클라이언트가 주기적으로 서버에 요청을 보내고, 서버는 클라이언트의 요청에 대한 응답을 리턴하는 방법이다. Long polling은 클라이언트가 서버에 요청을 보낸 후...
📌 개요 Polling, Long Polling, SSE, WebSocket를 사용하여 채팅 기능을 구현하자. 명시된 기술들의 구현 방식에 초점을 맞추어 작성되었다. Polling은 클라이언트가 주기적으로 서버에 요청을 보내고, 서버는 클라이언트의 요청에 대한 응답을 리턴하는 방법이다. Long polling은 클라이언트가 서버에 요청을 보낸 후...
📌 문제 https://www.acmicpc.net/problem/17298 📌 설명 수열의 각 원소에 대하여 오른쪽에 있으면서 현재 원소보다 큰 수 중 가장 왼쪽에 있는 수(오큰수)를 찾는 문제이다. 이중 for문으로 풀 수 있으나 TLE이 발생한다. 더 효율적으로 찾는 방법을 구상해야 하는데, 스택을 사용한다. 📌 코드 #include ...
📌 OAuth 2.0이란? OAuth 2.0 은 사용자가 자신의 리소스에 대한 접근 권한을 third-party 웹 또는 애플리케이션에 부여할 수 있도록 설계된 권한 부여 프레임워크이다. 사용자는 OAuth 2.0을 통해 아이디, 비밀번호와 같은 로그인 정보를 공유하지 않으면서 third-party 웹 또는 애플리케이션이 특정 작업을 수행할 수 ...
📌 문제 https://www.acmicpc.net/problem/1613 📌 설명 주어진 두 수의 전후 관계를 판별하는 문제이다. 대충 문제를 보고 위상정렬이겠거니 하고 풀었지만 WA가 나왔다. 위상정렬 풀이의 반례는 비연결 그래프 상황이다. 1->3, 2->4에서 3, 4의 전후 관계는 판별할 수 없다. 그렇다면 Union-Fin...
📌 문제 https://www.acmicpc.net/problem/11657 📌 설명 음의 가중치를 가지는 간선에서 최단 경로를 구하는 문제이므로 다익스트라는 사용할 수 없으며, 벨만-포드나 플로이드-워셜 알고리즘을 사용해야 한다. 단, 몇 가지 고려해야 하는 점이 있다. 먼저 출발지와 도착지가 같은 버스가 여러 개 존재할 수 있다. 이는 예제...
📌 Bean이란? Bean 은 스프링 프레임워크에서 IoC(Inversion of Control) 컨테이너에 의해 관리되는 객체를 말한다. Spring Boot의 특징 중 하나는IoC(Inversion of Control)이다. IoC는 객체의 생성 및 제어권, 생명주기 관리 등을 개발자가 아닌 Spring Boot Framework에게 맡기...
현대의 웹 애플리케이션은 많은 기능이 있으며 복잡하다. 따라서 가독성 및 유지보수성이 떨어진다. 또한 여러 팀이 협업하는 경우 코드 충돌 및 관리의 어려움이 발생한다. 또한 컴포넌트 기반 개발이 보편화됨에 따라 재사용 가능한 코드 구조가 필요하게 되었다. FSD(Feature-Sliced Design) 는 프론트엔드 애플리케이션을 기능 단위로 구조화...
📌 문제 https://www.acmicpc.net/problem/12015 📌 설명 11053번: 가장 긴 증가하는 부분 수열 문제는 이중 for문을 돌며 현재 원소의 dp값은 현재 원소보다 작은 원소들의 dp값의 최댓값에 1을 더한 값이었다. 이번 문제는 위와 같은 O(N^2) 풀이로 풀게 되면 시간 초과가 발생한다. LIS를 푸는 방법...
📌 문제 https://www.acmicpc.net/problem/20530 📌 설명 사이클에 속하는 노드를 루트 노드로 하여 새로운 트리를 만든다. 만약 두 노드가 하나의 트리에 존재한다면 단순 경로의 수는 1, 다른 트리에 존재한다면 2이다. 먼저 DFS를 통해 사이클을 탐지하고 해당하는 노드들을 찾는다. 연결된 두 노드에 대하여 만약 한 ...
📌 문제 https://www.acmicpc.net/problem/1202 📌 설명 처음에는 DP로 푸는 배낭 문제인 줄 알았지만 입력의 제한이 너무 컸다. 또한 가방이 여러 개이며 하나의 가방에 하나의 보석만 넣을 수 있다는 점이 배낭 문제와의 차이점이었다. 당연히 보석을 분할할 수 있다는 조건이 없으므로 그리디 알고리즘을 통한 배낭 문제로도 ...