본문 바로가기

Programing

MECRO 사용. 정의된 MECRO메크로 .....define ##의 사용 http://dhna.tistory.com/44 출처 #define PATHNAME "/Movie/Action" #define MOVIEDATA PATHNAME##"/Data" #, ##, #@ ## 연산자 ## 연산자를 사용해서 토큰을 합성해서 만들어 낼 수 있다. ##은 합치기 연산자 이다. ex) #define MACRO_APPEND(str1, str2) printf("%s\n", str1##str2) # 연산자 # 연산자는 전달된 인자를 문자열로 변환시킨다. ex) #define MACRO_STRING(str) printf("%s\n", #str); #@ 연산자 #@ 연산자는 전달된 인자를 문자로 변환시킨다. 미리 정의된 매크로 __STDC__ : 컴파일러가 ANSI C 표준을 따를 경우 1로 정.. 더보기
multi thread 환경에서 동기화 및 stl 사용법 출처:http://process3.blog.me/20021963684?Redirect=Log [STL & MFC Collection 사용상 주의] -여러 스레드에서 읽는 것은 안전하다. -여러 스레드에서 각각 다른 컨테이너(컬렉션)에 쓰는것은 안전하다 [위 두 가지 경우 이외에는 전부 안전하지 않다. (모두 동기화(lock)을 걸어주어야 함) ] -삽입 ,삭제, 조회를 하는 모든 경우에 동기화 -반복자를 수행하는 전부 동기화 [연속 메모리 기반, 노드 메모리기반 STL 컨테이너 차이점을 확실히 알고 사용한다] 더보기
char [0] , char [1] 의미? (출처 http://minjang.egloos.com/2254472) 출처 http://minjang.egloos.com/2254472 물론 고수님들에겐 쉬운 문제지만 다음 구조체에서 char data[1]의 역할이 무엇인지 생각 해봅시다. typedef struct tagWHATTHE { int data1; int data2; char data[1]; } WHATTHE; 모르시는 분들은 최소 1분 정도 생각을 해봅시다. 그래도 잘 모르겠으면 약간의 힌트: typedef struct tagWHATTHE { int size; int type; char data[1]; } WHATTHE; char data[1]의 역할은 난생 처음 이런 구조체를 보면 data[1] 변수가 도대체 어떤 의미인지 감을 잡기 힘들다. 왜 이런 변수가 쓰이는지는 직접 예제 코드를 보는 것이 가장 좋을.. 더보기
트랜잭션 로그 줄이기 (출처:http://www.sqlworld.pe.kr) 출처 : http://www.sqlworld.pe.kr 1. 테스트를 위한 임시 테이블 만들기와 데이터 추가하기 예전의 테스트 처럼 sqlworld 데이터베이스를 이용하여 실제 상황을 재현해 보도록 하겠습니다. 현재 sqlworld 데이터베이스의 옵션은 다음과 같습니다. o 데이터베이스 복구모델 : 최대 o 자동 축소기능 : 사용안함 다음 [그림 1]은 현재 sqlworld의 데이터베이스와 로그 사이즈를 보여줍니다. [그림 1] 우선 현재의 sqlworld 데이터베이스를 백업 받도록 하겠습니다.(모든 백업의 기본은 전체 백업입니다) USE Master GO BACKUP DATABASE sqlworld TO DISK = 'E:\Data\sqlworld.bak' 1) 테이블 만들기 다음과 같이 테스트 테이블.. 더보기
비쥬얼 스튜디오 스타일 scheme http://studiostyl.es/schemes/wekeroad-ink 더보기
SET NOCOUNT ON SET NOCOUNT 옵션을 ON으로 설정하면 Transact-SQL 문의 영향을 받은 행 수를 나타내는 수가 반환되지 않음. SET NOCOUNT OFF 로 설정하면 이 수가 반환됨. SET NOCOUNT ON 으로 설정되어 있어도 @@ROWCOUNT함수는 업데이트됨. 저장 프로시저의 각 명령문에 대해 클라이언트에게 DONE_IN_PROC 메시지를 보내지 않음. MS SQL Server 와 함께 제공된 유틸리티를 사용해 쿼리 실행시 (select, insert, update,delete등) Transact-SQL 문 끝에 "nn개 행 적용됨" 메시지가 표시되지 않음. 실제 데이터를 많이 반환하지 않는 몇몇 명령문이 포함된 저장 프로시저의 경우 , 이 유틸리티를 사용하면 네트워크 소통량이 크게 줄기 때문.. 더보기
CreateMutex 를 이용한 하나의프로세스 돌리기, bInitalOwner 인자값 HANDLE WINAPI CreateMutex( __in_opt LPSECURITY_ATTRIBUTES lpMutexAttributes, __in BOOL bInitialOwner, __in_opt LPCTSTR lpName ); //중복 프로세스 실행 방지. HANDLE hMu=CreateMutexA(NULL, FALSE,"abcde"); if(GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(hMu); MessageBoxA(NULL, "ABC","ABC",MB_OK); exit(1); } bInitalOwner 값이 true 이면 뮤텍스를 생성한 스레드가 소유권을 가지게 되고 false 이면 가지지 않게끔 생성. WaitForSingleObject, Wa.. 더보기
코드 최적화에 대한 Tip 출처 : http://blog.naver.com/neojzs.do [출처] 코드 최적화에 대한 Tip|작성자 하이요 1. 컴파일러의 최적화 옵션에서 '속도 최적화'대신에 '코드 크기 최소화' 설정이 캐쉬 성능을 향상시켜 좀 더 빠른 코드를 얻을 수 있게 한다. 2. 각 CPU(인텔의 SSE, SSE2 / AMD의 3DNow )의 SIMD 를 활용하는 함수를 만들어 사용해라 3. 가능한 나눗셈 연산을 최소화해라. 예) b = a / m; c = d / m; m = 1 / m; b = a * m; c = d * m; 4. switch문을 쓸 때 연속된 수치를 사용해라. 그러면 VC가 컴파일할 때 테이블형태로 만들어 조건분기보다 빠르게 사용된다. 예) case 0 : case 1 : case 2 : 예2) c.. 더보기