목록전체 글 (253)
bdfgdfg
#include #include using namespace std; int memo[50][50]; int Combination(int n, int k) { // 0개를 선택하거나 5개의 공에서 5개를 선택하는 경우의 수는 1. if (k == 0 || n == k) return 1; if (memo[n][k] != -1) return memo[n][k]; // 한번도 구한적이 없다면 계산하고 저장. return memo[n][k] = Combination(n - 1, k) + Combination(n - 1, k - 1); } int main(void) { ::memset(memo, -1, sizeof(memo)); int count,west,east; cin >> count; for (int i =..
RingBuffer 클래스 - 이 클래스는 메모리 풀(Memory Pool)개념이 적용된 버퍼 공간으로 주된 사용 목적은 연결에 대한 패킷을 보내거나 받을 때 사용한다. - 메모리 풀링(Memory Pooling)은 미리 사용할 메모리를 할당해 놓고 필요할때마다 꺼내서 쓰는 방식. -> 쓰레드 풀과 같은 개념. 미리 쓰레드를 할당해놓고 필요할때마다 꺼내 사용하는 방식 (매번 할당/소멸의 형태x) -> 위와 마찬가지로 메모리를 매번 할당하고 해제하는 작업이 생각보다 CPU소모가 있다. -> 더 큰 이유로는 반복적으로 메모리를 할당하고 해제하면 메모리 단편화가 생길 수 있기 때문. -> 메모리 단편화는 메모리가 조각나는 현상. 심해지면 메모리를 할당하는데 오랜 시간이 걸리며 (OS가 메모리를 할 당할 공간을..
Singleton class - 많이 사용하는 디자인 패턴 기법으로 오직 하나의 객체만 생성하여 사용하는 클래스를 의미한다. -> 패턴은 쉽게 말하면 개발자들의 경험을 통한 문제 해결 방법들을 정리하여 이름을 부여한 기법들. - 이러한 단일체(Singleton)클래스는 어떤 클래스(객체)들을 관리하는 역할로 많이 쓰인다. -> ex) User를 관리하는 UserManager등등.. 보통 Manager가 붙은 클래스들이 Singleton을 사용한다. 먼저 싱글톤 클래스를 하는데 싱글톤 패턴을 사용하는 모든 단일체 클래스는 이 클래스를 상속받는다. -> 모든 싱글턴 객체들을 관리한다. 해제할 때는 이 Singleton클래스를 통해 해제. 싱글톤 패턴을 사용하기 쉽게 매크로를 이용해본다. #define DEC..
Monitor Class - 이 클래스는 동기화 객체로서 CRITICAL_SECTION(유저모드 동기화)객체를 사용하기 편하도록 초기화와 해제를 생성자와 소멸자로 빼내어 사용자가 따로 하지 않아도 자동으로 되게 만든다. -> 모던 C++에선 lock_guard같은 역할. -> 교착 상태(DeadLock)과 기아 상태(Starvation)을 미연에 방지하도록 설계 - 사용할 때엔 동기화가 필요한 클래스는 이 클래스를 상속받아 사용한다. #pragma once #include "std.h" // 복사되는것을 방지. class Monitor { public: class Owner { // Owner클래스는 자동으로 CS객체의 소유권을 해제하기 위해 만들어짐 public: Owner(Monitor& crit);..