2021年后端学习路线书籍-自我进阶之路

·  阅读 834

最近也有不少小伙伴们在公众号发消息问我,如何去学好一门后端语言?怎么才能进阶?在公司如何才能快速的晋级晋升?你作为一个后端是如何学习的呢?

其实我正儿八经的工作也就 4 年多了,但是如果算上大三实习大四工作的话满打满算大概 5 年之久。你会发现自己工作 3 年以后再到 5 年可能会觉得自己学不到东西,很多东西从表面上看你会了,深入一点你基本就回答不上来而且脑海搜索不到任何的相关知识点。小伙伴们问的最多的是下面几个问题(不以语言论英雄):

- 我工作 1年 ,3年, 5年 进入了迷茫期,完全不知道自己要干什么?

- 不知道自己要看什么书籍、视频、文档?

- 学的东西总是用不上,而且经常忘记,需要查阅(百度、谷歌)

- 我发现我有时候还不如公司新来的员工(经验比我低)还菜?

- 更有甚者,工作了三四年觉得自己不如别人,想放弃转行?

实话实说,21年刚开始老早我就想把自己的学习路线以及书单整理下,因为换了工作的原因搁置了。自从最近写了文章之后,常常有朋友会问我,我是后端开发:“我需要看哪些视频、文档、书籍;如何规划自己的职业路线?”。那么我就以自己的成长过程中:学到的知识、看的书籍、以及文档,视频很少看。

学习路线

学习时间表

这个是问的最多的,主要是因为我很早之前是做PHP语言开发。给大家看下我刚毕业的学习时间

7:00  起床,因为是租房人多,早起洗漱

7:30  开始买早餐边吃边去公交站

7:45  到达公交站,等公交;运气好直接上车,不好下一趟

8:50  到达公司,接水开电脑开始工作 写代码

12:00 午睡时间, 看书、看视频(敲代码影响同事休息)

13:30 下午工作,写代码、需求评审、开会

18:30 下班,留公司继续学习、看书、动手实现(公司有空调舒服一些)

20:00 回家、买饭、同学吹水、看书、压马路

22:00 洗漱、看书、看教学视频

第二天凌晨2:00 结束学习睡觉 

因为要工作的原因,放弃玩游戏的时间(LOL、穿越火线),全部投入到自身的技术提升;技术不好,工作难找,毕业了就不再是一个孩子,而是一个有担当、有承担能力的男人。

前几年做PHP开发 2 年做到高级研发,3 年开始承担面试负责项目等等一系列工作。分享一下我的PHP学习路线:

PS:目前已转使用Lua/Go语言开发高性能项目

初级进阶阶段一

  • 掌握基本Html+Css语法,会用开源UI组件等等(必备,刚毕业一般都要前后端都会)
  • 掌握PHP基础语法、格式、数组函数、语法糖、上传下载、cookie | session配置原理、命名空间
  • 掌握mysql语法使用;会写原生sql、知道sql执行的先后顺序
  • 了解面向对象 | 面向切面的编程思想;(很多老框架是面向过程)
  • 了解redis | memcached基本命令和两者区别
  • 了解使用php框架,Laravel | ThinkPHP
  • 学会使用linux一些基本的命令

学习文档PHP官方文档英文 + 菜鸟教程中文

我非常建议初学者多看官方文档,最原生且可以锻炼英语能力;基本上涵盖了PHP的所有语法知识体系,当时教我的导师只推荐了官方文档手册和给了一个PHP的学习pdf。我自己的做法是:看一遍之后,我会自己写写小项目去使用;也就是要动手进行实践。

thinkphp框架在国内使用率太高了(当时大学时导师推荐学习),所以尽量选择ThinkPHP框架上手学习;之所以不建议使用Laravel入门是因为:语法糖太多、第三方类库太多、而且一些其他强大组件对新手来说难度较大;个人认为laravel稍微有点臃肿。尽量使用框架可以完整自己的个人博客系统。

中级进阶阶段二

php进阶

  • 掌握常用设计模式理念、代码规范
  • 掌握PHP常用的扩展实现原理和使用
  • 掌握PHP反射原理与使用
  • 熟悉使用正则表达式
  • 学会debug断点调试+做日志查询报错
  • 了解php-fpm概念和运行过程,学会对其调优
  • 熟悉http协议、tcp/ip协议
  • 熟悉composer安装第三方库,并且自己可以写一个类库
  • 学会使用swool+php编写聊天功能
  • 学会只用Fiddler、Charles、Whistle其中一个接口抓包工具

