본문 바로가기

All250

직렬화(Serialize)와 역직렬화(Deserialize)란? 직렬화(Serialize) 프로그램의 object에 담긴 데이터를 어떤 외부 파일에 write 및 전송하는 것 역직렬화(Deserialize) 어떤 외부 파일의 데이터를 프로그램 내의 object로 read 해오는 것 + 보충 설명 네트워크 통신에서 객체 또는 클래스 직렬화의 의미는 다음과 같다. 상대 호스트와 데이터를 주고 받을 때 데이터의 종류는 int, double 과 같은 기본 타입일 수도 있지만, 포인터 타입을 가질 수도 있다. 또한 바이트가 연속적이지 않은 NON-POD 타입일 수 있다.(i.e. 가상 함수 또는 vector를 멤버로 가지는 클래스 타입 등) 기본 타입은 그 값 그대로 유효하지만 포인터 타입은 그렇지 않다. 포인터 타입은 어떤 유효한 값에 대한 주소를 가지는데, 이는 자신의 컴.. 2020. 2. 29.
[C++] 가독성을 위해 default와 delete 키워드를 사용하기 (클래스) 가독성을 위해 default와 delete 키워드를 사용하자 [배경] 클래스 작성 시 우리가 직접 작성하지 않아도 기본적으로 컴파일러가 생성해주는 것들이 있다. 그 대표적인 예로 기본 생성자, 기본 소멸자, 기본 복사생성자, 기본 대입 연산자 등이 그렇다. 기본적으로 컴파일러가 생성해준 복사생성자와 대입 연산자는 객체 복사 시 얕은 복사를 수행한다. 물론 멤버 변수가 값 형식일 경우 또는 주소를 그대로 복사해도 될 경우 깊은 복사를 하지 않아도 된다. 이 경우는 컴파일러가 알아서 만들어주는 것들을 써도 되기에 굳이 복사 생성자와 대입 연산자를 작성하지 않아도 되는 경우이다. 하지만 이는 코드를 짠 사람만 한눈에 이해할 수 있다. 게다가 코드가 매우 길다면 작성자 마저도 헷갈릴 수 있다. 또한 코드를 보는.. 2020. 2. 29.
[MarkDown] .md 파일 제목 타입 표시하기 큰 제목 # 큰 제목 중간 제목 ## 중간 제목 작은 제목 ### 작은 제목 일반적으론 큰 제목에는 밑줄도 나타나는데 티스토리에선 적용이 안되는 듯 함. 2020. 2. 28.
[C++] static_assert 매크로에 대해 알아보자. C++ 11에서 등장한 static_assert 키워드에 대해 알아보자. 기존 assert의 기능 자체에 대해선 간단한 소개만 할 것이니, assert에 대한 더 자세한 내용을 원하면 다음 포스팅을 참고하자. https://woo-dev.tistory.com/52 [assert 기능 및 목적] assert는 프로그램 개발 시 사용자의 실수를 개선해주기 위한 매크로로서, 어떤 조건을 인자로 받아 해당 조건이 거짓일 경우 프로그램을 중단시킨다. 이는 보통 프로그램 로직 상 일어나서는 안되는 조건을 인자로 넣어주어 프로그램 실행 시 assertion이 발생하면 그 조건을 찾아 디버깅 하는 것이다. assert는 프로그램 성능에 영향을 미치지 않으므로 많이 사용해도 상관없다. void main() { int n.. 2020. 2. 28.
[MarkDown] .md파일에 소스 코드 영역 지정하기 (코드 하이라이트) 다음과 같이 소스코드를 ```로 감싸준다. 열린 ```에는 언어 이름을 표시해준다. 아래 ```cpp ~ ``` 영역이 다음과 같이 코드 영역으로 표시된다. ```cpp #include void main() { .... } ``` 다음과 같이 작성하면 (C++가 아닌 cpp) 아래와 같이 코드 영역으로 구분된다. 2020. 2. 27.
[C++] 소수점 n번째 자리에서 반올림 하기 | std::round 소수점 n번째 자리에서 반올림 하기 함수를 통해 직접 n번째 자리에서 반올림하는 것은 불가능하며, 첫째 자리에서만 반올림이 가능하다. 따라서 소수점 n번째 자리를 소수점 첫째 자리로 만들고 반올림 후 원상태로 복구할 것이다. ex) 23.1275 -> 소수점 셋째 자리에서 반올림 (1) 소수점 셋째 자리인 7에서 반올림하려면 우선 7이 소수점 첫째 자리가 되도록 한다. 23.1275 x 10^2 = 2312.75 (2) (1)의 결과를 헤더의 std::round 함수를 이용해 반올림(첫째 자리에서 반올림하는 함수) 2312.75 -> 2313 (3) 원래 자리수로 되돌리기 위해 (1)에서 곱했던 수(10^2)로 나눈다. (= 0.01 곱하기) 2313 x 0.01 = 23.13 2313 / 100.0 =.. 2020. 2. 26.