来了!!最新《Go学习路线图》及就业准备

2023年 12月 18日 74.3k 0

前言

下面是Go学习路线思维导图,我将整个roadmap分成了七个部分,由浅入深分别是:语法、日常开发、web、分布式、其他组件、项目、就业进阶。

Go语法

和其他语言一样,Go也需要从基础开始,它的关键字比起其他语言的关键字少很多,一共只有23个。在接触完变量声明、流程控制、循环控制、各类数据容器之后就掌握了Go语言的基础。

之后可以从函数、方法、结构体开始深入学习,在接触标准库之后进行并发编程和网络编程的学习,尤其是并发编程需要深入理解与学习,因为Go本身就以并发方便著称,只需要一个go关键字就能开启一个goroutine。再学习Go的包管理以及测试相关的内容作为补充,整个学习路线就算是完成了。

就业还需要学习Go底层相关的内容,比如常问的各类包:反射、unsafesync、锁、slicemapwaitgroupchannelcontextgc、内存分配等等内容,一定要深入底层,深入源码级别的学习。

日常开发工具

  • Linux常用命令:因为后台开发人员通常都是使用的Linux服务器,所以常见命令必须得熟悉,学有余力的话还可以了解一下Linux的设计与实现,比如Linux中的进程线程调度、内存管理等等。
  • Git:分布式代码管理工具,多人协作开发通常都会使用到Git。
  • Markdown:一种简单明了的文本编辑语法,通常我们可以使用简单的工具例如Typora、语雀来编写Markdown文档。
  • 环境:一个方便的Go开发环境,推荐Goland

Web

首先要了解HTTP协议相关内容,比如几种HTTP请求类型,RESTFUL API风格、HTTP HeaderHTTP Body相关内容。然后通过原生的net/http编写简单的服务端代码。

完成以上步骤之后可以学习用途比较广泛的web框架:gin或者hertz,以及常用的orm框架:gorm,其他的常见第三方库可以按需学习,例如日志库zap,配置文件库viper等等。

分布式与微服务

Go语言以并发简单著称,所以面试中问及分布式的概率会比其他语言更多一点。入门分布式首先推荐了解一些分布式理论,如:CAP理论,PACELC理论,NWR理论,多数派理论等等,在了解完基础理论之后阅读Raft算法论文以及Gossip协议等分布式一致性算法,除此之外还可以学习MIT 6.824课程,这也是入门分布式最经典的课程之一。

分布式领域内容非常繁多,如分布式事务,RPC,分布式组件等等。推荐大家先从原生的net/rpc入手,了解什么样的方法才是Go语言中的一个合规的RPC处理方法。然后继续学习gRPC协议以及protobuf数据格式、以及Go的微服务库go-zerogo-micro等,相比之下go-zero使用的更多一点,它也不仅仅是一个微服务库,更像是一个工具库,内容庞大,功能繁多。

各类组件

存储

关系型数据库和非关系型数据库都必须了解,其中最具代表性的当属MysqlRedis,除此之外,根据需要还可以选学其他的数据库,如搜索数据库ES、文档型数据库MongoDB等等。

MQ

当前市面上也有着各种各样的MQ,用的最多的应该是Kafka,同时Pulsar作为新一代云原生消息队列,也具备自己的优势,例如数据冷热存储,死信队列等等机制。NSQ是一个由Go语言开发的轻量级消息队列,有需要的同学也可以进行学习。具体情况按需学习。

云原生组件

Docker:容器领域龙头,提到容器我们第一时间都会想到Docker

Prometheus:监控领域龙头,性能非常强大,能够支持各类常用指标以及自定义指标,通常配合Grafana看板进行使用,方便查看项目状态。

Kubernetes:容器编排领域龙头,用于管理成千上万的容器实例。

最关键的是这些云原生组件都是使用Go语言编写,Gopher能很轻松的看懂这些组件的源码,这也是Go语言被称为新时代云原生语言的原因,几乎所有的CNCF(云原生基金会)的项目都是由Go进行开发的。

项目

在校生推荐简历上放三个项目,web、分布式微服务、轮子。

其中微服务项目可以是重构自己的web项目,然后加上上述提到的组件,比如MQDockerPrometheus等等,成为一个比较有竞争力的项目。

