선택정렬 O(n2) 가장 기본적인 정렬 방법. 각 요소들을 하나씩 비교해 비교하는 요소와 가장 작은 요소의 자리를 바꾼다. int[] arr = {4, 5, 1, 2, 3}; int minIndex = 0; // 가장 작은 요소의 index. 첫번째 요소의 index로 초기화 for(int i = 0; i arr[j]){ minIndex = j; // minIndex가 가리키는 요소가 비교하는 요소보다 크면 minIndex를 갱신 } } int temp = arr[i]; // 지금 비교하는 요소의 값을 보관 arr[i] = arr[minIndex]; // 가장 작은 ..
사내에서 쓰고 있던 스프링부트 버전은 2.2.4였다. 보안문제도 있고 스프링부트 3점대가 나오고 있는 상황에서 너무 낮은 버전을 쓰고 있는 것 같아 2.7.14로 버전을 업그레이드 했다. 버전이 바뀌면서 스프링 자체적으로 작동방식이 많이 변경되어 여러 수정작업을 거쳤다. 그 중 Spring Security와 관련한 수정작업을 하며 Spring Security에 대한 이해가 부족함을 느꼈다. 이번 기회에 Spring Security를 공부하겠다는 마음으로 글을 작성해봤다. Spring Security에 대해 알아보자 서블릿 컨테이너는 DispatchServlet이 Http Request를 가지고 URL에 매핑되어 있는 Controller에 요청을 전달하고 로직을 수행한 후 Http Response를 반환하..
웹 서버 HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 예) nginx, apache 정적 리소스란 html, css, js, image 등 서버에 저장되어 있는 파일을 의미한다. 웹 어플리케이션 서버 HTTP 기반으로 동작 웹 서버 기능을 포함 프로그램 코드를 실행해서 어플리케이션 로직 수행 동적 HTML, HTTP API 서블릿, JSP, 스프링 MVC 예) 톰캣, JETTY 가장 간단한 웹 시스템 구축 - WAS, DB 클라이언트 -- WAS -- DB WAS에서 정적 리소스, 어플리케이션 로직을 전부 처리 문제는 정적 리소스를 처리하는 과정에서 어플리케이션 로직을 처리하지 못할 수 있음. 부하가 많을경우 WAS가 죽을 수도 있다. 기본적인 웹 시스템 - WER SERVER, WAS, D..
서블릿이란? 먼저 WAS가 HTTP 요청을 받고 처리하는 과정을 생각해보자. 서버 TCP/IP 대기, 소켓 연결 HTTP 요청 메시지를 파싱해서 읽기 HTTP 메소드가 뭔지, 어떤 URL인지 체크 CONTENT-TYPE 확인 HTTP 메시지 바디 내용 파싱 URL에 따른 비즈니스 로직 수행 --> 이게 가장 중요함. HTTP 응답 메시지 생성 TCP/IP에 응답전달, 소켓 종료 개발자가 이 모든 과정을 매번 구현해야한다면 매우 귀찮고 지루한 작업이 될 것. 즉 비즈니스 로직을 개발하는데 집중할 수 없다. 이를 해결하기 위해 WAS에서는 서블릿을 제공하는데 즉 서블릿이란 비즈니스 로직에 집중하기 위해 HTTP 요청, 응답의 과정을 추상화하여 제공하는 것이라 할 수 있다. 서블릿 컨테이너 서블릿은 개발자가 ..