原创 alloc與malloc的區別

函數原型:  void *calloc(size_t n, size_t size); calloc是一個ISOC函數函數名。在內存的動態存儲區中分配n個長度爲size的連續空間,函數返回一個指向分配起始地址的指針;如果分配不成功,返

原创 你真的瞭解extern C嗎

C++是一種面向對象的語言,支持函數的重載,而C語言是面向過程的語言,不支持函數的重載。同一個函數在C++環境編譯後與其在C語言環境下編譯後,在符號表中的簽名是不同的。假如有一個函數: void decode(float positio

原创 【數據庫】創建索引的原則

大多數情況下,業務SQL十分複雜,沒法優化。所以就要建立索引了。這個時候,參照如下規則建立索引 索引並非越多越好。大量的索引不僅佔用磁盤空間,而且還會影響insert,delete,update等語句的性能 避免對經常更新的表做更多的索引

原创 Qt QStringLiteral(str)有什麼用

Qt 爲我們提供了 QStringLiteral(str) 宏 使用 QStringLiteral 宏可以在編譯期把代碼裏的常量字符串 str 直接構造爲 QString 對象,於是運行時就不再需要額外的構造開銷了。 如果編譯器支持,則

原创 windows socket相關接口整理

WORD MAKEWORD(BYTE bLow, BYTE bHigh) 將兩個byte型合併成一個word型,一個在高8位,一個在低8位 MAKEWORD(2, 2)的返回值爲514 #define MAKEWORD(a

原创 【Windows系統】C++方式獲取CPU個數

廢話不多說,直接上代碼 #include <windows.h> int get_cpu_cnt() { SYSTEM_INFO si; GetSystemInfo(&si); return si.dwNum

原创 Git submodule總結

什麼是submodule 有種情況我們經常會遇到:某個工作中的項目需要包含並使用另一個項目。 也許是第三方庫,或者你獨立開發的,用於多個父項目的庫。 現在問題來了:你想要把它們當做兩個獨立的項目,同時又想在一個項目中使用另一個。

原创 【Windows系統】C++方式獲取系統的CPU使用率

計算CPU佔用率就需要獲取系統總的內核時間,用戶時間及空閒時間。 其中,空閒時間就是內核空轉,所以,內核時間包含空閒時間。 計算公式如下: 運行時間 = 內核時間 + 用戶時間 - 空閒時間 間隔時間 =  內核時間  + 用戶時間 CP

原创 【Windows系統】C++方式獲取特定硬盤的使用詳情

通過Windows API可以獲取磁盤總容量、空閒容量和可用空閒容量。 代碼如下: #include <windows.h> // 硬盤詳情結構體 struct DriveInfo { QString sDriName;

原创 C++實現檢測IP地址是否有效

bool megutil::CheckIPAddrIsVaild(std::string str) { std::regex reg("(?=(\\b|\\D))(((\\d{1,2})|(1\\d{1,2})|(2[0-4]\

原创 教你如何實現帶複選框的ComboBox(自定義QComboBox)

Qt提供的QComboBox只能選擇其中一個選項,無法實現同時選中多個,而實際工程項目中,下拉框中帶複選框的需求比比皆是。閱讀了網上大量的博客,但是沒有發現一個能完美的實現該功能的ComboBox,都存在各種未解決的bug缺陷,樣子是那麼

原创 Qt之raise()和lower()

估計很多人在碰到Qt中的這兩個接口時,可能都是一臉懵逼,貌似從來沒有用過,但是最近工作中遇到的一個bug,讓我深刻體會到這兩個接口的重要性。恰恰是平時不受我們待見的接口,關鍵時刻起到了四兩撥千斤的作用。 測試提的bug大意如下: 視頻播

原创 【Windows系統】C++ Qt方式獲取所有磁盤使用詳情

磁盤的使用詳情,及磁盤的總容量、剩餘容量和剩餘可用容量。 代碼如下 #include <windows.h> #include <QVector> struct DriveInfo { QString sDriName;

原创 Qt 使用正則表達式進行密碼校驗

密碼長度爲8-16位,且必須爲數字、大小寫字母或符號中至少2種 bool IsMatchRegX(const QString& str) {     QString reg = "^(?![\\d]+$)(?![a-zA-Z]+$)(?

原创 一個普通未實現的函數,可以聲明多次嗎

可以的,實現時只實現一次就可以了。 #include <iostream> using namespace std; void func(int a, int b); void func(int a, int b); int m