這次為什么要討論這個(gè)話題,因?yàn)?Swoole 和 Go 在 PHP 程序員坊間一直都是茶語飯后的談資,覺得懂 Swoole 和 Go 的就高人一等。
大家好,我是碼農(nóng)先森。
這次為什么要討論這個(gè)話題,因?yàn)?Swoole 和 Go 在 PHP 程序員坊間一直都是茶語飯后的談資,覺得懂 Swoole 和 Go 的就高人一等。相信有很多的 PHP 程序員,自打 Swoole 發(fā)布以來就從來沒有使用過。還記得 Swoole 官方有一遍入門文章中曾建議學(xué)習(xí) Swoole 之前,先學(xué)習(xí) Liunx 操作系統(tǒng)、TCP/UDP 網(wǎng)絡(luò)協(xié)議棧、Socket 通信等基礎(chǔ)知識(shí),作為 7 天入門、30 天精通 PHP 的靚仔們,面對(duì)這些基礎(chǔ)知識(shí)不屑一顧,還會(huì)不時(shí)的反問,這些東西難道影響我 CURD 了?
在我的工作經(jīng)歷中遇到過這樣的三類人,首先是:常年在 Window 系統(tǒng)下使用一鍵安裝包 phpStudy 的 PHP 程序員,一輩子都沒有翻開過 PHP 相關(guān)的源代碼。即使在 Linux 服務(wù)器上也是使用萬能的寶塔面板,一鍵便啟動(dòng)了 php-fpm、MySQL、Redis 等服務(wù),如果服務(wù)出錯(cuò)誤久久不能正常運(yùn)行,便傻眼了不知所措,然后開始在各大技術(shù)群中發(fā)求助信并艾特各位大佬。每當(dāng)我看到此種場景,心情都久久不能平靜。其次是:時(shí)常游跡于 Thinkphp、Laravel、YII 等各大框架社區(qū)并對(duì)框架 MVC 模式有所貢獻(xiàn)的 PHP 程序員,這些人還成為了這些框架的布道師,對(duì)框架的優(yōu)劣勢(shì)了如執(zhí)掌,但俗不知自己可能已經(jīng)陷入了框架的泥潭,在這個(gè)泥潭里久久不能自拔。最后是:偶爾會(huì)跨過互聯(lián)網(wǎng)的那堵墻去看看外面世界的 PHP 程序員,有著對(duì)技術(shù)的好奇心且不甘于現(xiàn)狀,開始嘗試向下探索向上生長,但在這個(gè)追逐技術(shù)的路上不免會(huì)迷失方向,走到了技術(shù)的迷霧中。
雖說這三類人的情況都大不相同,但相信大家對(duì) Swoole 和 Go 都有進(jìn)階學(xué)習(xí)的想法。接下來我會(huì)介紹一些學(xué)習(xí)上的建議,希望對(duì)大家能有所啟發(fā)。
Swoole 基于 C 語言開發(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)手。反之沒有這些基礎(chǔ),那么學(xué)起來會(huì)非常的吃力,這也是很多的 PHP 程序員學(xué)習(xí) Swoole 舉步維艱的主要原因。
再來說說學(xué)習(xí) Go 語言要具備哪些基礎(chǔ),從理論上來說要和學(xué)習(xí) Swoole 要具備同樣的基礎(chǔ)。但是有很多人會(huì)說了,我沒有這些基礎(chǔ)也能用 Go 開發(fā)項(xiàng)目呀,CURD 操作開發(fā)、API 接口開發(fā)溜得一皮。是的,實(shí)際上沒有上面說的那些基礎(chǔ)也能開發(fā),但那只是 Go 應(yīng)用場景的冰上一角。Go 語言的真正優(yōu)勢(shì)是高并發(fā)特性,要想真正用 Go 開發(fā)出高性能的項(xiàng)目,那這些基礎(chǔ)知識(shí)是必不可少的,不然可能連 Go 的協(xié)程都玩不明白,搞的內(nèi)存資源到處泄露,到頭來 Bug 層出不窮得不償失,反而最后還會(huì)覺得 Go 還沒有 PHP 好用。
回到這篇文章的主旨討論的是學(xué)習(xí) Swoole 還是學(xué)習(xí) Go ?我認(rèn)為要先學(xué)習(xí) Swoole 再學(xué)習(xí) Go,其中的原因文中已經(jīng)有所闡述了。從近年 Swoole 的發(fā)展來看,其中很多的新特性也是從 Go 中所有借鑒。網(wǎng)上還有人調(diào)侃說 Swoole 越來越像 Go 語言,確實(shí) Go 語言自誕生以來就出身貴族「谷歌」一直帶著耀眼的光環(huán),是很多語言學(xué)習(xí)的榜樣。看 Github 的排行榜 Go 語言的使用熱度也是逐年的上升,因此學(xué)習(xí) Go 語言也是大的趨勢(shì),但在學(xué)習(xí)的路上也要打好地基腳踏實(shí)地,只要把自己這把刀磨好,就不怕耽誤砍柴的功夫。
最后我也推薦一個(gè)基礎(chǔ)知識(shí)的學(xué)習(xí)網(wǎng)站 https://xiaolincoding.com/ 這里的內(nèi)容大多數(shù)都是圖解的方式,理解起來會(huì)相對(duì)容易些,希望對(duì)大家能有所幫助。
歡迎關(guān)注、分享、點(diǎn)贊、收藏、在看,我是微信公眾號(hào)「碼農(nóng)先森」作者。
小編推薦閱讀
機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]
湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)