버블 - 끝없는 비교
선택 - 키 작은 사람 찾기
삽입 - 신병
위는 다 N^2 이지만 이미 정렬된 배열이라면 삽입이 가장 좋은 시간복잡도를 가진다.
병합 - 분할정복 - NlogN
쓰레드 -
애플리케이션 코드를 순차적으로 실행하는 것은 쓰레드
자바 메인 메서드는 main이라는 쓰레드가 실행
동시 처리가 필요하면 쓰레드 추가생성
요청 마다 쓰레드를 생성하면
-장점
동시 요청을 처리할 수 있다.
리소스가 허용할 때 까지 처리가 가능하다
하나의 쓰레드가 지연돼도 나머지 쓰레드는 정상 동작한다
-단점
쓰레드 생성 비용이 비싸고
컨텍스트 스위칭은 리소스를 많이 쓴다
쓰레드 생성에 제한이 없으면 hw의 임계점을 넘을 때 서버가 죽는다.
따라서 쓰레드 풀이라는 것을 사용한다.
필요한 쓰레드를 풀에 보관하고 관리한다(톰캣은 200개 기본)
쓰레드가 필요하면 이미 생성되어 있는 쓰레드를 꺼내서 사용하고 반납한다.
기다리는 요청은 거절하거나 특정 숫자만큼만 대기하도록 설정할 수 있다.
WAS의 튜닝 포인트는 최대 쓰레드 수이다.
쓰레드가 적으면 동시 요청이 많을 때, 서버 리소스는 여유롭지만 클라이언트는 응답 지연
쓰레드가 많으면 동시 요청이 많을 때, hw임계점 초과로 서버 다운
SSR - 서버 사이드 렌더링 - JSP, 타임리프
CSR - 클라이언트 사이드 렌더링 - React, Vue
@ServletComponentScan // 서블릿 자동 등록