原创 C++依賴管理系統-conan

conan官網:https://conan.io/index.html conan類似於gradle,maven可以對C++的工程依賴管理,跨平臺,並且支持cmake和visual studio,所以對於C++工程的組件化來說就是福音 c

原创 培養堅韌的性格

不同於剛毅,堅韌的性格有利於處理好周圍的人事關係。在實力不到的時候是不能搶權奪路的,需要根據周圍的環境協調好這些問題,以達到目標。這就是一般意義上的人際關係處理學問。其實在很早之前就有先賢幫我們解答了這個問題,那就是老子。 上善若水,水是

原创 簡單消費隊列的實現(異步任務處理)

很多情況下要用到生產者-消費者這個模型,比如有很多任務要處理,但是又不能馬上得到處理,這個時候就難免要將任務緩存下來慢慢消化。最普通的就是一對一的模式,一個生產者,一個消費者。那麼有幾個點需要考慮: 生產速度大於消費速度,這個時候就需要隊

原创 QML- Image在佈局中大小不能適應

在實際應用Image的過程中,發現加入佈局中以後Image的縮放就會有問題,即使指定了 fillMode:Image.PreserveAspectFit也會發現圖片顯示大小雖然得到了調整,但是實際在佈局中佔用的寬度並沒有調整 Rect

原创 QML中的Layout和Anchor

相較於QWidget,QQuick中使用QML來寫界面,開發效率和代碼結構都有了明顯的進步,而且新版本對QQuick的支持也越來越完備,無論效率,還是界面效果都要優於原有的Widget架構。 QML中界面排布提供了兩種方式Layout和A

原创 Mars長連接管理

對長連的管理有兩個方面,一個是心跳(HeartBeat),一個是重連(Reconnect)。這兩個動作都是有策略性的。 一般心跳會間隔性的發出一個很小的心跳包,通過服務端返回來判斷連接是否健康。 在網絡斷開會,會自動重連,一般遵循逐漸遞增

原创 本地緩存(key-value)

目前在做本地緩存時常用的方式是用sqlite作爲本地緩存數據庫,緩存使用的場景很多,每次都設計表就變成一件很麻煩的事情,而且很多場景就只是用來記錄一些配置信息,所以採用key-value這種接口去封裝sqlite就是一種很好的方式。 接口

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

       一般來說通知框架可以有效的解耦業務邏輯,就類似於訂閱者模式,任何模塊都可以註冊自己關注的接口,接口事件發生時會主動通知該模塊。   通知框架向外部提供的宏: //註冊通知 #define LISTEN(INotify)\

原创 創建擴展性良好的框架-(通知\單例\插件)框架

面向外部的接口: #pragma once #include <functional> #ifdef CORECENTER_EXPORTS #define CORECENTER_EXPORTS __declspec(dllexport)

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

       單例可以算是業務開發中最常用的方式,一個對象可以全局使用,但是普通的單例對象只能在當前模塊(exe/dll)中使用,其他模塊要使用的話需要顯示導出纔可以,不利於業務之間的交互。    宏接口: //註冊單例接口 #defi

原创 conan入門用法

打包: from conans import ConanFile, MSBuild class CoreCenterConan(ConanFile): license = "MIT" settings = "os",

原创 Windows網絡連接狀態獲取

是否有網絡連接: INetworkListManager::get_IsConnected 是否有可用的網絡連接: INetworkListManager::get_IsConnectedToInternet 附上一篇相關的文章: htt

原创 boost.asio網絡錯誤碼

對於網絡編程,無論是底層socket編程還是上層網絡庫的編程,正常邏輯往往都非常的簡單,重要的是對異常邏輯的把握。比如連接錯誤,往往都會有很多種。 最近項目中用的長連接(TCP)就是基於boost.asio來做的,我們的windows、i

原创 boost.asio庫編譯使用

asio提供了很好的異步網絡框架,即便不使用網絡,僅僅使用他的異步IO也是很方便的。 boost文檔中對編譯也有說明: b2 --with-system --with-thread --with-date_time --with-

原创 boost.asio發送數據邏輯分析

之前也看過asio的實現,還分析過asio底層的類結構。這一次要在項目中用asio做爲網絡底層的庫,所以再次深入瞭解了一下asio內部的實現。 ip::tcp::socket是asio中對tcp連接socket的封裝,提供了四個接口用於讀