前言
一、编写初衷
目前各种编程语言百花齐放,但是C语言仍然是程序执行效率很高的语言之一,
也是贴近底层硬件的语言之一,笔者希望通过本书能让大家了解C 语言编程的本质
以及设计精髓,而不是简简单单只将C 语言当成一种工具。
书中内容来源于笔者从业多年的学习和实战经验,希望分享给更多有志于通过
技术改变生活的人。
通过本书的讲解帮助更多的程序开发者提升自身的计算机思维,并明确自己后
续的技术发展路线。
二、内容亮点
和市面上同类图书相比,本书的主要特色是根据作者多年的开发架构经验编
写,凝聚了一个菜鸟程序员慢慢成长为架构师的程序设计之路,书中包含很多开发
设计实例,以及作者对于C 语言和设计模式的独特见解,以及如何运用Cache 和
NUMA 等技术来优化程序执行效率,随着多核技术的蓬勃发展,本书也涉及C 语言
在多核开发下的优势和劣势。
本书共分四大部分。
*部分新手篇:第1~6 章,着重介绍C 语言基础语法。
第二部分进阶篇:主要介绍C 语言的数据类型、预处理器、编译原理,通过实
例阐述C 语言的魅力。
第三部分实战篇:包含C 语言的经典数据结构和通用设计模式等,以及Linux
下程序调试的方法。
第四部分高手篇:介绍如何进行程序优化、Cache 利用、NUMA 技术、多核技
术等。
前 言Foreword
II C 语言从新手到高手
三、读者对象
本书将C 语言拟人化,通过一个人的慢慢成长过程来阐述C 语言学习的进阶
之路。
本书既适用于没有经验的编程爱好者,同样适用于对C 语言有一定经验的使用
者,更适合刚刚走出大学校门的读者使用,希望通过对本书的学习完成由学生到一
个职业编程人员的快速思维转换。
通过本书,读者可以在短期内对C 语言有全面的了解,书中包含了大量可执行
的实例供读者学习,帮助读者具备实际上手编码能力,以及一定的程序设计和优化
能力。
四、致谢
在本书的编写中,首先感谢公司的领导和业内的朋友,他们对本书的策划提出
了大量的宝贵意见和建议。
感谢我的妻子孙苗苗,她在我漫长的写作过程中对儿子无微不至的照顾,使我
免除了后顾之忧。
感谢我的儿子果果,在本书的构思过程中迎来了这个小生命,他使得我有了更
多写作的灵感和动力(本书拟人化的写作手法即来源于此)。
感谢我的父母,他们长久以来对我的培养、鼓励及支持,才使得我有能力以及
精力投入到写作过程中。
感谢中国铁道出版社有限公司,因为有他们,才使得本书*终面世。
由于作者水平有限,书中错误之处在所难免,恳请专家和读者批评指正,联系
邮箱:boyteam@163.com。
*后以乔布斯的经典名句结尾:“Stay hungry, Stay foolish.”
商品简介
本书的主要特色是根据作者多年的开发架构经验编写,凝聚了一个菜鸟程序员慢慢成长为架构师的程序设计之路,书中包含很多开发设计实例,以及作者对于C 语言和设计模式的独特见解,以及如何运用Cache 和NUMA 等技术来优化程序执行效率,随着多核技术的蓬勃发展,本书也涉及C 语言在多核开发下的优势和劣势。本书共分四大部分。*部分新手篇:第1~6 章,着重介绍C 语言基础语法。第二部分进阶篇:主要介绍C 语言的数据类型、预处理器、编译原理,通过实例阐述C 语言的魅力。第三部分实战篇:包含C 语言的经典数据结构和通用设计模式等,以及Linux下程序调试的方法。第四部分高手篇:介绍如何进行程序优化、Cache 利用、NUMA 技术、多核技术等。
作者简介
关淞元,毕业于吉林大学计算机科学与技术学院,硕士学历,资深架构专家,有10余年系统架构设计,软件开发以及研发管理经验;曾发表过多篇学术论文以及,主要涉及数字通信领域、网络安全领域、移动通信领域以及安全领域;尤其擅长C语言算法及性能优化,曾主持或参与过NGFW(下一代防火墙)的研发、IPS(入侵检测系统)的研发,DDOS(分布式拒绝攻击)的架构设计和研发、DPI(深度报文检测)的架构设计和研发,内容还原的架构设计和研发等。目前在某公司出任首席架构师,主持国外大型安全项目的总体架构设计,以及国家部委项目的总体架构设计。
目录
篇 新手篇
章 C语言概述
1.1 C语言的前世今生
1.2 C语言的优势与劣势
1.3 C语言的当前标准
1.4 C语言的编程机制
第2章 C语言的骨骼――基础数据类型
2.1 常量与变量
2.1.1 常量
2.1.2 变量
2.2 关键字和保留标识符
2.3 整数类型
2.4 浮点类型
2.5 字符和字符串类型
2.6 类型之间的转换
2.7 程序注释
第3章 C语言的肉身――运算符
3.1 算术运算符
3.2 赋值运算符
3.3 逻辑运算符
3.4 移位运算符
3.5 关系运算符
3.6 增量运算符
3.7 位运算符
3.8 条件运算符
3.9 逗号运算符
3.10 运算符的优先级
第4章 C语言的血液――控制流
4.1 顺序流
4.2 条件分支流
4.3 循环控制流
4.4 输入输出流
4.4.1 scanf/printf函数
4.4.2 getchar/putchar函数
4.4.3 gets/puts函数
4.5 语句嵌套
第5章 C语言的灵魂――函数
5.1 函数定义
5.2 函数声明
5.3 函数参数
5.4 函数调用
5.5 函数递归
5.6 可变参数列表
第6章 丫丫学步――构建个程序
6.1 main函数
6.2 程序风格
6.3 个C程序
6.4 编译执行
第二篇 进阶篇
第7章 成长的烦恼――数组和指针
7.1 一维数组
7.2 多维数组
7.3 变长数组
7.4 指针与地址
7.5 指针数组
7.6 指向函数的指针
7.7 指向指针的指针
7.8 指针和数组的区别
第8章 成长的积累――结构体、联合体及其他数据形式
8.1 结构体基础知识
8.2 结构的存储与对齐
8.3 结构数组
8.4 指向结构的指针
8.5 结构体自引用
8.6 联合体基础知识
8.7 枚举类型
8.8 位字段
8.9 typedef简介
第9章 成长的惊喜――预处理器
9.1 宏定义
9.2 文件包含
9.3 条件编译
0章 成人礼――次构建多文件工程
10.1 多源文件编译
10.2 动态库和静态库
10.2.1 静态库
10.2.2 动态库
第三篇 实战篇
1章 骨骼的发育――经典数据结构
11.1 栈
11.2 链表
11.3 队列
11.4 树
11.5 堆
11.6 散列表
11.7 图
11.7.1 邻接矩阵
11.7.2 邻接表
11.7.3 十字链表
11.7.4 邻接多重表
11.8 一个具体的例子――协议识别引擎
2章 社会经验的积累――经典设计模式
12.1 程序设计理念
12.2 设计模式原则
12.3 单件模式
12.4 工厂模式
12.5 抽象工厂模式
12.6 创建者模式
12.7 原型模式
12.8 适配器模式
12.9 装饰器模式
12.10 代理模式
12.11 外观模式
12.12 桥接模式
12.13 组合模式
12.14 享元模式
12.15 策略模式
12.16 模板方法模式
12.17 观察者模式
12.18 迭代器模式
12.19 责任链模式
12.20 命令模式
12.21 备忘录模式
12.22 状态模式
12.23 访问者模式
12.24 中介者模式
12.25 解释器模式
3章 成长的挫折――再论程序调试
13.1 断言
13.2 万能的打印
13.3 GDB调试浅谈
13.3.1 基础命令
13.3.2 进阶多线程命令
13.3.3 调试core文件
13.4 符号表与反汇编
13.5 core文件的配置
4章 适应社会――可移植性
14.1 为什么需要可移植
14.2 如何设计可移植的数据结构
14.3 如何设计可移植的程序
第四篇 高手篇
5章 找出自身的不足――性能调试
15.1 程序Cycle的意义
15.2 性能测试工具的使用
15.3 变量的优化
15.4 高性能函数
15.5 嵌入式汇编
15.6 编译优化
6章 做事需未雨绸缪――Cache技术
16.1 为什么要使用Cache
16.2 Cache有多少级
16.3 Cache Line的介绍
16.4 与Cache结合的CPU指令
16.5 Cache的淘汰策略
16.6 让程序爱上Cache
7章 找到亲近的人与事――NUMA技术
17.1 NUMA简介
17.2 NUMA存储管理
17.3 NUMA相关工具
17.4 NUMA读写实测
17.5 让程序爱上NUMA
8章 社会更新换代――大页技术
18.1 大页简介
18.2 Linux如何配置大页
18.3 简述Hugetlbfs实现
18.4 程序如何使用大页
9章 自我修炼――多线程技术
19.1 进程与线程的区别
19.2 多线程编程
19.2.1 线程的创建和结束
19.2.2 线程同步
19.2.3 线程互斥
19.2.4 定义线程独有变量
19.3 CPU亲和性
19.3.1 RTC模式
19.3.2 Pipeline模式
19.4 多线程调试
附录A 术语表
附录B 操作符优先级表
附录C Linux信号表
内容摘要
本书的主要特色是根据作者多年的开发架构经验编
写,凝聚了一个菜鸟程序员慢慢成长为架构师的程序设计之路,书中包含很多开发
设计实例,以及作者对于C 语言和设计模式的独特见解,以及如何运用Cache 和
NUMA 等技术来优化程序执行效率,随着多核技术的蓬勃发展,本书也涉及C 语言
在多核开发下的优势和劣势。
本书共分四大部分。
部分新手篇:~6 章,着重介绍C 语言基础语法。
第二部分进阶篇:主要介绍C 语言的数据类型、预处理器、编译原理,通过实
例阐述C 语言的魅力。
第三部分实战篇:包含C 语言的经典数据结构和通用设计模式等,以及Linux
下程序调试的方法。
第四部分高手篇:介绍如何进行程序优化、Cache 利用、NUMA 技术、多核技术等。
主编推荐
配套赠送书中案例源代码 一本带你轻松入门、直接上岗的实操手册实战派架构师 倾力之作希望分享给更多有志于通过技术改变生活的人
【内容简介】
以下为对购买帮助不大的评价