發(fā)布時(shí)間:2021-09-09 16:48:19來(lái)源:有考培訓(xùn)網(wǎng)綜合
達(dá)內(nèi)培訓(xùn)嚴(yán)格、科學(xué)、負(fù)責(zé)的教學(xué)就業(yè)管理制度,就業(yè)、班主任全程跟班,把握每個(gè)學(xué)員的學(xué)習(xí)狀態(tài),并有專業(yè)的職業(yè)素養(yǎng)課和就業(yè)指導(dǎo)課,達(dá)內(nèi)培訓(xùn)確保教學(xué)就業(yè)質(zhì)量。下面看看小編整理的PHP工程師需要掌握什么技術(shù)?
PHP工程師需要掌握什么技術(shù)
1.Linux
在Linux下面除了常規(guī)的操作和性能監(jiān)控跟蹤,還能夠使用很多高級(jí)復(fù)雜的命令完成工作(watch/tcpdump/starce/ldd/ar等);
在shell腳本方面,已經(jīng)能夠編寫比較復(fù)雜的shell腳本(超過(guò)500行)來(lái)協(xié)助完成很多包括備份、自動(dòng)化處理、監(jiān)控等工作的shell;
對(duì)awk/sed/perl等應(yīng)用已經(jīng)如火純青,能夠隨意操作控制處理文本統(tǒng)計(jì)分析各種復(fù)雜格式的數(shù)據(jù);
對(duì)Linux內(nèi)部機(jī)制有一些了解,對(duì)內(nèi)核模塊加載,啟動(dòng)錯(cuò)誤處理等等有個(gè)基本的處理;同時(shí)對(duì)一些其他相關(guān)的東西也了解,比如NFS、磁盤管理等等。
2.Nginx
可以考慮側(cè)重在關(guān)于Nginx工作原理部分的深入學(xué)習(xí),主要表現(xiàn)在閱讀源碼開始,比如具體的master/worker工作機(jī)制,Nginx內(nèi)部的事件處理,內(nèi)存管理等等;
同時(shí)可以學(xué)習(xí)Nginx擴(kuò)展的開發(fā),可以定制一些自己私有的擴(kuò)展;同時(shí)可以對(duì)Nginx+Lua有一定程度的了解,看看是否可以結(jié)合應(yīng)用出更好模式。
3.MySQL/MongoDB
在MySQL應(yīng)用方面,除了之前的基本SQL優(yōu)化,還能夠在完成一些復(fù)雜操作,比如大批量數(shù)據(jù)的導(dǎo)入導(dǎo)出,線上大批量數(shù)據(jù)的更改表結(jié)構(gòu)或者增刪索引字段等等高危操作;
除了安裝配置,已經(jīng)能夠處理更多復(fù)雜的MySQL的問(wèn)題,比如各種問(wèn)題的追查,主從同步延遲問(wèn)題的解決、跨機(jī)房同步數(shù)據(jù)方案、MySQL高可用架構(gòu)等都有涉及了解;
對(duì)MySQL應(yīng)用層面,對(duì)MySQL的核心關(guān)鍵技術(shù)比較熟悉,比如事務(wù)機(jī)制(隔離級(jí)別、鎖等)、對(duì)觸發(fā)器、分區(qū)等技術(shù)有一定了解和應(yīng)用。
4.Redis/Memcached
因?yàn)镸emcached不是特別復(fù)雜,建議可以把源碼進(jìn)行閱讀,特別是內(nèi)存管理部分,方便深入理解;
Redis部分,可以多做一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的應(yīng)用(zset來(lái)做排行榜排序操作/事務(wù)處理用來(lái)增加原子性在秒殺類場(chǎng)景應(yīng)用之類的使用操作);多涉及aof等同步機(jī)制的學(xué)習(xí)應(yīng)用,設(shè)計(jì)一個(gè)高可用的Redis應(yīng)用架構(gòu)和集群。
5.PHP
從基本代碼應(yīng)用上面來(lái)說(shuō),能夠解決在PHP開發(fā)中遇到95%的問(wèn)題,了解大部分PHP的技巧;對(duì)大部分的PHP框架能夠迅速在一天內(nèi)上手使用,并且了解各個(gè)主流PHP框架的優(yōu)缺點(diǎn),能夠迅速方便項(xiàng)目開發(fā)中做技術(shù)選型;
在配置方面,了解一些比較偏門的配置選項(xiàng)(phpauto_prepend_file/auto_append_file),包括擴(kuò)展中的一些復(fù)雜高級(jí)配置和原理。
對(duì)php的工作機(jī)制比較了解,包括php-fpm工作機(jī)制(比如php-fpm在不同配置機(jī)器下面開啟進(jìn)程數(shù)量計(jì)算以及原理),對(duì)zend引擎有基本熟悉(vm/gc/stream處理),閱讀過(guò)基本的PHP內(nèi)核源碼(或者閱讀過(guò)相關(guān)文章),對(duì)PHP內(nèi)部機(jī)制的大部分核心數(shù)據(jù)結(jié)構(gòu)(基礎(chǔ)類型/Array/Object)實(shí)現(xiàn)有了解,對(duì)于核心基礎(chǔ)結(jié)構(gòu)(zval/hashtable/gc)有深入學(xué)習(xí)了解。
6.C/C++
能夠在C/C++語(yǔ)言方面有更深入的學(xué)習(xí)了解,能夠完成中小型C/C++系統(tǒng)的開發(fā)工作;除了基本第二階段的基礎(chǔ)C/C++語(yǔ)法和數(shù)據(jù)結(jié)構(gòu),也能夠?qū)W習(xí)一些特殊數(shù)據(jù)結(jié)構(gòu)(b-tree/rb-tree/skiplist/lsm-tree/trie-tree等)方便在特殊工作中需求;
在系統(tǒng)編程方面,熟悉多進(jìn)程、多線程編程;多進(jìn)程情況下面了解大部分多進(jìn)程之間的通信方式,能夠靈活選擇通信方式(共享內(nèi)存/信號(hào)量/管道等);
多線程編程能夠良好的解決鎖沖突問(wèn)題,并且能夠進(jìn)行多線程程序的開發(fā)調(diào)試工作;同時(shí)對(duì)網(wǎng)絡(luò)編程比較熟悉,了解多進(jìn)程模型/多線程模型/異步網(wǎng)絡(luò)IO模型的差別和選型,熟悉不同異步網(wǎng)絡(luò)IO模型的原理和差異(select/poll/epoll/iocp等),并且熟悉常見(jiàn)的異步框架(ACE/ICE/libev/libevent/libuv/Boost.ASIO等)和使用,如果閑暇也可以看看一些國(guó)產(chǎn)自己開發(fā)的庫(kù)(比如muduo);
同時(shí)能夠設(shè)計(jì)好的高并發(fā)程序架構(gòu)(leader-follow/master-worker等);了解大部分C/C++后端Server開發(fā)中的問(wèn)題(內(nèi)存管理、日志打印、高并發(fā)、前后端通信協(xié)議、服務(wù)監(jiān)控),知道各個(gè)后端服務(wù)RPC通信問(wèn)題(struct/http/thirft/protobuf等)。
7.前端
深入了解HTTP協(xié)議(包括各個(gè)細(xì)致協(xié)議特殊協(xié)議代碼和背后原因,比如302靜態(tài)文件緩存了,502是nginx后面php掛了之類的);除了之前的前端方面的各種框架應(yīng)用整合能力。