图书前言

前言

在实现一个大型软件系统时,大规模的源文件是如何编译的?软件系统是如何自动构造的?编写能实现分布式通信的系统级软件还需要掌握哪些知识?已基本掌握数据结构及基本编程语言的刚入门的初级编程人员,一般只会简单的函数级编程,往往希望能进一步解答上述问题。系统级编程涉及众多知识点,分散在分布式系统、操作系统、网络通信等多门传统课的教材中,本书是一本全面、系统介绍系统级编程相关知识要点的书籍,让这些初级编程者能循序渐进地向系统级编程进阶。

本书站在网络通信的角度讲述系统级编程,将分散在多门传统课教材中的编程知识点,按照技术原理到具体实现的思路汇聚形成新的体系,同步以项目化的形式配以清晰的实践案例和丰富的样例代码库。

通过本书的学习,初级编程人员不但可以学会网络编程的基本知识、设计思想和方法,更重要的是,能够站在更高层面看待分布式通信编程技术原理,建立系统级编程概念,学会分布式网络通信的系统级程序设计的通用方法,从而步入系统级编程的大门,迅速上手系统级软件和企业级项目的开发。

本书主要包括两部分,第一部分循序渐进、由浅入深地帮助读者掌握系统级编程及网络通信基础知识,通过介绍软件系统的构造过程,回答大型软件系统是如何编译和如何自动构造的,同时详细介绍了系统级软件在实现过程中所涉及的进程、线程、资源共享及网络通信、套接字编程等基础知识,通过系统的介绍和实例演示,帮助读者从零开始建立起系统级编程的认知和实践能力

。随着学习的深入,参与实际的项目开发,读者将能够设计和编写出更复杂的软件系统。本部分所介绍的系统级编程基础方法,特别是在计算、存储资源相对紧张的嵌入式系统中更加有效。

随着技术的不断演进,在分布式系统实现过程中,基于第一部分所介绍的基础技术及套接字通信产生了一批更高层的分布式系统技术架构,如远程过程调用技术(RPC)、基于SOAP的服务计算、RESTful、微服务架构等,本书第二部分重点介绍上述

主流分布式系统框架。针对大型分布式系统的实现,开发者可借助上述常用分布式系统架构和技术,更加快速、高效地构建分布式应用。

本书在讲述相关原理时,以一个难度适中的分布式系统的开发设计作为示例贯穿始终,方便读者对各知识点内容的

理解和衔接。

在编写本书的过程中,我们尽量做到编程语言无关,第一部分示例采用C语言编写,第二部分采用Java语言编写。工欲善其事,必先利其器,为了使读者能够快速入门,我们提供了附录A开发环境准备,附录B MySQL数据库的安装和使用

,附录C C语言操作MySQL数据库。

本书主要面向初步掌握程序设计语言基础的人员,如学习过C/C++、Java、Python、Rust等语言课程,除此之外不需要具备操作系统、网络、数据库等前置条件。预期读者包括以下人员。

(1) 高校在读专科生、本科生及研究生。仅仅先修了数据结构、C语言的刚入门的初级编程人员,

以及函数式编程和面向对象编程初学者,期望向大型系统级编程进阶,可以通过本书迅速入门系统级编程。

(2) 从事分布式计算等相关系统级开发从业人员。此类人员对于系统级的网络编程存在知识盲区,可以通过本书迅速开展系统级网络通信系统的开发工作。

(3) 从事网络系统编程等相关开发的从业人员。此类人员对于系统级的分布式编程存在知识盲区,可以通过本书迅速开展系统级分布式系统的开发。

(4) 有意向考取系统开发相关证书的应试人员。

本书相关教学工作已荣获浙江省普通本科高校“十四五”首批新工科、新医科、新农科、新文科重点教材建设项目和浙江工商大学研究生教育改革项目资助,本书由浙江工商大学互联网技术/教学实验室(ITL)长期从事计算机网络和通信技术研究和教学的教师和研究生团队支持完成。

本书由李传煌、金蓉、姜国新、时磊、马博、诸葛斌老师共同编著,在编写过程中发挥了同等重要作用; 高子怡、吴莎尘、方徐鑫、徐韩逸、苏晨、叶佳伟、廖君虎、潘叶昕、冯瑜洁、余应洁、马佳鑫、胡筱森、陈浩等同学对书中的实例内容进行了多轮的修改,完善相关课件、搭建验证实验环境、录制实验视频等,为本书的出版作出了重要贡献; 清华大学出版社黄芝编辑在出版过程中不断给予建议和鼓励,使编著的思路方向更为清晰,全书内容高效地迭代完善,最终成稿。以上一并表示衷心感谢。

限于编著者水平限制,书中难免有错误之处,敬请批评指正。

编者2026年2月