29、细节决定成败:切片与哈希表的陷阱与原理你好,我是郑建勋。 这节课,让我们来看一看切片与哈希表的原理。 我想先考你两道面试题。下面的代码中,foo与bar最后的值是什么? 12345foo := []int{0,0,0,42,100}bar := foo[1:4]bar...2025-12-13
28、调度引擎:负载均衡与调度器实战你好,我是郑建勋。 在上一节课程中,我们实战了广度优先搜索算法,不过我们对网站的爬取都是在一个协程中进行的。在真实的实践场景中,我们常常需要爬取多个初始网站,我们希望能够同时爬取这些网站。这就需要合理调度和组织爬虫任务了。因此,这节课的重点就是实战任...2025-12-13
27、掘地三尺:实战深度与广度优先搜索算法你好,我是郑建勋。 上节课,我们看到了如何在Go中创建高并发模型,这节课让我们回到项目中来,为爬虫项目构建高并发的模型。 要想构建高并发模型,我们首先要做的就是将一个大任务拆解为许多可以并行的小任务。比方说在爬取一个网站时,这个网站中通常会有一连串的...2025-12-13
26、高并发爬虫:模型、控制与冲突检测你好,我是郑建勋。 上一节课,我们看到了协程和调度器的工作原理,协程的特性决定了我们无法保证协程之间的执行顺序,然而在真正的实践中,协程是无法完全隔离的。它们通常需要完成数据的共享,或者说要完成某种通信,而这又会导致数据的并发安全等新的问题。 所以,...2025-12-13
25、运筹帷幄: 协程的运行机制与调度器原理你好,我是郑建勋。 Go语言以容易编写高并发的程序而闻名。之前我们介绍Go语言的网络模型时,就提到了Go运行时借助对I/O多路复用的封装还有协程的灵巧调度,实现了高并发的网络处理。不过当时我们还没有深入地审视协程这一最重要的Go特性,所以在...2025-12-13