요 몇주간 본것 봐야할것이 잔뜩 늘었다ㅋㅋㅋㅋ
그래서 정리.
1. 서버에서 들어온 패킷에 대한 구분을 할때 switch case를 잔뜩 써 주는 것 보다는 if~elseif로 적당히 끊어서 switch-case를 쓰는게 좋다.
이건 생각지도 못한 부분인데, swtich-case는 내가 아는 한 위에서부터 차례차례 case를 비교하면서 내려간다. 그래서 일반적으로 자주 호출되는 case를 위에 써주는데, 패킷은 대개 수십, 수백개 쯤 있으니 이걸 전부 하나의 switch-case에 몰아넣으면 너무 과도하게 많은 케이스 체크가 필요하게 됨.
그래서 뭐, 0부터 50번까지의 패킷, 50번부터 100번까지의 패킷, 이런 식으로 구분해서 switch-case를 쓰는 것도 괜찮은 방법인 것 같다.
2. SP가 저장 프로시저였구나.
용어는 많이 들었는데 정작 알게된건 최근...ㅋㅋㅋ실무 파악하면서 공부했다. DB에 sql쿼리문을 직접 안 쓰고 함수 호출하듯 쓰게 할 수 있는건데 적당한 설명은 여기.
더불어 ADO도 덩달아 보게됨.
3. 패턴 몇개
Facade, Mediator
를 주말에 좀 볼라했는데..... 부모님집에서 책을 안 가져왔어.......
다음 주말에 봐야겠다ㅠㅠ
4. pragma pack (push, n) / pragma pack (pop)
전에 한번 대충 봤던건데 이번에 다시 봄. 대충 이런거다.
이런 구조체가 있을때
struct A
{
int a;
short b;
}
#pragma pack(push, 4) 을 했을 경우
a |
|||
b |
|
|
-> 실질적인 크기는 8byte
#prama pack(push, 1) 을 했을 경우 (원래 밑으로 향해야 하지만 편의상 가로로 표시
a |
b |
-> 실질적인 크기는 6byte
pop은 push 하기 이전에 상태로 되돌리는 것. 일종의 스택이다.
클라이언트 개발만 할 땐 전혀 신경쓰지 않았던건데, 패킷 주고받는 과정에서 저렇게 빈 공간이 존재할 경우 당연하게도 문제가 된다. 예시인 구조체는 저게 끝이지만 그 뒤에 주렁주렁 타입이 제각각인 멤버변수들이 존재하는게 일반적이니, 빈 공간이 있다고 가정할 경우, 받은 패킷을 읽어들일때 빈공간까지 고려해서 읽어들일 수는 없는 노릇.
그래서 1byte 단위로 쪼개놓는다.
정렬되는 기본 값은 8임. (1/2/4/8/16) 이케 설정할 수 있다함. >> MSDN
'스터디' 카테고리의 다른 글
값에 의한 전달보다는 상수객체 참조자에 의한 전달이 나음 (0) | 2017.04.01 |
---|---|
[아홉가지 알고리즘] 07. 데이터 압축 - 무손실 (0) | 2014.09.13 |
[아홉가지 알고리즘] 05. 오류 정정코드 - 핀포인트 트릭 (0) | 2014.07.31 |
[아홉가지 알고리즘] 05. 오류 정정코드 (0) | 2014.07.30 |
14 07 29 - 처리 흐름 제어 (0) | 2014.07.29 |