这部分之后我会在掘金同步自己最近做的项目,并且之后会使用微服务进行重构+接入DockerPromtheusKubernetes等等,想要跟做的朋友欢迎关注,每周大概两到三次更新。

项目预览

项目概述

本任务管理应用的目标是实现一个简单计划表(todo-list),使用户能够有效地管理他们的任务。

通过采用前后端分离进行开发,后端使用Gin+Gorm+MySQL的方式实现,前端通过Vue进行实现。

项目的主要面向对象是Go初学者以及其他语言转Go的开发者,以及想要往全栈发展的小伙伴们。

后续会使用微服务重构该项目,并加上Prometheus、Kubernetes等常见云原生组件,成为一个竞争力满满,可以写进简历里的项目,敬请期待,欢迎点击关注。

功能描述

  • 用户管理接口:
      • 注册:用户可以通过提供必要的信息进行注册。
      • 登录:注册用户可以使用他们的凭据登录系统。
      • 编辑个人信息:用户可以在系统中更新和编辑他们的个人信息。
      • 注销账户:用户可以选择注销账户,删除相关数据。
  • 任务管理接口:
      • 添加新任务:用户可以创建新的任务并指定相关信息。
      • 查看任务详情:用户能够查看任务的详细信息,包括创建时间、截止日期、状态等。
      • 编辑任务信息:已创建的任务可以被编辑,用户可以修改任务的所有信息。
      • 删除任务:用户有权限删除任务,以便及时清理不再需要的任务。
      • 嵌套任务:每个任务可以有自己的子任务,子任务下又可以有更小的子任务
  • 任务排序和分组:
      • 任务排序:用户可以根据时间和任务优先级对任务进行排序,以便更好地管理任务列表。
      • 任务分组:用户可以选择按照时间或标签等维度对任务进行分组,提高任务的组织性和可读性。
  • Markdown编辑器:
      • 集成MarkDown编辑器:为任务详情提供MarkDown编辑器,使用户能够以更富有表现力的方式描述任务。

    技术栈

      • Go语言:提供高性能、简洁的后端开发语言。
      • Gin框架:轻量级Web框架,适用于构建快速的API。
      • Zap:高性能的日志库,用于记录系统运行时的事件。
      • Viper:用于读取配置文件,方便灵活地管理应用配置。
      • MySQL:作为后端数据库,持久化存储用户和任务信息。
      • Docker:进行虚拟化部署,简化项目的部署和环境管理。
      • Prometheus+Granafa:进行项目的指标监控,配置看板方便观察。
      • Kubernetes:部署在Kubernetes上,通过HPA来提供高可用性。
      • Markdown编辑器:集成MarkDown编辑器,提供良好的任务描述体验。
      • Vue:构建前端用户界面。

    学习收获

    通过参与这个项目,学习者将获得以下技能和经验

    • Go语言的后端开发经验,包括API构建、认证和数据库集成。
    • 使用Vue构建灵活、响应迅速的前端应用。
    • Docker、Prometheus、Kuberentes相关知识,熟悉对应的云原生组件开发。
    • 配置管理和日志记录的实践经验,提高对生产环境的应用监控和维护能力。

    这个项目将帮助学习者全面掌握前后端开发的基础知识,并为实际应用提供了一个完整的综合项目经验。

    就业进阶

    上述内容都是偏向工程、开发与实战的,即干活能力;但是就业不止要求这些能力,对底层知识的了解(八股文)也有要求。

    数据结构与算法

    算法在面试中的比例也在逐年提高,现在面试如果做不出算法,除非是表现的非常优秀,不然都是直接挂。这里推荐首先了解一下常见的数据结构,然后手动实现一遍,之后刷常见题库就行了,推荐力扣 hot 100codeTop

    计算机基础

    四大金刚:计组、计网、数据结构、操作系统。这些里面的知识最好是自己先学一遍,有自己的理解,在面试之前再刷一遍面试题,问题就不会很大。不推荐背八股,这样无法和其他候选人区分开,一定要有自己的理解。

    其他底层

    简历中写到的组件的底层都得了解,比如简历上有MySQLRedisPulsar相关内容,那么这些组件的特性、底层实现都要进行了解,如果只知道皮毛不如不写到简历上。

    结语

    本文向大家介绍了Go语言学习路线与就业准备,后面会持续分享项目相关内容,感兴趣的朋友欢迎点赞、评论、收藏、订阅,您的支持就是我最大的动力。

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论