成为VIP会员查看完整内容
VIP会员码认证
首页
主题
发现
会员
服务
注册
·
登录
0
掌握这 2 个核心,你也能写出高性能的网络程序
2019 年 7 月 31 日
码农翻身
什么是网络编程?用一句话概括,就是
对网络协议的落地
。
落地,意味着
对实战的要求更高
。所以,一些朋友更喜欢用类似 Netty 这种封装好的框架——快速,高效。既然这样,为什么要学网络编程呢?
跟开发细节相比,有时候我们更看重开发效率。
但如果是
高性能网络编程
呢?
拿盖房子来说,如果要建个小平房,对地基的深浅和材质没那么高要求;但要想建造高楼大厦,小平房的地基条件就远远不够了。
同样的,普通开发
跟高性能网络编程也不能相提并论
。高性能意味着:当设计达到临界点时,不仅要
想办法延展边界
,比如提高吞吐量和并发性,还要
解决各种棘手异常
,比如保证千万个连接正常运行等等。
这些问题,
可不是一个框架就能解决的
。
框架的产生,或是为了实现跨平台支持,例如 JDK;或是为了屏蔽网络编程的细节,让开发更方便,例如 libevent。直接学框架,
出了问题也难以排查,更无法捋顺框架背后的设计逻辑
。
我面试过很多人,发现即使是工作多年的程序员,对网络协议和网络编程的理解,仍然停留在一个比较浅的层次上,比如:
• 大家经常说的四层、七层,分别指的是什么?
• TCP 三次握手是什么,TIME_WAIT 是怎么发生的?CLOSE_WAIT 又是什么状态?
• Linux 下的 epoll 解决的是什么问题?如何使用 epoll 写出高性能的网络程序?
• 什么是网络事件驱动模型?Reactor 模式又是什么?
大多数人仅停留在「是这样」的阶段,对「为什么」缺乏深入了解。其实,
无论在面试还是工作中
,这方面知识都是
非常重要的基本功
。
在我看来,学高性能网络编程,
掌握两个核心要点就够了
:
第一,在理解网络协议的基础上,充分利用操作系统内核提供的能力,感知各种网络 I/O 事件;第二,学会使用线程处理并发。
抓住这两个核心问题,就抓住了
高性能网络编程的“七寸”
。
分享给你一张
网络编程的核心知识图谱
,仔细梳理、透彻理解这些知识点,才能学以致用地解决工作中的实际问题。
这张图谱出自盛延敏,最近他跟极客时间合作了专栏
《网络编程实战》
。
提前看了下目录,其实挺想多说一句,这名字起得太朴素了,应该叫:高性能网络编程,因为整个专栏都是围绕
「高性能」
展开的。
但话说回来,
高性能就建立在那些实打实的经验基础上
,所以现在这个也算简洁有力。内容也是
单刀直入展开,比如讲解某个理论或算法时,与代码、实验相关联,分析它提出的目的、解决了哪些问题。
说白了,就是
从解决实际问题的角度切入
,讲解知识点,让你透彻理解协议、API 和代码。
学完就能用得上
,这点挺不错的,值得推荐。
关于盛延敏
盛延敏,前大众点评云平台首席架构师,现就职于某大型金融服务公司(很好猜但人家不让说),专注云计算的架构和开发工作。
博士毕业于中科大,毕业后加入 IBM,从事 WebSphere 应用服务器、PaaS 平台 Bluemix 等系统的开发工作。后任职大众点评,推动了以Docker为核心的私有云建设和落地。
2000 年,他开始用网络编程框架 ACE、CORBA 等进行电信网管系统的开发,后来接触了 ICE,写分布式控制系统。再之后转向 Java,使用 JDK 进行 Web Service 和应用服务器的网络开发和研究,使用 Netty 进行 Java 高性能网络编程的开发。
他是如何讲解网络编程的?
网络编程是个
重实战的模块
。在专栏中,他从底层原理讲起,逐步聚焦到高性能编程上,讲解了常见异常和性能问题,并手把手带你编写一个高性能 HTTP 服务器。
其中,主要聚焦 Linux 系统下的网络编程,相比于 Windows,Linux 可以更好、更完善地实现互联网的所有底层通道。加上基于 Linux 的移动开发平台 Android 迅速崛起,Linux 的重要性我也不多说了。
专栏主要分三大层级,逐步递进:
第一,理解 TCP/IP 网络模型和协议。
在基础篇中,梳理了 TCP/IP 模型和网络函数接口之间的联系,通过实例展开对套接字、套接字缓冲区、拥塞控制、数据包和数据流、本地套接字(UNIX 域套接字)等的讨论,交付了一个全面细致的知识体系。
第二,结合对协议的理解,增强对各种异常情况的处理能力。
比如,对 TCP 数据流的处理、半关闭的连接、TCP 连接有效性的侦测、处理各种异常情况等,这些问题决定了程序的健壮性。这一部分的内容,在提升篇有详细展开。
第三,写出可支持大规模高并发的网络处理程序。
在性能篇中,深入研究了 C10K 问题,引入进程、线程、多路复用、非阻塞、异步、事件驱动等现代高性能网络编程所需要的技术,并在实战篇中,结合实例进行上手操作,让你可以独立写出高性能的网络程序。
我看盛延敏用荀子那句“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。”来诠释学习网络编程的最佳方法,还挺贴切的。
但学透了还要去用,你可以对专栏里的代码进行修改和调试,进一步加深理解。把这些内容吃下去,消化掉,从底层到实战,透彻理解高性能网络编程。
从我这里订阅,有什么福利?
1.
早鸟优惠
¥68,原价 ¥99。
2.
结算时,输入
优惠口令
「justbuyit」
再减
5
元
,到手仅
63
元。
*注意:口令
【明晚 24 点】
失效。
3. 订阅专栏后,可领取作者整理的高清版
「网络编程核心知识」图谱
,获取方式:公众号后台回复「
网络编程
」。
△扫码立即试读
口令
【明晚 24 点】
失效,
点「阅读原文」以
最低价 ¥63
订阅。
登录查看更多
点赞并收藏
0
暂时没有读者
0
权益说明
本文档仅做收录索引使用,若发现您的权益受到侵害,请立即联系客服(微信: zhuanzhi02,邮箱:bd@zhuanzhi.ai),我们会尽快为您处理
相关内容
编程
关注
51
人们为了让计算机解决各种棘手的问题,使用编程语言
编写程序代码
并通过计算机运算得到最终结果的过程。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
141+阅读 · 2020年5月19日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【干货书】机器学习,408页pdf,开发人员和技术专业人员的动手实践手册
专知会员服务
206+阅读 · 2020年5月7日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【2020新书】如何构建数据团队?:设计集成的技能、需求和解决方案,257页pdf
专知会员服务
111+阅读 · 2020年3月11日
【2020程序猿必看新书】现代C语言程序设计,Modern C,408页pdf,新视角指南好书
专知会员服务
109+阅读 · 2020年2月6日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
分布式核心技术知识图谱,带走不谢
架构师之路
12+阅读 · 2019年9月23日
阿里架构师:双十一大促,多亏了 Node.js | 极客时间
前端之巅
9+阅读 · 2019年9月19日
字节跳动AI高级产品经理田宇洲:AI产品经理需要掌握的核心算法
PMCAFF
24+阅读 · 2019年5月15日
字字珠玑,高级技术专家带你了解阿里的开发流程规范
InfoQ
3+阅读 · 2019年5月10日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
刚开始学编程?这几款小工具能让你事半功倍
程序猿
7+阅读 · 2018年4月18日
【年终重磅福利来啦】1024T大数据编程资料免费领(含源码)
大数据和云计算技术
4+阅读 · 2017年12月29日
从零学习:从Python和R理解和编码神经网络(完整版)
论智
24+阅读 · 2017年12月16日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
Tensor Graph Convolutional Networks for Prediction on Dynamic Graphs
Arxiv
8+阅读 · 2019年10月16日
Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence
Arxiv
8+阅读 · 2019年3月22日
DC-SPP-YOLO: Dense Connection and Spatial Pyramid Pooling Based YOLO for Object Detection
Arxiv
3+阅读 · 2019年3月20日
Multi-Task Identification of Entities, Relations, and Coreference for Scientific Knowledge Graph Construction
Arxiv
10+阅读 · 2018年8月29日
Pooling Pyramid Network for Object Detection
Arxiv
6+阅读 · 2018年7月9日
Localization Recall Precision (LRP): A New Performance Metric for Object Detection
Arxiv
4+阅读 · 2018年7月4日
Sockeye: A Toolkit for Neural Machine Translation
Arxiv
7+阅读 · 2018年6月1日
A Sentiment Analysis of Breast Cancer Treatment Experiences and Healthcare Perceptions Across Twitter
Arxiv
4+阅读 · 2018年5月25日
The Web as a Knowledge-base for Answering Complex Questions
Arxiv
5+阅读 · 2018年3月18日
Fake Colorized Image Detection
Arxiv
6+阅读 · 2018年1月14日
VIP会员
自助开通(推荐)
客服开通
详情
相关主题
编程
临界点
套接字(BSD Sockets)
跨平台
Linux
编程实战
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
141+阅读 · 2020年5月19日
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【干货书】机器学习,408页pdf,开发人员和技术专业人员的动手实践手册
专知会员服务
206+阅读 · 2020年5月7日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【2020新书】如何构建数据团队?:设计集成的技能、需求和解决方案,257页pdf
专知会员服务
111+阅读 · 2020年3月11日
【2020程序猿必看新书】现代C语言程序设计,Modern C,408页pdf,新视角指南好书
专知会员服务
109+阅读 · 2020年2月6日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
热门VIP内容
开通专知VIP会员 享更多权益服务
《人类-航空/航天机器人协作网络中的动态覆盖控制和估计》177页
《数字目标定位:人工智能、数据和军事情报》
从俄乌战争中汲取的地理空间情报教训
《国防和国家安全中的战术边缘物联网》最新45页
相关资讯
分布式核心技术知识图谱,带走不谢
架构师之路
12+阅读 · 2019年9月23日
阿里架构师:双十一大促,多亏了 Node.js | 极客时间
前端之巅
9+阅读 · 2019年9月19日
字节跳动AI高级产品经理田宇洲:AI产品经理需要掌握的核心算法
PMCAFF
24+阅读 · 2019年5月15日
字字珠玑,高级技术专家带你了解阿里的开发流程规范
InfoQ
3+阅读 · 2019年5月10日
说说我的老同事,前端大神程劭非
余晟以为
17+阅读 · 2019年1月14日
逆向 | C++ 加壳程序的编写思路
计算机与网络安全
9+阅读 · 2019年1月1日
刚开始学编程?这几款小工具能让你事半功倍
程序猿
7+阅读 · 2018年4月18日
【年终重磅福利来啦】1024T大数据编程资料免费领(含源码)
大数据和云计算技术
4+阅读 · 2017年12月29日
从零学习:从Python和R理解和编码神经网络(完整版)
论智
24+阅读 · 2017年12月16日
十五条有用的Golang编程经验
CSDN大数据
5+阅读 · 2017年8月7日
相关论文
Tensor Graph Convolutional Networks for Prediction on Dynamic Graphs
Arxiv
8+阅读 · 2019年10月16日
Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence
Arxiv
8+阅读 · 2019年3月22日
DC-SPP-YOLO: Dense Connection and Spatial Pyramid Pooling Based YOLO for Object Detection
Arxiv
3+阅读 · 2019年3月20日
Multi-Task Identification of Entities, Relations, and Coreference for Scientific Knowledge Graph Construction
Arxiv
10+阅读 · 2018年8月29日
Pooling Pyramid Network for Object Detection
Arxiv
6+阅读 · 2018年7月9日
Localization Recall Precision (LRP): A New Performance Metric for Object Detection
Arxiv
4+阅读 · 2018年7月4日
Sockeye: A Toolkit for Neural Machine Translation
Arxiv
7+阅读 · 2018年6月1日
A Sentiment Analysis of Breast Cancer Treatment Experiences and Healthcare Perceptions Across Twitter
Arxiv
4+阅读 · 2018年5月25日
The Web as a Knowledge-base for Answering Complex Questions
Arxiv
5+阅读 · 2018年3月18日
Fake Colorized Image Detection
Arxiv
6+阅读 · 2018年1月14日
大家都在搜
无人艇
大模型
大型语言模型
全面综述
ETHZ博士论文
PRML
MoE
智能推荐
汽车智能化
出海产品从 0 到 1 该怎么做
Top
提示
微信扫码
咨询专知VIP会员与技术项目合作
(加微信请备注: "专知")
微信扫码咨询专知VIP会员
Top