咨询课程
如果你想学习一门既简洁高效、又支持高并发编程的编程语言,又想要掌握一定的后端技能,那么Golang是一个非常优秀的选择。当然,对于市场竞争激烈的高级职位,还可能需要具备团队管理和项目管理经验,以及对新技术的敏感度和学习能力。
以下是市场对Golang开发的基本要求,你都达到了吗?
熟悉Golang语言的基本语法和特性,包括并发编程、垃圾回收、数据类型和性能优化等方面的知识
掌握常见的Golang框架,例如Gin、Beego、Echo等
熟悉Golang在云计算、分布式系统和网络编程中的应用,具备一定的系统架构设计和开发经
熟练使用Golang与数据库交互,包括mysql、mongodb等。
熟练使用Golang的测试工具和开发工具,如go test、go fmt、go vet、Goland等。
对Docker容器和Kubernetes容器编排有一定的了解。
了解常见的微服务框架,例如gRPC、Go Micro、Istio等,具备微服务的设计和实现经验。
如果你没有后端工作经验,或者平时的学习中没有机会接触到过后端设计和开发,想要补充相关知识点储备和业务了解
如果你刚刚开始工作,但是觉得知识Golang知识不够体系化,基础不够扎实,包括但不限于在校生、应届毕业生,无论你是否自学过,Golang基础课程都适合你。
如果你是其他编程岗在职,想过快速建立知识Golang知识体系,那么这门课程适合你。
01丨老师介绍
孙雨老师
前字节跳动资深Golang工程师,云原生架构师。至今是云原生架构师,开发语言涵盖Kubernetes、Docker、Istio、Apisix、MySQL、Redis 等多种后端技术,在云原生与后端中间件领域有丰富经验。
点击下方卡片,立刻预约
02丨课程特点及优势
全面性:
该课程涵盖了从Golang基础到进阶知识,再到Web开发、容器化和微服务开发等高级内容,让学生掌握Golang在各种应用场景下的最佳实践
实践性:
采用微项目实战的形式,让学生通过实际开发各种简单需求的应用来巩固知识和技能,培养解决问题的能力,提升自己的职业竞争
前沿性:
将会介绍最新的Web开发、容器化和微服务技术,如Docker、Kubernetes、gRPC和RESTful API等,为学生提供学习和实践的最新方向
深度:
课程注重深入理解Golang语言和相关技术,包括语法、并发模型、数据结构和算法等方面,可以提高学生的编程水平和实践经验
贴近实际:
课程里的案例和项目都来自于实际应用场景,让学生能够更好地理解Golang语言和技术的实际应用,并且在工作中运用。
03丨课程前置要求
编程基础:
掌握至少一门编程语言的基础语法、数据类型、流程控制、函数、面向对象编程等知识。
计算机基础:
一定的计算机基础,包括了解计算机系统的组成、操作系统的基本原理、网络协议等内容。
04丨课程大纲
Golang基础篇
历史和背景:
● Golang 的发展历史和背景介绍
● Golang 的优势和应用场景
语法和数据类型:
● Golang 的基本语法规则
● 常量和变量
● 数据类型
(整型、浮点型、复数、布尔型、字符串)
● 类型转换
数组、切片、映射:
● 数组的定义和使用
● 切片的定义和使用
● 切片的增加、删除和修改
● 映射的定义和使用
● 映射的增加、删除和修改
流程控制语句:
● 条件语句 (if、switch)
● 循环语句 (for)
● 跳转语句 (break、continue、goto)
函数和方法:
● 函数的定义和使用
● 函数的参数和返回值
● 可变参数函数
● 方法的定义和使用
● 方法的接收器类型
(值接收器、指针接收器)
面向对象编程:
● struct 和 method
● 什么是 struct,如何创建和使用它
● struct 的方法,如何定义和使用它
● 值接收器和指针接收器的区别
● 结构体的匿名字段
● interface、嵌套与组合
● 什么是 interface,如何定义和使用它
● interface 的嵌套和组合,实现和使用它
● 接口的类型转换和类型断言
● 继承与多态
● Golang机制,使用组合实现类似的效果
● 基于 interface 的多态实现
错误处理和异常机制:
● panic 与 recover
● panic 和 recover 的作用和机制
● 如何正确地使用 panic 和 recover
● 常见 Golang 错误处理库
● errors 包
● log 包
● fmt 包
● github.com/pkg/errors 包
● 错误处理最佳实践
● 错误类型的设计和使用
● 错误处理的策略和技巧
● 错误处理的代码实践和经验
包管理和依赖管理:
● 了解包的概念和作用
● 熟悉包的设计与封装规范
● 理解包的导入与导出规则
● 学习使用go modules进行包的管理
● 掌握依赖管理的基本概念与实践方法
并发编程和协程机制
● 了解并发编程的概念和优势
● 熟悉Goroutine的概念和使用方法
● 掌握Channel的概念和使用方法
● 理解Select语句的使用场景和应用方法
● 学习使用context进行上下文管理
● 掌握sync包的常用工具
如Mutex、WaitGroup、Cond等
内存管理和垃圾回收机制:
● 理解Golang的内存管理机制
● 学习如何进行内存分配和释放
● 了解垃圾回收机制的基本原理和实现方式
● 掌握如何调整垃圾回收机制的参数
以及如何进行优化
Golang进阶篇
错误处理和异常机制:
● panic 与 recover
● panic 和 recover 的作用和机制
● 如何正确地使用 panic 和 recover
● 常见 Golang 错误处理库
● errors 包
● log 包
● fmt 包
● github.com/pkg/errors 包
● 错误处理最佳实践
● 错误类型的设计和使用
● 错误处理的策略和技巧
● 错误处理的代码实践和经验
包管理和依赖管理:
● 了解包的概念和作用
● 熟悉包的设计与封装规范
● 理解包的导入与导出规则
● 学习使用go modules进行包的管理
● 掌握依赖管理的基本概念与实践方法
并发编程和协程机制:
● 了解并发编程的概念和优势
● 熟悉Goroutine的概念和使用方法
● 掌握Channel的概念和使用方法
● 理解Select语句的使用场景和应用方法
● 学习使用context进行上下文管理
●掌握sync包的常用工具,
如Mutex、WaitGroup、Cond等
内存管理和垃圾回收机制:
● 理解Golang的内存管理机制
● 学习如何进行内存分配和释放
● 了解垃圾回收机制的基本原理和实现方式
● 掌握如何调整垃圾回收机制的参数进行优化
标准库和常用第三方库:
● fmt包:格式化输入输出
● os包:操作系统接口
● io包:输入输出
● bufio包:缓冲输入输出
● net包:网络编程
● http包:HTTP客户端和服务器
● encoding/json包:JSON编解码
● time包:时间和日期处理
● sync包:并发编程
网络编程和IO操作:
● TCP/IP协议栈基础知识
● OSI七层模型和TCP/IP四层模型
● TCP和UDP协议的区别和应用场景
● HTTP协议和HTTPS协议的区别和应用场景
socket编程:
● socket概述和基本原理
● 套接字类型和地址族
● TCP套接字编程
● UDP套接字编程
● HTTP协议的套接字编程实现
加密和安全编程:
● 加密基础知识
- 加密和解密
- 对称加密 vs 非对称加密
- 密钥和证书
- 数字签名
- SSL / TLS协议
● 常见加密算法与使用
- 对称加密算法:如AES和3DES
- 非对称加密算法:如RSA和ECC
- 哈希算法:如SHA256和MD5
- 数字签名算法:如DSA和ECDSA
数据结构:
● 数组(Array)
● 栈(Stack)
● 队列(Queue)
● 链表(Linked List)
● 哈希表(Hash Table)
反射:
●反射概述
●反射类型
●获取Value和Type信息
●反射值设置与获取
●反射调用方法
性能优化技巧:
● pprof、trace的使用方法
- 什么是pprof和trace
- 如何使用pprof和trace
- pprof和trace的常用命令和参数
- pprof和trace的输出分析和解读
● 性能优化技巧
- 内存分配和GC
- CPU利用率和并发锁竞争
- 系统调用和IO阻塞
- 减少内存分配
- 减少GC压力
- 减少锁竞争
- 减少系统调用和IO阻塞
- 并发编程优化
Web开发
介绍常见Web框架:
● gin
● beego
路由和中间件
配置管理
● 配置文件解析
- 学习如何解析配置文件
- 支持不同的配置文件格式,
如JSON、YAML、TOML等
- 学习如何使用标准库来解析配置文件
● viper
- 学习Viper库的基础概念和用法
- 理解如何使用Viper加载和解析配置文件
● godotenv
- 理解如何使用Godotenv库来读取环境变量
- 学习如何将环境变量加载到应用程序中
- 理解如何在不同的环境中使用环境变量,
如开发、测试和生产
日志:
● 常用日志库
● log:Golang标准库中提供的日志功能
● logrus:功能强大的结构化日志记录库
● zap:一个高性能、可扩展的日志库
数据库编程:
● MySQL
- MySQL 简介
- MySQL 基本操作
- 创建和删除数据库
- 创建和删除表
- 插入、更新和删除数据
- MySQL 驱动
- `database/sql` 包介绍
- `sql.DB` 和 `sql.Tx` 的使用
- `sqlx` 介绍
- `sqlx.DB` 和 `sqlx.Tx` 的使用
- `sqlx.NamedExec()` 使用
- `sqlx.Select()` 等方法使用
- `gorm` 介绍
- `gorm.DB` 和 `gorm.Tx` 的使用
- 模型定义和映射
- 查询构建器的使用
● Redis
- Redis 简介
- Redis 驱动
- `github.com/go-redis/redis` 包介绍
- `redis.Client` 和 `redis.Tx` 的使用
- `redis.Pipeliner` 的使用
- Redis 基本操作
- 字符串操作
- 哈希表操作
- 列表操作
- 集合操作
- 有序集合操作
- Redis 分布式锁
● MongoDB
- MongoDB 简介
- MongoDB 驱动
- MongoDB 基本操作
- 插入、更新和删除文档
- 查询文档
- 相等条件查询
- 范围条件查询
- 正则表达式查询
- 排序和分页查询
- 聚合查询
- 索引的使用
单元测试:
● 什么是单元测试
● 为什么需要单元测试
● Golang如何编写测试用例
● 测试套件和断言
● TDD(测试驱动开发)实践
● Mocking和Stubbing
RESTful API设计
● 什么是RESTful API
● REST架构原则
● HTTP动词和URL设计
● Golang中的RESTful API设计
● Swagger和OpenAPI规范
Web性能优化技巧
● 什么是Web性能优化
● 前端性能优化技巧
● 服务器端性能优化技巧
● Golang中的Web性能优化技巧
● 性能测试和性能监控
Websocket、SSE
● 什么是WebSocket和SSE
● WebSocket和SSE的应用场景
● Golang中的WebSocket和SSE实现
● WebSocket和SSE的安全问题
● WebSocket和SSE的性能优化
容器化开发
用场景和应用方法
● 学习使用context进行上下文管理
●掌握sync包的常用工具,
如Mutex、WaitGroup、Cond等
内存管理和垃圾回收机制:
● 理解Golang的内存管理机制
● 学习如何进行内存分配和释放
● 了解垃圾回收机制的基本原理和实现方式
● 掌握如何调整垃圾回收机制的参数进行优化
标准库和常用第三方库:
● fmt包:格式化输入输出
● os包:操作系统接口
● io包:输入输出
● bufio包:缓冲输入输出
● net包:网络编程
● http包:HTTP客户端和服务器
● encoding/json包:JSON编解码
● time包:时间和日期处理
● sync包:并发编程
网络编程和IO操作:
● TCP/IP协议栈基础知识
● OSI七层模型和TCP/IP四层模型
● TCP和UDP协议的区别和应用场景
MD5
- 数字签名算法:如DSA和ECDSA
数据结构:
● 数组(Array)
● 栈(Stack)
● 队列(Queue)
● 链表(Linked List)
Docker的基本概念:
● 什么是Docker
● Docker的优势
● Docker的基本架构
Docker的基本命令:
● Docker镜像
● Docker容器
● Docker网络
● Docker数据卷
Dockerfile的基本编写方法:
● Dockerfile的基本结构
● Dockerfile的指令
● Dockerfile的编写实例
网络模式:
● Docker的网络模式
● Bridge模式
● Host模式
● Overlay模式
数据卷:
● 数据卷的概念
● 数据卷的类型
● 数据卷的使用方法
Docker Compose:
● Compose的概念
● Compose的基本命令
● Compose的使用方法
Docker Swarm:
● Swarm的概念
● Swarm的基本命令
● Swarm的使用方法
Kubernetes 基本原理与使用方式:
● Kubernetes 历史、介绍
- Kubernetes 的历史和背景
- Kubernetes 的目标和优势
- Kubernetes 架构和组件
● Kubernetes 常见概念、对象
- Pod、Service、Deployment、StatefulSet
- Kubernetes 对象的基本属性和关系
- Kubernetes 对象的生命周期管理
● 暴露 Kubernetes 服务
- Kubernetes 中的 Service 对象
- Service 的类型和作用
- Service 的创建和配置
- Service 的暴露和访问
微服务开发
微服务概念:
● 什么是微服务?
● 微服务与单体应用的区别
● 微服务的优点和缺点
● 微服务的基本组件:
服务发现、负载均衡、API 网关等
分布式系统的常见问题:
● 分布式系统的定义和特点
● CAP 理论的基本概念
● 一致性协议:Paxos、Raft 等
● 分布式系统的故障类型和应对策略
微服务架构设计:
● 微服务架构的基本原则
● 微服务间通信方式:
-同步、异步、消息队列等
● 微服务的部署方式:
-容器化、虚拟化、云原生等
● 微服务的监控和治理:
-服务注册发现、链路追踪、容错等
微服务框架:
● gRPC介绍
● Protocol Buffers语法
● 使用gRPC进行微服务开发
● 搭建gRPC服务端和客户端
● 实现gRPC服务端和客户端的双向流
● Interceptor
● 什么是拦截器
● gRPC拦截器的分类
● 实现gRPC拦截器的方法
● gRPC拦截器的应用场景
● 流式RPC
● 什么是流式RPC
● 实现流式RPC的方法
● 流式RPC的应用场景
服务注册与发现、注册中心:
● 什么是服务注册与发现
● Etcd的介绍
● 使用Etcd进行服务注册与发现
● Consul的介绍
● 使用Consul进行服务注册与发现
监控、日志、分布式追踪:
● 什么是监控、日志、分布式追踪
● Prometheus的介绍
● 使用Prometheus进行监控
● Grafana的介绍
● 使用Grafana进行数据可视化
● ELK的介绍
● 使用ELK进行日志收集和分析
● Jaeger的介绍
● 使用Jaeger进行分布式追踪
项目实战
项目一:短链接服务
第一部分:基础服务
- 短链接服务的功能需求与技术选型
- Golang 基础语法与常用库复习
- 使用 Gin 框架建立 HTTP 服务
- 使用 Redis 存储数据
第二部分:实现短链接服务核心功能
- 实现短链接生成算法
- 实现短链接与长链接的映射关系存储与查询
- 实现短链接的访问与重定向
第三部分:服务可用性与性能
- 实现短链接的定期过期与清理
- 实现短链接的访问计数与统计
- 使用 Nginx 反向代理与负载均衡提高服务性能
项目二:论坛
第一部分:基础服务
- 论坛服务的技术选型与功能需求
- 使用 Gin 框架建立 HTTP 服务
- 使用 MySQL 存储数据,表结构设计
第二部分:实现论坛基础功能
- 实现用户注册与登录
- 实现帖子发布与查看
- 实现评论功能
第三部分:提高服务可用性与性能
- 实现帖子分页查询
- 实现用户权限控制
- 使用 Redis 缓存提高服务性能
项目三:反向代理网关
第一部分:构建基础服务
- 反向代理网关服务的技术选型与功能需求
第二部分:实现反向代理网关核心功能
- 实现反向代理的请求转发
- 实现请求过滤与安全控制
- 实现请求记录与日志输出
第三部分:提高服务可用性与性能
- 实现请求负载均衡与高可用
- 实现请求缓存与加速
- 实现请求重试与自动故障转移
老师会根据班级同学的学习反馈
调整课程大纲内容、补充实战项目
05丨课程服务
一、
课程学习模式
课程每周更新+知识讲解,录播无限期可看
每周直播答疑和进阶讲解,及时反馈学习情况和困惑
每个章节配套作业实战练习,包涵知识总结任务、代码实现任务、架构设计任务
课后提供课程源码、录播供反复学习
课程群内随时与授课老师互动,课程1V1作业批改指导,查漏补缺
二、
课程服务以及保障
提供阿里、腾讯、百度、字节跳动、滴滴、美团等各大一线互联网内推岗位(内推职位均由师兄师姐和在职老师提供)
可分期支付,边付边学(非分期平台分期,无需贷款)
06丨如何参加课程
如何试看、试学、试听!
1、如何报名
课程原价4600元,春节活动价4200元,仅限前30人!先到先得~
课程1周且3个任务内觉得不合适可以退全款,1个月内且任务15内觉得不合适可以申请退课,扣除已经消耗费用,签署实名合同,保障权益。
点击下方链接,进入课程目录,免费试听
(报名后联系班主任获取课程基础学习资料)
咨询课程请加班主任微信:
xiedaimala03
更多问题扫码咨询or加微信进群