320x100

전체 글 435

직렬화버퍼

Protocol Buffer https://jeong-pro.tistory.com/190 Protocol Buffer 원리로 배우는 고성능 직렬화, 역직렬화 전략! Protocol Buffer 예제 테스트(구글이 쓰는 프로토콜 버퍼가 무엇인가 프로토콜 버퍼(Protocol Buffer = protobuf)란 직렬화 데이터 구조다. (XML, JSON과 유사) 직렬화 데이터 구조를 알려면 직렬화(Serialization)가 뭔지 알아야한다. 꽤 긴데 천천히 설 jeong-pro.tistory.com Flat Buffer https://google.github.io/flatbuffers/ FlatBuffers: FlatBuffers Overview FlatBuffers is an efficient cross..

메모리 풀 / 프리리스트

메모리 풀은 미리 사용할 객체들을 할당해놓고 필요할 때 가져가고 사용 후엔 반환하며 쓰는 개념이다. 예전엔 다음과 같이 각 메모리들을 할당해두고 각 메모리에 다음 사용할 객체의 포인터 주소를 넣는 식으로 linked list로 구현한 버전을 찾아볼 수 있었다. template class ObjectPool { using uchar = unsigned char; public: static void* operator new(size_t size) { ScopeLock sl(&lock_); if (nullptr == free_list_) { alloc(); } auto* pAvailable = free_list_;// 할당해주는 블럭은 free 목록에서 제외 free_list_ = *reinterpret_ca..

MYSQL을 위한 GUI 툴

MYSQL을 설치하면 WorkBench는 기본적으로 설치되는데, 몇몇 불편한 점이 있어서 다른 툴을 알아본 내용을 정리한다. 1. SQLYog SQLyog 에서 개발한 MySQL 전용 GUI 툴로, 유료버전(Trial)과 무료버전(Community Edition)이 있으니 상황에 맞게 설치하면 될 것 같다. 다운로드 주소 https://github.com/webyog/sqlyog-community/wiki/Downloads 2. heidisql heidsql은 ‘MySQL Front’로 알려졌던 제품이며 오픈 소스 클라이언트다. 다운로드 주소 https://www.heidisql.com/download.php 아직 둘 다 써본지 얼마 안되서 장단점은 잘 모르겠다. 더 사용 해보고 추후에 수정해보겠다.

DB/MYSQL 2021.10.05

Insert 할 때 value 조건문 걸기

가끔 insert나 select 등 값에 조건을 걸어 다른 값으로 표현하거나 삽입하고 싶은 경우가 있다. 나 같은 경우엔 테이블에 nullable한 datetime 컬럼이 있고 파라미터로 unix 시간을 받는데, 파라미터 값이 0인 경우엔 datetime에 NULL을 넣고, 0이 아니면 datetime으로 변환한 값을 넣고 싶었다. CASE ~ WHEN을 쓰는 방법과 IF를 쓰는 방법 2가지가 있다. CREATE PROCEDURE `sp` ( IN _start_time BIGINT ) BEGIN -- 1. CASE~WHEN INSERT INTO (start_date) VALUES ((CASE WHEN _start_time = 0 THEN NULL ELSE FROM_UNIXTIME(_start_time))..

DB/MYSQL 2021.10.05

시간 관련 함수

MYSQL에서는 UNIX_TIME과 DATE_TIME 사이 변환을 지원한다. UNIX_TIME->DATE_TIME SELECT FROM_UNIXTIME(1249052400) DATE_TIME -> UNIX_TIME SELECT UNIX_TIMESTAMP('2021-01-01') 그 외 날짜/시간 관련 함수는 다음과 같다. 현재 시간을 UNIX_TIME 으로 구하기 SELECT UNIX_TIMESTAMP() 이하 차후 정리 http://xe.issro.net/MySQL/299 MySQL - 타임스탬프(유닉스시간) 변환 출처 : http://hack4all.egloos.com/1841100 1) Unixtime -> Date 형식(일반적인 시간)으로 변환 SELECT user_id, FROM_UNIXTIME..

DB/MYSQL 2021.10.05

std::map

map은 key와 value로 구성된 컨테이너로 을 include해 사용할 수 있다. 선언 // key_type - 키의 오름차순으로 정렬되며 정수형 > 스트링 > 사용자 정의 타입 순으로 느려진다. std::map map_container; 데이터 삽입 insert의 결과로 pair가 리턴되며, second값이 bool 타입이므로 insert의 성공여부를 알 수 있다. map_container.insert(std::make_pair(key, data)); 데이터를 삽입하기에 가장 편한 방법이다. map_container[key] = data; 이 두 가지 방법의 차이점에 대해 정리해둔 블로그 내용을 간략히 얘기하자면, operator[]는 map에서 키를 먼저 찾아보고 없는 경우에 value의 기본 생..

게임의 길찾기

A* A-Star 알고리즘은 출발 지점부터 목표 지점까지 최단거리를 찾는 알고리즘이다. f(n) = g(n) + h(n)이라는 공식으로 정리되는데, 꼭지점 N까지의 경로 가중치(g(n))와 지점 n부터 목표 지점까지의 추정 경로 가중치의 합계이다. 현재 지점부터 8방위(↖↑↗→↘↓↙←)방향으로 순회하며 가장 작은 가중치를 찾아가며 반복한다. 한 번 방문한 지점은 방문 목록에 넣어 다시 방문하지 않도록 한다. 의사 코드 pq.enqueue(start_node, g(start_node) + h(start_node)) // 우선순위 큐에 시작 노드를 삽입한다. while pq is not empty // 우선순위 큐가 비어있지 않은 동안 node = pq.dequeue // 우선순위 큐에서 pop한다. if ..

320x100