在linux寫 c++乙個函式宣告了有返回型別,但是不返回物件也可以編譯通過,但是執行會出現莫名其妙的錯誤,
析構函式析構錯誤,
class object
object operator =(const object &a)
當我呼叫 object a=object b;
是會出現析構錯誤,具體原因是當=操作以後,臨時物件需要析構掉,operator =返回的那個臨時物件,但是operator= 並沒有換回物件,他會曲堆疊前乙個位元組當做臨時物件析構。
為了方便,同時也為了效率,程式設計師經常看到memset(this,0,sizoeof(*this)),這樣來重置物件,這樣是錯誤的,如果物件中含有非簡單資料型別,是很容易出錯的class a
int ;
string b;
對於這個物件呼叫memset();但給 a.b重新賦值時就會出錯。
我有個函式 bool combine(object &a ,object &b);寫的注釋是把 a,b合併,並把合併結果寫到a,並把b清空。結果實現的時候忘記了清空b,測試時候只見到測試了合併的結果,沒有測試把b清空,導致後來整合測試才出現錯誤,結果這個bug花了我很長時間才找出來。
4. 呼叫網路操作的api一定要設定超時,或者一定要清楚該api***
在curl http 操作中,我程式執行一段時間就假死,後來排查發現還是http get請求服務返回,整個程式阻塞這這,該curl_easy()為同步介面,當時因為只想要個http get操作,結果沒有好好看看curl api就亂用導致後來程式假死,搞得我總是無法理解。
(1)對於client 要有控制速度的機制,和錯誤檢查機制,檢查是否傳送成功
(2)對於server檔案儲存,最好是順序儲存,同時盡量少呼叫open操作,這個需要訪問 共享inode訊息。write ,read 相比fstrean減少了一次使用者態到核心態的copy。
(如何檢查程式錯誤) 資料完整性, 資料處理正確性
故意寫入些髒資料,在client讀取資料源中寫入些髒資料,不能再client中寫,這樣無法驗證資料是否是完整的
寫給自己的一些建議
知識的獲取現在已經並不是那麼的難了,而對於我自己而言,海量的知識給我造成了很大的困惑。從小到大都沒有寫東西的習慣,我認為現在到了這樣乙個的年紀,要經常嘗試著做一些總結了,不管是關於平常的生活還是技術。活到現在,我認為對自我的認知並不是非常的清楚,所以,現在,我必須努力的去好好了解一下自己,了解自己適...
寫給自己的幾點建議持續更新
1 通常在遍歷乙個iterator的時候不建議修改集合本身。2 hashtable上下文中同步是什麼意思?同步意味著在乙個時間點只能有乙個執行緒可以修改雜湊表,任何執行緒在執行hashtable的更新操作前需要獲取物件鎖,其他執行緒等待鎖的釋放。3 select from v locked obje...
寫給自己看的
我不常寫日誌,不過最近各種事情,還是有點需要記錄下來。今天下午上資料庫的時候,本來以為被鄙視了的 筆試居然發來恭喜通過的通知,說是等待面試,出乎意料的同時也感嘆rp又用掉了很多 最近的rp消耗確實有點失常,painterbee在mm上的表現就不說了,在校賽上也拿到了之前沒拿過的高名次,雖然是題目的區...