本项目旨在指导程序员们如何从基础开始系统的学习 Go 语言,并学习开发时所需知识点。
Go 是一门非常容易上手的语言,语法简洁,代码易读,如果你有常用语言的基础,那看一本Go 语言圣经后便可上手开发业务代码。
本项目不是博客,一个问题不会讲的特别细致,如果想要更加深入的了解某个知识点的话,建议使用搜索引擎去搜索经典博客加深理解,项目中也会推荐一些好的文章供参考。
本项目更加看重的是对于知识点系统的一个总结,能够通过一句话,一张思维导图来把一类知识进行讲解,这样在面试前把所有的思维导图都过一遍就快的吸收知识点,平时空余的时候拿出思维导图进行复习也能加深理解。
作者通过该学习笔记,拿到过腾讯云,金山办公,青藤云,神州数码等云相关企业 offer,工作岗位是 Golang 服务端开发。
对于一个新的知识点,我一般是这样结合思维导图来学习的:
- 找到一个比较详细的资料,例如博客,书籍等,如果在 baidu 上面搜不到易读的内容(可能性较大),可以尝试用 bing 看看英文的资料,能够翻墙的可以使用 google。
- 通读全文,将每一个陌生的专业词汇记录下来,用于更进一步的学习,逐步发散,逐渐扩充自己的知识库。
- 捋清文章脉络,找到每个章节的核心概要,将概要记录到思维导图子标题上。
- 遍历每个概要,逐步下沉概要里的各个关键知识点,记录到思维导图。
- 比对文章内容和思维导图,确认没有遗漏的知识点。
- 经常回顾记录的思维导图,用于加深知识点的记忆。
- 用持续进步的角度审视所记录的思维导图,思维导图不是标准答案,只是你对一个知识点的总结,不一定是绝对正确的,可以持续优化,持续总结出更好的内容。
- 思维是抽象的,网状的,不是线性的,很多较难的知识点如果用一句线性的语句来描述会非常的难以理解,所以要将重难点内容解析成思维导图,要习惯这种思维模式,这样才算真正的理解了思维导图的作用。
Golang |
Linux |
数据结构 |
算法 |
设计模式 |
网络 |
Kubernetes |
Docker |
leetcode |
Kafka |
redis |
mysql |
Elastic |
Golang 语言的学习可以分为以下方向:
- 基础:开发核心能力
- 高级机制:线程调度,垃圾回收等,进阶的面试经常会考
- 源码解读:对 Golang 加深理解,进阶开发有帮助
- 常用框架:对生产开发有帮助,可以简单了解下,在技术选型的时候可以快速做出判断
学习目录如下:
- 基础
- 进阶
- 深入 Golang sdk 源码
- 拓展 zap
- 拓展 grpool
- 面试题
Golang 常用在微服务,分布式场景,不经常用于较大的业务场景中。
常见的如开发一个微服务,部署到阿里/腾讯/华为云中,或者云原生自建的 Kubernetes 里,这个时候就需要学习并精通 Kubernetes 相关的知识。
很多企业在自建云,或者做云原生的转型,部署服务会逐渐的使用 Kubernetes,而放弃之前的物理机,虚拟机部署模式。所以面试的时候问到 Kubernetes 是比较常见的。
学习目录如下:
- Linux 命令大全
- Linux 教程
- Linux 文件操作
- Linux inode详解
- Linux 监测系统
- Linux 抓包工具tcpdump详解
- Linux tcpdump命令详解(转)
- Linux tcp分析命令ss详解
- Linux curl命令详解
- Linux namespaces 命名空间
- 面试题
- 专业博客
- mysql InnoDB 体系结构
- mysql InnoDB 主从复制
- mysql InnoDB 索引
- InnoDB 锁和事务模型
- Mysql常用工具
- TCP-IP 详解:链路层
- TCP-IP 详解:IP 网际协议
- TCP-IP 详解:ARP 地址解析协议
- TCP-IP 详解:RARP 逆地址解析协议
- TCP-IP 详解:ICMP Internet控制报文协议
- TCP-IP 详解:TCP 传输控制协议
- grpc:grpc简介
- 面试题
- 链表
- 哈希表
- 动态规划
- 树
- 栈
- leetcode-15-三数之和
- leetcode-27-移除元素
- leetcode-56-合并区间
- leetcode-164-最大间距
- leetcode-922-按奇偶排序数组2
- leetcode-976-三角形的最大周长