본문 바로가기

전체 글86

[SpringBoot] 다중 유저 요청처리 Spring Boot를 쓰다보면 다중유저가 요청이 왔을 경우 어떻게 처리하는지는 명확하게 모른다. MVC는 스프링부트를 사용하는 개발자가 직접 구현해야하는 부분이고, 다중요청처리는 스프링부트가 알아서 해주고 있는 부분이니 상대적으로 관심이 없을꺼라 생각한다. 사실 스프링부트가 다중요청을 처리하는 것이 아니라, 스프링부트에 내장되어있는 서블릿 컨테이너(Tomcat)에서 다중요청을 처리해준다. (서블릿 컨테이너에 대해 잘 모르신다면 서블릿 컨테이너 키워드로 검색) 핵심 키워드는 Tomcat Thread Pool, NIO Connector, Embeded Tomcat 이다. 처리순서 1. 스프링부트는 내장 서블릿 컨테이너인 Tomcat을 이용한다. 2. Tomcat은 다중 요청을 처리하기 위해서, 부팅할 때 .. 2023. 12. 15.
[JAVA] Thread 개념 (single/multi) ✔ Thread? 프로세스 내에서 실행되는 여러 흐름의 단위이며 프로세스의 특정한 수행 경로이다. 즉, 프로세스가 할당받은 자원을 이용하는 실행의 단위입니다. 조금 이해하기 어렵다면! 프로세스(공장) , 쓰레드 (일꾼) 이라고 생각하면 이해하기 쉬울 것이다! ✔ Thread의 메모리 쓰레드는 각각 Stack 영역은 따로 할당 받고 나머지 영역은 공유한다. 따라서 하나의 쓰레드에서 오류가 발생한다면 프로세스의 다른 쓰레드도 모두 강제 종료 된다. ✔ 멀티태스킹 & 멀티쓰레딩 멀티태스킹: 여러 프로세스가 동시에 실행되는 것 멀티쓰레딩: 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것 ✔ Single Thread 프로세스가 단일 쓰레드로 동작하는 방식이다. 하나의 레지스터, 스택으로 표현한다... 2023. 12. 15.
[JAVA] 메모리영역 예전에 프로젝트를 할때, 이유없이 메모리가 가득 할당되어 당황한적이 있었는데 확인해보니 WebClient 를 잘못쓰면 메모리 누수가 일어난다고한다 이에 따라 다시 기본적으로 자바 메모리에 대해 정리해본다 ✔ Java의 메모리 영역 자바 프로그램을 실행 하게되면 JVM(Java Virtual Machine)은 OS 로 부터 메모리를 할당 받는다, 할당 받은 메모리를 자바 프로그램에 맞게 여러개의 영역으로 나누어 사용하게 된다. ✔ JVM? Java Virtual Machine (JVM)은 Java 언어로 작성된 프로그램을 실행하기 위한 가상 머신으로, 운영체제와 독립적이다. Java 프로그램은 바이트 코드로 컴파일되어 JVM에서 실행되기 때문에, JVM은 어떤 운영체제 위에서도 동일한 방식으로 동작한다. .. 2023. 12. 15.
[WebClient] Block vs Subscribe vs Tuple WebClient 를 적용하다보니 궁금한점이 생겨서 정리하는 블로깅 API URL https://jsonplaceholder.typicode.com/todos https://jsonplaceholder.typicode.com/comments API 2개를 각각 3가지 방식으로 다르게 호출하고 시간을 측정한 테스트 로직이다. 일단 소스부터 투척 @Test public void webClient_block() { long start = System.currentTimeMillis(); String monoResult1 = httpWebClient.httpRequestGet("/todos", null).block(); String monoResult2 = httpWebClient.httpRequestGet(".. 2023. 12. 4.