原创 三種方法cmd輸出重定向(推薦boost.process)

  有些場景需要通過執行cmd命令,並且獲取返回的結果。有三種方法:   boost.process windows api _popen 1.boost.process  #include "boost/process.hpp" #i

原创 nodejs addon

nodejs和C++配合起來,又能滿足前端的快速開發,也能達到核心層的性能要求。 之前也寫過用C++寫addon的例子。在實際使用過程也遇到了一些問題: 有些場景需要js註冊回調函數,供底層調用,這個時候會將回調函數記錄v8::Persi

原创 IM網絡層設計

協議層設計 flag version command size header body 架構設計 最底層: socket層,做最底層的TCP連接並且對接協議,包括消息的解包 中間層: 連接管理層, 用於對底層連接做管理。包括連接的ping

原创 容器進程(QQExternal)

容器進程的意義在於這個進程並沒有指定的功能,他只是負責來加載其他模塊(dll),相對於普通進程的優勢就是,不用單獨去做一個進程,在VS中我們只用關注實現邏輯就好,當需要這個功能單獨運行在一個進程中的時候,我們可以方便的用容器進程去加載他,

原创 C++17 獲取文件最後修改時間

      C++17之後又加入了filesystem庫,讓文件操作也成爲了跨平臺的存在,文件創建,刪除,遍歷都不在話下。其他接口都很好用,這裏說一下文件修改時間獲取時遇到的問題。       std::filesystem::last_

原创 QT安裝指引

QTCreator是QT自己開發的IDE,安裝IDE之後還需要安裝sdk: QT下載地址: http://download.qt.io/ 1.    2.   

原创 NodeJs調用的DLL工程環境配置

https://nodejs.org/download/release/latest/下載最新的nodejs安裝包 安裝後本地就有了node環境。 繼續下載C++中用到的node頭文件:   下載lib文件: 配置VS環境:    

原创 OBS中demo分析

OBS中給了一個簡單的test應用,創建一個場景,並將場景顯示在windows中: int WINAPI WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdLine

原创 NodeJS調用Dll模塊

參考: http://nodejs.cn/api/addons.html NodeJs調用Dll中的類或者函數接口有一套基於V8的框架,有固定的寫法: 註冊入口函數,js在require的時候會調用該註冊接口 Param1: 註冊名稱,無

原创 心流 - 體驗幸福

    專注力、興趣、目標       三者互爲因果相互加強。 因爲投入注意力,產生了興趣,興趣之後發現了目標 ------ 不想幹,確不得不做的事情 因爲興趣,所以投入了注意力,因爲有了注意力加強了目標 ------ 不斷培養興趣愛好

原创 創建擴展性良好的框架-插件框架(實現)

一般在業務開發中,要分很多個模塊來進行協作,模塊多了之後就會有依賴問題,包括模塊的啓動順序,統一初始化,釋放資源等等,所以就需要一個來管理模塊的框架,插件框架。 外部接口: 插件管理啓動所有註冊插件,並初始化  //啓動框架 #defi

原创 OBS從渲染到推流過程分析

obs中將渲染和生產推流數據,推流分爲三個線程,整個過程交織在一起,不容易理清整個過程。下面先分別對三個過程進行分析,然後將整個過程鏈接起來:  1.渲染: //初始化 Obs.c: obs_reset_video //設置畫布 Ob

原创 Conan讓C++項目組件化

隨着項目越來越大,很多基礎的功能模塊需要被拆解出來,單獨管理。一方面一些基礎模塊很穩定,不需要再花團隊精力去維護,另一方面有些模塊可以供其他項目複用,所以組件化勢在必行。 項目拆解。將基礎模塊拆解出來,例如底層網絡,bugreport等等

原创 conan環境搭建

conan分爲客戶端和服務端兩個部分:conan 和 Artifactory。具體可以參考官網:https://conan.io/downloads.html 客戶端搭建: 按照官網指引,用python的pip來安裝: pip ins

原创 C++獲取當前時間 (std::chrono)

  在C++11之前要獲取當前時間,大多數情況下要使用C語言的time庫: #include <iostream> #include<time.h> #include <sstream> int main() { time_t n