mysql进阶

  • 掌握mysql原生命令写法,不要过渡依赖工具创建表修改字段操作
  • 学会使用slow_log查看慢日志、explain关键分析sql性能,知道怎么调整sql语句,达到最优
  • 掌握mysql事务(原子性、隔离性、一致性、持久性)语法和实现原理
  • 了解mysql悲观锁乐观锁行锁表锁
  • 掌握索引,索引分类(主键、唯一、二级、全文、组合)、回表索引覆盖索引下推最左匹配原则
  • 熟悉mysql的常用配置项,如何配置主从同步集群原理

redis进阶

  • 掌握redis数据结构使用场景
  • 掌握消息队列发布订阅管道stream使用
  • 了解redis的事务AOFRDB原理和机制
  • 了解redis的主从模式哨兵模式集群分布式缓存

linux进阶

  • 学会自己能完整的部署一套lamp环境,且能运行自己博客系统
  • 掌握常用的文本分析工具:awkwcgrepsedsort、uniq等等命令
  • 学会编写shell脚本
  • 掌握查看资源进程相关命令:pstop、netstat、df -h、free -h等等命令
  • 掌握nginx的配置项含义,知道每一项是用来干什么的

高级进阶阶段三

php进阶

  • 拥有快速开发项目解决问题的能力,能带领小团队开发项目(管理能力)
  • 掌握高并发高可用高性能
  • 掌握nginx负载均衡原理、DNS轮询、l4、l7;正向代理反向代理、nginx高可用
  • 熟悉使用多进程进行项目编程
  • 熟悉socket编程,了解多路复用技术(select、poll、epoll);了解IO模型原理
  • 熟悉swool框架,在新项目可以使用swool作为主导
  • 掌握消息队列使用:kafkarabbitmqrocketmq其中之一,能够处理上亿级别消息,知道如何对消息队列进行监控,异常处理,且能够通过消息队列异步解耦项目功能
  • 熟悉elasticsearch搜索引擎,并且能够应用到项目上
  • 熟悉elk日志搜集系统整体的流程和来龙去脉
  • 尝试可以使用c进行编写php扩展
  • 精力充足的情况下学习其他语言:java、golang、python、lua、大数据,对他们要有一定了解或者能使用起来

mysql进阶

  • 索引调优,大表性能分析
  • 掌握分库分表方法:水平、垂直
  • 掌握主主、主从集群配置,知道如何解决主从的延迟问题
  • 对索引的实现、事务隔离的机制有一定的了解
  • 了解mysq的脏读幻读不可重复读
  • 熟悉mysql触发器、视图、存储过程的使用
  • 熟悉开源的mysql中间件和阿里的canal增量数据同步

redis进阶

  • 熟练使用redis的管道技术事务处理、分布式锁消息队列
  • 掌握一些冷门指令:bitmap(位图)、pub/sub(发布订阅)、Geohash实现原理、Stream(消息队列MQ)
  • 掌握redis+lua实现原子操作和脚本复用功能
  • 掌握redis集群部署哨兵模式实现,知道是怎么一回事
  • 了解AOF(Append Only File)日志RDB快照实现原理与算法
  • 可以试着去看redis源码(可惜,我没有看完)

下面是我相关redis文章:

linux进阶

  • 掌握nginx各种配置:配置https负载均衡正向代理反向代理;最重要的是openresty的配置nginx+lua
  • 掌握vim编辑器的命令和快捷键、crontab定时器
  • 熟悉文件管理权限配置用户配置软硬链接
  • 常用的命令一定到牢记:cat、more、lsof、tail、less等等
  • 了解编译原理、makefile、进程、信号知识点
  • 熟悉rpc的配置部署

PHP书籍

《深入PHP面向对象、模式与实践》

第三版:豆瓣评分8.2

深入PHP面向对象、模式与实践

作者是Matt Zandstra 从事互联网应用开发十余年,目前是雅虎公司工程师。这本书是在我在毕业不到一年我就买了,大概看了有5遍以上,整体给我的感觉就是内容比较细腻,基本上是循环渐进。内容主要为4个部分:面向对象、设计模式、企业模式和最佳实践;面向对象和设计模式可能会稍微好点,但是后面部分就会有点差强人意。不过总体来说想深入了解的,还是值得一买,毕竟不是很贵。

