第二階段:提高階段 (中級PHP程式員)重點:提高針對LNMP的技能,能夠更全面的對LNMP有熟練的應用。目標:能夠隨時隨地搭建好LNMP環境,快速完成常規配置;能夠追查解決大部分遇到的開發和線上環境的問題;能夠獨立承擔中型系統的構架和開發工作;能夠在大型系統中承擔某個中型模塊的開發工作;1. Li ...
第二階段:提高階段 (中級PHP程式員)
重點:提高針對LNMP的技能,能夠更全面的對LNMP有熟練的應用。
目標:能夠隨時隨地搭建好LNMP環境,快速完成常規配置;能夠追查解決大部分遇到的開發和線上環境的問題;能夠獨立承擔中型系統的構架和開發工作;能夠在大型系統中承擔某個中型模塊的開發工作;
1. Linux:
在
第一階段的基礎上面,能夠流暢的使用Shell腳本來完成很多自動化的工作;awk/sed/perl
也操作的不錯,能夠完成很多文本處理和數據統計等工作;基本能夠安裝大部分非特殊的Linux程式(包括各種庫、包、第三方依賴等等,比如
MongoDB/Redis/Sphinx/Luncene/SVN之類的);瞭解基本的Linux服務,知道如何查看Linux的性能指標數據,知道基
本的Linux下麵的問題跟蹤等。
2. Nginx:
在第一階段的基礎上面,瞭解複雜一些
的Nginx配置;包括
多核配置、events、proxy_pass,sendfile/tcp_*配置,知道超時等相關配置和性能影響;知道nginx除了web
server,還能夠承擔代理伺服器、反向靜態伺服器等配置;知道基本的nginx配置調優;知道如何配置許可權、編譯一個nginx擴展到nginx;知
道基本的nginx運行原理(master/worker機制,epoll),知道為什麼nginx性能比apache性能好等知識;
3. MySQL/MongoDB:
在
第一階段的基礎上面,在MySQL開發方面,掌握很多小技巧,包括常規SQL優化(group by/order
by/rand優化等);除了能夠搭建MySQL,還能夠冷熱備份MySQL數據,還知道影響innodb/myisam性能的配置選項(比如
key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size
/innodb_flush_log_at_trx_commit等),也知道這些選項配置成為多少值合適;另外也瞭解一些特殊的配置選項,比如
知道如何搭建mysql主從同步的環境,知道各個binlog_format的區別;知道MySQL的性能追查,包括slow_log/explain
等,還能夠知道基本的索引建立處理等知識;原理方面瞭解基本的MySQL的架構(Server+存儲引擎),知道基本的InnoDB/MyISAM索引存
儲結構和不同(聚簇索引,B樹);知道基本的InnoDB事務處理機制;瞭解大部分MySQL異常情況的處理方案(或者知道哪兒找到處理方案)。條件允許
的情況,建議瞭解一下NoSQL的代表MongoDB資料庫,順便對比跟MySQL的差別,同事能夠在合適的應用場景安全謹慎的使用MongoDB,知道
基本的PHP與MongoDB的結合開發。
4. Redis/Memcached:
在大部分
中型系統裡面一定會涉及到緩存處理,所以一定要瞭解基本的緩存;知道Memcached和Redis的異同和應用場景,能夠獨立安裝
Redis/Memcached,瞭解Memcahed的一些基本特性和限制,比如最大的value值,知道PHP跟他們的使用結合;Redis瞭解基本
工作原理和使用,瞭解常規的數據類型,知道什麼場景應用什麼類型,瞭解Redis的事務等等。原理部分,能夠大概瞭解Memcached的記憶體結構
(slab機制),redis就瞭解常用數據類型底層實現存儲結構(SDS/鏈表/SkipList/HashTable)等等,順便瞭解一下Redis
的事務、RDB、AOF等機制更好
5. PHP:
除了第一階段的能力,安裝配置方面能夠隨意
安裝PHP和各種第三方擴展的編譯安裝配置;瞭解php-fpm的大部分配置選項和含義(如max_requests/max_children
/request_terminate_timeout之類的影響性能的配置),知道mod_php/fastcgi的區別;在PHP方面已經能夠熟練各
種基礎技術,還包括各種深入些的PHP,包括對PHP面向對象的深入理解/SPL/語法層面的特殊特性比如反射之類的;在框架方面已經閱讀過最少一個以上
常規PHP
MVC框架的代碼了,知道基本PHP框架內部實現機制和設計思想;在PHP開發中已經能夠熟練使用常規的設計模式來應用開發(抽象工廠/單例/觀察者/命
令鏈/策略/適配器 等模式);建議開發自己的PHP
MVC框架來充分讓開發自由化,讓自己深入理解MVC模式,也讓自己能夠在業務項目開發里快速升級;熟悉PHP網站源碼的各種代碼優化方法,熟悉大部分PHP安全方面問題的解決處理;熟悉基本的PHP執行的機制原理(Zend引擎/擴展基本工作機制);推薦PHP視頻教程https://www.sucaihuo.com/video/143-0-0
6. C/C++:
開
始涉獵一定的C/C++語言,能夠寫基本的C/C++代碼,對基本的C/C++語法熟悉(指針、數組操作、字元串、常規標準API)和數據結構(鏈表、
樹、哈希、隊列)有一定的熟悉下;對Linux下麵的C語言開發有基本的瞭解概念,會簡單的makefile文件編寫,能夠使用簡單的GCC/GDB的程
序編譯簡單調試工作;對基本的網路編程有大概瞭解。(本項是為了向更高層次打下基礎)
7. 前端:
在
第一階段的基礎上面,熟悉基本的HTTP協議(協議代碼200/300/400/500,基本的HTTP交互頭);條件允許,可以在深入寫出稍微優雅的
HTML+CSS+JavaScript,或者能夠大致簡單使用某些前端框架(jQuery/YUI/ExtJS/RequireJS
/BootStrap之類);如果條件允許,可以深入學習JavaScript編程,比如閉包機制、DOM處理;再深入些可以讀讀jQuery代碼做深入學習。(本項不做重點學習,除非對前端有興趣)
8. 系統設計:
能
夠設計大部分中型系統的網站架構、資料庫、基本PHP框架選型;性能測試排查處理等;能夠完成類似:瀏覽器 -> CDN(Squid)
-> Nginx+PHP -> 緩存 -> 資料庫
結構網站的基本設計開發維護;能夠支撐每天數百萬到千萬流量基本網站的開發維護工作;