首页 > 编程语言 >PHP 程序员是学 Swoole ?还是学 Go ?

PHP 程序员是学 Swoole ?还是学 Go ?

时间:2024-07-11 09:22:26浏览次数:17  
标签:Swoole 基础知识 学习 程序员 Go PHP

大家好,我是码农先森。

面临现状

这次为什么要讨论这个话题,因为 Swoole 和 Go 在 PHP 程序员坊间一直都是茶语饭后的谈资,觉得懂 Swoole 和 Go 的就高人一等。相信有很多的 PHP 程序员,自打 Swoole 发布以来就从来没有使用过。还记得 Swoole 官方有一遍入门文章中曾建议学习 Swoole 之前,先学习 Liunx 操作系统、TCP/UDP 网络协议栈、Socket 通信等基础知识,作为 7 天入门、30 天精通 PHP 的靓仔们,面对这些基础知识不屑一顾,还会不时的反问,这些东西难道影响我 CURD 了?

在我的工作经历中遇到过这样的三类人,首先是:常年在 Window 系统下使用一键安装包 phpStudy 的 PHP 程序员,一辈子都没有翻开过 PHP 相关的源代码。即使在 Linux 服务器上也是使用万能的宝塔面板,一键便启动了 php-fpm、MySQL、Redis 等服务,如果服务出错误久久不能正常运行,便傻眼了不知所措,然后开始在各大技术群中发求助信并艾特各位大佬。每当我看到此种场景,心情都久久不能平静。其次是:时常游迹于 Thinkphp、Laravel、YII 等各大框架社区并对框架 MVC 模式有所贡献的 PHP 程序员,这些人还成为了这些框架的布道师,对框架的优劣势了如执掌,但俗不知自己可能已经陷入了框架的泥潭,在这个泥潭里久久不能自拔。最后是:偶尔会跨过互联网的那堵墙去看看外面世界的 PHP 程序员,有着对技术的好奇心且不甘于现状,开始尝试向下探索向上生长,但在这个追逐技术的路上不免会迷失方向,走到了技术的迷雾中。

虽说这三类人的情况都大不相同,但相信大家对 Swoole 和 Go 都有进阶学习的想法。接下来我会介绍一些学习上的建议,希望对大家能有所启发。

知识储备

Swoole 基于 C 语言开发的 PHP 异步通信扩展,其中涉及了多进程、协程、同步、异步、IO多路复用、Socket 等技术点。因此学习 Swoole 之前需要先把这些概念搞懂,才能进入下一步的学习。如果是科班出身的程序员对这些概念多少有点了解,非科班的就要多学习下基础的知识,把概念牢牢掌握。在这里我也把这些概念在 Swoole 中结合一下,比如学习了多进程就可以理解 Swoole 的多进程运行模式,学习了同步异步就理解了 Swoole 中的阻塞与非阻塞模式、学习了IO多路复用就理解了 Swoole 中的事件循环的机制、学习了协程就理解了 Swoole 中协程及通信通道的用法、学习了 Socket 套接字就理解了 Swoole 中所有的网络通信都基于 Socket 的原理,还有很多这里就不一一举例了。只要把操作系统、网络协议的基础知识学一遍,那么学习 Swoole 便会更加得心应手。反之没有这些基础,那么学起来会非常的吃力,这也是很多的 PHP 程序员学习 Swoole 举步维艰的主要原因。

再来说说学习 Go 语言要具备哪些基础,从理论上来说要和学习 Swoole 要具备同样的基础。但是有很多人会说了,我没有这些基础也能用 Go 开发项目呀,CURD 操作开发、API 接口开发溜得一皮。是的,实际上没有上面说的那些基础也能开发,但那只是 Go 应用场景的冰上一角。Go 语言的真正优势是高并发特性,要想真正用 Go 开发出高性能的项目,那这些基础知识是必不可少的,不然可能连 Go 的协程都玩不明白,搞的内存资源到处泄露,到头来 Bug 层出不穷得不偿失,反而最后还会觉得 Go 还没有 PHP 好用。

学习路径

回到这篇文章的主旨讨论的是学习 Swoole 还是学习 Go ?我认为要先学习 Swoole 再学习 Go,其中的原因文中已经有所阐述了。从近年 Swoole 的发展来看,其中很多的新特性也是从 Go 中所有借鉴。网上还有人调侃说 Swoole 越来越像 Go 语言,确实 Go 语言自诞生以来就出身贵族「谷歌」一直带着耀眼的光环,是很多语言学习的榜样。看 Github 的排行榜 Go 语言的使用热度也是逐年的上升,因此学习 Go 语言也是大的趋势,但在学习的路上也要打好地基脚踏实地,只要把自己这把刀磨好,就不怕耽误砍柴的功夫。