PS:相对 21 年来说,内容稍微过时了点。

Mysql书籍

《高性能mysql》

第三版:豆瓣评分9.3

高性能mysql

这本书是在 2016年9月份 某东购买的,内容太细了,也很厚。你读的时候会发现,越往后越深,最后会感觉自己成了一个DBA角色。涵盖知识面比较全,也算是陪伴我两年多的战友了。值得推荐一下

《深入浅出mysql-数据库开发、优化与管理维护》

第二版:豆瓣评分7.6

深入浅出mysql-数据库开发、优化与管理维护

这本书是我刚毕业10个月的时候同事推荐给我的;零基础学习mysql更友好,前半部分讲解基础知识,后半部分则会深入到底层实现;我看完这本书之后,感觉个人对mysql的认知增加了很多,视图啊、触发器、存储过程等等。可以说这本书带着我闯天下。

PS:不过这本书真的是太厚了,携带不方便,我一般做地铁会看书,但是这本书拿着好沉好重。并且感觉有点过时了。

《mysql是怎样运行的-从根上理解mysql》

豆瓣评分9.4

mysql是怎样运行的-从根上理解mysql

这本书是我 2021 年年初买的,当时只是在掘金小册上看过,试读了几个章节感觉作者真的是很用心设计本书的章节顺序(因为我不太喜欢读电子版的书籍)所以一直没买小册;但是知道作者出书之后的一个月我就去京东购买了这本书。现已看了三分之二。

作者的写作方式是:从现有的场景引出问题再到解决方案设计,循环渐进的揭开 mysql 的实现细节。很细腻的处理方式,作者会告诉你:”mysql是什么样子?遇到什么问题?如何解决问题“,一步步的道出其原理,是一本不错的书籍。而我在这本书上也学习了很多知识点,很多地方更是豁然开朗的感觉。

Redis书籍

《Redis的设计与实现》

豆瓣评分8.6

Redis的设计与实现

这本书大概是 2017 年上半年的时候买的,应该是我第一次买的一本 Redis 相关的书籍,不过很可惜,当时因为没有看完出去玩的时候给弄丢了。对于喜欢弄清楚Redis原理的可以尝试下,里面也有相关的源码解析;算是比较通俗易懂吧。

《Redis深度历险-核心原理与应用实践》

豆瓣评分8.4

Redis深度历险-核心原理与应用实践

这本书是在 2020年8月 买的,比较有意思的是都是在掘金小册看到的,但是我又不喜欢电子版,就去京东搜索看到后买的。作者钱文品,这个名字跟书籍一样,有文有品,外号老钱;接近250页的数据。我已经看了两边了,整体感觉就是作者的初衷不是想写redis的设计与底层,更像是通过实战的场景来告诉你应用。

以至于很多开发者认为这本书差劲、粗俗甚至垃圾;不过萝卜白菜各有所爱,虽然文中大部分都是浅出,但是主体内容还是可以的。

Nginx+Lua书籍

《Nginx+Lua开发实战》

豆瓣评分4.6

Nginx+Lua开发实战

这本书在 2020年2月 买的,因为我已经有了nginx+lua基础,买回来一看,好家伙将近600页。

这本书很多人吐槽,说是抄文档充页数、深度不够、更没有实战、太基础的东西。说实话我读了一遍之后确实也有这样的感觉,主要是卖的还特别贵。有基础的lua nginx直接忽略往后看,只能说是一个入门教程,可以带你了解nginx+lua一些相关原理和类库使用。

《OpenResty最佳实践》

《OpenResty 最佳实践书籍Markdown文档》

OpenResty最佳实践

这个站点由多年的技术积累做成的, lua基础到高阶再到openresty配置,到最后lua的高级类库和nginx_lua使用模块的。推荐学习

Pyton书籍

《Python编程从入门到实践》

豆瓣评分9.1

Python编程从入门到实践

这本书是在 2018年10月 某东购买的,花了一些时间看了这本书大概看了两遍;因为是刚入门,对于小白还是比较友好的,有python基础知识的朋友就不建议买了;python入门是比较简单的语言。本书籍针对刚入门开发讲解还是很不错的,但是针对当前python现在这个大家庭,这本书稍微有点落后了。

