這次為什么要討論這個(gè)話題,因?yàn)?Swoole 和 Go 在 PHP 程序員坊間一直都是茶語(yǔ)飯后的談資,覺(jué)得懂 Swoole 和 Go 的就高人一等。
大家好,我是碼農(nóng)先森。
這次為什么要討論這個(gè)話題,因?yàn)?Swoole 和 Go 在 PHP 程序員坊間一直都是茶語(yǔ)飯后的談資,覺(jué)得懂 Swoole 和 Go 的就高人一等。相信有很多的 PHP 程序員,自打 Swoole 發(fā)布以來(lái)就從來(lái)沒(méi)有使用過(guò)。還記得 Swoole 官方有一遍入門(mén)文章中曾建議學(xué)習(xí) Swoole 之前,先學(xué)習(xí) Liunx 操作系統(tǒng)、TCP/UDP 網(wǎng)絡(luò)協(xié)議棧、Socket 通信等基礎(chǔ)知識(shí),作為 7 天入門(mén)、30 天精通 PHP 的靚仔們,面對(duì)這些基礎(chǔ)知識(shí)不屑一顧,還會(huì)不時(shí)的反問(wèn),這些東西難道影響我 CURD 了?
在我的工作經(jīng)歷中遇到過(guò)這樣的三類人,首先是:常年在 Window 系統(tǒng)下使用一鍵安裝包 phpStudy 的 PHP 程序員,一輩子都沒(méi)有翻開(kāi)過(guò) PHP 相關(guān)的源代碼。即使在 Linux 服務(wù)器上也是使用萬(wàn)能的寶塔面板,一鍵便啟動(dòng)了 php-fpm、MySQL、Redis 等服務(wù),如果服務(wù)出錯(cuò)誤久久不能正常運(yùn)行,便傻眼了不知所措,然后開(kāi)始在各大技術(shù)群中發(fā)求助信并艾特各位大佬。每當(dāng)我看到此種場(chǎng)景,心情都久久不能平靜。其次是:時(shí)常游跡于 Thinkphp、Laravel、YII 等各大框架社區(qū)并對(duì)框架 MVC 模式有所貢獻(xiàn)的 PHP 程序員,這些人還成為了這些框架的布道師,對(duì)框架的優(yōu)劣勢(shì)了如執(zhí)掌,但俗不知自己可能已經(jīng)陷入了框架的泥潭,在這個(gè)泥潭里久久不能自拔。最后是:偶爾會(huì)跨過(guò)互聯(lián)網(wǎng)的那堵墻去看看外面世界的 PHP 程序員,有著對(duì)技術(shù)的好奇心且不甘于現(xiàn)狀,開(kāi)始嘗試向下探索向上生長(zhǎng),但在這個(gè)追逐技術(shù)的路上不免會(huì)迷失方向,走到了技術(shù)的迷霧中。
雖說(shuō)這三類人的情況都大不相同,但相信大家對(duì) Swoole 和 Go 都有進(jìn)階學(xué)習(xí)的想法。接下來(lái)我會(huì)介紹一些學(xué)習(xí)上的建議,希望對(duì)大家能有所啟發(fā)。
Swoole 基于 C 語(yǔ)言開(kāi)發(fā)的 PHP 異步通信擴(kuò)展,其中涉及了多進(jìn)程、協(xié)程、同步、異步、IO多路復(fù)用、Socket 等技術(shù)點(diǎn)。因此學(xué)習(xí) Swoole 之前需要先把這些概念搞懂,才能進(jìn)入下一步的學(xué)習(xí)。如果是科班出身的程序員對(duì)這些概念多少有點(diǎn)了解,非科班的就要多學(xué)習(xí)下基礎(chǔ)的知識(shí),把概念牢牢掌握。在這里我也把這些概念在 Swoole 中結(jié)合一下,比如學(xué)習(xí)了多進(jìn)程就可以理解 Swoole 的多進(jìn)程運(yùn)行模式,學(xué)習(xí)了同步異步就理解了 Swoole 中的阻塞與非阻塞模式、學(xué)習(xí)了IO多路復(fù)用就理解了 Swoole 中的事件循環(huán)的機(jī)制、學(xué)習(xí)了協(xié)程就理解了 Swoole 中協(xié)程及通信通道的用法、學(xué)習(xí)了 Socket 套接字就理解了 Swoole 中所有的網(wǎng)絡(luò)通信都基于 Socket 的原理,還有很多這里就不一一舉例了。只要把操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議的基礎(chǔ)知識(shí)學(xué)一遍,那么學(xué)習(xí) Swoole 便會(huì)更加得心應(yīng)手。反之沒(méi)有這些基礎(chǔ),那么學(xué)起來(lái)會(huì)非常的吃力,這也是很多的 PHP 程序員學(xué)習(xí) Swoole 舉步維艱的主要原因。
再來(lái)說(shuō)說(shuō)學(xué)習(xí) Go 語(yǔ)言要具備哪些基礎(chǔ),從理論上來(lái)說(shuō)要和學(xué)習(xí) Swoole 要具備同樣的基礎(chǔ)。但是有很多人會(huì)說(shuō)了,我沒(méi)有這些基礎(chǔ)也能用 Go 開(kāi)發(fā)項(xiàng)目呀,CURD 操作開(kāi)發(fā)、API 接口開(kāi)發(fā)溜得一皮。是的,實(shí)際上沒(méi)有上面說(shuō)的那些基礎(chǔ)也能開(kāi)發(fā),但那只是 Go 應(yīng)用場(chǎng)景的冰上一角。Go 語(yǔ)言的真正優(yōu)勢(shì)是高并發(fā)特性,要想真正用 Go 開(kāi)發(fā)出高性能的項(xiàng)目,那這些基礎(chǔ)知識(shí)是必不可少的,不然可能連 Go 的協(xié)程都玩不明白,搞的內(nèi)存資源到處泄露,到頭來(lái) Bug 層出不窮得不償失,反而最后還會(huì)覺(jué)得 Go 還沒(méi)有 PHP 好用。
回到這篇文章的主旨討論的是學(xué)習(xí) Swoole 還是學(xué)習(xí) Go ?我認(rèn)為要先學(xué)習(xí) Swoole 再學(xué)習(xí) Go,其中的原因文中已經(jīng)有所闡述了。從近年 Swoole 的發(fā)展來(lái)看,其中很多的新特性也是從 Go 中所有借鑒。網(wǎng)上還有人調(diào)侃說(shuō) Swoole 越來(lái)越像 Go 語(yǔ)言,確實(shí) Go 語(yǔ)言自誕生以來(lái)就出身貴族「谷歌」一直帶著耀眼的光環(huán),是很多語(yǔ)言學(xué)習(xí)的榜樣? Github 的排行榜 Go 語(yǔ)言的使用熱度也是逐年的上升,因此學(xué)習(xí) Go 語(yǔ)言也是大的趨勢(shì),但在學(xué)習(xí)的路上也要打好地基腳踏實(shí)地,只要把自己這把刀磨好,就不怕耽誤砍柴的功夫。
最后我也推薦一個(gè)基礎(chǔ)知識(shí)的學(xué)習(xí)網(wǎng)站 https://xiaolincoding.com/ 這里的內(nèi)容大多數(shù)都是圖解的方式,理解起來(lái)會(huì)相對(duì)容易些,希望對(duì)大家能有所幫助。
歡迎關(guān)注、分享、點(diǎn)贊、收藏、在看,我是微信公眾號(hào)「碼農(nóng)先森」作者。
小編推薦閱讀
如何使用 Pytorch 中的 DataSet 和 DataLoader
閱讀golang slice相關(guān)常見(jiàn)的性能優(yōu)化手段
閱讀連接Elasticsearch服務(wù)器的Python代碼示例
閱讀國(guó)產(chǎn)操作系統(tǒng)上實(shí)現(xiàn)RTMP推流攝像頭視頻和麥克風(fēng)聲音到流媒體服務(wù)器
閱讀使用Python讀取和導(dǎo)出NetCDF格式的多時(shí)相柵格文件
閱讀多租戶系統(tǒng)數(shù)據(jù)權(quán)限設(shè)計(jì)與RuoYi系統(tǒng)的借鑒
閱讀count(*)、count(1)哪個(gè)更快?面試必問(wèn):通宵整理的十道經(jīng)典MySQL必問(wèn)面試題
閱讀從需求分析、產(chǎn)品設(shè)計(jì)到部署交付各階段說(shuō)明
閱讀如何利用七牛云進(jìn)行數(shù)據(jù)備份和刪除
閱讀強(qiáng)化學(xué)習(xí)筆記之【ACE:Off-PolicyActor-CriticwithCausality-AwareEntropyRegularization】
閱讀使用MailKit在.NET Core中收發(fā)郵件的完整示例
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2024 haote.com 好特網(wǎng)