原创 什麼是函數對象?
剛開始看到這個名字,還以爲是函數呢,誰知道大錯特錯! 顧名思義,就是在某種方式上表現得象一個函數的對象。典型地,它是指一個類的實例,這個類定義了應用操作符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的聲明放在了函數的後面,而參數