《Python基础教程(第3版)》

豆瓣评分8.2

Python基础教程(第3版)

我并没有买这本书,而是从同事那边借来看的,很遗憾没有看完,因为也是基础教程,所以没太有想看的欲望;就是看起来太枯燥了🤣 😂 😄 ;当时又不能用于实战项目,只能写一些脚本一类的,我就放弃去读这本书了。

linux书籍

《Unix网络编程-第2卷, 进程间通信(中文版)》

第二版:豆瓣评分9.3

Unix网络编程-第2卷, 进程间通信(中文版)

看评分、看评论,多的咱就不说了,作为后端开发这些还是必须要知道的知识;如果想要提升自身能力,对unix网络多了解,这本书真的要买来看看。虽说 2010 出版的,但是编程的总体思维基本是不变的。

《鸟哥的Linux私房菜 基础学习篇》

第四版:豆瓣评分8.4

鸟哥的Linux私房菜 基础学习篇

想要对linux多了解的,可以看看哦!小白都能看懂的书籍。

Go语言书籍

Go语言目前我还没有买相关的书籍,大部分是在网站上看学习:

《Go语言教程 | 菜鸟教程入门级》

《Go语言从入门到实战 | 教学视频》

《Go 资源大全中文版》

《Go语言高级编程》

《Go语言圣经中文版》

文档有点多哈,前人总结,后人乘凉;我们都是站在巨人的肩膀上学习,目前我没有学完,基本的入门和实战看完了。后面几个看了就犯困啊,目前公司用go封装了自己的框架,已经运用到项目中了。

算法

《算法图解》

豆瓣评分8.4

算法图解

反正我觉得我作为一个小白,还是能很容易接受的;但是依稀记得尴尬的是实例是python代码写的,那时候看很懵逼的,小白还是可以看看的。

想要精进的大佬看看下面这本书,无敌存在:

《算法(第4版)》

豆瓣评分9.4

算法

好书我真的不用再说了,看过一点,太干货了。个人感觉比《算法导论》会更友好一点,注重实践能力。

网络协议

《图解HTTP》

豆瓣评分8.1

图解HTTP

这本书对 HTTP 协议进行了全面系统的介绍,由浅到深非常适合入门小白,而且讲解生动易懂,书籍还配有一些图解案例,喜欢的可以入手看一看,扩展知识面。

《HTTP权威指南》

豆瓣评分8.6

HTTP权威指南

这本书到现在我都还没有读完过,太厚了,而且枯燥乏味,容易睡着;但是可以带你全面了解http,跟上面一本书可以任选一本读即可。我会选择《图解HTTP》就是因为它薄一些。

《TCP/IP详解 卷1:协议》

豆瓣评分9.2

TCP/IP详解 卷1:协议

这本书没的说,大家看豆瓣评分和评论就知道了,想要进大厂,这本书你不读一读,绝对亏死。

《TCP/IP详解 卷2:实现》

豆瓣评分9.1

TCP/IP详解 卷2:实现

😂 书籍厚的我无法呼吸,这本书完整而详细地介绍了TCP/IP协议是如何实现的,真的是不能详细的再详细了,想深入了解tcp/ip实现原理,请买一本看看,我不能保证你看着看着就睡着了

其他的书籍

《每天5分钟玩转Docker容器技术》

豆瓣评分8.5

每天5分钟玩转Docker容器技术

我依稀记得 2018 年时,我还在老东家,新来的同事非拉着我一起学习docker,一开始我是抗拒的;后面开小组分享会的时候他们在分享docker我也正式开始接触docker,中间断断续续学。看着菜鸟教程,然后看同事买的这本书,骨架清晰,篇幅简炼适合我这种小白。

《深入分布式缓存:从原理到实践》

豆瓣评分7.0

深入分布式缓存:从原理到实践

这本书 2019 年看的,总体来说是为了扩充自己的知识面;不管别人怎么评价,出发点是不一样的,各取所需;有喜欢的小伙伴可以试一试!

晒一晒我自己买的书籍和读过的书籍,有些书籍遗留在了郑州和上海(实习郑州,毕业的时候去了上海,随后辗转广东),个人不喜好看电子书所以很少推荐电子书。视频看的最多的是 韩顺平老师的PHP从入门到精通、java入门到精通等等一系列。部分书籍还在公司,现在在家居家隔离上班

