전체 글(194)
-
Spring MVC
Spring MVC란 Spring MVC란 Front Controller Pattern에 기초한 웹 MVC 프레임워크입니다. Spring MVC는 Model, View, Controller를 명확한 클래스로 분할하고 losse coupling 시켜놓아서 매우 유연하고 확장성이 좋게 만들어 놓았습니다. Spring MVC의 구성요소 DispatcherServlet Spring MVC가 Front Controller Pattern에 기반하고 있는데 바로 그 Front Controller가 DispatcherServlet입니다. DispatcherServlet은 클라이언트의 모든 요청을 접수합니다. 그리고 받아들인 요청에 대한 처리를 다른 컴포넌트들에게 보내서 위임하고 있습니다. Infrastructure C..
2021.11.02 -
CORS
CORS란 CORS란 Cross-Origin Resource Sharing의 약자입니다. 브라우저에서 다른 출처의 리소스를 공유하는 방법입니다. URL 구조 출처란 출처란 URL 구조에서 살펴본 Protocol, Host, Port를 합친 것을 말합니다. 브라우저 개발자 도구의 콘솔 창에 location.origin을 실행하면 출처를 확인할 수 있습니다. CORS 동작 원리 Simple Request Simple Request는 서버에게 바로 요청을 보내는 방법입니다. 단순 요청은 서버에 API를 요청하고, 서버는 Access-Control-Allow-Origin 헤더를 포함한 응답을 브라우저에 보냅니다. 브라우저는 Access-Control-Allow-Origin 헤더를 확인해서 CORS 동작을 수행할..
2021.11.01 -
Spring MVC와 WebFlux의 차이
Spring WebFlux Spirng WebFlux는 Event driven 방식이고 비동기 논블로킹 방식입니다. WebFlux는 Node.js처럼 이벤트 루프가 돌아서 요청이 발생할 경우 그것에 맞는 핸들러에게 처리를 위임하고 처리가 완료되면 callback 메소드 등을 통해 응답을 반환합니다. 그래서 이 방식의 경우 Spirng MVC에 비해 적은 스레드로 많은 사용자의 요청을 받아낼 수 있습니다. Spirng MVC Spring Mvc는 사용자의 요청이 들어왔을 때마다 Thread를 생성하여 요청을 처리합니다. 하지만 다수의 사용자 요청이 들어왔을 때, Thread를 계속 생성하는 것은 리소스가 굉장히 많이 들어갑니다. 그래서 Spring MVC의 경우 어플리케이션이 실행되면서 Thread Poo..
2021.10.29 -
카데인 알고리즘
카데인 알고리즘은 배열의 최대 부분 합을 O(n)의 시간복잡도로 구하는 알고리즘입니다. 개념을 간단하게 설명하자면, i번째 인덕세를 오른쪽 끝으로 하는 부분 배열들의 최대 부분 합을 M[i]라고 하면, M[i + 1]은 M[i] + arr[i + 1]이거나 arr[i + 1]중 더 큰 값입니다. M[i + 1] = max(M[i] + arr[i + 1], arr[i + 1])인 이유는 i를 오른쪽 끝으로 하는 부분 배열 중 최대 부분 합이 음수이면 굳이 더하지 않고 그냥 i+1 번재 인덱스부터 새로 더하는 것이 이득이기 때문입니다. 참고: https://r4bb1t.tistory.com/10
2021.10.19 -
G1 GC
G1 GC란 G1 GC는 대용량의 메모리가 있는 멀티 프로세서 시스템을 위해 제작되었습니다. 빠른 처리 속도를 달성하면서 pause의 최소화를 충족시키는 것이 G1 GC의 목표입니다. Heap은 동일한 크기의 영역으로 나뉘어 집합으로 분할되어 연속된 가상 메모리로 존재하게 됩니다. G1 GC는 Heap Area를 일정 크기의 region으로 구분하여 논리적으로 구분하고 있습니다. 최초 객체가 생성되면 Eden에 할당하고 Survivor로의 이동과 소멸 그리고 Old Region으로의 이동 생명주기를 가집니다. G1 GC의 수행 과정 Initial Mark Old Region에 존재하는 객체들이 참조하는 Survivor Region을 찾습니다. Root Region Scan Initial Mark에서 발견..
2021.10.14 -
ZGC
ZGC란 ZGC는 아래의 목표를 충족하기 위해 설계된 확장 가능하고 낮은 지연율을 가진 GC입니다. 정지 시간이 최대 10ms를 초과하지 않음 Heap의 크기가 증가하더라도 정지 시간이 증가하지 않음 8MB ~ 16TB에 이르는 다양한 범위의 Heap 처리 가능 JVM으로 구동되는 애플리케이션의 경우, GC가 동작할 때 pause로 인해 성능에 큰 영향을 미쳐왔습니다. ZGC는 Load barrier와 Colored Pointer를 함께 사용해 puase 시간을 줄여 성능이 향상되었습니다. Colored Pointer 객체를 가리키는 변수의 포인터에서 64bit를 활용해서 marking을 하고 있습니다. Finalizable: finalizer를 통해서만 참조되는 Object의 Garbage Remapp..
2021.10.10