분류 전체보기

    C++ 공용체(union) 개념과 통신에서의 사용 이유

    union 정의 union은 struct와 유사하지만 union의 변수 중 가장 큰 변수의 메모리를 모든 변수가 공유한다는 점에서 다르다. 같은 변수를 가지는 struct와 union의 size를 출력해보면 아래와 같이 결과가 다른것을 확인할 수 있다. typedef struct sizeTest_struct { int a;// 4byte double b;// 8byte }sizeTest_struct; typedef union sizeTest_union { int a; double b; }sizeTest_union; int main() { sizeTest_struct s; sizeTest_union u; printf("struct size : %d\r\n", sizeof(s));// 16 printf("u..

    C++ struct(구조체), union(공용체) 크기에 대한 정리

    1. struct Struct(구조체)는 구조체 멤버중 가장 큰 변수의 크기를값을 기준으로 잡고 기준값의 크기에 나머지 변수를 순서대로 차곡 차곡 배치하여 구조체의 전체 크기가 결정 된다. 아래의 예시 코드를 보자. typedef struct test{ int a; long c; char b; char d:1, //d:1의 의미는 char d를 1bit 의 크기로 계산하고 사용한다는 의미 e:1, f:1, g:2, i:1, k:1; long h; } test; int main(void) { test k; k.g=1; // printf("a:%d \n",k.g); printf("size : %d\n",sizeof(k)); return 0; } 구조체 형태 도식화 (long 은 64bit 운영체제에서 8by..

    C++ 함수 객체 (Functor) / () 연산자 오버로딩

    추가 글 : 함수 객체 (Fuction Object) 템플릿 / 람다식 — A Game Client Programmer (tistory.com) 함수 객체 (Fuction Object) 템플릿 / 람다식 장점 : 다른 멤버 변수와 멤버 함수를 가질 수 있고 일반 함수에서 하지 못하는 지원을 받을 수 있습니다. 함수 객체의 서명이 같더라도 객체 타입이 다르면 서로 전혀 다른 타입으로 인식합니다 devshovelinglife.tistory.com 콜백 메커니즘 개념을 설명하기 위해선 '서버 코드'와 '클라이언트 코드'의 개념이 필요하다. 서버 코드: 기능이나 서비스를 제공하는 코드 클라이언트 코드: '서버 코드'가 제공해주는 기능이나 서비스를 사용하는 코드 Print() 함수는 출력 기능을 제공하는 '서버 ..

    C++ 클래스 접근제한자 관련 보충 내용

    클래스 접근제한자는 오브젝트 레벨이 아닌 클래스 레벨로 작동되기 때문에 생성자 내에서 파라미터로 받는 같은 클래스 변수의 private 또는 protected 멤버 변수에 접근이 가능하다. #include using namespace std; class A { private: int mValue = 0; public: A() = default; A(int val) : mValue(val) { } A(const A& a) { this->mValue = a.mValue; } void Print() { cout

    Overlapped (비동기) I/O, epoll, iocp 정의 및 코드

    Overlapped I/O 논블록 소켓 단점을 보완한 네트워크 통신 방법이 Overlapped I/ 논블로킹 소켓 프로세스 소켓 I/O 함수가 리턴한 코드 would block 인 경우 재시도 호출 낭비 발생. 소켓 I/O 함수를 호출할 때 입력하는 데이터 블록에 대한 복사 연산 발생. CPU 안에 있는 캐시 메모리에 메모리 내용이 복사되어 있으면 데이터 액세스는 매우 빠르지만 캐시에 없는 데이터를 액세스할 때는 메인 메모리 RAM을 액세스하는데, 이 속도는 매우 느림. 물론 하드디스크나 네트워크 데이터보다는 빠르지만 고성능 서버 개발 시 이 복사 연산 무시할 수 없음. TCP, UDP 논블록 소켓에서 재시도용 호출 낭비 TCP 소켓 send() 함수를 호출하면 would block 은 절대 발생하지 않..

    TCP와 UDP의 특징과 차이

    전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당한다. 그리고 데이터를 보내기 위해 사용하는 프로토콜이 있는데, 그 프로콜들이 바로 TCP와 UDP다. 1. TCP(Transmission Control Protocol) 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜. 일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 *패킷을 추적 및 관리하게 된다. TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다. [ TCP 특징 ] 연결 지향 방식이다. 3-way handshaking과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다. 흐름 ..

    C++ 객체 이동 std::move

    에 정의됨 // C++ 14 이전에는 constexpr 아님! template constexpr typename std::remove_reference::type&& move(T&& t) noexcept; std::move 는 어떤 객체 t 가 이동 될 수 있음 을 알려준다. 이동 이라 하면 C++ 11 에 도입된 개념으로 t 가 가지고 있는 자원을 다른 객체에게 효율적으로 전달하는 것을 의미한다. std::move 된 객체를 함수에 전달한다면, 우측값 레퍼런스를 인자로 받는 함수(예를 들어서 이동 생성자, 이동 대입 연산자, vector 의 push_back 함수 같은 애들)가 오버로딩 되어서 선택된다. 참고로 우측값 레퍼런스 자체는 rvalue 가 아니라 lvalue 이기 때문에, 이동 생성자나 이동..

    [Cocos] 이미지 삽입하는 방법

    Resources 폴더 아래에 사용하고자 하는 리소스들을 추가해야한다. CreateScene.h #pragma once #include "cocos2d.h" class GraphicsScene : public cocos2d::Layer { // 레이어 생성 시 필수 CREATE_FUNC(GraphicsScene); public: // 씬 생성 static cocos2d::Scene* createScene(); // 이미지 초기화 virtual bool init(); }; CreateScene.cpp #include "GraphicsScene.h" USING_NS_CC; cocos2d::Scene* GraphicsScene::createScene() { auto scene = Scene::create();..

    [Cocos] 설치 방법

    Cocos2D-x를 다운로드. CMake를 다운로드. 파이썬을 다운로드 (2 버전) NDK 다운로드 SDK 다운로드 1. Cocos2d-x 폴더에서 setup.py 실행해서 NDK와 SDK 경로 지정 후 재부팅. 2. CMake와 Python 2버전을 설치한다. 항상 msi 파일 아래와 같이 나와야한다. 파이썬은 내려가다보면 X마크가 있을텐데 이를 클릭하고 첫번째 버튼 클릭해서 위에것들이랑 동일하게 적용. 아래와 같이 나와야한다. 3. 폴더 생성 후 cmd에서 아래와 같이 커멘드를 입력한다. // 아래는 생성할 폴더의 경로 cd /d E:\0_Projects\Cocos\2DRogueLike // 프로젝트 생성하는 커멘드 cocos new Test -p com.{ShovelingLife}.2DRogueLi..

    해시 함수의 종류

    MD4 와 MD5 ① MD(Message Digest)4 Rivest 가 1990년에 만든 일방향 해시 함수로 128비트의 해시 값을 갖는다. 그러나 Dobbertin에 의해 MD4의 해시 값의 충돌을 발견하는 방법이 고안되어 현재는 안전하다고 할 수 없다. ② MD(Message Digest)5 MD4 를 만든 Rivest 가 1991년에 만든 일방향 해시 함수로 128비트의 해시 값을 갖는다. 여기서 입력은 512-비트 블록들로 처리된다. 전수 공격과 암호해독에 대한 우려가 심각해진 최근 몇 년을 제외하면 MD5 는 가장 널리 사용되던 안전한 해시 함수이었다. (2005년 깨졌으나, 사용은 되고 있음) ③ MD4 와 MD5 의 비교 - MD4 는 16단계의 3라운드를 사용하나 MD5 는 16단계의 4..