原创 qt中的線程重入問題

 昨天晚上寫程序的時候遇到了一個問題,我想在子線程中操作父線程的類成員,但是每次都是在link的時候出現access violation,把子線程類聲明成父線程的友元類也沒用。   很費解,因爲按照操作系統原理上的解釋,一個進程中的所有線

原创 STL中僞函數、函數對象(functor)初步理解(上)

僞函數或者函數對象只是翻譯的問題,英文全部都是functor,還有些讀物管這個叫函數符。functor作爲C++ STL六大基本組件之一被廣泛使用(其他五個分別是容器、演算法、迭代器、適配器、分配器),那麼,functor的意義在哪裏?或

原创 STL中僞函數、函數對象(functor)初步理解(下)

好了,有了以上理論知識,就可以探討一下函數對象的用法了,接下來我會以STL中使用最頻繁的for_each做例子,來說明函數對象的原理和作用。 先查一下for_each的用法,在www.cplusplus.com上查到了比較詳細的解

原创 二級指針與指針的引用

這兩個東西在過去的編程中用的次數也不少了,但是卻一直不太瞭解原理,今天自己想了好久,發現鑽了不少牛角尖,越想越不明白原理,於是查閱了一些資料,算是多少有了些成果,自己總結一下吧。   二級指針,也就是指針的指針,作用主要是爲了改變指針本身

原创 構建二叉堆時間複雜度的證明。

如果僅從代碼上直觀觀察,會得出構造二叉堆的時間複雜度爲O(n㏒n)的結果,這個結果是錯的,雖然該算法外層套一個n次循環,而內層套一個分治策略下的㏒n複雜度的循環,該思考方法犯了一個原則性錯誤,那就是構建二叉堆是自下而上的構建,每一層的最大

原创 GetAdaptersAddresses使用小結

這幾天想複習下Windows C socket網絡編程,網上查閱了一些資料,大部分資料還是比較老的,介紹的都是舊接口函數,而且,絕大多數書上的內容都沒有介紹API中支持ipv6的接口。   我在寫一個獲得本地網卡信息的函數的時候,本來想用

原创 對歸併、堆排、快排的一些總結。

這三個算法的理論時間複雜度都是nlogn,但是區別還是很大的。 這三個算法裏,實際效率最低的是堆排序,因爲在每次調整大根堆的時候,都把底層元素交換到了根,然後再調整,而底層元素又不可能大於原根元素的兩個孩子節點,因此非等概率調整,做了很

原创 小細節:int *a[n] 和 int (*a)[n]到底啥區別?

先看int *a[n],按結合順序來看,首先是a[n],也就是a首先是個數組,是個具有n個元素的整形數組,然後再看 *a,是指向整形的指針,那麼按照結合順序,該表達式所表達的意思就是:n個指向整形數據的指針,即指針數組。 再看int (

原创 Visual Studio 2010 環境下 配置LibCurl with SSL 方法

這兩天沒事研究各種互聯網協議,開始用原始socket自己封裝通訊類,但是太麻煩,用ACE,又太重量級,最後改用cURL,比較適合大衆使用。 Libcurl過去只聽過,沒用過,只知道支持各種網絡應用層通訊協議,並且用c語言實現,效率很高,

原创 近期小結

10月份就要過去了,回想這一個月,雖然極力想利用好時間,但是給自己的壓力還是有點不夠,做事情有點效率低,並且拖欠了不少工作。   C++基礎部分複習的還算有點成果,重新讀了下effective C++、more effective C++

原创 怎麼判斷一個問題是不是遞歸的

  遞歸,怎麼理解這個概念?我們不需要用複雜的語言來描述這個概念,只需要從這個詞的本意入手即可。遞歸的英文也就是recursion,這個詞的詞源是recur,我們都知道occur的意思是發生,那麼recur的意思也就不難理解了,也就是重複

原创 小細節:爲什麼STL中的流對象無法複製?

因爲流對象中含有指向IO緩衝區的指針,假如流對象可以複製,那麼將會有兩個指針同時操作緩衝區,如何釋放、如何修改都會有衝突同步問題,因此流對象無法複製。

原创 關於http 表單編碼的一些問題。

在網絡上傳輸數據,壓縮編碼加密等操作基本是必須的,表單也是如此。 最近搞桌面客戶端手動組裝message發送,由於桌面客戶端API的網絡庫往往只提供簡單的通訊功能,因此協議參數都得手動設定,我在模擬一個post方法的時候出現了差錯,總返

原创 評判一個程序員好壞的標準到底是什麼?

在這個IT技術火爆的年代,人人都喜歡學IT,人人都用IT技術,但是評判一個程序員好壞的標準到底是什麼呢? 翻開各大公司招聘網站,映入眼簾的是各種編程語言要求:大學本科畢業、英語四級、精通JAVA、3年以上JAVA開發經驗、熟悉Servl

原创 cin的一個小細節

用cin從控制檯輸入字符的時候,常常有違法輸入的情況,比如,給一個int型變量初始化爲char型字符。 當出現這種情況的時候cin中的一個標誌位會被置爲錯誤碼,範圍是1-4,也就是非0,當cin中錯誤碼爲非0的時候,用戶無法再次調用ci