CS

CS/디자인패턴

[Design Pattern] Composite Pattern(컴포지트 패턴)

Composite Parttern이란?컴파지트 패턴은 집합체와 집합체를 구성하는 단일체를 같은 개념으로 처리하는 구조적 디자인 패턴이다. 이 패턴을 사용하면 개별 객체와 객체 그룹을 동일하게 다룰 수 있어서객체를 트리 구조로 구성하여 부분-전체 계층을 표현할 수 있다. 왜 동일한 개념으로 처리하면 트리 구조로 구성할 수 있느냐?가 궁금하다면아래의 컴포지트 패턴의 UML 다이어그램을 보면 알 수 있다.      Unit: Folder와 File의 공통의 type == compositeFile: 단일체Folder: 집합체 Folder안에 File도 들어가지만 또다른 sub Folder가 들어갈 수 있다.이때 여러번 Folder안에 Folder와 File을 넣는 과정에서우리는 맨 마지막 폴더가 tree 구조의..

CS/디자인패턴

[Design Pattern] Facade Pattern(퍼사드 패턴)

Facade Parttern이란?복잡한 시스템이나 서브시스템을 단순하게 사용할 수 있는 인터페이스를 제공하는 구조적 디자인 패턴이다.Façade는 프랑스어로 정면 외벽을 의미한다. 즉, 복잡한 내부 구조를 벽에 숨겨놓고 다 알지 않아도단순하게 객체(인터페이스) 하나만으로도 시스템을 사용할 수 있게끔 도와주는 디자인 패턴이다. Facade Pattern을 쓰는 이유(==기존 개발 형태에 대한 문제점)?위키에도 올라와있는 예제(사용자가 퍼사드(컴퓨터)를 통해 컴퓨터 내부의 부품(CPU, HDD) 등을 접근한다는 내용의 추상적인 예제)를퍼사드 패턴을 적용하기 전, 기존 개발 코드로 작성하면 어떨까? 다음과 같을 것이다. 서브 시스템을 구성하는 클래스들public class CPU { public void..

CS/디자인패턴

[Design Pattern] Decorator Pattern(데코레이터 패턴)

Decorator  Parttern이란?특정 클래스들에 객체들이 할 수 있는 기능들이 있을 때, 사용자가 원하는대로 동적으로 조합할 수 있게 해주는 구조적 디자인 패턴이다. 객체에 기능들을 장식처럼 계속 붙일 수 있는 패턴이다.Decorator  Pattern을 쓰는 이유(==기존 개발 형태에 대한 문제점)?로그를 남기는 로그시스템을 다음과 같이 하나의 클래스에 구현했다고 생각해보자.public class Logger { public void log(String message) { // 기본 로그 기능 System.out.println("Logging: " + message); // 이메일 전송 sendEmail(message); // ..

CS/디자인패턴

[Design Pattern] Proxy Pattern(프록시 패턴)

Proxy Parttern이란?특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 구조 패턴이다. 다이어그램 설명Client:클라이언트 객체는 주체(Subject) 인터페이스를 통해 프록시 객체에 접근함.Subject:주체 인터페이스는 실제 객체와 프록시 객체가 구현해야 하는 인터페이스를 정의함. (클래스보다는 인터페이스)RealSubject:실제 주체는 주체 인터페이스를 구현하는 실제 객체.실제 작업을 수행하는 클래스.Proxy:프록시 클래스도 실제 객체처럼 주체 인터페이스를 구현함.실제 주체 객체에 대한 참조를 가지고 있으며, 필요에 따라 실제 객체를 생성하고 작업을 위임함.접근 제어, 지연 초기화, 로깅 등의 추가 기능을 제공함. 전체 동작 흐름클라이언트(Client)가 Proxy 객체를 생..

CS/디자인패턴

[Design Pattern] Strategy Pattern(전략 패턴)

Strategy  Parttern이란?객체의 행위를 캡슐화하여 동적으로 행위를 변경할 수 있도록 하는 디자인 패턴이다.디자인 패턴 중 행위 패턴에 속한다. Strategy  Pattern을 쓰는 이유(==기존 개발 형태에 대한 문제점)?예를 들어 "결제"라는 행위에 대해 기존 개발 방식처럼 구현해보자.public class ShoppingCart { private List items; private String paymentMethod; // "CREDIT_CARD" or "CASH" public ShoppingCart(String paymentMethod) { this.items = new ArrayList(); this.paymentMethod = paymen..

CS/디자인패턴

[Design Pattern] Factory Pattern(팩토리 패턴)

Factory Parttern이란?Factory Pattern은 디자인 패턴의 종류 중 생성 디자인 패턴에 속한다. 객체 생성 로직을 추상화해서 하위 클래스에서 객체 생성에 대해 구체적인 내용을 결정하는 디자인 패턴이다.특징: 객체를 직접 생성하는 대신, 팩토리 클래스를 통해 객체를 생성함으로써 객체 생성 과정에서 발생할 수 있는 의존성을 줄이고, 코드의 유지보수성을 높일 수 있음.Factory Pattern을 쓰는 이유(==기존 개발 형태에 대한 문제점)?왜 쓰는지에 대한 관점을 Factory Pattern의 효과 및 장점이 아닌Factory Pattern을 쓰지 않았던 기존 개발 방식을 사용한다면 어떤 문제점(혹은 불편함)이 발생하는지 예시로 보겠다.1. 객체 생성 코드의 중복2. 코드 확장성 부족3..

CS/디자인패턴

[Design Pattern] Singleton Pattern(싱글톤 패턴)

Singleton Parttern이란?Singleton Pattern은 디자인 패턴의 종류(생성, 구조, 행동) 중 생성 디자인 패턴에 속한다. 하나의 클래스는 하나의 인스턴스만을 가지고, 그 생성된 1개의 인스턴스를 전역적으로 접근할 수 있는 객체를 만들어야할 때 사용함. 예를 들어 프로그램에서 딱 하나의 데이터 베이스 연결 객체만 필요할 때 사용한다. 예시)1. 데이터 베이스 연결 모듈2. 스프링 Bean3. 캐시4. 로깅5. 설정 클래스(Configuration Class)Singleton Pattern을 쓰는 이유(==기존 개발 형태에 대한 문제점)?기존에는 싱글톤 패턴 없이 클래스 A를 사용하기 위한 인스턴스가 필요할 때마다 매번 생성했다.그럼 A를 여러개 생성하면 자원도 많이 필요할 것이고 1..

CS/운영체제

[운영체제 OS] CPU 스케줄링 알고리즘

이전에 운영체제의 역할 중 하나가 CPU 스케줄링과 프로세스 관리 인 것과 프로세스, 스레드 그리고 멀티 프로세스, 멀티 스레싱 등 학습했다. 그럼 CPU(자원)이 하나일 때 여러 프로세스가 해당 자원을 필요로 할때 운영체제가 어떻게 관리를 할까? CPU 스케줄러 CPU 스케줄러: CPU 스케줄링 알고리즘에 따라 프로세스에서 해야하는 일을 스레드 단위로 CPU에 할당시켜주는 것 즉, CPU 스케줄러를 통해 여러 개 중 어떤 프로세스에 CPU를 배정할지 결정한다. 이것은 컴퓨터 시스템의 효율에 직결되는 중요한 일이다. CPU 스케줄링 알고리즘 프로그램이 실행될 때 CPU 스케줄링 알고리즘을 통해 어떤 프로그램에게 CPU 소유권을 줄 것인지 결정된다. 이 알고리즘은 다음과 같은 목표로 CPU 스케줄러를 사용..

CS/운영체제

[운영체제 OS] 프로세스와 스레드 (2/2)

멀티 프로세싱 멀티 프로세싱: 하나의 시스템에서 여러 개의 프로세서(Processor: CPU) 사용하여 동시에 일을 수행하는 방식 -> 하드웨어 관점으로 여러 개의 프로세서로 작업을 처리하는 것을 의미 여러 개의 프로세서가 동시에 작업을 처리하므로, 전체적인 처리 속도가 빨라진다. (병렬성) 좌 - 여러 개의 CPU(프로세서)로 한가지 작업에 대해 병렬적으로 수행 우 - 여러 개의 CPU(프로세서)로 여러 가지 작업에 대해 병렬적으로 수행 더보기 멀티프로세싱과 주로 언급되는 것은 멀티 태스킹이다. 멀티 태스킹이란? 단일 CPU에서 여러 개의 작업을 동시에 처리하는 것 처럼 일을 수행하는 방식 더보기 멀티 프로세스와 멀티 프로세싱에 대한 개념의 차이는 어디에 집중하느냐에 대한 관점의 차이인것 같음. 단순..

CS/운영체제

[운영체제 OS] 운영체제와 컴퓨터

운영체제란? 운영체제(OS, Operationg System) : 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스 주요 운영체제: Window, UNIX 계열 OS(리눅스), MacOS 더보기 펌웨어(Firmware) - 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것 운영체제의 역할과 구조 운영체제의 역할 CPU 스케줄링과 프로세스 관리 - CPU 소유권을 어떤 프로세스에 할당할지(CPU 스케줄러) - 프로세스의 생성과 삭제 - 자원 할당 및 반환 관리 메모리 관리 한정된 메모리를 어떤 프로세스에 얼마나 할당해야하는 지 관리 디스크 파일 관리 디스크 파일을 어떠한 방법으로 보관할지 관리 I/O 디바이스 관리 I/O 디바이스(마우스, 키보드 등)와 컴퓨터 간에 데이터 주고 받는 것 관리 운영..

three von
'CS' 카테고리의 글 목록