공부 32

전략 패턴(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

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

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

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

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

Computer Science/OS 2019.02.10

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..

백준] 7568 - 덩치(한국정보올림피아드 2013;KOI 2013 지역본선)

시간 제한 : 1초메모리 제한 : 128MB 입력첫 줄에는 전체 사람의 수 N이 주어진다. 그리고 이어지는 N개의 줄에는 각 사람의 몸무게와 키를 나타내는 양의 정수 x와 y가 하나의 공백을 두고 각각 나타난다. 단, 2 ≤ N ≤ 50, 10 ≤ x,y ≤ 200 이다. 출력여러분은 입력에 나열된 사람의 덩치 등수를 구해서 그 순서대로 첫 줄에 출력해야 한다. 단 각 덩치 등수는 공백문자로 분리되어야 한다. 소스코드#include #include #include using namespace std; struct person { int weight; int height; int bigger; int originIdx; }; int compareBigger(const struct person a, cons..

이동통신채널의 물리적 특성에 대해 간단한 정리

열잡음(Thermal Noise)수신장치의 안테나를 포함한 초고주파부의 열잡음이 신호품질 저하를 발생.이 열잡음의 원인은 송수신 장치에서 전자의 운동이 열을 발생하면서 나오는 것으로, 장치의 특성 상 피할 수 없음.열잡음은 모든 주파수 성분에서 균일한 분포를 보이며, 이로 인해 백색 잡음(White Noise)라고도 칭함.이 열잡음만 존재하는 이상적인 채널을 AWGN(Additive White Gaussian Noise)라고 지칭함 경로 손실(Path Loss)송수신기 간 거리차에 의해 송신전력이 감쇠하는 물리적인 현상.송신신호 감쇠는 송신전력과 수신전력의 상대적인 비로 나타낼 수 있음.자유공간에서의 손실은 반송파 파장의 제곱에 비례, 송수신기 간 거리의 제곱에 반비례.무선 신호 전력의 감소가 지수함수적..

네트워크 프로그래밍(Network Programming)의 분류

응용 계층(Application Layer) 프로그래밍 응용(작업) 단위 동작을 네트워크 통해 수행하위 계층의 동작을 구체적으로 제어하는 것은 어렵고 효율 저하 발생함.HTML 작성하는 웹 프로그래밍이 이에 해당함.이미 작성된 유틸이나 응용 프로그램을 활용하며, 작성/변경/운영 작업이 용이. 트랜스포트 계층(Transport Layer) 프로그래밍 통신 종단 간 연결 관리 및 패킷 단위 동작 제어.인터넷 프로그램에서 빈번하게 사용되며, OS 별 소켓 API가 유사해 호환성이 좋음. Socket API 예)UNIX BSD socke,t Winsock, TLI(Transport Layer Interface) 디바이스 드라이버 계층(Device Driver Layer) 프로그래밍 링크 계층, 하드웨어를 구동해..