現狀
開源專案對團隊和業務有很大好處,但對於技術人員來說,如果只是簡單的採取「拿來主義」,那就變成乙個陷阱:看似很快的使用開源專案實現了需求,但自己的技術水平並沒有什麼提公升;甚至可能出現看起來用了很多開源專案,知道很多專案名稱,但是技術水平止步不前。認知誤區ps:雖然使用了開源專案,實現了需求,知道了很多開源專案,但是一問三不知。
很多技術同學也想深入學習一把,學習一些業界成熟和優秀的開源專案。比如:kubernetes、redis、mysql、kafka、el(f)k、nginx...正確認知誤區1:我的業務中沒有用它(kubernetes、redis、mysql、kafka、el(f)k、nginx...),不使用的話很難深入了解。
誤區2:資料結構和演算法很重要,我只要研究裡面的資料結構和演算法就夠了,比如nginx的紅黑樹。
ps:上面的認知導致望而生畏,浪費了大量時間還沒有多大的收穫。
ps:不要一上來就去看原始碼,而是要先掌握了功能、原理、關鍵設計之後再去看原始碼,看原始碼的主要目的是為了學習其**的寫作方式,以及關鍵技術的實現。自頂向下
安裝#開源系統執行
原理研究
測試,測試一定要在原理研究之後做,不能按照立馬就測試。
原始碼研究,不建議通讀所有原始碼,這樣會很耗費時間。除了閱讀原始碼之外,自己可以寫demo呼叫基礎庫完成一些簡單的功能。
ps:通常情況下,上面5個步驟的前3個步驟是在研究開源專案的時候必要的。在準備開始採用開源專案的時候,第4步需要去實施,第5步可以每個季度去看乙個開源的專案,不斷積累。
模板
1、安裝
依賴元件
目錄結構
提供的工具
2、執行
命令配置檔案
3、原理研究
關鍵特性的基本實現
優缺點對比
4、測試
使用前測試
5、原始碼研究
關鍵**
nginx學習
1、安裝
依賴元件
pcre(重寫rewrite)、zlib(gzip壓縮)、openssl(證書)
目錄結構
logs/(日誌)、conf/(配置相關)、sbin/(命令)、html(50x、index.html頁面)
提供的工具
暫無2、執行
命令[root@chons nginx]# nginx -h nginx version: nginx/1.11.12
usage: nginx [-?hvvttq] [-s signal] [-c filename] [-p prefix] [-g directives]
options:
-?,-h : 幫助
-v : 顯示版本並退出
-v : 顯示版本、配置選項然後退出
-t : 測試配置檔案並退出
-t : 測試配置檔案,輸出到螢幕並退出
-q : 在測試配置檔案期間忽略非error的資訊
-s signal : 將訊號量傳送到主程序:stop, quit, reopen, reload
-p prefix : 設定字首路徑 (default: /etc/nginx/)
-c filename : 設定配置檔案 (default: /etc/nginx/nginx.conf)
-g directives : 從配置檔案中設定全域性指令
配置檔案
worker_processes(nginx worker程序,一般設為cpu核數)、 error_log(錯誤日誌存放的目錄,日誌級別有debug, info, notice, warn, error, crit)、user(預設執行使用者是nginx)、pid(程序pid存放位置)、 參考:
3、原理研究
關鍵特性的基本實現
紅黑樹管理定時器、多路復用、linux epoll、sendfile 、負載均衡和反向**
優缺點對比
紅黑樹 vs b樹,select、poll、epoll對比
4、測試
使用前測試
5、原始碼研究
關鍵**
#開源系統
如何更高效地學習?
2018年7月4號 晴天 美的總部大樓 我們該如何高效地區學習呢?無論是知識還是技能或者其他 人格。我們學習東西呢,應該向人去學習,特別是牛人 大佬 這樣學習效率高。我們學習一項技能或者某塊新知識大多時候都是通過書本或者網路進行學習,殊不知牛人比你早一步就學了,並從中有了自己的見解和總結了一些精華,...
談談如何高效學習開源專案
作者 陳彩華 隨著蓬勃發展的開源時代的到來,為了減少開發成本,提高開發效率,越來越多的公司使用各種開源專案,作為開發者,如果能充分利用好開源專案中的資源,不僅能提高實踐能力,專業知識水平,還能從中其中學到的優秀的架構思想。總結起來,學習開源專案的價值主要包括以下幾點 這些專業知識之間是可以聯絡起來的...
5 42如何高效的學習開源專案
date comments categories br title 2020 4 18 true 軟體架構 架構 開源專案 5.42 如何高效學習開源專案 工作當中會經常使用到開源專案,例如nginx,redis,netty等。對於開源專案,不能只知其然,還要知道其所以然。這樣做的目的,一方面是為了...