서론기본적으로 HTTP 프로토콜을 사용하는 아키텍처에서 front-end가 back-end 서버에 데이터를 요청하는 단 방향 통신이다. 따라서 특정 이벤트가 발생했을 때 이를 front-end에서 처리하고 싶다면, back-end 서버에서 front-end에 알릴 수 있는 방법을 고안해야 한다.여러가지 방법들Pollingfront-end에서 주기적으로 http 통신을 요청하여 특정 이벤트가 발생했는지 주기적으로 확인하는 방법이다. 통신을 할 때마다 연결하고 연결을 끊기 때문에 리소스 낭비도 심하고 비효율적이다.Long Pollingfront-end에서 http 통신을 요청하고 서버에서는 이벤트가 발생하기 전까지 통신을 유지한다. 그리고 이벤트가 발생했을 때 응답을 하는 방식이며, 응답을 받으면 곧 바로 ..
분류 전체보기
boj2533https://www.acmicpc.net/problem/2533문제페이스북, 트위터, 카카오톡과 같은 사회망 서비스(SNS)가 널리 사용됨에 따라, 사회망을 통하여 사람들이 어떻게 새로운 아이디어를 받아들이게 되는가를 이해하는 문제가 중요해졌다. 사회망에서 사람들의 친구 관계는 그래프로 표현할 수 있는데, 이 그래프에서 사람은 정점으로 표현되고, 두 정점을 잇는 에지는 두 정점으로 표현되는 두 사람이 서로 친구 관계임을 표현한다.예를 들어, 철수와 영희, 철수와 만수, 영희와 순희가 서로 친구 관계라면 이를 표현하는 친구 관계 그래프는 다음과 같다. 친구 관계 그래프를 이용하면 사회망 서비스에서 어떤 새로운 아이디어가 전파되는 과정을 이해하는데 도움을 줄 수 있다. 어떤 새로운 아이디어를 ..
boj1520https://www.acmicpc.net/problem/1520 접근방법 또는 고려해야할 점오른쪽, 아래 이런식으로만 움직이는 경우의 수를 세는 것이 아니기 때문에, DFS + DP를 적용함.만약 Memoization을 사용안하고 N-1,M-1에 도달할 때마다 answer++를 하게되면 중복된 경로를 또 계산할 수 있음.dp[x][y] += dfs(newX,newY);코드package self;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class boj1520 { static int N; st..
boj1509https://www.acmicpc.net/problem/1509문제세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다.분할의 개수의 최솟값을 출력하는 프로그램을 작성하시오.입력첫째 줄에 문자열이 주어진다. 이 문자열은 알파벳 대문자로만 이루어져 있고, 최대 길이는 2,500이다.출력첫째 줄에 팰린드롬 분할의 개수의 최솟값을 출력한다.접근방법 또는 고려해야할 점dp 2개를 사용함dp1[i][j] = arr[i] ~ arr[j] 까지가 팰린드롬인지 확인하는 로직dp1[start][start+len] =dp1[start][..
Spring SecurityArchitecture일단 기본적으로 Spring Security는 Servlet Filter layer에서 동작하는 것을 기억하자.How does Servlet Filter work?Client에서 애플리케이션에 요청을 하게되면 서블릿 컨테이너에서 서블릿 인스턴스들과 HttpServletRequest 를 처리하는 서블릿으로 이루어진 필터 체인을 생성한다.Filter Chain = ((Filter Instance1 → Filter Instance2 → Filter Instances . . . → Servlet (Spring Applictation을 사용한다면 Dispatcher Servlet))public void doFilter(ServletRequest request, Se..
도커파일은 text-based 문서이며 컨테이너 이미지를 생성하는 데에 필요한 Instructions들 모음이다.아래 예시를 보며 이해해보자.FROM python:3.12WORKDIR /usr/local/app# Install the application dependenciesCOPY requirements.txt ./RUN pip install --no-cache-dir -r requirements.txt# Copy in the source codeCOPY src ./srcEXPOSE 5000# Setup an app user so the container doesn't run as the root userRUN useradd appUSER appCMD ["uvicorn", "app.main:app",..
Container가 독립적인 프로세스이면 해당 프로세스가 실행할 코드, 파일, 라이브러리, Dependencies 등은 어디서 가져와서 실행할까.이를 해결하기위해 이미지라는 개념이 나왔다.도커 이미지란 컨테이너를 실행시키기위해 파일, configuration, libraries, binaries 등을 포함한 규격화된 패키지다.이미지의 두 가지 원칙이미지는 불변하다. 한번 생성되었으면 수정될 수 없다. 새로운 이미지를 생성하거나, 변경된 부분을 이미지의 위에 추가한다. → 변경된 부분을 위에 추가하는 것이 layer.컨테이너 이미지는 Layers의 조합이다. 각 Layer는 파일들의 수정, 제거, 추가 등의 파일 시스템의 변경사항에 대한 집합이다. layer은 읽기전용이고 독립적으로 저장되고 컨테이너를 실..
ContainerWhat is Container?Container는 App Component 단위로 실행되는 독립적인 프로세스이다.Host machine으로부터 독립적이고 의존하지 않는다. 즉 Host Machine → 내가 작업하고 있는 로컬 노트북이 되겠다. 뭐 클라우드상에 존재하는 인스턴스일 수도 있고.. 아무튼 동일한 환경에서 동작할 수 있도록 존재하는 것이 Container다. 특징Self-Contained각 컨테이너는 Host Machine에 깔려있는 것에 의존하지 않고 실행할 수 있도록 dependency 들을 자체적으로 갖고있다.Isolated각 컨테이너들은 고립적으로 실행되고, host나 다른 컨테이너에 영향을 적게 미친다. 이를 통해 어플리케이션의 보안이 강화됨Independent각 컨..
Servlet 컨테이너가 생성되면 어떻게 AbstractAnnotationConfigDispatcherServletInitializer 을 상속받아 작성한 클래스를 읽고 Dispatcher Servlet을 등록하고 초기화 작업을 할 수 있을까?ServletContainerInitializer 를 구현한 SpringServletContainerInitializer 클래스를 잘 살펴보자@HandlesTypes({WebApplicationInitializer.class})public class SpringServletContainerInitializer implements ServletContainerInitializer { public SpringServletContainerInitializer() {..
📚 오늘의 문제링크 : https://www.acmicpc.net/problem/7795문제 설명심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 수 있는 쌍의 개수는 7가지가 있다. 8-3, 8-6, 8-1, 7-3, 7-6, 7-1, 3-1.두 생명체 A와 B의 크기가 주어졌을 때, A의 크기가 B보다 큰 쌍이 몇 개나 있는지 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 A의 수 N과 B의 수 M이 주어진다. 둘째 줄에는 A의 크기가 모두 주어지며, 셋..