公司同事的书籍

广东漂泊时买的各种书籍,这些是在我的桌面上,还有一部分在压箱底😂 😂 😂 : 我的书籍

这是我当时看同事的书籍拍的照片:

深入分布式缓存:从原理到实践

问题解答

如何走出迷茫期

说实话作为一个 4 年多开发,我也不能妄自菲薄,不过可以谈谈我自己是如何走出 1 年、 3 年困惑期,迷茫期:

当时刚刚毕业一年的时候,偶然间去参见了一个技术讲座作为一个旁听者,参加讲课的大都是:华为PHP开发者、腾讯技术大佬、阿里的java大佬,但是在讲座结束之后,我不禁的陷入沉思;因为跟他们比起来我好像什么都不会,很渺小,知道的太少太少,我压根不敢跟他们交流,只是坐在一个角落里旁听,加上在公司各种被说技术菜鸟,从那段时间以后,我整天就有点萎靡不振,不知道自己要干嘛,又总想做点什么,期间一直浑浑噩噩,也想过放弃转行。我这意思到自己进入了迷茫期,我是这样走出来的(来源于跟一位阿里大佬交流心得):

  • 调整自己的心态平衡,一直告诉自己还年轻还可以学习,毕竟自己才毕业一年
  • 当我们处在迷茫期时,不知道要干什么,甚至职业规划也不晓得怎么做的时候;什么都不要做,待在原本岗位,继续做自己分内的事情,一段时间后你一定会有所不同
  • 一定要耐得住寂寞,学编程、提高技术能力,本身就是一个迭代过程,也是一条寂寞的历程
  • 职业规划不清楚的时候,按照原本的路线继续前行就是
  • 自卑源于心里作用,技术高低只是一时,路还很长,继续努力便是;毕竟不是谁一出生,就是计算机大佬

学习方式

我认为看什么书籍、文档、视频不是那么的重要,重要的是你看的时候对于知识的吸收和理解;你会发现你身边会有这些人,别人只看了一遍的文档或书籍,别人直接上手实战了,而你却要花费很长时间才能够上手;你也会注意到:同样的一个知识点,你跟别人的表达和分析却大相径庭。然后你在心里会很羡慕别人,为啥别人啥都会,我不会?久而久之你就变得内心自卑,没有底气。

其实这一切你自己都可以通过自身的努力解开:

  • 人跟人不同:一定要知道人跟人肯定有差别,要不然怎么会有普通本科和211、985院校的区别,我都认命了
  • 学习方式不同:别人学习不只是看,而是在看的时候脑海就在过代码案例,去思考遇到的问题
  • 学习深度不同:别人会在你休息的时候去看源码,然后走一遍实现原理
  • 动动你的小手,光看不练假把戏;古人已经告诉我们了
  • 最重要的:要学会付出,不能只求回付不付出行动。多花费一些实践去研究去实现功能

比如我学习lua到做项目:只用了三天时间

晋升晋级

大家不要慌,我也有过这样的尴尬场面,晋升不给晋让你晋级,要知道两者之前不单单是 rmb 的差距,更是对你技术的认可。我是这样做的:

  • 日常需求开发,做的需求是比较多的,重要功能模块较多
  • 遇到了新技术对项目性能有帮助的,会本地测试环境实践,然后跟领导聊一聊,能用到线上就是加分项
  • 你引进的技术一定是能对项目产生影响的,例如:引入rabbitmq消息队列解决亿级别数据异步解耦,引入swool+php做微服务项目;再例如引进go语言、lua语言做高性能web项目,提高并发性能
  • 学会交流、分享你的技术点

这是我自己所经历的一些,也许只是片面之词。这里也只是列表其中一部分来说事情。要记住:安安稳稳每天写需求很难提升自己和进阶自身水平,要不断的去接受新的挑战,这样才能利于自身发展。

结语

好记性不如烂笔头,厉害的大佬都不是简简单单的看个文档、看个视频、看本书就可以了;而是通过在实际的项目中引用实战,才成长起来的。

好啦,我是阿沐,原创不易,鼓励笔者创作更好的文章,请来一个三连赞!!!

分类:
后端
标签:
分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改