Goal 프로세스와 쓰레드의 차이를 이해할 수 있음 쓰레드와 관련된 기본 설계 이슈를 설명할 수 있음 사용자 수준의 쓰레드와 커널 수준의 쓰레드의 차이를 설명할 수 있음 프로세스와 쓰레드 현대 OS에서 프로세스는 태스크(Task) 및 쓰레드(Thread)라는 두 객체(특성)으로 분리 태스크 : 사용자 문맥, 시스템 문맥(Resource Container) -> 프로세스와 혼용하여 사용하기도 함 쓰레드 : 제어 흐름(실행 정보, 레지스터 문맥) -> 경량 프로세스라고 부르기도 함 쓰레드 모델 쓰레드(Thread) 장점 프로세스에 비해 새로운 쓰레드 생성 시간/비용이 절약 프로세스 종료 시간보다 쓰레드 종료 시간이 짦음 한 프로세스 내의 두 쓰레드들 사이의 교환/교체 시간이 짧음 동일 프로세스 내의 쓰레드들..
Goal 프로세스를 정의하고, 제어 블록으로 관계를 설명할 수 있음 프로세스 상태의 개념을 설명하고, 상태 전이에 대해 설명할 수 있음 프로세스 관리를 위한 자료구조 및 자료구조 구성 요소들의 목적을 설명할 수 있음 운영체제 요구조건 운영체제는 적절한 응답 시간을 제공하면서 처리기 이용률을 극대화할 수 있도록 여러 프로세스 수행을 인터리빙(interleaving)해야 함 교착상태를 회피함과 동시에 특정 정책(우선순위 부여)에 부합하도록 자원을 프로세스에게 할당해야함 프로세스 간 통신과 사용자의 프로세스 생성을 지원하고 구조화하는데 도움이 되야함 프로세스 정의 수행 중인 프로그램 컴퓨터에서 수행 중인 한 프로그램의 인스턴스 한 처리기 상에 할당되어 실행될 수 있는 객체 명령들의 순차 실행, 현재 상태, 연..
Goal 운영체제의 핵심 기능에 대한 이해 주요 운영체제 설계 영역에 대한 이해 가상화에 대해 정의하고 설명할 수 있음 운영체제 설계 이슈에 대한 이해 운영체제 응용 프로그램의 실행을 제어하는 프로그램 컴퓨터 사용자와 하드웨어 사이에 중재자(intermediary) 역할을 하는 프로그램 커널 (Kernel) : 주 메모리에 상주하는 운영체제 핵심 일괄처리 멀티 프로그래밍 여러 개의 프로그램이 메모리에 올라와 CPU를 번갈하가며 사용하며 작업을 수행 멀티 프로그래밍을 위한 운영체제 기능 운영체제에 의해 I/O 작업이 수행 메모리 관리 : 여러 개의 job에 메모리 할당 CPU 스케줄링 : 준비 상태에 있는 job 중 하나를 선택해 CPU를 할당 목적 : CPU 이용률(utilization)의 극대화 단점 ..
Introduction 이번 장에서는 도메인 주도 설계(Domain Driven Design)에 대해서 알아보겠습니다. 이것이 왜 중요한지는 Domain Driven Design의 저자 Eric Evans의 말로 충분할 것 같습니다. Eric Evans, Domain-Driven Design 개발자들이 도메인에 대한 통찰을 얻기 위해 적용할 수 있는 체계적인 사고 방법이 존재한다. 무질서하게 뻗어 나가는 소프트웨어 애플리케이션에 질서를 부여할 수 있는 설계 기법 역시 존재한다. 이런 기술을 연마한다면 익숙하지 않은 도메인을 접하게 될 경우에도 더 가치 있는 개발자로 발전할 수 있게 될 것이다. Domain 도메인 주도 설계에 대해 알기 위해서는 먼저 도메인에 대해서 알아야합니다. 도메인의 사전적 의미는 ..
DB 트랜잭션(Transaction) 트렌잭션이란? 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것 - SELECT - INSERT - DELETE - UPDATE 작업 단위 → 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것 예시) 게시판에서 사용자가 글을 작성하고, 올리기 버튼을 누른 후 게시판에 다시 돌아오면 게시판에 내가 쓴 글이 업데이트 된 상태를 볼 수 있다. * 이때 DB 작업 - 올리기 버튼을 누른다 : INSERT문을 사용해 사용자가 입력한 게시글 데이터를 옮김 - 게시판 새로 구성 : SELECT문을 사용해 최신 정보를 유지 현재 작업 단위 : INSERT문 + SELECT문 → 이를 통틀어 하나의..
Q) VO와 Map의 차이는? 언제 VO를 쓰고 언제 Map 써야하는가? => 목적에 맞게 Java Beans 일반적으로 자바빈은 속성과, 그 속성에 대한 getter, setter 메서드로 구성된 데이터 객체(VO, Value Object)를 말하며 데이터 전송에 사용되는 객체를 말한다. 자바로 작성된 재사용 가능한 소프트웨어 컴포넌트 getter, setter 메서드를 통해 컴포넌트에 접근가능 VO (Value Object) 데이터 그 자체로 의미 있는 것을 담고 있는 객체 DTO와 동일한 개념이나 차이점은 Read–Only 속성 객체이다. 간단한 독립체( Entity )를 의미하는 작은 객체를 의미한다. **VO vs DTO DTO (Data Transfer Object) 계층간 데이터 교환을 위한..
VO(Value Object) 데이터 그 자체로 의미 있는 것을 담고 있는 객체이다. DTO와 동일한 개념이나 차이점은 Read–Only 속성 객체이다. 간단한 독립체( Entity )를 의미하는 작은 객체를 의미한다. 관계데이터베이스의 레코드에 대응되는 자바클래스이다. 형태는 Database 레코드를 구성하는 필드들을 VO의 Attribute로 하고 해당 변수에 접근 할 수 있는 Getter와 Setter 메소드의 조합으로 클래스를 형성되어진 클래스이다. 거의 불변성을 가지고 equals()로 비교할 때 객체의 모든 값을 비교해야 한다. 색상으로 예를 들어보겠다. 색상 중에 빨강과 초록을 RGBA로 나타내면 RGBA(255,0,0,0)와 RGBA(0,255,0,0) 로 표현된다. 더 나아가서 코드명이 ..
POJO(Plain Old Java Object)란 무엇인가? 스프링 개발을 하면서 POJO 프로그래밍이라는 용어를 자주 접한다. 이제까지 느낌적으로 특정 규약에 종속되지 않는 자바 객체 정도로 이해해왔다. 이 포스팅에서 POJO의 조건과 POJO 프로그래밍의 장점에 대해 예시를 통해 알아볼 것이다. POJO 개념을 사용하지 않은 예시 ( Tight Coupling ) JMS로부터 메시지를 받는 경우 JMS를 사용하기 위해 MessageListener 인터페이스를 상속받아야 한다. 하지만, 다음과 같이 구현하면 JMS라는 특정 환경에 종속되게 되고 다른 메시징 솔루션을 적용하기 어려워 진다. 단순한 예제와 달리 Listener가 많은 경우, AMQP나 다른 솔루션으로 교체할 경우 더더욱 어려울 것이다. ..
OAuth Open Authentification 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수있는 개방형 표준 방법 이러한 매커니즘은 구글, 페이스북, 트위터 등이 사용하고 있으며 타사 애플리케이션 및 웹사이트의 계정에 대한 정보를 공유할 수 있도록 허용해준다. 사용 용어 사용자 : 계정을 가지고 있는 개인 소비자 : OAuth를 사용해 서비스 제공자에게 접근하는 웹사이트 or 애플리케이션 서비스 제공자 : OAuth를 통해 접근을 지원하는 웹 애플리케이션 소비자 비밀번호 : 서비스 제공자에서 소비자가 자신임을 인증하기 위한 키 요청 토큰 : 소비자가 사용자에게 접근권한을 인증받기 위해 필요한 정보가 담겨있음 접근 ..
REST API REST(Representational State Transfer) 웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하는 것 *자원을 정리하고 자원에 대한 주소를 지정하는 방법론을 의미 API(Application Programming Interface) 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 API를 통해 소스 및 DB에는 접근하지 못하게 하고 해당 프로그램을 사용할 수 있도록 기능을 제공하게 하는 것이다. REST API(REST + API) REST의 특징을 지키면서 API를 제공하는 아키텍쳐 REST의 요소 Method Method 의미 Idempotence GET Select Yes POST Creat..
- Total
- Today
- Yesterday