最后我也推荐一个基础知识的学习网站 https://xiaolincoding.com/ 这里的内容大多数都是图解的方式,理解起来会相对容易些,希望对大家能有所帮助。


欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

标签:Swoole,基础知识,学习,程序员,Go,PHP
From: https://www.cnblogs.com/yxhblogs/p/18270123

相关文章

  • Go 1.23 的 os.CopyFS:告别第三方库,轻松复制目录
    Go1.23的os.CopyFS:告别第三方库,轻松复制目录原创K8sCat源自开发者2024年07月10日21:49美国听全文在Go1.23版本中,标准库os包引入了一个名为CopyFS的新函数,它提供了一种仅使用标准库函数即可复制目录的便捷方法。从此,开发者无需再依赖第三方库来完成这项常见任务......
  • GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION
    文章目录题目摘要引言方法实验消融题目Gollie:注释指南改进零样本信息提取论文地址:https://arxiv.org/abs/2310.03668摘要    大型语言模型(LLM)与指令调优相结合,在泛化到未见过的任务时取得了重大进展。然而,它们在信息提取(IE)方面不太成功,落后于特定任......
  • KAN: Kolmogorov-Arnold Networks (arXiv 2024)
    KAN官方代码库:https://github.com/KindXiaoming/pykan官方tutorials:https://kindxiaoming.github.io/pykan/目录AbstractKolmogorov–ArnoldNetworks(KAN)Kolmogorov-ArnoldRepresentationtheoremKANarchitectureImplementationdetailsKAN’sApproximation......
  • PHP环境集成面板使用教程
    “让天下没有难配的服务器环境!-phpStudy”phpStudy是一个PHP开发环境集成包,可用在本地电脑或者服务器上,该程序包集成最新的PHP/MySql/Apache/Nginx/Redis/FTP/Composer,一次性安装,无须配置即可使用,非常方便、好用!phpstudy2019年新推出的V8版本全新界面,支持最新php、mysql版......
  • OI loves Algorithm——后缀数组
    最近NFLS周赛,F题需要后缀数组,我不会,光荣掉到20+名。打完后就去补习了相关知识,觉得很巧妙,就来写了一篇专栏1.后缀数组的定义后缀数组(SA)保存的是一个字符串所有后缀的排序结果,其中第SA[i]表示所有后缀中第$i$小的后缀的开头位置。与之相对的是名次数组Rank,Rank[i]......
  • CAD Exchanger SDK 3.24.0 终极版-say goodbye
    随着今年即将结束,还有一件重要的事情——CADExchanger3.24.0的发布。此次最新更新带来了一系列虽小但仍然值得注意的改进。其中包括ManufacturingToolkit(MTK)和Unity增强功能、Lab和VisualizationToolkit中模型部件检测的改进以及WebToolkit(WTK)中的修复。......
  • Django学习收尾
     启动项目命令pythonmanage.pyrunserver文件上传功能实现title="Form上传"ifrequest.method=="GET":form=UpForm()returnrender(request,'upload_form.html',{"form":form,"title":title})......
  • Django学习第五天
     启动项目命令pythonmanage.pyrunserver图像验证码生成随机字母或者数字importrandomfromPILimportImage,ImageDraw,ImageFont,ImageFilterdefcheck_code(width=120,height=40,char_length=5,font_file='ZixunHappyBold.ttf',font_size=28):code=......
  • cargo 图片转base64 完整可以运行的代码
    要将图片转换为Base64编码,可以使用Rust语言和image、base64等库。以下是一个完整的可以运行的代码示例,使用Cargo来管理依赖。 步骤 创建一个新的Cargo项目: sh Copycargonewimage_to_base64cdimage_to_base64 添加依赖:在Cargo.toml文件中添加需......
  • [ABC361D]Go Stone Puzzle
    题目大意给定一个字符串S,它是由B和W组成,之后在S后面添加两个空格,可以将相邻的两个字符和空格进行交换,交换的前提是只能相邻,同时两个字符必须都是B或者W,再给一个字符串T,也是由B和W组成,问最小经过几次交换,使得S变成T\(1\leq|S|\leq14\)题解:看到数据范围,一看就知道是个搜索,怎......