背景:
这个文章就当总纲看吧,没什么内容,大概是我的一个学习计划
首先,该文章是我希望大二暑期能够找到Go后端开发岗位实习机会,结合boss、2024版go学习路线以及我一个go萌新的现有技能做出的大约四个月时间掌握开发技能的规划。随后我也会做一下自己关于这些技术栈的学习笔记,希望各位大佬多多分享学习资料,写的不对的地方还望多多纠正。
为什么是Go:
-
作为一个没有审美的工科生,我认为前端开发真干不了一点。前端对我而言是一个需要了解和会使用简单框架的了解向技能,大约掌握一下三件套、vue和如何和后端交互就差不多了。
-
对于开发岗位而言,我个人认为本科阶段就业或者企业实习,后端开发岗位都是性价比最高的岗位。在后端岗位中我了解到的go后端开发相对而言需求量和内卷程度都是适中的。
-
结合我个人写的一些Java和go代码,我认为go语言是更好上手和理解的。我个人浅显理解,Java好比是一个严谨的组织结构,每个类和方法等都可以画出清晰的结构图;而go就好像是搭积木,无论是接口或者"类",都可以使用简单的结构体来实现,需要属性就新建属性,需要方法就绑定一个新方法,就像搭积木一样。
-
然而,相比于Java成熟的体系,基本要学的每一项技术栈都有一个或者多个优秀的教程,go的资源可能就很有限了,这也是学习Golang不太爽的地方。
技术栈:
我认为需要学习的技术栈大致分为一下几类(不分先后):
开发项:
- 基础编程: 这一块主要是Go的基础语法以及Gin框架的简单使用,算是入门内容了。我认为这个大概做一个go的xx管理系统就大致过关了,可以看一下我之前写的Gin项目
- 网络编程: 主要是TCP/IP协议的使用,这个基本上实习岗位都会要求的。
- 并发编程: 这一块我认为需要大概了解一下如何开辟go协程,大概就是写一些锁。我认为这部分仿写不难,但是理解清楚如何设计是很重要的(建议多画图),这个看一下刘丹冰老师的8小时转职课后面的项目就好
- 数据库: 这个主要是Mysql和redis,其他一些DB据我的了解掌握这两个就很好上手。而go为这两类数据库提供了Gorm框架,直接搜文档cv就可以(不过感觉底层还是了解一下为好,我是找了Mysql技术内幕和Redis实现原理两本书看)
会使用项:
- 操作系统: 会用Linux,会在云服务器上部署项目感觉就差不多了
- 微服务: 很多时候要求的是“理解微服务结构”,我个人了解很少,只是会用grpc,我感觉找第一份实习的话这个其实要求并不高(乱说的啊)
- 工具: 会使用K8s和docker感觉也是很多岗位的要求,不过这个要求也就是会用即可
加分项:
- 大数据: 这个其实是整个后端开发的加分项,刚好寒假的字节青训营有这部分的课,我学了之后写一写学习笔记吧
- 云原生: 就像使用go的第一个程序是聊天程序一样(最有特点),云原生绝对是go的一个热门应用
- IM即时通讯: 这个我不太了解
学习资料
这个是牛客网给的学习路线:
基础语法
- 基础内容建议看一下刘丹冰老师的八小时转职go的课程;李文塔的《go语言核心编程》也是一本很好的入门书
- 几个经典的包也要看一看(runtime sync net io time reflect)这个看go语言中文文档就好(我接下来也会出一下自己对方法的总结和理解)
- Gin框架,这个我感觉做项目是最直接的方法,这是我写的一个小项目
数据库
- 数据库的内容建议先学习Gorm框架
- 之后尝试搭建一下redis的环境,简单操作
- 接下来就是看Mysql技术内幕和Redis实现原理(其他书也是可以的),了解一下底层的原理
并发
- 这个我觉得就是先做(抄)一个聊天类的项目
- 然后自己画出来这个程序信息的传输路径,这样最清楚
网络
- Tcpip这个我之后出一下自己的学习笔记(感觉这个也是了解底层的)
- http感觉也是要学的
面试
- 这个可以找一些面经,或者刷一些b站上几面几面的短视频,不过这个不着急,先把基础内容学会再看