24、日志处理:日志规范与最佳实践你好,我是郑建勋。 这节课,我们需要构建项目的日志组件,方便我们收集打印的日志信息。运行中的程序就像一个黑盒,好在日志为我们记录了系统在不同时刻的运行状态。日志的好处主要有下面四点。 打印调试:日志可以记录变量或者某一段逻辑,记录程序运行的流程。虽...2025-12-13
23、偷梁换柱:为爬虫安上代理的翅膀你好,我是郑建勋。 在任何爬虫系统中,使用代理都是不可或缺的功能。代理是指在客户端和服务器之间路由流量的服务,用于实现系统安全、负载均衡等功能。在爬虫项目中,代理服务器常常扮演着重要的角色,它能帮助我们突破服务器带来的限制和封锁,达到正常抓取数据的目...2025-12-13
22、优雅地离场: Context超时控制与原理你好,我是郑建勋。 在Go语言的圈子里有一句名言: Never start a goroutine without knowing how it will stop。 意思是,如果你不知道协程如何退出,就不要使用它。 如果想要正确并优雅地退出协程...2025-12-13
21、采集引擎:实战接口抽象与模拟浏览器访问你好,我是郑建勋。 我们知道,接口是实现功能模块化、构建复杂程序强有力的手段。在上一节课,我介绍了接口的最佳实践和原理。这一节课,让我们在爬虫程序中实战接口,对采集引擎完成接口抽象。 接口抽象在[第19讲],我们已经将爬取网站信息的代码封装为了fet...2025-12-13
20、面向组合:接口的使用场景与底层原理你好,我是郑建勋。 在上一节课,我们讲解了文本处理技术。进行文本处理时,我们使用了函数的封装来完成过程的抽象,函数是一种复用代码、帮助我们构建大规模程序的利器。这节课,让我们来看一看另一种可以构建大规模程序的技术:接口。 Go接口及其优势在计算机科学...2025-12-13