728x90
728x90

공부 37

전략 패턴(Strategy Pattern)

Strategy Pattern이란? 교환이 가능한 객체를 정의하고, 런타임에 설정하고 변환하는 패턴 같은 문제를 해결하는 여러 알고리즘을 클래스별로 캡슐화하고 필요에 따라 교체할 수 있는 설계로, 이를 런타임에 수행할 수 있게 하려는 패턴이다. 예시 그림과 예시 그림에 있는 용어들에 대해서 정리하고 가자. Strategy 인터페이스나 추상 클래스로 외부에서 동일한 방법으로 알고리즘을 호출하는 방법을 명시 ConcreteStrategyA, B, C 앞서 설계한 추상 클래스 혹은 인터페이스를 필요 기능에 따라 실제 구현한 클래스 Context 전략 패턴을 이용하는 역할을 수행한다. 필요에 따라서, 동적으로 구체적인 전략을 바꿀 수 있는 setter를 제공한다. 사용하는 쪽에서는 Strategy만 바꿔주면 코..

템플릿 메서드 패턴(Template Method Pattern)

템플릿 메서드 패턴(Template Method Pattern) 슈퍼 클래스에서는 알고리즘의 구조를 정의한다. 서브 클래스에서는, 슈퍼 클래스가 정의한 구조는 변경하지 않고 그 내용만 오버라이딩한다. 알고리즘이 동일하여 같은 역할을 하는 메서드들이 여러 벌 생성될 수 있지만, 세부 구현은 다른 형태로(DB만 다르거나, 주고 받는 내용만 다르거나...) 이루어진 경우에 유용하다. 대부분 어떤 것을 만드는 클래스들로(XXXMaker, XXXBuilder) 구현하면서 예시를 드는데, 샌드위치 메이커라는 컨셉으로 한 번 구현해봤다. 샌드위치는 안에 들어가는 재료가 저마다 다르고, 빵의 끝을 잘라낼 수도 있고, 먹기 편하게 아예 반으로 자를 수도 있고 다양한 형태로 조리될 수 있다. 만드는 과정이나 재료는 여러모..

윈도우에 Redis 설치해서 사용하기 with Docker

필요한 것 윈도우 PC Docker Desktop 약간의 시간 Docker Desktop 설치 Docker 설치는 아래 경로에서 진행하면 된다. https://www.docker.com/products/docker-desktop 설치하고 재시작이 한 번 필요하므로 재시작을 해줘야 한다. x64프로세서(특히 AMD)를 사용하는 경우, WSL 2가 없으면 Docker Engine이 실행이 안된다. 별도로 설치해줘도 되고, 재시작을 하면 설치하라고 안내 해주는 경로가 나오는데 그곳에서 설치하면 된다. 경로를 찾지 못한 사람들은 아래 경로에서 "x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지"를 설치하고, WSL 2를 기본 버전으로 설정하면 된다. https://docs.microsoft.com/k..

Computer Science/DB 2021.12.04

우아한 Redis - Redis 톺아보기

세미나 영상 우아한 Redis 내용 정리 Redis란 무엇인가? In-Memory Data Structure Store이면서 오픈소스 String, Set, Sorted-Set, Hash, List 등의 타입을 지원한다. 캐시(Cache)로 자주 사용한다. Look Aside Cache, 캐시에 자료가 없으면 DB 접근 후 캐시에 갱신한다. Write Back, 캐시에 쓰고 이걸 모아서 DB에 저장한다. Redis에서의 Collection 개발의 편의성을 끌어올리고 난이도를 대폭 낮춰준다. 모든 것들이 그렇듯, 적합한 컬렉션을 고르고 잘 이용하는 것이 무엇보다 중요하다.\ 랭킹 서버의 예시 DB에 넣고 Score를 처리하는 시스템은 유저가 많아진다면? Redis를 도입하고 Sorted Set을 사용해서 ..

C언어] 시퀀스 포인트와 연산에 대한 이해

&& 연산자 앞 모든 식의 계산 완료. 첫번째 식에 따라 두번째 식은 평가하지 않을 수 있음. || 연산자 앞 모든 식의 계산 완료. 첫번째 식에 따라 두번째 식은 평가하지 않을 수 있음. , 연산자 앞 모든 식의 계산 완료. () 함수 호출 직전까지 모든 식의 계산 완료. ? 조건 판단 전 모든 식의 계산 완료. ; 직전의 모든 식의 계산 완료. if(), switch() 연결된 코드가 실행되기 전 모든 식의 계산 완료. while(), do-while() 반복될 코드가 실행되기 직전 모든 식의 계산 완료. for(;;) 각 세미콜론 직전에 모든 식의 계산이 완료. return 값 반환 전 모든 식의 계산이 완료. 흔히 시퀀스 포인트에만 초점을 두고 있어서 간과하고 넘어가는 부분이지만, 어느 특정 시점..

