自己需要提高的地方
系統設計能力如何提高
多想,多看好的開源**
看的多了,就知道東西該如何進行設計了
多執行緒安全
記憶體越界
棧溢位堆溢位
記憶體洩漏
stl容器相關的bug
1.多執行緒訪問stl容器時,記得對於begin、end、size、empty函式也加鎖
2.lamda表示式需要補起來啊,否則在使用時會出現一些理解不透導致的問題。
3.多採用assert斷言巨集來進行資料驗證,能夠有效排查掉很多執行時的錯誤。
尤其是資料驗證的**
4.耦合度高的**,可採用gtest和gmock結合的方式來寫測試用例
5.加強自己的debug除錯能力
6.x86_64平台和arm平台下使用者空間位址的範圍
7.計算結構體中成員偏移量
#define offset(type, member)
((unsigned long)
(&(((type *)0)->member))
)8 去掉不必要的流程
在優化時,用空間換時間,或者用時間換空間,這個是普通程式設計師做的事情。
優化是找出不必要的點(流程或步驟),去掉後就能獲得效能。
io不是重點,cpu才是重點,去掉不必要的過程、計算、拷貝、資料交換
對於不必要的資料交換,舉個例子
生產者與消費者的銜接通過乙個容器,也可以通過lamda
比如流重組,之前公司設計的流重組效能一直上不去
原來的設計是這樣的, 如果1個資料報不是當前序,就拷貝
在亂序率為5%的資料環境下,拷貝率是遠大於5%的
因為乙個流中間某個包亂序了,會導致後面一系列包都發生拷貝
我給了乙個預判:這些拷貝大多數是不需要發生的
改進方案:
資料報的亂序處理是批量的
例如連續接入100個資料報,大量亂序包雖然在處理該包的時刻是亂序的,但放在100個包的環境下,就不是亂序的了,所以當亂序發生時只做標記,並在批量處理出口,仍然亂序的包才拷貝,這樣拷貝率只有不到以前的1%了,不快取資料報。
一批包的快取都是dpdk的零拷貝快取
能優化的點太多
當然最常見的模式就是在生產者與消費者之間
生產者=>資料容器=>消費者
改變成生產者《嵌入=消費邏輯
及時消費,這樣記憶體,cpu都會有提高
推薦全標頭檔案+模板程式設計
ajax知識點小結(雜分)
var str window.location.tostring 得到瀏覽器當前位址列中的url位址 獲取頁面元素值的兩種方式 1.document.myform.province.value來獲取province下的物件 其中的myform是id或者是name都可以 2.document.gete...
Android系統的一些雜散知識點
修改build core envsetup.mk figure out the output directories 在這新增你要修改的新out目錄即可 out dir dev shm out mxr ifeq strip out dir ifeq strip out dir common base...
TestLink知識點Mantis知識點
testlink知識點 1 testlink系統提供了六種角色 a guest 只有讀的許可權,適合於檢視測試用例和測試需求,以及專案分析的使用者。b testdesigner 可以開展測試用例和測試需求的所有工作。c tester 只能執行測試用例。d senior tester 可以檢視和維護測...