原创 兩種單例模式:懶漢式和餓漢式

線程安全的懶漢單例模式 //.h class MySon { public: static MySon* getInstance(); virtual ~MySon(); private: MySon();

原创 互斥鎖和條件變量實現輪詢比較

互斥輪詢---將出現大量空轉 #include <mutex> #include <iostream> #include <queue> using namespace std; queue<int> msgs; mutex m;

原创 《TCP/IP網絡編程》筆記

目錄 創建套接字 TCP/IP服務端、客戶端簡單示例 端口號 地址信息表示 字節序與網絡字節序 字符串轉網絡字節序 WSAStringToAddress & WSAAddressToString TCP服務端函數調用順序 TCP客戶端函數

原创 C++ cout打印十六進制

使用printf輸出十六進制 printf("%.2x",...);   使用std::cout輸出十六進制且同上格式 std::cout<< std::hex << std::setfill('0') << std::setw(2) <

原创 Qt實現簡單線程池

Qt本身就具備線程池類QThreadPool,使用起來也很方便,不過現在我們用QThread來做一個自己的線程池。 創建用來管理線程池的類ThreadPool,在這裏它發揮着管家的職責,掌管公共資源的使用。由於管理任務的隊列、鎖以及條件變

原创 COM組件的創建與調用以及註冊表位置查找示例

詳細的創建過程和調用可以參考 https://blog.csdn.net/weixin_30451709/article/details/98574314?utm_medium=distribute.pc_relevant.none-ta

原创 Qt常遇問題小集合

QThread之quit() 和 terminate() quit() 通知線程的事件循環退出...如果線程沒有事件循環,就啥都不做。 terminate() 可以簡單理解爲強制退出 示例: class MyThread:public

原创 Qt小程序從一組數據中選任意數相加計算出最優組合

介紹下小程序功能,先看界面 在數據內容框框裏面填入一組數據,以逗號隔開。在目標值框框中填入目標值,目的是爲了從上面的數據中任選數字組合,然後相加得到與目標值最接近的組合。計算結果: 列出所有組合形式。 大致的實現思想就是把所有能想到的

原创 CPP不包含頭文件的特殊寫法

 MyClass1.h #pragma once class MyClass1 { public: MyClass1(); void Print(); }; MyClass1.cpp定義,正常情況下,下面的寫法會報錯,因爲缺少關鍵

原创 友元之間的關係

有時會用到友元函數和友元類,但是聲明瞭以後搞不清互相之間的可訪問關係!! 這裏弄了兩個類和一個友元函數來演示關係---“我是你朋友,所以你的就是我的,我的還是我的” //類A class A { public: void

原创 句柄的實現

兩種方法實現句柄類,分離計數更加靈活 頭文件 #pragma once //通過計數來達到,對同一個對象使用時,避免了拷貝的開銷,當需要修改時,才進行正真的拷貝, //在使用的對象很大時很能提高性能 //什麼時候用指針語義 例如 內

原创 C++拷貝構造函數與重載賦值運算符

一段時間沒用拷貝構造函數和運算符,就搞不清在使用過程中程序到底是怎麼走的 mian調用 #include <iostream> #include <string.h> #include "MyString.h" int main()

原创 十六進制字符轉十進制的方法

QByteArray array; array.resize(2); array[0] = 0x07; array[1] = 0xE3; qDebug() << array.toHex().dat

原创 模版特化

Partial Template Specialization能夠讓你在模板(Template)的所有可能的實體中特化出一組子集. 1.模板的特化(template specialization):     例如,定義如下的一個模板:  

原创 互斥鎖和條件變量

明明互斥鎖能解決的問題,幹嘛還要用條件變量呢? 當然是爲了提高效率啊!!! 互斥法輪詢 #include <mutex> #include <iostream> #include <queue> using namespace std