网络编程实战--极客时间课程推荐/优惠
版权声明
本站非极客时间官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。
课程详情
你将获得:
- 掌握网络编程的底层原理;
- 10 个常见异常和应对措施;
- 聚焦常见的网络性能优化问题;
- 动手编写高性能 HTTP 服务器。
课程介绍
什么是网络编程?一句话来说,网络编程是对网络协议的落地。
落地,意味着网络编程对实战的要求更高,也正因为如此,很多程序员更倾向于使用类似Netty这种封装好的框架,快速,高效。
既然如此,为什么还要学习网络编程呢?
确实,比起开发细节,在某些时候,开发效率更重要一些。但如果是高性能的网络编程呢?
这就好比盖房子,当我们只需要建一个小平房时,那么对地基的深浅和材质的要求就没有那么高了,但如果是建造一栋高楼大厦,小平房的地基条件显然不能满足我们的需求。
同样的,高性能网络编程与普通的开发不一样,高性能意味着工作中的设计很容易到达临界点。这时不仅要想办法延展边界,比如提高吞吐量和并发性,还要解决临界点下各种棘手的异常问题,比如怎样保证上千万个连接的正常运行?
这个时候就不只是框架的使用问题了,我们更应该从底层原理出发,才能真正搞懂高性能问题。而这些问题,又非常依赖多年的实战,只有这样,才能总结出一套成体系的方法论和经验。
盛延敏,本科、博士皆就读于中科大,2000年初就开始接触ACE、CORBA等网络编程技术,毕业后加入IBM从事WebSphere应用服务器开发和云平台Bluemix开发。后任大众点评云平台首席架构师,主持和推动了大众点评私有云平台的建设。目前在蚂蚁金服从事云计算领域的架构和开发等工作。
他将结合自己多年的实战经验,从网络编程的底层原理开始讲起,一步步聚焦到高性能编程上,教你从原理层面解决实际工作中可能遇到的各种性能问题,并且在最后手把手教你搭建一个可用的高性能框架。
课程基础要求
专栏使用C/C++语言讲解,需要你能看懂基础的C/C++语法。
文稿代码链接
文稿中代码较多,完整版请去GitHub查看。
专栏模块
专栏分为4个模块,还特别设计了“期中周”。
基础篇
从基本的套接字开始讲起,通过形象生动的比喻让你理解诸如三次握手、套接字缓冲区这样的底层原理,构建一个全面的知识体系,为后续的学习打下基础。
提高篇
在网络编程中,异常问题与性能息息相关。尤其是在高性能的条件下,异常问题出现的概率会大幅度增加。本模块重点讲解异常信息,教你提高程序中的鲁棒性。
期中周
为了增强你的实战能力,在基础篇和提高篇的基础上设置了为期一周的动手实践项目。你可以在老师的指导下自己动手编写一个可用的互联互通的程序,加深对网络编程的理解。
性能篇
能否解决程序的性能问题,是衡量水平高低的重要标准。本模块深入聚焦工作中常见的性能问题,带你处理诸如I/O、线程与进程等现在高性能网络编程所需要的技术,从而提高编程能力。
实战篇
除了学会利用轮子之外,造轮子也是学习能力的一个重要体现。本模块将结合前面讲到的技术,教你打造一个高性能的网络程序。
课程目录
开篇词
- 开篇词 | 学好网络编程,需要掌握哪些核心问题?
第一模块:基础篇
- 01 | 追古溯源:TCP/IP和Linux是如何改变世界的?
- 02 | 网络编程模型:认识客户端-服务器网络模型的基本概念
- 03丨套接字和地址:像电话和电话号码一样理解它们
- 04 | TCP三次握手:怎么使用套接字格式建立连接?
- 05 | 使用套接字进行读写:开始交流吧
- 06 | 嗨,别忘了UDP这个小兄弟
- 07 | What? 还有本地套接字?
- 08 | 工欲善其事必先利其器:学会使用各种工具
- 09丨答疑篇:学习网络编程前,需要准备哪些东西?
第二模块:提高篇
- 10 | TIME_WAIT:隐藏在细节下的魔鬼
- 11 | 优雅地关闭还是粗暴地关闭 ?
- 12 | 连接无效:使用Keep-Alive还是应用心跳来检测?
- 13 | 小数据包应对之策:理解TCP协议中的动态数据传输
- 14丨UDP也可以是“已连接”?
- 15 | 怎么老是出现“地址已经被使用”?
- 16 | 如何理解TCP的“流”?
- 17 | TCP并不总是“可靠”的?
- 18 | 防人之心不可无:检查数据的有效性
- 19丨提高篇答疑:如何理解TCP四次挥手?
期中复习周
- 期中大作业丨动手编写一个自己的程序吧!
- 期中大作业丨题目以及解答剖析
第三模块:性能篇
- 20 | 大名⿍⿍的select:看我如何同时感知多个I/O事件
- 21 | poll:另一种I/O多路复用
- 22 | 非阻塞I/O:提升性能的加速器
- 23 | Linux利器:epoll的前世今生
- 24 | C10K问题:高并发模型设计
- 25 | 使用阻塞I/O和进程模型:最传统的方式
- 26 | 使用阻塞I/O和线程模型:换一种轻量的方式
- 27 | I/O多路复用遇上线程:使用poll单线程处理所有I/O事件
- 28 | I/O多路复用进阶:子线程使用poll处理连接I/O事件
- 29 | 渐入佳境:使用epoll和多线程模型
- 30 | 真正的大杀器:异步I/O探索
- 31丨性能篇答疑:epoll源码深度剖析
第四模块:实战篇
- 32 | 自己动手写高性能HTTP服务器(一):设计和思路
- 33 | 自己动手写高性能HTTP服务器(二):I/O模型和多线程模型实现
- 34 | 自己动手写高性能HTTP服务器(三):TCP字节流处理和HTTP协议实现
- 35 | 答疑:编写高性能网络编程框架时,都需要注意哪些问题?
结束语
- 结束语丨我相信这不是结束,让我们江湖再见
期末测试
- 期末测试题丨有关网络编程的知识,你掌握了多少呢?