昨晚聽完百度校園公開課,還得了個保溫杯,好開心.
現在把抄到的筆記整理下,東西不會很詳細,但足夠引出很多知識點
感謝營運部的顏工來湖大講課!
1 環遊linux
一些常用的linux命令: ssh cd pwd ls tab mkdir rm cp mv cat more less
文本處理:head tail cat sort diff grep sed awk
重新導向: | > >>
其它: alias find scp wget ps top vmstat netstat watch
vim
gcc 版本我特意問了 ,原來他們部門在用3.4.5版本
gcc常見錯誤:
underfind reference 找不到庫 -l庫名 -L庫目錄
no such file or directory 找不到標頭檔 -I 標頭檔路徑 (i的大寫)
專案管理工具: Makefile 還有開源的Autoconf 百度的Commake
常用開發工具: valgrind strace Ltrace ccov Gtest
2 多線程
多線程:共用記憶體空間
優點:資料訪問方便 缺點:線程問題會影響整體,安全執行緒問題
多進程:獨立記憶體空間
線程切換有開銷
開幾個線程的要點:線程數不要超過CPU個數
安全執行緒問題:線程調度的先後是由作業系統決定的,和代碼複雜度無關
互斥與同步: (1)訪問同一個資源,使用互斥鎖程式的串列 (2)使用條件變數保持同步
開銷: 鎖比運算要慢,但比磁碟IO要快
鎖的使用原則:
IO密集型程式:不要讓高速裝置等待低速裝置
CPU密集型程式:放大鎖的粒度,減少鎖的使用
線程池模型:
(1)單隊列:無序,池中的線程能夠運行任何任務,能夠最大化利用CPU
(2)多隊列:某些任務只能由特定的線程來運行,這個需要負載平衡
3 高效能網路編程
網路編程中有很多慢的地方
accept() 在等待
recv() 在等待
send() 在發送到網卡時 在空轉
(1)多線程同步IO設計模式
效率低 用於原理驗證
(2)單線程非同步IO設計模式 (單核時代最快)
(3)多線程非同步IO模式 多進程非同步IO模式 :充分發揮多核優勢
4多機系統和分布式系統
有點累, 沒抄筆記