原创 什麼是函數對象?

剛開始看到這個名字,還以爲是函數呢,誰知道大錯特錯!       顧名思義,就是在某種方式上表現得象一個函數的對象。典型地,它是指一個類的實例,這個類定義了應用操作符operator()。   函數對象是比函數更加通用的概念,因爲函數對象

原创 關於線程庫pthread_cond_signal丟失的問題

這兩天寫了一個關於C++的線程庫,剛開始老是出現信號丟失的問題,百思不得其解。後來才發現原來要pthrea_cond_wait和pthread_cond_signal之間要用一個條件變量來控制。例如:while(count==0)pthr

原创 程序中的人類社會學

我們在寫函數的時候爲了保證程序的健壯性,一般都會做參數檢查,但是同時又降低了一些程序的執行效率(雖然計算機有轉移預測);但是很多時候,這些檢查都不是必要的,只是爲了應付調用者偶爾的錯誤使用方法。但是我們可以通過要求調用者遵循規則來避免這

原创 geteuid()和getuid()的區別

geteuid():返回有效用戶的ID。 getuid():返回實際用戶的ID。 有效用戶ID(EUID)是你最初執行程序時所用的ID     表示該ID是程序的所有者     真實用戶ID(UID)是程序執行過程中採用的ID     該

原创 const 在C++中的主要作用

1、如果放在函數前面,表示該返回變量不能被修改。       如果給以“指針傳遞”方式的函數返回值加const 修飾,那麼函數返回值(即指針)的內容不能被修改,該返回值只能被賦給加const 修飾的同類型指針。例如函數const char

原创 當mysql中指定的socket路徑改變時如何通過ODBC進行訪問?

困擾我一下午的問題,現在終於明朗了。 我們都知道,mysql安裝的時候客戶端和服務端連接的時候在默認的情況下都是通過/tmp/mysql.sock這個鏈接來完成的。但是由於我們爲了改變數據庫的存放路徑,我們也改變了這個默認的路徑,可以通過

原创 mysql數據庫該路徑後沒辦法啓動的問題

修改mysql數據庫存儲路徑之後,一直沒法啓動,百思不得其解,後來ls -Z查看,原來是selinux的緣故,chcon -t  mysqld_db_t /home/mysqlData 即可。 附上更改數據庫的位置的方法:  1、home

原创 createfile 中生成的文件如何清空?

很簡單:SetFilePointer(h_Log, 0, FILE_BEGIN);SetEndOfFile(h_Log);

原创 IOCP 中WSARecvFrom返回10045的問題

今天在編寫IOCP程序時,遇到了這個問題,在VS2008上調試時返回10045,但是讓它不調試執行的時候卻正常。在網上查找,發現相應的資料不多。後來我把perhandle和pIOdata的弄成全局變量,還是不行;真是弄的我百思不得其解。

原创 close_on_exec標誌位的作用

lose_on_exec 是一個進程所有文件描述符(文件句柄)的位圖標誌,每個比特位代表一個打開的文件描述符,用於確定在調用系統調用execve()時需要關閉的文件句柄(參見include/fcntl.h)。當一個程序使用fork()函數

原创 bash的基本用法

這兩天寫makefile需要用到bash語句,就學到了一些基本用法,其中有一些要點紀錄如下: 1、在編寫bash命令時,需要在剛開始加上@標識符,並且所有命令都需要寫在一行,另外每個關鍵字都需要用空格格開。 2、在for語句中引用變量之後

原创 mysql的備份

mysql備份命令 關鍵字: mysql 還原或者導入數據庫命令: mysql -u root --password=root 備份數據庫命令: mysqldump -u root --password=root --database h

原创 mysql的使用

 [轉貼自http://homepage.qdcatv.com.cn/antonio/mysql/mysql.htm]         執行一個查詢有以下幾個步驟要做。首先執行一個查詢,然後保存結果,     得到的是一個子集。這裏是一個

原创 mysql安裝之後沒有mysql數據庫的原因

mysql安裝完之後,登陸後發現只有兩個數據庫:mysql> show databases; +--------------------+ | Database           | +--------------------+ |

原创 C語言的一種老式寫法

今天在看程序時,發現一個地方很令我費解: void    ring_init(ring)RING   *ring;{    ring->pred = ring->succ = ring;}後來注意到,ring的聲明放在了函數的後面,而參數