일단 씻고 나가자
23.04.19 본문
2023. 04. 19 수요일
- [Java] 브라우저 -> JSP의 과정? 서블릿이란 무엇이며 JSP와의 차이? 퍼블리싱?
: 브라우저 요청 -> 해당 JSP 파일을 자바 파일로 변환 -> 컴파일로 클래스 파일로 변환 -> 인스턴스 생성 -> 해당 객체의 service 함수로 대응.
JSP 또한 서블릿이며, servlet으로 동작한다.
서블릿은 웹 클라이언트의 요청을 처리할 수 있는 클래스이며, HTTPServlet을 상속받아 클래스를 작성한다. (@override init(), destroy(), service(~), doGet(~))
기존 방식은 클라이언트의 요청을 JSP로 받았지만, 서블릿 방식은 Servlet으로 직접 받는다. 둘은 요청하는 방식이 JSP냐 Servlet이냐의 차이가 있다. 서블릿으로 요청해야 MVC를 분류할 수 있다. (M – model, Java / V – view, JSP / C – controller, servlet)
이렇게 서블릿을 이용하면 웹은 자바 코드가 필요하게 되고, 코드의 매개체가 되는 것을 등록해주어야 한다. web.xml의 <web-abb> 내부에 <servlet-name>이름, <servlet-class>패키지명.클래스명, <servlet-mapping><servlet-name>이름, <url-patterm>요청 url</>으로 설정 파일을 변경해주어야 한다.
doGet 혹은 doPost 메서드 내부에 {req.getRequestDispatcher(“\login.jsp”).forward(req, resp);} 식으로 해당 jsp 파일을 내보내어 내부에서 forwarding 할 수도 있다.
퍼블리싱 – 워크 스페이스의 특정 공간에 작성 프로젝트를 복사해서 작업을 시킴.
- [DB] NULL을 제거한, 중복되지 않은 컬럼의 개수를 구하는 명령어?
: SELECT COUNT(DISTINCT 컬럼명)
COUNT는 NULL 값을 제거하고 센다.
- [Java] 특정 int를 이진수 변환했을 때 1의 개수를 구하는 함수?
: Integer.bitCount(int num);
- 클럭 사이클이 Tp인 k개의 세그먼트 파이프라인의 n개의 태스크의 클럭 사이클 수? 시간?
: 첫 태스크는 k*Tp의 시간이 필요하고, 나머지 n-1개의 태스크는 (n-1)*Tp 시간이 필요하다. 따라서 총 사이클 수는 k+n-1이고, 총 시간은 (k+n-1)*Tp 이다.
https://celdee.tistory.com/549
- 레이드란?
: Redundant Array of Independent Disk. 2개 이상의 디스크를 병렬로 처리하여, 디스크 오류나 데이터 손실의 장애를 대비하는 방법.
https://blog.naver.com/hostinggodo/220641452948
- [Git] SSH란?
: 시큐어 셀 (Secure SHell). 네트워크 프로토콜 중 하나로, 통신 시 보안적으로 안전한 응용 프로그램 또는 프로토콜을 가리킨다. public, private key로 나뉘며, public key를 원격 컴퓨터에게 심어놓으면 통신 시 해당 컴퓨터에서 private key와 public key가 한 쌍인지 검사한다. 둘은 수학적으로 아주 복잡한 관계를 맺고 있으며, private key는 노출되어선 안 된다.
https://hanamon.kr/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-ssh%EB%9E%80/
- [Spring] DTO란?
: Data Transfer Object. 외부와 통신을 하기 위해 필요한 클래스들을 통칭.
- 구현은 쉽지만 속도가 느린 정렬의 3종류와 각 세부 종류와 특징? in-place?
1. 버블 정렬 (Bubble Sort)
// 인접한 데이터를 비교하여 자리를 바꾸는 방식. O(n^2)
2. 삽입 정렬 (Insertion Sort)
// 앞의 데이터를 정렬해가며 삽입 위치를 찾아 정렬. O(n^2)
바로 앞의 데이터를 검사한 후 크다면 한 칸 앞으로, 또다시 검사 반복.
만약 바로 앞의 데이터가 더 작다면 이미 앞의 부분은 정렬한 후일 것이므로 넘어감.
평균적으론 버블보다 빠르다.
3. 선택 정렬 (Selection Sort)
// 최소, 또는 최댓값을 찾아 가장 앞, 혹은 가장 뒤의 원소와 자리를 바꾸며 순차적으로 정렬. O(n^2)
매번 모든 값을 돌며 최소 혹은 최대를 찾아야 한다.
in-place 정렬은 원소들의 개수에 비해 충분히 무시할 만한 저장 공간만을 더 사용하는 정렬 알고리즘이다. (ex. int temp 변수 하나만을 쓴다던가) not in-place는 원소들의 개수에 비례하여 저장 공간을 더 사용하는 정렬 알고리즘이다.
- 스케쥴러란? 스케쥴링 알고리즘의 5종류와 관련 자료구조?
: OS 커널 내부의 스케쥴러가 프로세스 실행을 관리하며 프로세스의 순번을 정해준다.
1. FIFO 스케쥴러 // 배치 처리 시스템. 인터럽트 없이 쭉 진행. (Queue)
2. SJF 스케쥴러 // 가장 실행시간이 짧은 프로세스부터 먼저 실행. (Priority Queue, Heap)
프로세스 개별 전체를 실행하고 넘겨주기 때문에 실행시간이 보장된다. (실시간 시스템)
+) RTOS – RealTime OS. 실행시간을 보장. (ex. 반도체 공정)
GPOS – General Purpose OS. 프로세스 실행시간에 민감하지 않은 일반적인 OS.
3. 우선순위 기반 스케쥴러 // 프로세스마다 우선순위를 명시.
(정적 우선순위 – 미리 우선순위 지정 / 동적 – 스케쥴러가 상황에 따라 동적으로 지정)
4. Round Robin // 시분할 시스템.
Queue 형태이지만 프로세스마다 일정 시간을 주어, 해당 시간이 끝나면 다음 기다리는 프로세스에게 CPU를 넘겨주는 스케쥴러.
5. 프로세스 상태 기반 스케쥴러 // 현대 스케쥴링 알고리즘.
프로세스별로 상태를 부여하여 스케쥴링하는 알고리즘.
Round Robin과 상태를 도입했기에 멀티프로그래밍, 멀티 태스킹에 쓰인다.
new, ready, running, blocked, exit로 나뉜다.
보통 I/O 작업 등으로 CPU를 사용하지 못할 땐 blocked 상태가 된다.
- bound job의 2종류?
: IO, CPU bound. IO는 네트워크나 파일 입출력을 주로 쓰는 작업, CPU는 계산기처럼 CPU만 활용하는 작업.
해당 분류를 고려하여 응용 프로그램을 만들어야 효율이 높아진다.