1. Linux
在Linux下面除了常規的操作和性能監控跟踪,還能夠使用很多高級複雜的命令完成工作(watch/tcpdump/starce / ldd/ar等);
在shell腳本方面,已經能夠編寫比較複雜的shell腳本(超過500行)來協助完成許多包括備份、自動化處理、監控等工作的shell;
對awk/sed/perl 等應用程式已經如火純青,能夠隨意操作控制處理文本統計分析各種複雜格式的數據;
對Linux內部機制有一些了解, 對內核模組加載,啟動錯誤處理等等有基本的處理;同時對一些其他相關的東西也了解,例如NFS、磁碟管理等等。
2. Nginx
可以考慮專注於關於Nginx工作原理部分的深入學習,主要表現在閱讀原始碼開始,例如具體的master/worker工作機制,Nginx內部的事件處理,記憶體管理等等;
同時可以學習Nginx擴充的開發,可以自訂一些自己私有的擴充;同時可以對Nginx Lua有一定程度的了解,看看是否可以結合應用出更好模式。
3. MySQL/MongoDB
在MySQL應用程式方面,除了先前的基本SQL最佳化,還能夠在完成一些複雜操作,例如大批量資料的導入導出,線上大批量數據的更改表結構或增刪索引欄位等等高風險操作;
除了安裝配置,已經能夠處理更多複雜的MySQL的問題,例如各種問題的追蹤,主從同步延遲問題的解決、跨機房同步資料方案、MySQL高可用架構等都有涉及了解;
對MySQL應用層面,對MySQL的核心關鍵技術比較熟悉,例如事務機制(隔離等級、鎖定等)、對觸發器、分區等技術有一定了解與應用。
4. Redis/Memcached
因為Memcached不是特別複雜,建議可以把原始碼進行閱讀,特別是記憶體管理部分,方便深入理解;
Redis部分,可以多做一些複雜的資料結構的應用(zset來做排行榜排序操作/事務處理用來保證原子性在秒殺類場景應用之類的使用操作);多涉及aof等同步機制的學習應用,設計一個高可用的Redis應用架構和叢集。
5. PHP
從基本程式碼應用上面來說,能夠解決在PHP開發中遇到95%的問題,了解大部分PHP的技巧;對大部分的PHP框架能夠迅速在一天內上手使用,並且了解各個主流PHP框架的優缺點,能夠迅速方便專案開發中做技術選型;
在配置方面,了解一些比較偏門的配置選項(php auto_prepend_file/ auto_append_file),包括擴充功能中的一些複雜進階配置和原理。
對php的工作機制比較了解,包括php-fpm工作機制(例如php-fpm在不同配置機器下面開啟進程數量計算以及原理),對zend引擎有基本熟悉(vm/gc/stream處理),閱讀過基本的PHP內核原始碼(或閱讀過相關文章),對PHP內部機制的大部分核心資料結構(基礎型別/Array /Object)實作有了解,對於核心基礎結構(zval/hashtable/gc )有深入學習了解。
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等)。
7. 前端
深入了解HTTP協定(包括各個細緻協定特殊協定程式碼和背後原因,例如302靜態檔案快取了,502是nginx後面php掛了之類的);除了先前的前端方面的各種框架應用整合能力。
推薦教學:PHP教學
以上是15k的php需要掌握什麼技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!