목록전체 글 (96)
신비한 개발사전
Spring 프레임워크는 개발자를 대신해 직접 객체를 생성하고 주입하는 등의 관리 작업을 수행할 수 있다. 이렇게 Spring이 직접 관리하는 객체를 Spring bean이라고 하며, Spring bean의 생애주기와 의존성이 관리되는 곳을 IoC 컨테이너라고 한다. ApplicationContextIoC 컨테이너는 스프링 프레임워크 내에서도 bean 관리를 중점적으로 맡는 컴포넌트라고 생각할 수 있다. ApplicationContext는 IoC 컨테이너의 개념을 코드로 옮긴 것으로, Spring bean을 설정, 생성 및 조합하는 기능들을 정의하는 인터페이스다.The interface org.springframework.context.ApplicationContext represents the Spri..
Spring 애플리케이션 구현에 JdbcTemplate을 사용하는 도중 Spring의 의존성 주입이 제대로 이루어지지 않는 듯한 문제가 발생했다. 클래스의 필드에 @Autowired 애노테이션을 추가해 Spring이 주입해주기를 기대했지만, 해당 필드의 값이 null로 초기화된 것이다. 문제되는 코드:// DAO 클래스public class QueryingDAO { // Autowired를 사용했지만 JdbcTemplate 객체가 아닌 null로 초기화됨 @Autowired private JdbcTemplate jdbcTemplate;}// 컨트롤러 클래스@RestControllerpublic class ReservationController { @GetMapping publi..

H2는 자바로 작성된 오픈소스 RDBMS다. 인메모리(in-memory) 데이터베이스로, 시스템 메모리에 저장되기 때문에 애플리케이션과 동일한 생명주기를 가진다. 애플리케이션이 종료되면 H2에 저장된 데이터가 다 휘발되기 때문에, 로컬 개발 환경이나 테스트에 적합한 데이터베이스라고 볼 수 있다. H2 설치해보기H2는 설치 방법이 간단하다. Spring Boot 애플리케이션을 구현한다면 build.gradle 파일에 의존성을 추가해주만 해도 Spring이 DataSource로 H2를 주입한다.dependencies { runtimeOnly 'com.h2database:h2'} H2 콘솔H2 콘솔은 브라우저를 통해 메모리에 올라간 H2 데이터베이스에 접근할 수 있도록 해준다. 아래와 같이 applicati..
Spring 컨트롤러Spring MVC에서의 컨트롤러란 HTTP 요청을 받아 처리하고, HTTP 응답을 반환하는 역할을 하는 bean이다. @Controller컨트롤러 bean을 생성하려면 기본적으로 클래스 단위에 @Controller 애노테이션을 추가해준다.@Controllerpublic class MyController {} @RequestMapping하지만 @Controller만으로 해당 클래스는 본인이 담당할 HTTP 요청을 전달 받을 수 없다. 어떤 요청 URL(=엔드포인트)에 대한 처리를 할지 명시해줘야 하는데, 그러기 위해 @RequestMapping 애노테이션을 사용한다. @RequestMapping은 클래스 또는 메서드에 사용할 수 있는데, 클래스 단위에 선언하면 해당 클래스의 모든 메서..
Spring 애플리케이션은 다양한 방식으로 뷰(view)를 노출시킬 수 있다. 정적 페이지가 호스팅되도록 설정하거나, 컨트롤러에서 뷰를 응답하도록 구현할 수 있다. 또한 템플릿 엔진이라는 툴을 사용할 수도 있다. 웰컴 페이지 자동 응답Spring Boot는 resources/static 디렉토리에 저장돼있는 정적 페이지를 웹페이지로 띄울 수 있도록 지원한다. 이 중 웰컴 페이지는 우리가 별도의 작업을 하지 않아도 Spring Boot가 기본적으로 띄워주는 페이지를 말한다. 애플리케이션 가동 시 resources/static에 index.html 파일이 있으면 루트 경로(e.g. http://localhost:8080/)에 접근했을 때 index.html이 웰컴 페이지로 뜬다. 웰컴 페이지의 파일명은 in..

우선순위 스케줄링CPU 자원을 분배하는 방식으로는 우선순위(priority) 스케줄링이 있다. 모든 프로세스들에게 우선순위를 매기고 높은 우선순위 순으로 CPU를 할당해주는 것이다. 만약 같은 우선순위를 가진 프로세스가 여럿 존재한다면 그 사이에서도 순서를 가릴 보조적인 룰을 따르는데, 일반적으로는 선입선출(first come, first served) 방식을 따른다. 우선순위 스케줄링은 선점형 또는 비선점형으로 구현할 수 있다. 선점형 스케줄링선점형(preemptive) 스케줄링은 현재 CPU를 할당 받아서 쓰고 있는 프로세스가 있어도 다른 프로세스가 필요로 하면 CPU 자원을 더 급한 프로세스가 빼앗아 사용할 수 있도록 하는 스케줄링이다. 따라서 한 프로세스가 CPU를 독점할 수 없도록 설계되어 있다..
멀티프로그래밍 개념의 등장과 함께 다수의 프로세스를 메모리에 적재해 유동적으로 실행시킬 수 있게 되면서 운영체제는 CPU 자원이 낭비되지 않도록 효율적으로 분배하는 방법이 필요하게 됐다. 효율적인 CPU 사용을 위해 프로세스 또는 스레드에게 CPU를 할당하는 것을 CPU 스케줄링이라고 한다. 스케줄러운영체제는 스케줄러라고 하는 커널의 모듈을 사용해 어떤 프로세스에게 자원을 할당할지 결정한다. 스케줄러는 크게 3가지로 나눌 수 있다: · 장기 스케줄러 (Long-term scheduler)어떤 프로세스를 메모리에 올릴지(=준비큐에 삽입할지)를 결정한다※ 준비 큐 = CPU를 이용하고자 하는 프로세스들의 대기줄메모리에 동시에 올라가있는 프로세스의 수를 조절한다초~분마다 호출되며 자주 호출되지 않아 속도가 느..
컴퓨터는 데이터를 입력 받거나 출력할 수 있다. I/O는 이러한 입력(input)과 출력(output)을 압축해서 부르는 표현이며, I/O 시스템은 컴퓨터의 데이터 입출력에 사용되는 모든 하드웨어 및 소프트웨어를 뜻한다. 기본적으로 컴퓨터와 입력이나 출력 통신이 가능한 기기를 통틀어 입출력 장치라고 한다. 사용자가 물리적으로 조작하는 마우스나 키보드 외에도 다양한 입출력 장치가 있다:데이터 저장 디스크네트워크 카드, 모뎀 등 데이터 송수신을 핸들링하는 장치사용자와 상호작용하는 장치: 모니터, 게임패드I/O 시스템은 사용자와 컴퓨터 또는 외부 장치들 간의 상호작용에서 중간다리와 같은 역할을 한다. 입출력 장치는 물리적인 device와 전자적인 controller(장치 컨트롤러)로 구성되어있으며, contr..