php技術(shù) 如何查看中級PHP程序員1.性能好等知識?(一)php模板技術(shù)smarty第1講
2022-09-30
中級 PHP 程序員
1.
可以流暢地使用腳本完成很多自動化任務(wù);awk/sed/perl 也很好用,可以完成大量的文本處理和數(shù)據(jù)統(tǒng)計;基本上可以安裝大部分非特殊程序(包括各種庫、包、第三方依賴等,如////SVN等);了解基本服務(wù),了解如何查看性能指標數(shù)據(jù),了解以下基本問題跟蹤等。
2. :
在第一階段的基礎(chǔ)上,了解更復(fù)雜的配置;包括多核配置,,, /tcp_* 配置,了解超時等相關(guān)配置和性能影響;知道除了web,還可以承接代理服務(wù)器、反向靜態(tài)服務(wù)器等配置;了解基本的配置調(diào)優(yōu);知道如何配置權(quán)限,編譯擴展;知道基本的工作原理(/機制,),知道為什么性能優(yōu)于性能等;
3. /:
在第一階段的基礎(chǔ)上,在開發(fā)方面,掌握很多小技巧,包括常規(guī)SQL優(yōu)化(by/by/rand優(yōu)化等);除了能夠構(gòu)建之外,還可以冷熱備份數(shù)據(jù),知道影響/性能的配置選項(如//ize/等),也知道這些選項配置成什么值合適的; 另外,知道一些特殊的配置選項,比如知道如何搭建主從同步環(huán)境,知道區(qū)別;了解性能跟蹤,包括/等,還可以了解索引建立和處理的基本知識;基本了解基本架構(gòu)(+存儲引擎),了解基本/索引存儲結(jié)構(gòu)及區(qū)別(聚集索引、B-tree);了解基本的事務(wù)處理機制;知道如何處理大多數(shù)異常(或知道在哪里可以找到它們)。如果條件允許,建議了解一下有代表性的數(shù)據(jù)庫,順便比較一下差異。同事可以在合適的應(yīng)用場景中安全謹慎的使用,了解PHP基礎(chǔ)和PHP開發(fā)的結(jié)合。
4./:
在大多數(shù)中型系統(tǒng)中,肯定會涉及到緩存處理,所以必須了解基本的緩存;了解和應(yīng)用場景的異同,能夠獨立安裝/了解一些基本的特性和限制,比如最大值php技術(shù),了解PHP和它們的組合使用;了解基本工作原理和使用,了解一般數(shù)據(jù)類型,了解適用的場景類型,了解事務(wù)等等。原理部分可以大致了解內(nèi)存結(jié)構(gòu)(slab機制),了解常見數(shù)據(jù)類型的底層實現(xiàn)存儲結(jié)構(gòu)(SDS/鏈表//)等,順便了解一下機制比較好事務(wù)、RDB、AOF 等
5. PHP:
除了第一階段的能力,安裝配置可以自由安裝PHP和各種第三方擴展的編譯安裝配置;了解php-fpm的大部分配置選項和含義(如//等影響性能的配置),知道/區(qū)別;在PHP方面,他已經(jīng)能夠精通各種基礎(chǔ)技術(shù),包括各種深入的PHP,包括深入理解PHP面向?qū)ο?SPL/語法層面的反射等特殊特性;閱讀過至少一個常規(guī)PHP MVC框架的代碼,了解PHP基礎(chǔ)框架的內(nèi)部實現(xiàn)機制和設(shè)計思路;在PHP開發(fā)中,熟練使用常規(guī)設(shè)計模式進行應(yīng)用開發(fā)(抽象工廠/單例/觀察者/命令鏈/策略/適配器等模式);建議開發(fā)自己的PHP MVC框架,全面放開開發(fā),讓自己深入了解MVC模式,讓自己在業(yè)務(wù)項目開發(fā)中快速升級;熟悉PHP中的各種代碼優(yōu)化方法,熟悉大部分PHP安全問題的解決方案;熟悉PHP執(zhí)行的基本機制(Zend引擎/擴展的基本工作機制);并讓自己在業(yè)務(wù)項目開發(fā)中快速升級;熟悉PHP中的各種代碼優(yōu)化方法,熟悉大部分PHP安全問題的解決方案;熟悉PHP執(zhí)行的基本機制(Zend引擎/擴展的基本工作機制);并讓自己在業(yè)務(wù)項目開發(fā)中快速升級;熟悉PHP中的各種代碼優(yōu)化方法,熟悉大部分PHP安全問題的解決方案;熟悉PHP執(zhí)行的基本機制(Zend引擎/擴展的基本工作機制);
6. 系統(tǒng)設(shè)計:
能夠設(shè)計大部分中型系統(tǒng)的網(wǎng)站架構(gòu)、數(shù)據(jù)庫、基礎(chǔ)PHP框架選型;性能測試調(diào)查處理等;能夠完成網(wǎng)站的基本設(shè)計類似:瀏覽器->CDN()->+PHP->緩存->數(shù)據(jù)庫結(jié)構(gòu)網(wǎng)站的開發(fā)和維護;可以支持每天數(shù)百萬到千萬流量的基礎(chǔ)網(wǎng)站的開發(fā)和維護;
高級 PHP 程序員
重點:除了基礎(chǔ)的LNMP程序外,還可以對某個方向或領(lǐng)域進行深度學(xué)習(xí)。(深維度開發(fā))
目標:除了能夠完成基本的PHP業(yè)務(wù)開發(fā)外,還能夠解決最深入復(fù)雜的技術(shù)問題,能夠獨立設(shè)計并完成中大型系統(tǒng)設(shè)計開發(fā)工作;能夠獨立持有并深入某個技術(shù)方向,在這個比較專業(yè)。(如任一方向的深入研究、、PHP等)
1. :
除了第二階段的能力,除了常規(guī)的操作和性能監(jiān)控跟蹤,還可以使用很多高級復(fù)雜的命令來完成工作(// /ldd/ar等);在腳本方面,編寫了更復(fù)雜的腳本(500多行),以協(xié)助完成包括備份、自動化處理、監(jiān)控等在內(nèi)的許多任務(wù);awk/sed/perl等應(yīng)用已經(jīng)如火如荼,可以隨意操作控制文本統(tǒng)計,分析各種復(fù)雜格式的數(shù)據(jù);對機制有一定了解,對內(nèi)核模塊加載、啟動錯誤處理等有基本的處理;同時,我也了解了一些其他相關(guān)的東西網(wǎng)站模板,比如NFS、磁盤管理等;
2. :
在第二階段的基礎(chǔ)上,已經(jīng)能夠非常熟練的操作了,可以進行更深入的運維工作,比如監(jiān)控、性能優(yōu)化、復(fù)雜問題處理等;根據(jù)個人興趣,更多方面可以考慮關(guān)注關(guān)于工作原理的深入研究,主要體現(xiàn)在開始閱讀源碼,比如具體/工作機制、內(nèi)部事件處理、內(nèi)存管理、 ETC。; 同時可以學(xué)習(xí)擴展的開發(fā),可以自定義一些自己的私有擴展;對lua有一定的了解,看看能不能結(jié)合應(yīng)用更好的模型;這個階段的要求是對原理的深刻理解,
3. /:
在第二階段的基礎(chǔ)上,在應(yīng)用方面,除了之前的基礎(chǔ)SQL優(yōu)化外,還可以完成一些復(fù)雜的操作,比如導(dǎo)入導(dǎo)出大數(shù)據(jù),改變在線大數(shù)據(jù)的表結(jié)構(gòu),或添加或刪除索引字段等高風(fēng)險操作;除了安裝配置,已經(jīng)能夠處理更復(fù)雜的問題,比如排查各種問題,主從同步延遲問題的解決,跨機房同步數(shù)據(jù)的解決方案,高可用架構(gòu)等. 所有涉及的理解;應(yīng)用層,熟悉事務(wù)機制(隔離層、鎖等)等核心關(guān)鍵技術(shù),對觸發(fā)器有一定的了解和應(yīng)用,分區(qū)和其他技術(shù);性能方面,包括磁盤優(yōu)化(SAS遷移到SSD)、服務(wù)器優(yōu)化(內(nèi)存、服務(wù)器配置),此外還有其他核心性能優(yōu)化選項(ze// //eout等),連接池軟件選擇應(yīng)用php技術(shù),深入理解show*(show /show)類的操作語句,能夠完成大部分性能問題的追溯;深入熟悉備份技術(shù),包括容災(zāi)與恢復(fù),深入理解權(quán)、冷熱備份、多IDC備份等;在原理方面,有更多的了解,比如正確的工作機制,開始閱讀部分源碼,比如學(xué)習(xí)主從同步(復(fù)制)技術(shù)的源碼,或者學(xué)習(xí)理解某個存儲引擎的源碼(//)等。如果條件允許,可以參考CSV引擎開發(fā)自己的簡單存儲引擎來保存一些數(shù)據(jù),增強理解;在這個過程中,如果你有興趣,也可以考慮向DBA方向發(fā)展。層面上可以考慮,比如在少寫多讀的情況下啟動在線應(yīng)用,或者做一些在線數(shù)據(jù)分析處理操作。具體的場景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對于場景下的應(yīng)用,如果有條件或者興趣允許,可以開始深入了解工作機制??梢詤⒖糃SV引擎開發(fā)自己的簡單存儲引擎來保存一些數(shù)據(jù),增強理解;在這個過程中,如果你有興趣,也可以考慮向DBA方向發(fā)展。層面上可以考慮,比如在少寫多讀的情況下啟動在線應(yīng)用,或者做一些在線數(shù)據(jù)分析處理操作。具體的場景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對于場景下的應(yīng)用,如果有條件或者興趣允許,可以開始深入了解工作機制??梢詤⒖糃SV引擎開發(fā)自己的簡單存儲引擎來保存一些數(shù)據(jù),增強理解;在這個過程中,如果你有興趣,也可以考慮向DBA方向發(fā)展。層面上可以考慮,比如在少寫多讀的情況下啟動在線應(yīng)用,或者做一些在線數(shù)據(jù)分析處理操作。具體的場景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對于場景下的應(yīng)用,如果有條件或者興趣允許,可以開始深入了解工作機制。在少寫多讀的情況下啟動在線應(yīng)用,或者做一些在線數(shù)據(jù)分析和處理操作。具體的場景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對于場景下的應(yīng)用,如果有條件或者興趣允許,可以開始深入了解工作機制。在少寫多讀的情況下啟動在線應(yīng)用,或者做一些在線數(shù)據(jù)分析和處理操作。具體的場景可以根據(jù)工作而定,但核心是為了更好的理解區(qū)別對于場景下的應(yīng)用,如果有條件或者興趣允許,可以開始深入了解工作機制。
4./:
在第二階段的基礎(chǔ)上,可以更深入地應(yīng)用和學(xué)習(xí)。因為不是特別復(fù)雜,建議閱讀源碼,尤其是內(nèi)存管理部分,便于深入理解;部分,可以做更多復(fù)雜數(shù)據(jù)結(jié)構(gòu)的應(yīng)用(zset用于排序排序操作/事務(wù)處理用于保證原子性秒殺場景應(yīng)用等使用操作);大部分學(xué)習(xí)應(yīng)用涉及到aof等同步機制,設(shè)計了高可用的應(yīng)用架構(gòu)和集群;建議深入研究源碼,利用第二階段積累的知識??梢詰?yīng)用,特別是可以閱讀核心事件管理、內(nèi)存管理、內(nèi)部核心數(shù)據(jù)結(jié)構(gòu)等。完全理解。如果興趣允許,你可以成為一個非常專業(yè)的用戶。
5. PHP:
作為基本核心技能,我們需要在第二階段的基礎(chǔ)上進行更深入的學(xué)習(xí)和應(yīng)用。從基礎(chǔ)代碼應(yīng)用的角度,可以解決PHP開發(fā)中遇到的95%的問題,了解大部分的PHP技巧;大部分PHP框架一天之內(nèi)就能快速上手,了解各種主流PHP框架的優(yōu)勢。缺點是在項目開發(fā)中可以快速方便地進行技術(shù)選擇;配置方面,除了常規(guī)二階段會的知識外,還會了解一些比較局部的配置選項(php/),包括擴展中的一些復(fù)雜的高級配置和原理(如擴展配置中的.apc,apc) apc擴展配置中的./apc./apc.on等);對php的工作機制有了更深入的了解,包括php-fpm的工作機制(比如php-fpm在不同的配置機器下我們開始計算進程數(shù)和原理),對zend引擎(vm/gc/),閱讀基礎(chǔ)PHP內(nèi)核源碼(或閱讀相關(guān)文章),了解PHP內(nèi)部機制(基礎(chǔ)Type//)實現(xiàn)的大部分核心數(shù)據(jù)結(jié)構(gòu),有深入的學(xué)習(xí)和了解核心基礎(chǔ)架構(gòu)(zval//gc);能夠進行基本的PHP擴展開發(fā),了解一些擴展開發(fā)(/等)的中高級知識,熟悉php和/的區(qū)別以及通信交互的細節(jié)(/);除了開發(fā) PHP 擴展,
6. C/C++:
在第二階段的基礎(chǔ)上,可以對C/C++語言有更深入的了解,可以完成中小型C/C++系統(tǒng)的開發(fā);除了第二階段的基本C/C++語法和數(shù)據(jù)結(jié)構(gòu),還可以學(xué)習(xí)一些特殊的數(shù)據(jù)結(jié)構(gòu)(b-tree/rb-tree//lsm-tree/trie-tree等),方便特殊的工作需要;系統(tǒng)編程,熟悉多進程、多線程編程;一些多進程通信方式可以靈活選擇通信方式(共享內(nèi)存/信號量/管道等);多線程編程可以很好的解決鎖沖突問題,可以開發(fā)調(diào)試多線程程序;熟悉編程,了解多進程模型/多線程模型/異步網(wǎng)絡(luò)IO模型的區(qū)別和選擇,熟悉不同異步網(wǎng)絡(luò)IO模型(/poll//iocp等)的原理和區(qū)別小程序開發(fā),熟悉常用的異步框架(ACE /ICE ////.ASIO等)和使用,有空的話有時間,也可以看看一些國內(nèi)自研的庫(比如);同時可以設(shè)計好的高并發(fā)程序架構(gòu)(-/-等);了解C++后端開發(fā)中的大部分C/問題(內(nèi)存管理、日志打印、高并發(fā)、前后端通信協(xié)議、服務(wù)監(jiān)控),了解各個后端服務(wù)的RPC通信問題(/http/ /, ETC。); 比較熟悉使用 GCC 和 GDB 用于開發(fā)、編譯和調(diào)試程序。在線程序的核心掉線后,問題可以快速追蹤解決。
7. 前端:
深入了解HTTP協(xié)議(包括各個詳細協(xié)議的特殊協(xié)議代碼及其背后的原因,比如302靜態(tài)文件被緩存,502是后面php掛了等等);除了之前的前端框架應(yīng)用集成能力,前端方面如果有興趣學(xué)習(xí),可以深入了解。形式是可以自己開發(fā)一些類似的前端框架,或者開發(fā)一個比較瑣碎的Java技能測試比如富文本編輯器;
8. 其他領(lǐng)域的語言學(xué)習(xí):
我對基本的PHP/C/C++語言有基本的積累。建議現(xiàn)階段可以嘗試學(xué)習(xí)不同的編程語言,根據(jù)個人愛好,可以學(xué)習(xí)腳本語言/Ruby等,函數(shù)式編程語言可以嘗試Lisp///之類的,可以嘗試Java/for靜態(tài)語言,可以理解R語言對數(shù)據(jù)進行統(tǒng)計分析。如果你想從不同的角度做后端業(yè)務(wù),可以試試 Node.js 和前面提到的組合等等。. 學(xué)習(xí)不同的語言主要是為了提高自己的視野和解決問題方法的差異。比如你會明白,除了進程/線程之外,還有輕量級的協(xié)程;例如,在跨機通信場景中,解決方案非常簡單;在不想選擇C/C++的情況下,有類似的效率/可用等;主要是改善視力。
9. 其他專業(yè):
在這個階段,除了基本的LNMP技能外,還會考慮學(xué)習(xí)一些其他的領(lǐng)域知識。這些都是可能的,取決于個人興趣和長期目標。目前可供選擇的領(lǐng)域很多,如云計算(分布式存儲、分布式計算、虛擬機等)、機器學(xué)習(xí)(數(shù)據(jù)挖掘、模式識別等,應(yīng)用于統(tǒng)計、個性化推薦)、自然語言處理(中文分詞等)、搜索引擎技術(shù)、圖形圖像、語音識別等。除了這些高級的,還有很多地方可以學(xué)工程,比如高性能系統(tǒng)、移動開發(fā)(/IOS)、計算機安全、嵌入式系統(tǒng)、硬件等。
10.系統(tǒng)設(shè)計:
系統(tǒng)設(shè)計基于第二階段??梢詰?yīng)用所學(xué)的經(jīng)驗和技能,設(shè)計一個比較復(fù)雜的中大型系統(tǒng),可以在線解決各種復(fù)雜系統(tǒng)的大部分問題,完成類似瀏覽器->CDN->負載均衡->接入層- > +PHP -> 業(yè)務(wù)緩存 -> 數(shù)據(jù)庫 -> 各種復(fù)雜的后端 RPC 交互(存儲后端、邏輯后端、反作弊后端、外部服務(wù)) -> 更多后端江子的復(fù)雜業(yè)務(wù);可以支持每天數(shù)千萬到數(shù)億流量的網(wǎng)站的正常開發(fā)和維護。