전체 글

Process Control Modes of Execution (실행 모드) - User mode(사용자 모드) 운영체제 서비스를 제공받을 수 없는 실행 모드 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없다. - kernel mode(커널 모드) 운영체제 서비스를 제공받을 수 있는 실행 모드 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있음. 커널 모드의 기능들 두 개의 모드를 나누어 사용하는 이유 - OS 와 OS tables를 보호하기 위해서다. 즉, 응용 프로그램들이 CPU, 메모리, 하드 디스크 등에 마음대로 접근하고 조작할 수 있다면 자원이 무질서하게 관리될 것이고, 응용 프로그램이 조금만 실수해도 컴퓨터..
ArgumentResolver HandlerMethodArgumentResolver Spring MVC에서 컨트롤러 메서드의 각 파라미터가 어떻게 해석되어야 할지 결정하는 전략을 제공하는 인터페이스 즉, HTTP 요청과 관련된 데이터를 어떤 방식으로 컨트롤러 메서드의 인자로 전달할지 결정하는 역할을 함 -> (@RequestParam, @PathVariable 등) 으로 처리할 수 없는, 더 복잡하거나 특수한 요구사항을 가진 파라미터 바인딩을 구현할 수 있다. ArgumentResolver - HandlerMethodArgumentResolver의 구현체를 지칭하는 말 HandlerMethodArgumentResolver 인터페이스는 주로 두 가지 메소드를 정의한다. 핵심메소드 supportsParame..
JSP서블릿과 자바 코드만으로 HTML을 만든다면 매우 복잡하고 비효율 적이다. 차라리 HTML 문서에 동적으로 변경해야 하는 부분만 자바 코드로 넣을 수 있다면 더 편리한데 이것이 바로 템플릿 엔진이 나온 이유이다. 템플릿 엔진을 사용하면 HTML 문서에서 필요한 곳만 코드를 적용해서 동적으로 변경할 수 있다.템플릿 엔진에는 JSP, Thymeleaf, Freemarker, Velocity등이 있다.    MVC 패턴  Model, View, Controller- 하나의 서블릿이나, JSP로 처리하던 것을 컨트롤러(Controller)와 뷰(View)라는 영역으로 서로 역할을 나눈 것을 말한다.   컨트롤러 : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 ..
서블릿 컨테이너 동작 방식  스프링 부트를 실행하면 내장 톰캣서버를 띄우고 톰캣서버는 내부에 서블릿을 생성하고  위와 같은 요청을 보낸다.  웹 브라우저에서 HTTP 요청 메시지를 기반으로 request 객체를 만들어 전달하여 helloServlet을 호출하여 Response 객체 정보로 반환하여 웹 브라우저에서 볼 수 있게된다.     HttpServletRequest서블릿은 아래와 같은 HTTP 요청 메시지를 파싱해서 HttpServletRequest에 담아준다.POST /save HTTP/1.1Host: localhost:8080Content-Type: application/x-www-form-urlencodedusername=kim&age=20   "임시 저장소 기능"해당 HTTP 요청이 시작부터..
Protocol Layering 프로토콜은 송신자와 수신자 또는 디바이스들 사이에서 효과적으로 통신을 할 수 있게하는 규칙이다. 통신이 간단하면 하나의 프로토콜이 필요하지만, 통신이 복잡하다면 각 층마다 프로토콜이 필요할 것이다. 이를 프로토콜 계층화(Protocol Layer)라고한다. 프로토콜 계층화를 사용하면 복잡한 작업들을 작고 간단한 작업들로 나누는 것을 가능하게 한다. 계층화를 사용하지 않는다면 암호화/복호화 방식을 바꿔야한다면 전체를 바꿔야할 것이다. 하지만 암호화/복호화 만을 담당하는 계층을 만든다면 다른 계층들은 신경쓸 필요가 없어진 것이다. => 모듈화(Modularity) 라고한다. Advantage of Protocol Layering 서비스와 구현을 분리시켜준다. 계층은 하위 계층..
그리디 알고리즘이란 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘이다. 그리디 알고리즘의 핵심 이론 해 선택: 현재 상태에서 가장 최선이라고 생각되는 해를 선택한다. 적절성 검사: 현재 선택한 해가 전체 문제의 제약 조건에서 벗어나지 않는지 검사한다. 해 검사: 현재까지 선택한 집합이 전체 문제를 해결할 수 있는지 검사한다. 전체 문제를 해결하지 못한다면 1. 로돌아가 같은 과정을 반복한다. 문제 풀이 먼저 선택된 카드 묶음이 비교 횟수에 더 많은 영향을 미친다. 따라서 카드 묶음의 카드의 개수가 작은 순서대로 먼저 합치는 것이 전체 비교 횟수를 줄일 수 있는 방법이다. 즉, 현재 데이터 중 가장 작은 카드의 개수를 가진 묶음 2개를 ㅃㅂ고 다시 데이터..
문제의 핵심은 이진탐색이다. 이진탐색은 데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘이다. 대상 데이터의 중앙값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다. 핵심이론은 다음과 같다. 현재 데이터셋의 중앙값을 선택한다. 중앙값 > 타깃 데이터일 때 중앙값 기준으로 왼쪽 데이터셋을 선택한다. 중앙값 < 타깃 데이터일 때 중앙값 기준으로 오른쪽 데이터셋을 선택한다. 과정 1~3을 반복하다가 중앙값 == 타깃 데이터일 때 탐색을 종료한다. 문제에서는 블루레이의 크기가 모두 같고 녹화순서가 바뀌지 않아야 함 이라는 문제 조건이 이진 탐색 알고리즘을 선택하게 하는 실마리이다. 이진탐색의 시작 인덱스는 최대 레슨 시간인 9, 종료 인덱스는 레슨 시간을 모두 합한 45이다...
목차 Process Description * 실선 : 프로세스를 할당함. * 점선 : 할당 요청은 했으나 할당 받지 못함. P1이 프로세스를 할당받았기 때문에 P2는 할당을 기다리는 상태이다. Pn은 메인 메모리에 메모리 요청을 했으므로 이는 new 상태일수도 있고 suspended 상태일 수도 있음. 운영체제가 관리하는 개체에 대해 테이블을 생성한다. Memory Table I/O Table File Table Process Table Memory Table - 메인 메모리에서 프로세스로 할당 - 보조기억장치에서 프로세스로 할당 - 공유 메모리 영역에서 접근에 대한 보호 - 가상 메모리를 관리하기 위한 정보 I/O Table - 입출력장치를 할당한다. - 입출력장치의 상태 - 입출력 전송의 목적지 또는..
목차 이번 포스팅은 3주차 배운 내용 보다는 스터디 주제에 대해 공부한 내용을 정리할 생각이다. 스터디 주제는 : DI, Bean, Configuration, Controller, Rest Controller, ControllerAdvice, InterCeptor, HTTP method, status code DI (Dependency Injection) 의존대상 B가 변하면, 그것이 A에 영향을 미친다. (이일민, 토비의 스프링 3.1) public class A { private B b = new B(); } A라는 클래스가 있고, 이 클래스는 B라는 클래스를 필드로 가질때 B에 final 필드가 추가되는 변경이 일어난다면 new B()부분에서 컴파일 에러가난다. B 내부의 변경이 일어났는데, A에도..
목차 Process - 실행중인 프로그램 프로그램은 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리지만, 이 프로그램을 메모리에 적재하고 실행하는 순간 이 프로그램은 프로세스가 된다. 프로세스의 요소 - 프로그램 코드 - 데이터 집합 - PCB (Process Control Block) PCB는 프로세스를 만들기 위함. 프로세스마다 생성된다. PCB에 대해 더 자세히 알아보자. PCB (Process Control Block) 다중 프로세스나 멀티프로세싱을 가능하게 해주는 중요한 기능이다. 프로세스가 인터럽트를 받으면 program counter의 현재 값과 process register를 적절한 곳에 저장한다. 그리고 프로세스의 상태를 blocked나 ready처럼 바뀐다. blocked와 read..
말동말동현
동현s토리