이펙티브 STL 서적을 읽고 있던중 auto_ptr 컨테이너(COAP: Container Of A(a)uto_P(p)tr)는 절대 금지라고 강조하는 부분이있었습니다. 책의 저자는 COAP를 만드는 코드는 컴파일조차되어서는 안된다고 강조합니다. -_-! 그 결정적인 이유는 COAP는 이식이 불가능하다는 점입니다. 이 점을 풀어서 설명드리자면 auto_ptr 하나를 복사(copy)하면, auto_ptr이 가리키는 객체의 소유권(ownership)은 복사하는 (copying) auto_ptr로 옮겨지고 복사되는 (copied) auto_ptr는 NULL로 셋팅된다는 것입니다. 즉 auto_ptr을 복사하는 것은 '그 포인터의 값을 바꾸는 것이다.' 라고 말할 수 있겠습니다. 이렇게 이식이 불가능한 상황인데 S..
다중 쓰레드 환경에서 작업하다보면 쓰레드동기화 때문에 골치아픈경우가 매우 많다. 예를 들면 두 쓰레드가 공통객체를 같이 쓰게되는 경우이다. 테스트했었던 동기화처리가 되지않은 코드이다. #include #include "CThread.h" #include int money; class ThreadTest : public CThread {private: int num;public: ThreadTest () { num = 0; } ThreadTest (int num){ this->num = num;} virtual int run () { //CThreadSync sync; if(money >= 1000) { printf("[%d] 돈이 1000원 이상 있음 \n",num); for(int idx=0; idx..
쓰레드를 이용할일이 있어서 pthread로 쓰레드를 만들어봤다. 윈도우즈에서 pthread를 사용하는 방법은 이전 포스트에써 놨다.(http://idea-sketch.tistory.com/4) pthread를 어떻게 쓰실지 잘 모르겠다는 분들은 여기를 참조하세요. http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Thread/Beginning/PthreadApiReference 혹시나 필요하신 분들은 가져다 본이의 입맛에 맞게 고쳐쓰시면 되겠다. 준비물은 pthread.h이다. CThread.h #include class CThread{protected: pthread_t mThread; bool threadRunFlag;public: CThread ();..
Windows 환경에서 쓰레드를 이용할 일이 생겼다. 무의식적으로 익숙한 #include 를 사용했는데 pthread.h가 없다고 나온다a 그래도 난 pthread를 사용하고 싶었고!! 구글링을 해보니 방법이 있었다!! 다행이 친절하게 설명해주신분의 블로그가 있어서 쉽게 해결했다. 참고한 사이트는 여기다 http://plming.tistory.com/62 링크에 나온 설명방법을 그대로 따라해봤다. 우선 http://www.sourceware.org/pthreads-win32/ 로가서 lib,include,dll을 다운받는다. 1. 나는 가장 최신버전인 prebuilt-dll-2-9-1-release 를 받았다. 2. 그다음 빈프로젝트를 생성후 다운받은 파일을 옮겨 놓는다. 3. 프로젝트 속성에서 C/..
게임 서버 프로그래밍 책을보다가 기초라이브러리 제작목록에 유용한 코드들이 있어서 따라해봤다. 앞으로 책을읽다 흥미가 가는 코드들은 따라해본다음 포스팅할 예정이다... 오늘은 암호화,복호화(Encrypt,Decrypt)이다. 여기서 소개해주는 암호화 방법은 모든 바이트마다 특정값(Key값)을 XOR연산을 시켜서 원본값을 숨기는 방법이다. 복호화 방법은 거꾸로 암호화된 바이트에 암호화할때 사용했던 특정값(Key값)을 다시 XOR 시킴으로써 원본값을 확인한다. 그리고 여기서 특정값(Key값)을 알아내기만 하면 쉽게 복호화 할수있다는 약점을 가리기위해 바이트마다 암호화키를 바꾸는 공식을 넣어서 약간더 안정성을 높인다. 실무에서는 어떻게 사용하는지 모르겠지만 이정도 방법만으로도 간단한 암호화 모듈로는 쓸만하겠다...
게임 서버 프로그래밍 책을보다가 기초라이브러리 제작목록에 유용한 코드들이 있어서 따라해봤다. 앞으로 책을읽다 흥미가 가는 코드들은 따라해본다음 포스팅할 예정이다... 오늘은 메모리풀(MemoryPool)이다. 메모리풀은 같은객체의 new / delete가 반복적으로 일어나면 프로그램 속도에 영향을 주기때문에 미리 특정공간만큼을 확보해둔후 new / delete 호출시에 미리 확보된 공간을 제공, 회수함으로써 프로그램의 속도를 높이는 방법이다. 설명은 이쯤에서 그만하고 소스코드를 보겠다. 준비물은 과 이다. CMemoryPool.h #include #include template class CMemeoryPool{public: static VOID* operator new(std::size_t allocL..
게임 서버 프로그래밍 책을보다가 기초라이브러리 제작목록에 유용한 코드들이 있어서 따라해봤다. 앞으로 책을읽다 흥미가 가는 코드들은 따라해본다음 포스팅할 예정이다... 오늘은 원형큐(CircularQueue)이다. 이 포스팅을 보시는분이라면 원형큐가 어떻게 동작하는지는 알고 있으실꺼라 생각하고 따로 설명은 하지 않겠다. 이 원형큐의 특징은 나머지연산자(%)를 통해서 마지막까지 갔을때 처음으로 돌아온다는 것이다. 사용한 필요준비물은 이다. CircularQueue는 다음과 같다. CircularQueue.h #include #define MAX_QUEUE_LENGTH 10 template class CCircularQueue{public: CCircularQueue(VOID) { ZeroMemory(mQue..
- Total
- Today
- Yesterday
- ruby
- 엘라스틱서치 기초
- Autoloading
- 루비
- next key lock
- MySQL
- 페어 프로그래밍
- Pair-programming
- innoDB lock
- InnoDB
- lock
- gap lock
- mysql lock
- 갭 락
- Elasticsearch Cluster
- autoload_paths
- MySQL 족보
- db
- 인덱스
- 트랜잭션
- dead lock
- 루비 메타프로그래밍
- 루비 상수
- metaprogramming
- 페어프로그래밍
- MySQL 인덱스
- 되추적
- ruby meta programming
- 넥스트 키 락
- 메타프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |