분류 전체보기(754)
-
[Spring] WAS 멀티 쓰레드에 대한 나름의 이해
백엔드 개발자에게 매우매우 중요한 개념이다. 쓰레드는 실행 흐름이다. 동시에 요청이 들어올때 하나의 쓰레드만 있다면 먼저 들어온 요청을 끝내고 다음 요청을 한다. 하지만 먼저 들어온 요청에서 지연이 발생하면 자연스럽게 그 다음 요청도 지연된다. 이는 사용자 경험을 떨어뜨린다. 이를 해결하기 위해 멀티 쓰레드를 사용한다. 하지만 요청이 들어올때 마다 쓰레드를 생성한다면 비용이 크다. 콘텍스트 스위칭 비용, 쓰레드 생성, 제거 비용이 발생하고 이는 CPU의 효율을 떨어뜨리고 응답 속도가 늦어진다. 또한 쓰레드 생성에 제한이 없으면 요청이 너무 많이 들어오면 서버가 죽는다. 이러한 문제 때문에 쓰레드풀이라는 것을 만들어 사용한다. 쓰레드풀이란 쓰레드를 정해진 개수만큼 미리 만든 것이다. 쓰레드풀에서는 쓰레드를..
2023.11.10 -
[Spring] Servlet에 대한 나름의 이해
서블릿은 WAS가 HTTP 프로토콜 하는 과정을 도와준다. Request 요청 파싱과 Response 응답 메시지를 만드는 과정을 도와준다. 개발자는 핵심 로직을 개발하는데 집중할 수 있도록 한다. 서블릿 객체는 싱글톤으로 구현된다. request, response는 아니다. 모든 클라이언트는 동일한 서블릿 객체를 사용한다. 때문에 공유 변수에 주의한다. 값이 바뀌는 필드가 있어서는 안된다. 지역 변수를 활용한다. 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다. 강력한 기능 중 하나는 동시 요청을 위한 멀티쓰레드 처리를 지원한다. 따라서 개발자는 이를 신경쓰지 않아도 된다. Reference https://www.inflearn.com/course/lecture?co..
2023.11.10 -
[Spring] 웹서버, 웹애플리케이션 서버에 대한 나름의 이해
웹서버는 정적인 리소스를 제공하는 서버를 의미한다. 웹애플리케이션 서버(WAS)는 핵심 비즈니스 로직을 처리하는 서버를 의미한다. 정적인 리소스도 제공할 수는 있다. 하지만 웹서버와 웹애플리케이션 서버를 분리해서 사용한다. 웹 애플리케이션 서버는 에러가 많이 난다. 하지만 웹서버는 그럴일이 거의 없다. 따라서 오류 화면을 보여주도록 할 수도 있다. 웹 애플리케이션 서버가 모든 걸 하면 서버 과부하가 생길 수 있다. 나누면 효율적인 서버 관리가 된다. 정적 리소스가 많이 사용되면 웹서버를 증설하고 애플리케이션 리소스가 많이 사용되면 WAS를 증설하면 된다. Reference https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A..
2023.11.10 -
[네트워크] 캐시에 대한 나름의 이해
먼저 캐시는 왜 필요할까? 1.1MB 용량의 똑같은 사진을 요청할 때마다 보낸다고 생각해보자. 네트워크는 속도가 느리고 비싸다. 이에 따라 브라우저 렌더링하는 속도가 느려진다. 그러면 사용자 경험도 떨어진다. 굳이 똑같은 사진을 또 요청할 필요가 있을까? 캐시를 저장해두면 된다. 웹브라우저 캐시에 저장을 해두면 웹브라우저는 이를 보고 있으면 여기서 불러온다. 그러면 속도가 빨라져 렌더링 속도도 빨라지고 사용자 경험도 좋아진다. 서버에서 캐시에 저장하라고 할때 cache-control: max-age=초 헤더를 사용한다. 몇초동안 캐시로 저장하라는 것이다. 이 시간 동안은 웹브라우저가 캐시를 이용한다. 캐시 유효시간이 지나면 못쓴다. 다시 요청을 해야한다. 근데 만약 서버에서 보내려는 데이터가 캐시에 있는..
2023.11.10 -
[CS] 멀티프로세스와 멀티쓰레드에 대한 나름의 이해
멀티프로세스는 하나의 컴퓨터에서 여러개의 프로세스를 실행할 수 있다는 의미이다. 멀티쓰레드는 하나의 프로세스가 여러개의 쓰레드를 가질 수 있다는 것이다. 멀티쓰레드는 코드, 데이터, 힙을 공유하기 때문에 콘텍스트 스위칭 비용이 적지만 동기화의 문제가 있다.
2023.11.09 -
[알고리즘][X] 정수 제곱근 판별
문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 nreturn 121144 3-1 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. 나의 풀이 - for문에서 n+1이 아닌 n으로 해서 틀렸다. 1의 경우에 미스가 난다. - 느리다. def solution(n): for i in range(1, n+1):..
2023.11.09