网络编程实战
课程介绍
什么是网络编程?一句话来说,网络编程是对网络协议的落地。
落地,意味着网络编程对实战的要求更高,也正因为如此,很多程序员更倾向于使用类似Netty这种封装好的框架,快速,高效。
既然如此,为什么还要学习网络编程呢?
确实,比起开发细节,在某些时候,开发效率更重要一些。但如果是高性能的网络编程呢?
这就好比盖房子,当我们只需要建一个小平房时,那么对地基的深浅和材质的要求就没有那么高了,但如果是建造一栋高楼大厦,小平房的地基条件显然不能满足我们的需求。
同样的,高性能网络编程与普通的开发不一样,高性能意味着工作中的设计很容易到达临界点。这时不仅要想办法延展边界,比如提高吞吐量和并发性,还要解决临界点下各种棘手的异常问题,比如怎样保证上千万个连接的正常运行?
这个时候就不只是框架的使用问题了,我们更应该从底层原理出发,才能真正搞懂高性能问题。而这些问题,又非常依赖多年的实战,只有这样,才能总结出一套成体系的方法论和经验。
盛延敏,本科、博士皆就读于中科大,2000年初就开始接触ACE、CORBA等网络编程技术,毕业后加入IBM从事WebSphere应用服务器开发和云平台Bluemix开发。后任大众点评云平台首席架构师,主持和推动了大众点评私有云平台的建设。目前在蚂蚁金服从事云计算领域的架构和开发等工作。
他将结合自己多年的实战经验,从网络编程的底层原理开始讲起,一步步聚焦到高性能编程上,教你从原理层面解决实际工作中可能遇到的各种性能问题,并且在最后手把手教你搭建一个可用的高性能框架。
课程基础要求
专栏使用C/C++语言讲解,需要你能看懂基础的C/C++语法。
文稿代码链接
文稿中代码较多,完整版请去GitHub查看。
专栏模块
专栏分为4个模块,还特别设计了“期中周”。
基础篇
从基本的套接字开始讲起,通过形象生动的比喻让你理解诸如三次握手、套接字缓冲区这样的底层原理,构建一个全面的知识体系,为后续的学习打下基础。
提高篇
在网络编程中,异常问题与性能息息相关。尤其是在高性能的条件下,异常问题出现的概率会大幅度增加。本模块重点讲解异常信息,教你提高程序中的鲁棒性。
期中周
为了增强你的实战能力,在基础篇和提高篇的基础上设置了为期一周的动手实践项目。你可以在老师的指导下自己动手编写一个可用的互联互通的程序,加深对网络编程的理解。
性能篇
能否解决程序的性能问题,是衡量水平高低的重要标准。本模块深入聚焦工作中常见的性能问题,带你处理诸如I/O、线程与进程等现在高性能网络编程所需要的技术,从而提高编程能力。
实战篇
除了学会利用轮子之外,造轮子也是学习能力的一个重要体现。本模块将结合前面讲到的技术,教你打造一个高性能的网络程序。