Time of Update: 2018-12-03
有時候我們在寫伺服器端的程式的時候,經常需要用到日誌,這幾天在做些事情的時候,發現居然還沒有我自己經常使用的一個日誌類,正好現在又找到一個非常不錯的日誌類,所以把他記錄下來,留待以後直接拿來用就可以了:Log.h////////////////////////////////////////////////////////////////////////#if !defined(__TEST_LOG__INCLUDED_)#define __TEST_LOG__INCLUDED_#if
Time of Update: 2018-12-03
在設計類時,虛函數著重體現基類或介面的設計原則。虛函數應能表達你所想要表達的,使得衍生類別在重載是不存在歧義。虛函數存在以下用法:1、虛解構函式 虛解構函式表示本類為抽象基類,使用者可以從本類派生,使用者也可通過基類對象管理衍生類別對象。public的虛解構函式比較常用,表示使用者可以管理對象的生命期。protected的虛解構函式表示使用者只能通過本對象使用衍生類別對象,但不包括生命期管理。private的虛解構函式極少使用。
Time of Update: 2018-12-03
轉自部落格:http://www.cnblogs.com/phinecos/archive/2008/03/08/1096691.html作者:洞庭散人“我現在項目是一個控制台程式,用到的Win32API都是與介面無關的,今天需要加入定時器重新整理的功能,由於沒有訊息迴圈,所以WM_TIMER訊息應該如何處理呢?綜合了下網上找到的資料,寫了個簡單的demo,個人以為這種在一個線程中建立定時器,再通過指定的回呼函數來處理定時器觸發的模式是比較好的。”demo: #include
Time of Update: 2018-12-03
位元運算 位元運算的運算分量只能是整型或字元型資料,位元運算把運算對象看作是由二進位組成的位串資訊,按位完成指定的運算,得到位串資訊的結果。位元運算符有: &(按位與)、|(按位或)、^(按位異或)、~ (按位取反)。 其中,按位取反運算子是單目運算子,其餘均為雙目運算子。 位元運算符的優先順序從高到低,依次為~、&、^、|, 其中~的結合方向自右至左,且優先順序高於算術運算子,其餘運算子的結合方向都是自左至右,且優先順序低於關係運算子。 (1)
Time of Update: 2018-12-03
建議先啟動一個後台線程按鈕,感覺沒啥吧?然後再啟動一個前台線程。看看是否是前台線程很頑強的跟你沒完!絕對讓你看一遍永不忘記!using System;using System.Drawing;using System.Windows.Forms;using System.Threading;namespace WindowsFormsApplication1{ public partial class Form1 : Form { public
Time of Update: 2018-12-03
Shiboken的資料真少,僅僅為了寫一個小小的demo就大費周折。但不管怎樣,經過幾個月斷斷續續的瞭解,總算可以為純C++的庫和Qt的庫建立python的綁定了。本文前提:熟悉cmake,能夠用cmake構建C++與Qt的程式和庫安裝有Python和Shiboken的開發環境安裝有PySide和Qt4(4.6及以上)的開發環境注意:若在windows下,Shiboken和PySide開發環境需要自己編譯接下來記錄兩個例子:(本文例子僅在Windows和Ubuntu環境下進行過測試)建立C++庫
Time of Update: 2018-12-03
有網友抱怨:哪個大牛能幫幫我,講解一下訊號槽機制的底層實現?不要那種源碼的解析,只要清楚的講講是怎麼發送訊號,怎麼去選擇相應的槽,再做出反應。也就是類似於一個訊號槽的相應流程。。。求解啊!!!看了源碼,真的是一頭霧水。。。撞牆的心都有了~~~~ 本文使用 ISO C++ 一步一步實現了一個極度簡化的訊號與槽的系統(整個程式4個檔案共121行代碼)。希望能有助於剛進入Qt世界的C++使用者理解Qt最核心的訊號槽與元對象系統是如何工作的。另:你可能會對 從 C++ 到 Qt
Time of Update: 2018-12-03
ini檔案格式:;注釋[節名]鍵=值...// 讀取ini檔案中特定項的值char * GetInitKey(char *pFilename, char *pSection, char *pKey){ static char retstr[1024]; int nFlag = 0; char tmpLine[1024]; FILE *pFile; pFile = fopen(pFilename, "r"); if (pFile == NULL) { return NULL; } while (
Time of Update: 2018-12-03
Windows:使用CoCreateGuid函數(GUID)#include <objbase.h>#include <stdio.h>#define GUID_LEN 64int main(int argc, char* argv[]){char buffer[GUID_LEN] = { 0 };GUID guid;if ( CoCreateGuid(&guid) ){fprintf(stderr, "create guid error\n");return -
Time of Update: 2018-12-03
這個程式主要運用了ICMPv4協議(回應要求)來測試本機到某伺服器的網路是否連通,因為其中用到了原始通訊端,所以運行該程式需要管理員權限。PS:本程式只支援一種輸入方式:./myping <hostname>,不支援其他參數。思路:1:根據hostname參數建立原始通訊端。2:每隔1秒鐘向伺服器發送一個ICMP回應要求。3:迴圈接收從伺服器返回的應答並處理其資料。上代碼:#include <signal.h>#include
Time of Update: 2018-12-03
我常常在想,為什麼我看別人的代碼是如此的彆扭?為什麼我看昨天自己寫的代碼也是如此醜陋?為什麼我又忍不住要重寫同樣功能的類呢?難道我是程式員中的孔乙己,一輩子就折騰字串類的四種寫法?我苦苦思索,於是就有了一個夢想:
Time of Update: 2018-12-03
1:C/C++洗髓錄作者:supermegaboy網址:http://blog.csdn.net/column/details/supermegaboy.html2:masefee透視C++作者:masefee網址:http://blog.csdn.net/column/details/masefeecpp.html3:設計模式C++實現作者:wuzhekai1985網址:http://blog.csdn.net/column/details/design.html4:C++各種內容都有作者:p
Time of Update: 2018-12-03
C++語言吸引如此之多的智力投入,以至於這個領域的優秀作品,包括重量級的軟體產品、程式庫以及書籍著作等,數不勝數。對於讀者來說,倘若限於經濟等客觀因素而必須做出折衷取捨,我推薦至少閱讀以下幾本書: 1. The C++ Programming Language (Special 3rd Edition) by Bjarne Stroustrup 2. The Design and Evolution of C++ by Bjarne
Time of Update: 2018-12-03
功能很常用,代碼很簡單,就不多作解釋了,直接上代碼。#include <stdio.h> #include <string.h> #define MAXLEN 10240 //讀取檔案filename的內容到dest數組,最多可以讀maxlen個位元組 //成功返迴文件的位元組數,失敗返回-1 int read_file(const char *filename, char *dest, int maxlen) { FILE *file; int pos,
Time of Update: 2018-12-03
進程之間通訊的幾種方法:在Windows程式中,各個進程之間常常需要交換資料,進行資料通訊。常用的方法有使用記憶體對應檔通過共用記憶體DLL共用記憶體使用SendMessage向另一進程發送WM_COPYDATA訊息比起前兩種的複雜實現來,WM_COPYDATA訊息無疑是一種經濟實惠的一中方法.(ZT)WM_COPYDATA訊息的主要目的是允許在進程間傳遞唯讀資料。Windows在通過WM_COPYDATA訊息傳遞期間,不提供繼承同步方式。SDK文檔推薦使用者使用SendMessage函數,接受
Time of Update: 2018-12-03
#include <iostream>#include <string>#include <vector>using namespace std;/*功能:字串分割傳回值: 分割後的字串數組參數:str:原字串pattern:分隔字元*/vector<string> split(const string &str, const string &pattern){int current, pos,
Time of Update: 2018-12-03
這篇文章只是對c++、dll和com的泛泛而談,更為詳細的內容請參考《com本質論》,這篇文章也算是《com本質論》第一章的讀書筆記或總結。如有不對之處,希望大家批評指正。在windows下使用c++編寫代碼的人代碼複用的常用方式大概就是c++類、dll和com一、c++代碼重用的缺陷
Time of Update: 2018-12-03
類執行個體化後的對象是由成員變數和方法組成。各成員變數的當前值構成了對象的狀態,當各成員變數的值發生變化時,就有可能由量變發生質變,此時我們認為對象的狀態發生了改變。對象的方法分兩類,一種是改變對象的值(有可能導致對象狀態發生變化),我們稱之為命令;一種是不改變對象的值,我們稱之為查詢。類設計時,需要重點考慮這三者的關係。 1、盡量保持類的良好狀態。
Time of Update: 2018-12-03
實現函數是指單獨完成某種具體任務的函數,如向量的點積、差積,矩陣的行列式計算等。實現函數必須遵守以下原則:1、單一職責原則: 函數只能擁有一種功能,不能包含多個功能,但可調用其它實現函數完成特定任務。常見的一種錯誤執行個體是對容器物件進行統計的實現,其代碼既包含了對容器子物件的遍曆,又包含對單個子物件的統計處理.2、標準資料類型原則: 實現函數的參數類型必須為語言內建的標準資料類型,不可以為使用者自訂的資料類型.3、外部零依賴原則:
Time of Update: 2018-12-03
通過python的ctypes模組調用C函數,常常需要用到使用者指標資料指標。如通過python調用Win32 API產生視窗時使用的視窗流程就是一個執行個體,本文通過這個執行個體說明如何在python對象和C語言中的指標對象進行相互轉換問題。 1、python對象轉換為C指標對象 當Python調用SetWindowLong綁定一個Python對象為使用者資料時,我們可以如此調用: from ctypes import * SetWindowLong=