C#] Dispose 호출해야 하는 경우와 그렇지 않아야 하는 경우

Dispose를 호출해야 하는 경우 '의심 스럽다면 처분 하는 원칙'에 따름. Windows Forms의 컨트롤들, 파일 및 네트워크 스트림, 네트워크 소켓, GDI+의 펜/브러시/비트맵 등이 이에 해당. Dispose를 호출하지 말아야 하는 경우 현재 코드가 객체를 소유한 것이 아니고, 정적 필드나 속성을 통해 공유 객체를 얻은 경우 System.Drawing namespace의 형식에서 정적 필드 및 속성을 통해 얻은 GDI+ 객체 - 응용 프로그램 종료 시점까지 사용 Dispose 메서드가 현재 상황에 맞지 않는 경우 System.IO namespace와 System.Data namespace의 형식들 MemoryStream - 차후 스트림을 다시 쓰는 경우 StreamReader, StreamWr..

OS] 프로세스(Process)와 프로세스 상태(Process State) 정리

프로세스 작업(Job)실행 프로그램과 이에 필요한 데이터 묶음, 컴퓨터에 의해 실행되기 이전의 상태. 프로세스(Process)커널에 등록된 작업, 커널에 등록되어 커널의 관리 하에 들어감.각종 자원들을 요청하고 할당 받을 수 있는 개체.PCB를 할당 받은 개체.능동적인 개체로 실행 중 각종 자원을 요구하거나 반납하면서 진행함. PCB:Process Control Block커널 공간 내 존재해 프로세스가 커널에 등록되어 실행될 시에 프로세스마다 자동으로 생성.프로세스의 각종 정보를 내장하며 종료 시 파괴. OS에 따라서 저장되어야 하는 정보가 다르고, PCB 영역 참조 및 갱신 속도 개선이 시스템 전체 성능에 영향을 미침. - Process Identification ; 프로세스 고유 번호- Process..

Computer Science/OS 2019.02.10

C#] 델리게이트(Delegate)의 호환성

타입 호환성 모든 델리게이트 타입은 다른 모든 델리게이트 타입과 호환되지 않음.메서드 대상이 동일한 델리게이트 인스턴스는 상등으로 간주.멀티캐스트 델리게이트는 같은 대상 메서드들이 같은 순서로 등록된 경우에 상등으로 간주. 매개변수 호환성 어떤 메서드를 호출 시, 그 메서드의 매개변수가 요구하는 것보다 구체적인 형식의 인수를 지정할 수 있음.델리게이트의 매개변수 형식이 대상 메서드의 매개변수 형식보다 구체적일 수 있으며, 이를 반변성(Contravariance)라고 함. 이러한 특성은 기본적으로 다형성을 가진 메서드의 정상적인 작동 방식임. 반환 형식의 호환성 어떤 메서드를 호출 시, 호출자가 요구한 것보다 구체적인 형식 값을 메서드가 반환 가능.델리게이트는 대상 메서드의 반환 형식보다 더 구체적으로 반..

NodeJS의 내장 객체 내용 간단 정리

console보통 디버깅을 위해 사용함. 변수 값 체크나, 에러 확인, 실행 경과 시간을 확인할 대 사용. console.time(레이블), console.timeEnd(레이블)같은 레이블을 가진 time과 timeEnd 사이에서 시간 측정. console.log(내용)로그를 콘솔에 표시. console.error(에러 메세지)에러를 콘솔에 표시. console.dir(객체, 옵션)객체를 콘솔에 표시할 때 사용. 첫 번째 인자로 표시할 객체를 넣고 두 번째 인자로 옵션을 넣음. depth는 객체 안의 객체를 몇 단계까지 보여줄 지 결정하며, 기본값 2. console.trace(레이블)에러 추적할 수 있게 해줌. 에러 발생 시점에 에러 위치가 나와서 흔히 사용하지는 않으나, 위치가 나오지 않을 때 사용...

[DB] SQL에 대한 내용 간단한 정리

SQLSEQUEL(Structured English Query Language)최초의 RDBMS인 SystemR을 위한 DB 언어로 개발되었음.1986년 ANSI에서 관계형 DB의 표준언어로 인증. SQL은 데이터 정의(DDL)/조작(DML)/제어(DCL)하는 종합 DB언어관계 대수식에 비해 키보드로 표기하기 쉬움 관계 대수식(Relational Algebra)와 SQL의 차이 - 관계대수식Relation튜플의 집합결과 중복 불허 - SQL튜플의 백(Bag)튜플 간의 순서는 없고, 결과 중복 허용 관계 대수식이 중복을 불허하면서, 결과에 대해 항상 중복 내용을 제거하는 작업이 발생하여, 결과를 내는데 시간이 오래 걸리는 성능 문제가 발생함. 기본 구문 DDL : 데이터 정의CREATECREATE TABL..

728x90