목록CS (6)
코딩
✔️ Paging이란? process가 할당 받은 메모리 공간을 일정한 page단위로 나누어, 물리적 메모리에 연속되지 않는 서로 다른 위치에 저장하는 메모리 관리 기법. 주소 바인딩을 위해 모든 프로세스가 각각의 주소 변환을 위한 page table이 필요하다. → 메모리 단편화 문제 중 하나인 ‘내부 단편화’가 일어날 수 있다. (필요한 메모리보다 더 많은 page공간을 할당 받게 된다.) 논리적 주소 process가 memory에 적재되기 위한 독자적인 주소 공간인 논리적 주소가 생성된다. 논리적 주소는 각 Process마다 독립적으로 할당, 0번지 부터 시작 물리적 주소 물리적 주소는 process가 실제로 메모리에 적재되는 위치 주소 바인딩 CPU가 기계어 명령을 수행하기 위해 process의 ..
✔️ 동기화 문제란? multi process/thread 환경에서 서로 다른 thread가 메모리 영역을 공유하기 때문에 여러 thread가 동일한 자원에 동시에 접근하여 엉뚱한 값을 읽거나 수정하게 되는 동기화 문제가 발생 💡 해결 방법 1. Mutex 1개의 스레드만이 공유 자원에 접근할 수 있도록 한다. 경쟁 상황을 방지하는 기법으로 공유 자원을 점유하는 thread가 lock을 걸면, 다른 thread는 unlock 상태가 될 때까지 해당 자원에 접근할 수 없다. (Mutex == binary Semaphore) acquire() //critical section (공유 자원을 사용할 수 있는 영역) release() 2. Semaphore S개의 thread만이 공유 자원에 접근할 수 있도록 ..
☑️ ArrayList vs LinkedList ✔️Array 는 어떤 자료구조 인가요? data를 메모리상에 연속적이며 순차적으로 미리 할당된 크기 저장(Stack) 고정된 저장 공간 순차적인 데이터 저장 ↔ LinkedList 메모리에 저장되는 방식, 이에 따른 operation의 연산 속도(time complexity) ✔️Dynamic Array란 무엇인가요? Array의 저장공간이 가득차면 resize하여 저장공간을 재조정한다.(Heap) resize 하는 방식 Doubling(2배 사이즈 resize) 데이터를 추가할 때 시간 복잡도 resize할 때의 시간 복잡도 O(n) ➡️ 그렇담 결과적으로 append의 시간 복잡도는? amortized O(1) 추가 시, resize가 계속해서 일어나..
Process ✔️프로세스란? 실행파일(프로그램)이 Memory(RAM)에 적재되어 CPU를 할당받아 실행되는 것 하드디스크에 있는 프로그램은 CPU가 읽을 수 있도록 RAM에 적재되어 CPU를 할당받아 실행되는 것 RAM의 메모리 구조 | ***stack*** 지역변수,매개변수 | high memory address | ***heap*** runtime중에 메모리 할당(malloc, free) | | ***data*** 전역변수 | | ***code*** 실제 코드 | low memory address 프로세스에 할당되는 memory 공간은 위와 같이 4개의 영역으로 이루어져 있으며, 각각 process마다 독립적으로 할당을 받습니다. Process의 상태 실행 (명령 수행) → 준비 (즉시 명령 수행..
MVC와 템플릿 엔진 MVC: Model, View, Controller API 방식 @ResponseBody 사용원리 HTTP의 BODY에 문자 내용을 직접 반환 'viewResolver'대신에 'HttpMessageConverter'가 동작 기본 문자처리: 'StringHttpMessageConverter' 기본 객체처리 'MappingJackson2HttpMessageConverter' byte처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
스프링 설치하기 start.spring.io -> spring initializer 스프링 부트 기반으로 스프링 관련 프로젝트를 만들어 주는 사이트 Project Maven Project - 자동으로 라이브러리 관리 Gradle Project - 최근 쓰고 있는 라이브러리 관리 SpringBoot (snapshot)은 아직 개발 중인 버전임 Project Metadata Group 그룹의 도메인명 artifact 빌드 후 나오는 결과물 Dependency SpringWeb, Thymeleaf(타임리프) -> Generate 클릭(다운로드받기) 인텔리제이에서 open or import로 열기 src -> build.gradle 버전 선택하고 라이브러리 import해주는 설정파일 mavenCentral() ..