udemy教程 | Concurrency in Go (Golang)
Go (Golang) 中的并发性
了解 Go 中并发的原因和方式
教程演示🔗
What you’ll learn 学习内容
-
How to spin Goroutines and communicate data between them.
如何旋转 Goroutines 并在它们之间传输数据。 -
How to avoid Race conditions and Deadlocks.
如何避免争用条件和死锁。 -
How to synchronize the execution of Goroutines.
如何同步 Goroutines 的执行。 -
How Go Scheduler works. Go Scheduler 的工作原理。
-
How to build streaming pipelines with Goroutines and Channels.
如何使用 Goroutines 和 Channels 构建流式处理管道。 -
How to propagate data across API boundary.
如何跨 API 边界传播数据。
Requirements 要求
-
Basic knowledge of Go Programming Language like loops, functions, methods.
Go 编程语言的基本知识,如循环、函数、方法。 -
Installation of Go compiler and any IDE on the laptop.
在笔记本电脑上安装 Go 编译器和任何 IDE。
Description 描述
Questions that comes to all Developers is whether they are utilising the available Computing resource efficiently?
所有开发人员面临的问题是,他们是否有效地利用了可用的计算资源?
Course Overview 课程概述
The course could be divided into five parts.
该课程可分为五个部分。
-
Concurrency Primitives 并发基元
-
Deep Dive into Concurrency Primitives
深入了解并发基元 -
Concurrency Patterns 并发模式
-
Context Package 上下文包
-
Bonus Section – Interfaces
奖励部分 – 接口
In the course we try to answer these questions.
在课程中,我们试图回答这些问题。
Concurrency Primitives 并发基元
-
What are the limitations of Threads?
线程的局限性是什么? -
What are advantages of goroutines over OS threads?
与操作系统线程相比,goroutines 的优势是什么? -
How do we avoid race condition?
我们如何避免竞争条件? -
How Channels are used to communicate data?
如何使用通道来传输数据? -
How do we implement timeout and non-blocking communication?
如何实现超时和非阻塞通信? -
When do we use mutex and channels?
我们什么时候使用互斥锁和通道? -
How to synchronise execution of goroutines?
如何同步执行goroutines? -
How to detect race condition in Go?
如何在围棋中检测竞争条件?
Deep Dives into Concurrency Primitives
深入探讨并发基元
-
How Go scheduler works? Go 调度器如何工作?
-
How does context switching works?
上下文切换的工作原理是什么? -
How channel send and receive works underneath?
通道发送和接收在下面是如何工作的?
Concurrency Patterns 并发模式
-
How to construct streaming pipelines with Goroutines and Channels?
如何使用 Goroutines 和 Channel 构建流水线? -
How to Fan-out and Fan-in computationally intensive stages?
如何扇出和扇入计算密集型阶段? -
How do we avoid Goroutine Leaks?
我们如何避免 Goroutine 泄漏?
Context Package 上下文包
-
How we can propagate request scoped data and cancellation signal across API boundaries?
我们如何跨 API 边界传播请求范围的数据和取消信号?
Coding Exercises 编码练习
-
Each concept is followed by a Coding Exercise.
每个概念之后都有一个编码练习。 -
Exercises blueprint are shared on Github.
练习蓝图在 Github 上共享。
Sample Applications 示例应用程序
We will build 我们将建立
-
Blueprint of web crawler.
网络爬虫的蓝图。 -
Image processing pipeline.
图像处理管道。 -
HTTP Server Timeouts with Context Package.
上下文包的 HTTP 服务器超时。
Bonus Section – Interfaces
奖励部分 – 接口
-
How to define common behaviour between different objects as abstract type?
如何将不同对象之间的共同行为定义为抽象类型? -
How Interface provides an abstraction for higher level functions?
接口如何为更高级别的函数提供抽象?
Who this course is for:
本课程适用于谁:
- Students looking for Basic to Advanced Go Programming Concepts
寻找从基础到高级 Go 编程概念的学生