深入c语言和程序运行原理(25)实战项目(下):一个简单的高性能 HTTP Server

  在 24 讲中,我对本次实战项目将要构建的程序 FibServ 的功能做了基本介绍,并从理论的角度,带你对它的基本实现方案有了一个初步认识。而这一讲,我们将通过实际编码,来应用这些理论知识。 在后续讲解到相关代码时,我也会在整段代码的第一行,通过注释的方式将这些代码的所在源文件标注出来。比如注释“libs/structs.h#L9-L11”,便表示当前所示的代码段对应于项目 libs
深入c语言和程序运行原理(25)实战项目(下):一个简单的高性能 HTTP Server

深入c语言和程序运行原理(23)生产加速:如何使用结构化编译加速 C 项目构建?

  在之前的课程中,我们曾遇到过很多段示例代码。而这些代码有一个共性,就是它们都十分短小,以至于可以被整理在一个单独的 .c 文件中。并且,通过简短的一行命令,我们就可以同时完成对代码的编译和程序的运行。 但现实情况中的 C 项目却往往没这么简单,动辄成百上千的源文件、各种各样的外部依赖与配置项,这些都让事情变得复杂了起来。因此,当 C 项目的体量由小变大时,如何组织其源代码的目录结构与
深入c语言和程序运行原理(23)生产加速:如何使用结构化编译加速 C 项目构建?

深入c语言和程序运行原理(22)生产加速:如何使用自动化测试确保 C 项目质量?

  “测试”是每个软件在其开发生命周期(SDLC)中都不可或缺的一个重要阶段。通过对软件进行各种不同类型的测试,我们能够从多个维度验证软件的功能表现,并在出现偏差时及时修正,以确保它们可以按照预期工作。根据实施方式、深入粒度、应用场景及目的等因素的不同,测试可以被分为多种类型。其中,有些测试较为基础和通用,甚至被作为软件开发流程中的必备一环;而有些测试则仅适用于某些特定情况。 因此,为了
深入c语言和程序运行原理(22)生产加速:如何使用自动化测试确保 C 项目质量?

深入c语言和程序运行原理(21)生产加速:C 项目需要考虑的编码规范有哪些?

在前面的几讲中,主要介绍了可以为项目编码提速的 C 标准库,以及优化 C 代码的相关技巧。而在接下来的三讲中,我将为你介绍大型 C 项目在工程化协作时需要关注的编码规范、自动化测试和结构化编译。当项目由小变大,参与人数由少变多时,这些便是我们不得不考虑的重要内容。 和一个人参与项目、写代码时的“单打独斗”相比,多人协作从理论上来看可以大幅提高生产效率。但现实情况却可能是,效率在提升的同时,代码质量
深入c语言和程序运行原理(21)生产加速:C 项目需要考虑的编码规范有哪些?

深入c语言和程序运行原理(20)极致优化(下):如何实现高性能的 C 程序?

在上一讲中,我介绍了几个用于编写高性能 C 代码的实用技巧。今天,我们继续聊这个话题,来讨论其他几种常见的 C 代码和程序优化技巧,它们分别是利用循环展开、使用条件传送指令、尾递归调用优化,以及为编译器指定更高的编译优化等级。 技巧五:循环展开(Loop Unrolling) 为了让你更好地理解“循环展开”这个优化技巧背后的原理,我们先从宏观角度看看 CPU 是如何运作的。 早期的 CPU 在执行
深入c语言和程序运行原理(20)极致优化(下):如何实现高性能的 C 程序?

深入c语言和程序运行原理(19)极致优化(上):如何实现高性能的 C 程序?

  使用 C 语言正确实现的程序可以享受到最高的运行时性能。因此,如何编写具有“最高”执行性能的代码,是每个 C 程序员都在竭尽所能去探索的一个问题。那么,接下来的两讲,我们就来看看,如何编写高质量的 C 代码,来让我们的程序达到最佳的运行状态。 这一讲,我主要会为你介绍四个优化 C 代码的技巧,它们分别是利用高速缓存、利用代码内联、利用 restrict 关键字,以及消除不必要内存引用
深入c语言和程序运行原理(19)极致优化(上):如何实现高性能的 C 程序?

深入c语言和程序运行原理(18)标准库:断言、错误处理与对齐

这一讲是这门课中关于 C 标准库的最后一讲。通过前面几讲的学习,相信你已经对 C 标准库提供的相关能力有了一个全面的认识。在此基础上,我们便可以使用这些成熟的接口,来更加方便地构建应用程序。这一讲后,在“ C 工程实战篇”的其他篇目中,我会和你一起讨论语言具体功能之外的性能优化、自动化测试、结构化编译等 C 工程化相关内容,并带你手把手实现一个简单的高性能 HTTP Server。 今天,我们来看
深入c语言和程序运行原理(18)标准库:断言、错误处理与对齐

深入c语言和程序运行原理(17)日期、时间与实用函数

在前面的几讲中,我都以较大的篇幅介绍了 C 标准库中的一些重要概念,和相关接口的使用方式。除此之外,标准库中还有一些功能十分明确,使用方式也十分简单的常用接口,这些接口也为日常的 C 应用开发提供了重要支持。因此,在接下来的两讲中,我将围绕这部分内容展开介绍。 今天,我们先来看看标准库中与日期、时间以及实用函数有关的内容。其中,日期与时间的相关接口由头文件 time.h 提供;而实用函数的功能则可
深入c语言和程序运行原理(17)日期、时间与实用函数