C++ - TimingWheel 알고리즘을 사용한 타이머

자세한 설명은 http://d2.naver.com/helloworld/267396. 타임아웃 작업의 만료 여부에 대한 검사가 필요 없는 등록과 실행 두 작업만을 모두 O(1)의 시간 복잡도로 처리할 수 있는 타이머를 구현할 수 있다. 출처: https://github.com/billlin0904/librapid uint64_t TimingWheel::add(uint32_t timeout, bool onece, TimeoutCallback callback) { //std::lock_guard<platform::Spinlock> guard{ lock_ };...
더 읽기

C++ - Win32API 스레드 풀을 사용하는 타이머

Windows Vista부터 사용 가능. CreateThreadpoolTimer, SetThreadpoolTimer API 사용. ‘윈도우 시스템 프로그램을 구현하는 기술(한빛미디어)’에 설명이 잘 나와 있음 예제 코드 출처: https://github.com/billlin0904/librapid using TimerPtr = std::shared_ptr<Timer>; class Timer { public: using TimeoutCallback = std::function<void(void)>; static TimerPtr createTimer(); void start(TimeoutCallback callback, uint32_t...
더 읽기

C++ - Core Guidelines Checker와 GSL 도입

출처 시작하기 C++ Core Guidelines Checker는? 주로 Bjarne Stroustrup과 Herb Sutter에 의한 C++ Core Guidelines는 더 나은 C++ 코드를 작성하는데 필요한 지침이 정비 되어 있다. 이 지침의 많은 항목은 분석 도구를 통해 확인 가능하도록 쓰여져 있다. C++ Core Guidelines Checker는...
더 읽기

C# - BenchmarkDotNet 글 링크

BenchmarkDotNet 라이브러리 소개 .NET Core + BenchmarkDotNet 실행 시 프레임워크를 찾지 못하는 문제 BenchmarkDotNet 사용 시 주의 사항 BenchmarkDotNet에서 생성한 BuildPlots.R 파일을 실행하는 방법 BenchmarkDotNet으로 Span 성능 측정 (일어)BenchmarkDotNet을 사용해 보자 (일어)BenchmarkDotNet 개요 (일어).NET Core에서 BenchmarkDotNet을 이용하기 (일어)BenchmarkDotNet을 .NET Framework와...
더 읽기

Rust - VS Code의 Remote Container로 Rust를 시작하기

출처 VS Code의 Remote Container 기능을 사용하여 최대한 빨리 Rust을 시작하려는 사람들에게 아래의 docker-compose.yaml 를 준비했다! docker-compose.yaml version: '3' services: rust: image: rust:1.38 volumes: - .:/opt/rustapp environment: - USER=`${USER}` working_dir: /opt/rustapp stdin_open: true rust:1.38는 현재 최신 버전이다. Docker Hub의 Rust...
더 읽기

Python - struct 모듈을 사용하여 Binary 읽고/쓰기

출처 struct 모듈 struct 모듈은 pack, unpack, calcsize 등의 기능이 있으며, 이것들을 사용하여 정수, 부동 소수점 숫자, 문자열(을 encode 메소드에서 인코딩 한 것)을 bytes 객체로 변환하거나 반대로 bytes 객체에서 이것을 빼낸다. bytes 객체로 변환하려면 “서식 지정 문자”라는 문자를 조합하여 이것들과...
더 읽기

MySQL 8.0.16의 CHECK 제약

참고 CHECK 제약 조건을 지정하여 테이블을 만든다. (※ t1.a에 “0 < a AND a <= 3” 이라는 CHEKC 제약을 지정한다) mysql> SELECT version(); +-----------+ | version() | +-----------+ | 8.0.16 | +-----------+ 1 row in set (0.00 sec) mysql> mysql>...
더 읽기

Http 호출을 배타적으로 하기

특정 http 호출을 동시에 호출하지 않도록 하는 방법 출처 public static void ExecuteSync(Action SynchronousAction, Action OnBlocked) { string appKey = "MyState"; var app = System.Web.HttpContext.Current.Application; app.Lock(); var state = app[appKey]; if (state == null) { app[appKey] = new object(); }...
더 읽기

Linux - 자주 사용하는 명령어

출처 기본 cd <path> #path로 이동 cd - #이동 전의 path로 이동 pwd #작업 디렉토리의 패스를 표시 ls #현재 디렉토리의 내용 표시 mv <originalPath> <newPath> #파일 이동, 이름 변경 cp <originalPath> <newPath> #파일 복사 find <path> --name "<pattern>" #path 안에서...
더 읽기