第三階段:高級階段 (高級PHP程序員)
重點:除了基本的LNMP程序,還可以在某個方向或領域有深刻學習。(縱深維度發展)
目標:除了可以完成基本的PHP業務開發,還可以解決大部分深刻複雜的技術問題,而且能夠獨立設計完成中大型的系統設計和開發工做;本身可以獨立hold深刻某個技術方向,在這塊比較專業。(好比在MySQL、Nginx、PHP、Redis等等任一方向深刻研究)
1. Linux:
除 了第二階段的能力,在Linux下面除了常規的操做和性能監控跟蹤,還可以使用不少高級複雜的命令完成工做(watch/tcpdump/starce /ldd/ar等);在shell腳本方面,已經可以編寫比較複雜的shell腳本(超過500行)來協助完成不少包括備份、自動化處理、監控等工做的 shell;對awk/sed/perl 等應用已經如火純青,可以隨意操做控制處理文本統計分析各類複雜格式的數據;對Linux內部機制有一些瞭解,對內核模塊加載,啓動錯誤處理等等有個基本 的處理;同時對一些其餘相關的東西也瞭解,好比NFS、磁盤管理等等;
2. Nginx:
在 第二階段的基礎上面,已經可以把Nginx操做的很熟練,可以對Nginx進行更深刻的運維工做,好比監控、性能優化,複雜問題處理等等;看我的興趣,更 多方面能夠考慮側重在關於Nginx工做原理部分的深刻學習,主要表如今閱讀源碼開始,好比具體的master/worker工做機制,Nginx內部的 事件處理,內存管理等等;同時能夠學習Nginx擴展的開發,能夠定製一些本身私有的擴展;同時能夠對Nginx+Lua有必定程度的瞭解,看看是否能夠 結合應用出更好模式;這個階段的要求是對Nginx原理的深刻理解,能夠考慮成爲Nginx方向的深刻專業者。
3. MySQL/MongoDB:
在 第二階段的基礎上面,在MySQL應用方面,除了以前的基本SQL優化,還可以在完成一些複雜操做,好比大批量數據的導入導出,線上大批量數據的更改表結 構或者增刪索引字段等等高危操做;除了安裝配置,已經可以處理更多複雜的MySQL的問題,好比各類問題的追查,主從同步延遲問題的解決、跨機房同步數據 方案、MySQL高可用架構等都有涉及瞭解;對MySQL應用層面,對MySQL的核心關鍵技術比較熟悉,好比事務機制(隔離級別、鎖等)、對觸發器、分 區等技術有必定了解和應用;對MySQL性能方面,有包括磁盤優化(SAS遷移到SSD)、服務器優化(內存、服務器自己配置)、除了二階段的其餘核心性 能優化選項(innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size /innodb_lock_wait_timeout等)、鏈接池軟件選擇應用,對show *(show status/show profile)類的操做語句有深刻了解,可以完成大部分的性能問題追查;MySQL備份技術的深刻熟悉,包括災備還原、對Binlog的深刻理解,冷熱 備份,多IDC備份等;在MySQL原理方面,有更多瞭解,好比對MySQL的工做機制開始閱讀部分源碼,好比對主從同步(複製)技術的源碼學習,或者對 某個存儲引擎(MyISAM/Innodb/TokuDB)等等的源碼學習理解,若是條件容許,能夠參考CSV引擎開發本身簡單的存儲引擎來保存一些數 據,加強對MySQL的理解;在這個過程,若是本身有興趣,也能夠考慮往DBA方向發展。MongoDB層面,能夠考慮好比說在寫少讀多的狀況開始在線上 應用MongoDB,或者是作一些線上的數據分析處理的操做,具體場景能夠按照工做來,不過核心是要更好的深刻理解RMDBS和NoSQL的不一樣場景下面 的應用,若是條件或者興趣容許,能夠開始深刻學習一下MongoDB的工做機制。
4. Redis/Memcached:
在 第二階段的基礎上面,可以更深刻的應用和學習。由於Memcached不是特別複雜,建議能夠把源碼進行閱讀,特別是內存管理部分,方便深刻理 解;Redis部分,能夠多作一些複雜的數據結構的應用(zset來作排行榜排序操做/事務處理用來保證原子性在秒殺類場景應用之類的使用操做);多涉及 aof等同步機制的學習應用,設計一個高可用的Redis應用架構和集羣;建議能夠深刻的學習一下Redis的源碼,把在第二階段積累的知識均可以應用 上,特別能夠閱讀一下包括核心事件管理、內存管理、內部核心數據結構等充分學習瞭解一下。若是興趣容許,能夠成爲一個Redis方面很是專業的使用者。
5. PHP:
做爲基礎核心技能,咱們在第二階段的基礎上面,須要有更深刻的學習和應用。從基本代碼應用上面來講,可以解決在PHP開發中遇到95%的問題,瞭解大部分PHP的技巧;對大部分的PHP框架可以迅速在一天內上手使用,而且瞭解各個主流PHP框架的優缺點,可以迅速方便項目開發中作技術選型;在配置方面,除了常規第二階段會的知識,會了解一些比較偏門的配置選項(php auto_prepend_file/auto_append_file),包括擴展中的一些複雜高級配置和原理(好比memcached擴展配置中的 memcache.hash_strategy、apc擴展配置中的apc.mmap_file_mask/apc.slam_defense /apc.file_update_protection之類的);對php的工做機制比較瞭解,包括php-fpm工做機制(好比php-fpm在不一樣 配置機器下面開啓進程數量計算以及原理),對zend引擎有基本熟悉(vm/gc/stream處理),閱讀過基本的PHP內核源碼(或者閱讀過相關文 章),對PHP內部機制的大部分核心數據結構(基礎類型/Array/Object)實現有了解,對於核心基礎結構(zval/hashtable /gc)有深刻學習瞭解;可以進行基本的PHP擴展開發,瞭解一些擴展開發的中高級知識(minit/rinit等),熟悉php跟apache /nginx不一樣的通訊交互方式細節(mod_php/fastcgi);除了開發PHP擴展,能夠考慮學習開發Zend擴展,從更底層去了解PHP。
6. C/C++:
在 第二階段基礎上面,可以在C/C++語言方面有更深刻的學習瞭解,可以完成中小型C/C++系統的開發工做;除了基本第二階段的基礎C/C++語法和數據 結構,也可以學習一些特殊數據結構(b-tree/rb-tree/skiplist/lsm-tree/trie-tree等)方便在特殊工做中需求; 在系統編程方面,熟悉多進程、多線程編程;多進程狀況下面瞭解大部分多進程之間的通訊方式,可以靈活選擇通訊方式(共享內存/信號量/管道等);多線程編 程可以良好的解決鎖衝突問題,而且可以進行多線程程序的開發調試工做;同時對網絡編程比較熟悉,瞭解多進程模型/多線程模型/異步網絡IO模型的差異和選 型,熟悉不一樣異步網絡IO模型的原理和差別(select/poll/epoll/iocp等),而且熟悉常見的異步框架(ACE/ICE/libev /libevent/libuv/Boost.ASIO等)和使用,若是閒暇也能夠看看一些國產本身開發的庫(好比muduo);同時可以設計好的高併發 程序架構(leader-follow/master-worker等);瞭解大部分C/C++後端Server開發中的問題(內存管理、日誌打印、高並 發、先後端通訊協議、服務監控),知道各個後端服務RPC通訊問題(struct/http/thirft/protobuf等);可以更熟絡的使用 GCC和GDB來開發編譯調試程序,在線上程序core掉後可以迅速追查跟蹤解決問題;通用模塊開發方面,能夠積累或者開發一些通用的工具或庫(好比異步 網絡框架、日誌庫、內存池、線程池等),不過開發後是否應用要謹慎,省的埋坑去追bug;
7. 前端:
深 入瞭解HTTP協議(包括各個細緻協議特殊協議代碼和背後緣由,好比302靜態文件緩存了,502是nginx後面php掛了之類的);除了以前的前端方 面的各類框架應用整合能力,前端方面的學習若是有興趣能夠更深刻,表現形式是,能夠本身開發一些相似jQuery的前端框架,或者開發一個富文本編輯器之 類的比較瑣碎考驗JavaScript功力;
8. 其餘領域語言學習:
在基礎的PHP/C /C++語言方面有基本積累,建議在當前階段能夠嘗試學習不一樣的編程語言,看我的興趣愛好,腳本類語言能夠學學 Python/Ruby 之類的,函數式編程語言能夠試試 Lisp/Haskell/Scala/Erlang 之類的,靜態語言能夠試試 Java/Golang,數據統計分析能夠了解了解R語言,若是想換個視角作後端業務,能夠試試 Node.js還有前面提到的跟Nginx結合的Nginx_Lua等。學習不一樣的語言主要是提高本身的視野和解決問題手段的差別,好比會了解除了進程/ 線程,還有輕量級協程;好比在跨機器通訊場景下面,Erlang的解決方案簡單的驚人;好比在不想選擇C/C++的狀況下,還有相似高效的Erlang /Golang可用等等;主要是提高視野。
9. 其餘專業方向學習:
在本階段裏面,會除了基 本的LNMP技能以外,會考慮一些其餘領域知識的學習,這些都是能夠的,看我的興趣和長期的目標方向。目前狀況可以選擇的領域比較多,好比、雲計算(分佈 式存儲、分佈式計算、虛擬機等),機器學習(數據挖掘、模式識別等,應用到統計、個性化推薦),天然語言處理(中文分詞等),搜索引擎技術、圖形圖像、語 音識別等等。除了這些高大上的,也有不少偏工程方面能夠學習的地方,好比高性能系統、移動開發(Android/IOS)、計算機安全、嵌入式系統、硬件 等方向。
10. 系統設計:
系統設計在第二階段的基礎之上,可以應用掌握的經驗技能,設計出 比較複雜的中大型系統,可以解決大部分線上的各類複雜系統的問題,完成相似 瀏覽器 -> CDN -> 負載均衡 ->接入層 -> Nginx+PHP -> 業務緩存 -> 數據庫 -> 各路複雜後端RPC交互(存儲後端、邏輯後端、反做弊後端、外部服務) -> 更多後端 醬紫的複雜業務;可以支撐天天數千萬到數億流量網站的正常開發維護工做。php
最後給你們分享一些網站開發視頻教程https://www.sucaihuo.com/video,但願對你們也有所幫助!前端