본문 바로가기

전체 글143

스프링 부트 JPA 기본 정리 @Entity = 테이블과 매핑하기 위해 필수 어노테이션 @Table = 엔티티와 매핑할 테이블을 지정 @Table(name=”student”) 기본 값은 엔티티의 이름을 소문자로 바꿔 사용한다. ex) public class Student → student hibernate.hbm2ddl.auto 옵션 설명 create 기존 테이블 삭제 후 다시 생성 create-drop create와 같으나 종료시점에 테이블 DROP update 변경분만 반영(운영DB에는 사용하면 안됨) validate 엔티티와 테이블이 정상 매핑되었는지만 확인 none 사용하지 않음 운영 장비에는 절대 create, create-drop, update 사용하면 안된다. 개발 초기 단계는 create 또는 update • 테스트 서.. 2022. 1. 19.
스프링부트 Application.properties에서 H2 설정 하는법 H2 도입 진행 중인 프로젝트에서 개발용으로 H2 디비를 사용하기로 하였고 실제 서비스용으로 Postgresql을 사용하기로 정하였다. H2 설정을 위해 공부를 하던 중 H2방식에도 여러 가지 방식이 있는 것을 처음 알았다. spring.datasource.url 이 코드를 어떤 방식으로 설정하느냐에 따라 달라지게 된다. spring.datasource.driver-class-name=org.h2.Driver spring.datasource.url=jdbc:h2:tcp://localhost/../test spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=true spring.h2.console.path=/.. 2022. 1. 19.
김영한 스프링의 핵심 원리 정리 스프링이란 스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트 웹 기술: 스프링 MVC, 스프링 WebFlux 데이터 접근 기술: 트랜잭션, JDBC, JPA , XML 지원 기술 통합: 캐시, 이메일, 원격접근, 스케줄링 테스트: 스프링 기반 테스트 지원 언어: 코틀린, 그루비 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용 Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨 손쉬운 빌드 구성을 위한 starter 종속성 제공 스프링과 3rd parth(외부.. 2022. 1. 19.
운영체제 10장 가상메모리 페이지 교체 알고리즘 가상 메모리 물리 메모리의 한계를 극복하기 위한 기술 Demanding Paging 백업 공간을 두고 프로세스가 요구하는 필요한 페이지만 메모리 위에 올리는 것이다. 백업 공간과 메모리 사이의 스와핑이 발생하기 때문에 페이지 부재 시 지연이 발생한다. Prepaging 미리 사용될 것 같은 페이지를 메모리에 올려두는 방식이다. 그러나 페이지 부재가 발생할 때 많은 지연이 발생하게 된다. Page Fault 페이지 부재는 CPU가 접근하려는 페이지가 메모리 위에 없는 경우이다. 처리 과정 해당 페이지 확인 valid bit==0이면 cpu에 인터럽트 신호를 보내고 내부의 해당 ISR(인터럽트 서비스 루틴)- 인터럽트 핸들러가 관리하는 인터럽트 발생시 행동 루틴 - 로 간다. 디스크를 탐색해 페이지를 찾는다.. 2022. 1. 19.
운영체제 9장 정리 - 메모리 관리 메모리 관리 스와핑 일시적으로 메모리가 부족한 프로세스를 백업 저장소로 스왑하고 여유가 있을 때 메모리로 불러와 지속적인 실행이 가능하게 하는 것입니다. 하드 디스크를 통한 스왑 방식이기 때문에 상대적으로 속도가 느린 단점이 있습니다. 논리 주소와 물리 주소와의 차이 논리 주소는 물리적 주소와 매핑하는 주소로 CPU에 의해 생성된다. 물리 주소는 메모리 주소 레지스터에 의해서 실질적 할당되는 주소 체계이다. 논리주소를 물리적 주소로 매핑할 때 MMU를 활용한다. 고정 파티션과 가변 파티션의 차이 고정 파티션은 고정된 저장 공간을 가지는 것이며 가변 파티션은 초기 분할 이후에도 원하는 방식으로 분할할 수 있다. 그러나 고정 파티션은 메모리 사용이 비효율적이게 돼 내부 단편화가 발생할 수 있다. 불균일 사이.. 2022. 1. 19.
운영체제 8장 정리 데드락 DeadLock 교착상태 Dead Lock 교착상태 교착 상태란 다른 프로세스가 자원을 계속 해서 점유하고 기다리는 프로세스가 자원을 요구하는 과정에서 무한정으로 대기하는 것을 말합니다. 데드락 충족 조건 1. 상호 배제 자원을 여러 프로세스가 이용하려 할 때 2. 점유 대기 프로세스가 하나의 자원을 점유하면서도 다른 프로세스에 할당된 자원을 점유하려 할 때 대기를 안 할때 3. 비선점 다른 프로세스가 자원을 선점해서 빼았지 않을 때 4. 순환 대기 점유 대기 상태의 프로세스가 서로가 될 때 데드락의 해결 방법 1. 데드락 예방 상호 배제 - 하나의 자원은 하나의 프로세스만 이용하게 한다. 점유 대기 - 선점 스케줄링 방식의 프로세스가 자원 할당을 요청할 때 어떤 것이라도 자원을 놓을 수 있어야 한다. 비선점 - 공유 자원을 프.. 2022. 1. 19.
운영체제 6장 정리 동기화 Race Condition Mutex Lock Semaphore 동기화 필요한 이유 - 모든 프로세스들이 컨커런트하게 실행되어야 하기 때문이다. 언제라도 인터럽트되고 다시 실행될 수 있어야 한다. Race Condition (경쟁 상황)이란 두 개 이상의 프로세스가 공통 자원에 병행하게 접근하려고 할 때 생긴다. 생산자 소비자 문제 10개가 있다. 한정된 데이터를 임시로 저장해두는 버퍼에 여러 생산자와 소비자가 접근하려고 한다. 생산자는 물건이 만들어지면 해당 버퍼에 저장한다. 그러나 저장할 공간이 없는 문제가 발생할 수 있다. 또한 소비자가 데이터를 소비하려고 할 때 소비할 데이터가 존재하지 않는 문제가 있다. 임계 구역 문제 여러 개의 쓰레드,프로세스가 수행되는 시스템에서 공유되는 데이터에 접근할 때 발생하는 문제이다. 임계 구역 문제를 해결해야 경쟁 상황을 피할.. 2022. 1. 19.
운영체제 5장 정리 CPU 스케쥴링 CPU 스케줄링 및 디스패칭(DisPatching) CPU 스케줄러 큐 Job Queue : 현재 시스템 내에 있는 모든 프로세스 Ready Queue : 현재 메모리 내에 있고 실행되기를 기다리는 프로세스 Device Queue : Device I/O 작업을 대기하고 있는 프로세스 CPU 스케줄링의 단계 1. 장기 스케쥴러 - 메모리와 디스크 사이의 스케쥴링을 담당 프로세스에 메모리와 리소스 할당 2. 단기 스케쥴러 - CPU와 메모리 사이의 스케쥴링을 담당 Ready Queue에 있는 프로세스 중 어떤 프로세스를 실행 시킬지 담당. 3. 중기 스케쥴러 - 여유 공간 마련을 위해서 프로세스를 메모리에서 내보낸다 (SWAPPING) 메모리에 많은 프로세스가 올라가는 것을 관리하는 스케쥴러 CPU 스케줄링.. 2022. 1. 19.
운영체제 4장 정리 프로세스와 쓰레드 프로세스와 쓰레드의 차이 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 쓰레드는 프로세스 내의 실행 단위이다. 한 프로세스 안에서 주소나 자원 공유들을 위해 CODE, DATA, HEAP을 공유하고 쓰레드마다 스택을 할당 받는다. 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티스레딩 이라고 한다. 스택을 독립적으로 할당하는 이유는 각 쓰레드마다 독립적인 함수 수행이 가능해야 하기 때문에 최소한의 스택을 할당해 독립적인 함수 수행을 보장한다. (PC REGISTER 포함) 멀티.. 2022. 1. 19.
운영체제 3장 정리 메모리 메모리 안의 프로세스 구조 stack: 임시 데이터(함수 호출, 로컬 변수 등)가 저장되는 영역 heap: 코드에서 동적으로 생성되는 데이터가 저장되는 영역 data: 전역 변수/초기화된 데이터가 저장되는 영역 text(CODE): 컴파일된 소스 코드가 저장되는 영역 프로세스 상태 구조 Process Control Block(PCB) PCB 는 특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조이다. 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB 를 생성 PCB에 저장되는 정보 프로세스 식별자(Process ID, PID) : 프로세스 식별번호 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장 프로그램 카운터.. 2022. 1. 19.
운영체제 2장 정리 Opreating System Architecture 시스템 콜 application 단계에서 open()는 요청이 들어오게 되면 kernel 모드로 trap이라는 인터럽트를 걸고 해당 주소에 가서 open()을 열고 결과를 유저에게 주게 됩니다. 주소만 빠르게 레지스터를 통해 받게 됩니다. 유-커-유 링커와 로더의 역할 원천 코드에서 프로그램이 수행되는 과정 소스 프로그램 작성 컴파일러에 의해 .o 코드로 만들어진다. 여러 가지 오브젝트 파일을 링커로 연결을 시켜 실행할 수 있는 파일로 만든다. 실행할 수 있는 파일을 로더로 실행을 하게 된다. 레이어드 구조와 마이크로 커널 구조 레이어드 구조 레이어드 구조는 운영체제의 유지보수와 확장이 용이하고 보안적으로도 우수하지만 레이어 간 절차가 엄격해 효율이 떨어진다. 마이크로 커널 구조 마이크로 .커널 구조는 .. 2022. 1. 19.
운영체제 1장 정리 인터럽트 운영체제 운영 체제란 사용자의 편의성, 사용성을 위해 사용한다. 각각의 디바이스 컨트롤러들을 담당하고 통합적으로 관리해줘 사용자의 원할한 이용을 도와준다. 인터럽트 처리란 인터럽트는 컴퓨터 작동 시 예외 상황에서도 문제없이 작동을 할 수 있게 해주는 기능이다. 인터럽트가 없다면 폴링을 이용해야 하는데 효율이 상대적으로 떨어진다. Dual Mode Operation이란 운영체제는 유저 모드와 커널 모드가 있는데 프로그램들이 건들면 안되는 곳에 들어갈 수 없도록 하는 것이다. 운영체제에 활용되는 자료구조 리스트는 함수 호출과 함께 할당 및 소멸 스택은 멀티 태스킹을 위한 프로세스 스케쥴링 방식에 활용(우선순위 큐) 해시 테이블은 메모리 관리를 위한 자료 구조 트리는 바이너리 서치 트리를 이용해 탐색 시간을 .. 2022. 1. 19.