【置顶】未来学习计划

本文最后更新于 4 天前

前言

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

Go 学习前言

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

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

  • 2、高性能 API 工具开发

  • 3、服务器端开发

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

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

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

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

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

而本博客,主要为梳理 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、RocketMQ;

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

3)web 框架:gin、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 年) 能独立完成任务((已于2023年达成升职达到此层级,未来目标 p7)

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 基础:数据结构、操作系统、计算机网络。

2、Java 企业级开发框架

首先肯定是 Java 基础,之后就是上框架 SpringBoot、 SpringCloud 组成的单体与微服务的架构,中小型公司基本上以此两种框架为主流。

当然也有 solon 等国产化的后起之秀,但是在技术选型上需要进行权衡,比如人员的学习成本、后续排查问题的成本,如使用的话需要考虑好。

而后需要进行理解的就是框架中使用的技术组件:jpa、mybatis

此处也推荐 Java 社区中比较活跃的脚手架

  • 1、ruoyi-vue 脚手架,最经典的脚手架,会教会很多技术组件的使用、业务相关的理解:如权限管理、多数据源、定时任务、代码生成器等。
  • 2、yudao-boot 脚手架,基于 ruoyi-vue 脚手架进行二次开发,会进一步理解好的企业级脚手架是如何建立,集成度较高,适合快速进行业务开发与使用。

3、基础设施中的中间件

1、负载均衡中间件:Nginx、Nacos、ApiSix、Kong、Envoy 等

2、数据库中间件:Mysql、PostgreSQL、Sqlite、MongoDB、TiDB、OceanBase、ElasticSearch

3、缓存中间件:Redis、Memcache、Tair、Codis

4、消息中间件:RocketMQ、Kafaka、RabbitMQ

精通与熟练都是需要时间进行打磨,高级程序员、架构师的要求也是不仅局限于使用的层次,到底层技术细节实现的理解也一直比较重要,技术能力的提升与理解都是在不断的学习中进行的,也如大厂晋升指南中体现:


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