Web Server와는 다르게 DB조회 등 다양한 로직 처리를 요구하는 동적인 컨텐츠를 담당.
웹 컨테이너, 혹은 서블릿 컨티에너라고 불림.
분산 트랜잭션, 보안, 메시징, 스레드 처리 등의 기능을 처리하는 분산환경에서 사용
Tomcat, JBoss 등이 대표직인 WAS이다.
동작 방식
Web Server 의 클라이언트의 요청에 맞는 Servlet을 메모리에 올린다.
web.xml에을 참조해 해당 Servlet에 대한 Thread를 생성한다.
HttpServletRequest와 HttpServletResponse 객체를 생성하고 그에 맞는 doGet 또는 doPost 메소드를 호출해 생성된 동적 페이지를 Response 객체에 담아 WAS에 전달한다. ex) doGet(HttpServletRequest request, HttpServletResponse response)가 리턴하는 Response 객체를 WAS에 전달.
WAS는 HttpResponse 형태로 바꾸어 WebServer에 전달하고 생성된 스레드와 HttpServletRequest, HttpServletResponse 객체를 제거한다.
정규화란: 데이터를 저장할때 불필요한 데이터를 제거하고, CRUD시 발생할 수 있는 각종 사이드이팩틀르 방지한다.
1차 정규화 : 도메인 원자성을 확보 ( 한 컬럼이 하나의 값만을 가진다.) 2차 정규화 : 부분적 함수 종속 제거(즉, 완전 함수적 종속으로 만든다.) 3차 정규화 : 이행적 함수종속 제거 (즉, 키 이외의 다른 값이 다른 컬럼을 결정할 수 없다.) BCNF: 모든 결정자가 후보키 집합에 속하게 만든다.
- List : 순서가 있는 데이터의 집합, 데이터의 중복을 허용
- Set : 순서가 없는 데이터의 집합, 데이터의 중복을 허용하지 않는다.
- Map : key / value의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 ㅇ낳으며 키는 중복ㅇ르 허용하지 않고 값은 중복을 허용한다.
배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 부분과 비교하여 자신의 위치를 찾아서 삽입한다.
매순서마다 원소를 삽입할 수 있는 위치를 찾아서 해당 위치에 넣는다.
두번째 자료(index = 1 )부터 시작한다
1번째 값이 0번째값보다 작으면 1번째 값을 0번째에 넣고 0번째 값을 1번째 자리에 넣는다.
여기까지하면 인덱스 0,1이 정렬된 자료가된다.
2번째 값을 0,1번째 값과 비교한후 적절한 자리에 넣고 해당 자리의원소들은 뒤로 한칸씩 밀린다.
여기까지하면 인덱스 0,1,2가 정렬된 자료가 된다.
3번째 값을 정렬된 자료와 비교하여 적절한 자리에 넣고 원래 자리에있던 원소들은 한칸씩 뒤로간다.
여기까지하면 0,1,2,3이 정렬된 자료가된다.
n까지 반복하면 0부터 n까지 정렬이 완료된다.
장점
안정한 정렬방법이다.
자료의 수가 적을경우 알고리즘이 매우 간단하다.
대부분 정렬이 된 상태일경우 효율적이다.
단점
자료의 이동이 많다.
자료가 많은 경우 적절하지못하다.
알고리즘 예제
3125 12 22 11 처음 상태. 31 [25] 12 22 11 두 번째 원소를 부분 리스트에서 적절한 위치에 삽입한다. <25> 31 [12] 22 11 세 번째 원소를 부분 리스트에서 적절한 위치에 삽입한다. <12> 25 31 [22]11 네 번째 원소를 부분 리스트에서 적절한 위치에 삽입한다. 12 <22>25 31 [11] 마지막 원소를 부분 리스트에서 적절한 위치에 삽입한다. <11> 12 22 25 31 종료.}
삽입정렬Insertion Sort 코틀린 코드
fun insertionSort(arr: IntArray) : IntArray{
var j = 0
var key = 0
for (i in 1 until arr.size) { //0번째 자료는 정렬된것으로 간주한다.
key = arr[i]
j = i
while (--j >= 0 && key < arr[j]) {
arr[j+1] = arr[j]
arr[j] = key
}
}
return arr
}
시간복잡도
최선의경우
비교횟수
이동이 없이 1번의 비교만 이루어진다.
O(n)
최악의 경우
비교횟수
모든 자료를 비교해야하기때문에 n개의 자료를 정렬할경우 n, n-1, n-2 ... 1 번의 비교를해야한다.