【置顶】未来学习计划

已经掌握的知识,必须要及时进行复盘与总结,并且进行文字化的输出!

这样许多的问题就能刻入自己的骨髓,不会轻易忘记!

Go 学习前言

Go 语言的应用场景有许多,但是语言主要的优势在以下三大块:

1、云原生 (微服务 + DevOps + PaaS 等中间件)

2、高性能 API

3、服务器端开发

如果职业方向是往以上几个方向发展,那么 Go 语言的学习是至关重要的,市场上初步的任职要求如下:

编程语言: 使用 Go 独立实现一套完整的 Web 服务器

基础知识: 操作系统 / 网络编程 / 数据结构与算法等

常见中间件: MySQL / Redis / Kafka / Nginx等

软技能: 学习 / 沟通 / 抗压 / 解决问题的能力

而本博客,主要为梳理 Go 语言需要掌握知识的细节,以及作为一个刚入行的 Go 新人,需要积累的知识。

1、目前掌握的相关知识

  • 1、Go 基础: 关键字、常量、变量、数据类型、数据结构、流程控制、函数、方法、协程、通道。

  • 2、GMP 模型基础: 包括早期的 GM 模型,以及后期的 GMP 模式设计方法、调度机制等

  • 3、GC 基础: 包括标志清除法、三色标记法、插入写屏障、删除写屏障、混合写屏障。

  • 4、go 语言一些常用包:net/http、sync 等

2、目前的学习计划

  • 1、Go 语言并发编程(鸟窝大佬的极客时间专栏,常见的并发原语:Mutex、RWmutex、Once、Map、WaitGroup、channel 等)

  • 2、Go 内存逃逸、GC 的优化问题、熟练使用 go trace(查频繁的 GC)、pprof(内存泄漏、CPU 过高、程序慢、锁竞争、程序阻塞)。

  • 3、Go 技术栈常用的组件: grpcprotobufPrometheusistio

  • 4、学习云原生开源组织的相应的技术分享。

3、Go 服务器开发自我总结

1、工具

1)语言:Go, SQL, JS;

2)IDE:Goland、VScode;

3)版本管理工具:Git、SVN;

4)依赖管理:go mod;

2、生态

1)消息队列:kafka、RabbitMQ;

2)存储:MySQL、Redis、Mongodb、PostgreSQL;

3)web 框架:gin、beego、goframe 等;

4)微服务:go-zero、go-mirco、go-kit 等;

3、容器

1)Swarm (docker);

2)K8S (基本一统江湖);

4、原理

1)通识的 Go 语言原理:GC、GMP、runtime 等;

2)中间件的原理:主要看业务需要。

4、学习方式

主要推荐我旁边的推荐博客:

1、基础推荐七米老师的博客

2、进阶可以看极客兔兔的博客、鸟窝大佬的博客。

3、追求硬核理解的可以看面向信仰编程作者的博客!

5、技术写作规范

详细参考阮一峰的写作规范,个人觉得让他人拥有良好的阅读体验也是软技能之一!

6、晋升分解法

1、目前自己定级 P5 中级(工作 1 ~ 3 年)需要别人带领自己达成任务

2、下一级 P6 (工作 3 ~ 5 年) 能独立完成任务

3、需要专项提升某一项技能的能力,资深技术专家建议:持续花 6 个月时间进行专项提升。

4、比如现在主要提升 Mysql 与 PostgreSQL、Redis 与 Memcache 的技术水平。计划大致如下:

5、Mysql 与 PostgreSQL

1、1.5 个月:(已经完毕!)学完 bilibili SQL进阶课程、通读 High Performance Mysql。

2、3 个月:github 大神的 PostgreSQL 修炼手册学习

3、1.5 个月:实战 Mysql 与 PostgreSQL

6、Redis 与 Memcache

1、1.5 个月:(已经学完!)学完 bilibili redis 基础 + 进阶课程,建立一个完备的 redis 知识体系

2、3 个月:通读+学好 Redis设计与实现 (蓝书)

3、1.5 个月:实战 Redis

7、除此之后,TDD 学习要进行 Java 的学习,除此之外,就是多用 Go + Python 语言,课程 Go + Python 双语言开发 也很好。


Java 学习前言

因为工作后需要,开始转变方向为 Java,但是 go 的学习也不会停止!

转方向为 Java 后,所需要学习的业务中间件远超 go 语言,相应的框架也是如此,不过 Java 技术栈更新也不会太快。

经历一段时间的工作后,自己的人生状态也发生相应的改变,首先需要将自己的业务技能锻炼强。业务能力不等于技术能力,比如业务流程、沟通流程,比纯粹技术性的学习要强很多!

1、Java 基础

Java 基础不是语言类的基础,本次的 Java 基础主要是为了跟 SpringCloud 做区分,比如 JUC 、Spring、Mybatis、SpringMVC、SpringBoot 都是属于 Java 基础,因为这样的东西才构成了 Java 整个语言的生态体系,叫做基础。

而且 408 中有三门课程也是属于 Java 基础:数据结构、操作系统、计算机网络。都是对 Java 基础有重要的支撑作用的。

2、Spring Cloud

首先肯定是 Java 基础,之后就是上框架 SpringBoot + SpringCloud 组成的微服务的架构,体量绝对是足够的。

Spring Cloud 也包含许多组件,不是特别需要说明的都在此处举出:

nginx、SpringCloud GateWay、nacos、RPC、oauth2 等等。

3、Message Queue

ActiveMQ、RabbitMQ、RocketMQ、Kafka

目前主攻研究 RocketMQ,提升自己以及团队的研发能力!

4、 ELK

ElasticSearch + Logstash + Kibana 组成的经典的业务日志管理集群


【置顶】未来学习计划
https://chaggle.github.io/2022/03/05/plan/
作者
chaggle
发布于
2022年3月5日
许可协议