关于我们
书单推荐
新书推荐
|
C++新经典:Linux C++通信架构实战 本书是一部介绍在Linux下使用C++开发网络通信服务器程序的书。本书共8章36节,介绍了一个完整的项目,其中包括通信框架和业务逻辑框架,有以下几个特点: ①项目本身是一个完整的多线程高并发的服务器程序; ②支持TCP长连接,按照“包头+包体格式”正确接收客户端发送过来的数据包,完美解决收包时的数据粘包问题; ③可根据收到的不同数据包选择不同的业务处理逻辑; ④可将业务处理产生的结果数据包正确返回给客户端。 项目中用到的主要开发技术和特色包括: ①epoll高并发通信技术,用到的触发模式是epoll中的水平触发模式(LT); ②通过线程池技术处理业务逻辑; ③线程之间的同步技术包括互斥量和信号量; ④连接池中连接的延迟回收技术,可极大程度地消除诸多导致服务器程序工作不稳定的因素; ⑤专门处理数据发送的一整套数据发送逻辑以及对应的发送线程; ⑥信号处理、配置文件读取、日志的打印输出、调用fork创建子进程、创建守护进程等技术。 本书适合作为已经掌握C/C++语言,希望进一步深入学习的开发人员的自学参考用书。 书中主题 商业项目的完整源码 从无到有,实现一个商业质量的多线程高并发服务器程序项目框架,只需要增加业务逻辑代码就可以利用本项目完成实际工作中诸多服务器项目的开发,如网络游戏服务器、交易服务器、通信服务器等。 商业项目的实现功能 ①按照包头+包体格式正确接收客户端发送的数据包, 完美解决数据粘包问题;②根据接收的数据包的不同来执行不同的业务处理逻辑;③把业务处理产生的结果数据包正确返回给客户端。 商业项目的开发技术 ①epoll高并发通信技术(水平触发模式LT);②通过线程池技术处理业务逻辑;③线程之间的同步技术包括互斥量与信号量;④连接池中连接的延迟回收技术,极大程度上消除诸多导致服务器程序工作不稳定的因素;⑤其他次要技术,包括信号的处理、配置文件的读取、日志的打印输出、调用fork创建子进程、创建守护进程等。 环境标准 VMware Workstation Pro:Ubuntu Linux、g++、Windows:Visual Studio 2019、Visual Studio Code VMware Workstation Pro:Ubuntu Linux、g++ Windows:Visual Studio 2019、Visual Studio Code 程序代码 全部实例源代码可以扫描右方二维码获取,配套开发工具及更多学习资源可以关注作者公众号“程序员速成”获取。 自序 亲爱的读者,如果你已经读完了笔者的《C 新经典》《C 新经典: 对象模型》两本介绍C 语言基础的书籍,并决定进一步深入学习,以备将来用C 在Linux下从事网络通信/网络服务器开发和架构工作,那么这本《C 新经典: Linux C 通信架构实战》,是笔者推荐给你的第3本书,不可错过。 纵观以往,很少有人敢于尝试教只掌握C和基本C 语言的开发者去学习这种难度颇高的网络通信架构知识,但笔者愿意做这个摆渡人,通过这本书,用自己多年积累的知识,为读者铺设一条极速的成才之路,可以毫不夸张地说,学好这本书,读者可以节省少则3~5年,多则10年的在C 网络通信开发道路上成长和摸索的时间。 (2) 在微信公众号中输入“通信架构”4个字,就可以获取配套学习资料下载链接。 狂想老师的课真的太精彩了,服务器端开发小白看了之后简直打通了任督二脉!夸! 狂夸!希望大家都来买狂想老师的课! 最近搞个AI的特性,用上了你讲的架构和epoll的接口设计,主管直接加薪5000元,加薪后超越30k元的月薪了。 老师讲得特别棒,全是干货。 课程讲得非常好,受益匪浅,谢谢老师。 我把老师的C 课程和对象模型都学习完了,前面两门课程讲得不错,思路清晰,特别是讲C 11一些新知识点,不是把知识点硬塞给你,而是为了解决某些问题引入。这门课程我也是第一时间入手,相信老师的能力。非常好的课程! 从老师的《C 从入门到精通 C 11/14/17》跟过来的,说良心话,老师讲得真不错,逻辑清晰,详略得当。五星好评! 讲得很细致,一些基础概念都有提及,照顾到我们这些新手,让我们能学到平常难以接触的知识,很好。 我是跟着老师的对象模型过来的,不得不说,真是非常好的课程。 C 工作14年的老菜鸟来学艺,希望能得到质的飞跃!技术这东西不服牛人不行,有些地方自学不只是多走弯路的事儿,是根本入不了道。 这个课程真的非常棒,之前没什么项目经验,所以没信心,学完这个课之后感觉自己提升很多,学到了很多知识,自信心增加,对我找工作帮助很大,感谢老师! 老师讲得真心好,不知不觉帮我解决了很多工作中遇到的没有理解透的难点,非常实用。如果不听老师的课,这些仅靠自己真是太难了,感谢老师让从事8年C语言工作的我重拾信心。 正好新公司要我接手服务器框架。2倍速听完了老师的课程,对我理解公司的代码有很大的帮助。为来年月薪30k元努力!!! 王健伟,1995年毕业于哈尔滨工程大学计算机及应用专业,20多年软件开发经验,经历过数十个软件项目开发包括网络通信、网络安全、网络游戏等领域,多年的摸爬滚打使自身具备了极其深厚的开发实力和实战经验。中国首套网络安全在线扫描评估系统项目负责人,电子工业出版社2003年《Crystal Reports水晶报表设计与开发实务》书籍作者,全球同服独立游戏《冒险之路》制作人。 第1章课程介绍 1.1本书内容详细介绍 1.1.1内容总述 1.1.2为什么选择Linux操作系统平台 1.1.3讲解规划和学习建议 1.1.4书籍推荐和读书须知 1.2环境搭建详细介绍 1.2.1Windows下的Visual Studio 2019安装 1.2.2准备一个Word文档 1.2.3Windows下的虚拟机安装 1.2.4在虚拟机中安装Linux操作系统 1.2.5配置固定IP地址 1.2.6配置远程连接 1.2.7安装编译工具gcc、g++等 1.2.8共享一个操作目录 第2章进入Nginx之门 2.1Nginx简介、选择理由、安装和使用 2.1.1Nginx简介 2.1.2为什么选择Nginx 2.1.3安装Nginx,搭建Web服务器 2.1.4Nginx的启动和简单使用 2.2Nginx整体结构、进程模型 2.2.1Nginx的整体结构 2.2.2Nginx进程模型细说 第3章Nginx开发初步 3.1学习Nginx源码前的准备工作 3.1.1Nginx源码总述 3.1.2Nginx源码查看工具 3.1.3Nginx源码入口函数定位 3.1.4创建一个自己的Linux下的C语言程序 3.2Nginx源码学法,终端和进程的关系 3.2.1Nginx源码学习方法 3.2.2终端和进程的关系 3.3信号的概念、认识、处理动作 3.3.1信号的基本概念 3.3.2通过kill命令认识一些信号 3.3.3进程的状态 3.3.4常用信号列举 3.3.5信号处理的相关动作 3.4UNIX/Linux体系结构、信号编程初步 3.4.1UNIX/Linux操作系统体系结构 3.4.2signal函数范例 3.5信号编程进阶、sigprocmask范例 3.5.1信号集(信号屏蔽字) 3.5.2信号相关函数 3.5.3sigprocmask等信号函数范例演示 3.6fork函数详解、范例演示 3.6.1简单认识fork函数 3.6.2进一步认识fork函数 3.6.3完善fork代码 3.6.4一个和fork执行有关的逻辑判断 3.6.5fork失败的可能原因 3.7守护进程详解、范例演示 3.7.1普通进程运行观察 3.7.2守护进程基本概念 3.7.3守护进程编写规则 3.7.4守护进程不会收到的信号 3.7.5守护进程和后台进程的区别 第4章服务器程序框架初步 4.1服务器程序目录规划、makefile编写 4.1.1信号高级认识范例 4.1.2服务器架构初步 4.2读配置文件、查泄漏、设置标题实战 4.2.1基础设施之配置文件读取 4.2.2内存泄漏的检查工具 4.2.3设置进程名称(标题) 4.3日志打印实战,优化main函数调用顺序 4.3.1基础设施之日志打印实战代码一 4.3.2设置时区 4.3.3基础设施之日志打印实战代码二 4.3.4理顺main函数中代码执行顺序 4.4信号、子进程实战,文件I/O详谈 4.4.1信号功能实战 4.4.2Nginx中创建worker子进程 4.4.3日志输出重要信息讲解 4.4.4write函数思考 4.4.5掉电导致write写入的数据丢失破解法 4.4.6标准I/O库 4.5守护进程及信号处理实战 4.5.1守护进程功能的实现 4.5.2信号处理函数的进一步完善(避免僵尸子进程) 第5章网络通信实战 5.1C/S、TCP/IP妙趣横生、惟妙惟肖谈 5.1.1客户端与服务器端 5.1.2网络模型 5.1.3最简单的客户端和服务器程序实现代码 5.1.4TCP和UDP的区别 5.2TCP三次握手详析,telnet、Wireshark示范 5.2.1TCP连接的三次握手 5.2.2telnet工具使用介绍 5.2.3Wireshark监视数据包 5.2.4TCP断开的四次挥手 5.3TCP状态转换,TIME_WAIT详解,SO_REUSEADDR 5.3.1TCP状态转换 5.3.2TIME_WAIT状态 5.3.3SO_REUSEADDR选项 5.4listen队列剖析、阻塞与非阻塞、同步与异步 5.4.1listen队列剖析 5.4.2阻塞与非阻塞I/O 5.4.3异步与同步I/O 5.5监听端口实战、epoll介绍及原理详析 5.5.1监听端口 5.5.2epoll技术简介 5.5.3epoll原理与函数介绍 5.6通信代码精粹之epoll函数实战1 5.6.1提醒注意 5.6.2配置文件的修改 5.6.3epoll函数实战 5.7通信代码精粹之epoll函数实战2 5.7.1ngx_epoll_process_events函数调用位置 5.7.2ngx_epoll_process_events函数内容 5.7.3ngx_event_accept函数内容 5.7.4总结和测试 5.7.5事件驱动总结 5.7.6一道腾讯后台开发的面试题 5.8ET、LT深释,服务器设计、粘包解决 5.8.1ET、LT模式深入分析及测试 5.8.2本项目的服务器设计 5.9通信代码精粹之收包、解包实战 5.9.1收包分析及包头结构定义 5.9.2收包状态宏定义 5.9.3收包实战代码 5.9.4测试服务器收包避免推诿扯皮 第6章服务器业务逻辑处理框架 6.1业务逻辑之多线程、线程池实战 6.1.1学习方法 6.1.2多线程的提出 6.1.3线程池实战代码 6.1.4线程池的使用 6.2业务逻辑之打通业务处理脉搏实战 6.2.1线程池代码调整及补充说明 6.2.2线程池实现具体业务之准备代码 6.2.3threadRecvProcFunc成员函数讲解 6.2.4整体测试工作的开展 6.3预发包,多线程资源回收深度思考 6.3.1业务逻辑细节写法说明 6.3.2连接池中连接回收的深度思考 6.3.3程序(进程)退出时线程的安全终止 6.3.4epoll事件处理的改造 6.3.5连接延迟回收的具体应用 6.4LT发数据机制深释、gdb调试浅谈 6.4.1水平触发模式(LT)下发送数据深度解释 6.4.2gdb调试浅谈 6.5发数据、信号量、并发、多线程综合实战 6.5.1发送数据指导思想 6.5.2发送数据代码实战 6.5.3发送数据后续处理代码 第7章画龙点睛之服务器安全与完善 7.1过往总结、心跳包代码实战 7.1.1前面学习的总结 7.1.2心跳包概念 7.1.3心跳包代码实战 7.2控制连入数,黑客攻击防范及畸形包应对 7.2.1控制并发连入数量 7.2.2黑客攻击的防范 7.2.3超时直接踢出服务器的需求 7.3超负荷安全处理、综合压力测试 7.3.1输出一些观察信息 7.3.2遗漏的安全问题思考 7.3.3压力测试前的准备工作 7.3.4压力测试 7.4惊群、性能优化大局观 7.4.1CPU占比与惊群 7.4.2性能优化大局观 7.4.3性能优化的实施 7.4.4配置最大允许打开的文件句柄数 7.4.5内存池补充说明 第8章总结与展望 8.1遗留问题探讨增补之消息跳跃发送 8.1.1调整ngx_write_request_handler函数的代码顺序 8.1.2消息的跳跃发送 8.2结束语、课程总结 8.2.1本书概要总结 8.2.2技术总结 8.2.3项目的用途总结 8.2.4学习方法总结 8.2.5架构师之路 8.2.6代码统计与再见
你还可能感兴趣
我要评论
|