首页 > 代码库 > 强烈推荐一本今年八月份的新书《后台开发:核心技术与应用实践》,作者腾讯资深后台开发工程师徐晓鑫

强烈推荐一本今年八月份的新书《后台开发:核心技术与应用实践》,作者腾讯资深后台开发工程师徐晓鑫

   昨天被华章安利了一本今年8月份的新书《后台开发:核心技术与应用实践》,极好的书,评价和口碑超高。
   这本书腾讯公司资深研发工程师多年后台开发经验总结,获腾讯、Facebook、微软、阿里、百度多位资深技术专家高度认可。 完整勾勒后台开发技术能力体系,多维度讲解了成为一名后台开发工程师所需掌握的核心技术、开发工具和实践方法,后台工程师修炼必读。作者sharexu是位值得推崇的女性开发者。技术分享

  后台开发是一个“历史悠久”的领域,同是也是一个沉淀深厚,高技术价值的领域。本书清晰、严谨、务实的风格显示出晓鑫对该领域知识的深刻理解。——张子兴 Facebook对外支付项目主程,美国加州MenloPark
  每一位从事后台开发的专业人士都需要一本《后台开发:核心技术与应用实践》。对每一位想要认真从事该领域工作的人来说,这是一本绝对必读的书籍。——彭可竞 微软软件工程师,美国华盛顿州Redmond
  《后台开发:核心技术与应用实践》是作者多年后台开发、架构和研究的精华。本书用通俗的文字、详尽的示例代码,结合实际工作中的案例,讲述了后台开发方方面面的知识,内容丰富。对于从事后台开发的人员,这是一本很好的由浅入深的学习书籍。——周乐 阿里巴巴资深算法工程师,北京望京
  使用C 语言进行后台开发有一定的门槛,本书可以很好的帮助你跨过这个“门槛”。——畅晋 百度大数据高级测试工程师,北京上地

 

 

内容推荐

 

因为后台开发所需要的技术广泛而坚深,要成为一名后台开发工程师门槛很高,所以相关人才比较紧缺。作者是在腾讯工作多年的后台开发工程师,不仅技术精湛,而且在处理大量实际业务的过程中积累了丰富的开发经验。在这本书中,她不仅首次为后台开发工程师勾勒出了完整的知识能力体系结构图,而且还对后台开发工程师所需要掌握的大量复杂的技术知识进行了提炼、剥离和整合,专注于成为一名后台开发工程师所需掌握的核心技术、开发工具和实践方法,大幅度降低后台开发工程师的学习曲线。本书的内容获得了来自腾讯、Facebook、微软、阿里、百度的多位资深技术专家的高度认可。全书一共13章,在逻辑上分为六大部分:第一部分(第1~3章)介绍了编程语言方面的知识,包括常用语法、类与常用STL的使用;第二部分(第4~5章)介绍了编译原理和调试方法相关的知识,编译原理包括编译与链接的具体过程、Makefile的编写、目标文件的内容与处理目标文件相关工具的使用,调试方法主要介绍了strace、gdb、top、ps与valgrind工具的使用等;第三部分(第6~8章)介绍了网络相关的知识,包括TCP协议的关键知识点和TCP server的实现,网络IO模型和select、poll与epoll三个重要函数的使用,还有ping、tcpdump、netstat和lsof这四个网络分析工具的使用;第四部分(第9~11章)主要是多线程、进程和进程间通信相关的知识,包括多线程的使用、多线程的同步和重入问题,进程方面有父子进程、僵死进程、守护进程和进程间通讯的方式;第五部分(第12章)主要是HTTP协议的介绍与使用、CGI的设计原理、实现和FASTCGI的简单介绍;第六部分(第13章)通过常用类库JsonCPP和Protobuf的使用,演示如何使用第三方库。

 

 

 

   

徐晓鑫:
听到“后台开发”这个词,估计很多人心中都会有一些自己的感性认识,这种认识具体到每个人可能有一些差别,但估计大部分人都有这么一种看法:“后台开发”是编写一些用户看不见的程序,也就是非界面的,既不是网页,也不是App,更不是桌面程序,因为这些都是用户看得见的(被称为“前台开发”)。这种感性认识在一定程度上是正确的,但是它不够具体,也不够全面。
我所理解的“后台开发”的确是用户“看不见”的部分,但是还有很多界面性的程序是给企业内部人员使用的,这些虽然是界面程序,但是对于最终用户来说也是“看不到”的。举个例子,开发一个电子商务的网站,提供给客户进行商品购买的网页是用户看得见的,不属于“后台”,但是电商网站内部员工使用的“用户管理系统”,“订单管理系统”等,也是用户看不见的,但它们不属于本书中所指的“后台”。在有些场合,或者一些人的习惯中,这些内部使用的系统也叫“后台”,这样并没有错,希望读者在听到的时候,知道说话人指的是什么。
在BAT这类成熟的、大型的、技术分工明确的互联网公司里,一般提到“后台开发”,指的是“服务端的网络程序开发”,从功能上可以具体描述成这样:服务器收到客户端发来的请求数据,解析请求数据,然后进行处理,最后把结果返回,如下图所示。

技术分享

 



“SERVER”
这里的“SERVER”就是后台开发程序员需要用尽毕生精力去耕耘的“后台程序”,或者“服务器”。 SERVER接收请求的方式既可以是通过TCP请求包,也可以是HTTP请求包(其实也是 TCP连接)。如果是HTTP方式的请求,请求包的格式一般是JSON或者XML ,或者自定义的ASCII文本;如果是TCP请求,二进制的格式会常见一些。解析请求包的方式自然是请求包的格式相对应的,来的是什么格式的包,就用对应的解包库区解析,如果是自定义的格式,就按照自定义的方式去解析。“处理请求”这一步是后台程序的具体业务逻辑。很多封装好的后台程序包会把其他三步都做好,但是这一步还是需要开发者自己去实现,因为只有开发者自己清楚,程序是要去做“登陆”还是去做“注册”的事情。“输出回复包”和“接收请求包”是对应的,一般来说,收到的是 JSON,那么回复的也是JSON,收到的是 XML,那么发送的也是XML,其他的格式也是一样的。这四个步骤是所有后台程序都会有的,无论使用什么语言去实现,都可以看到这四个步骤的影子。
“CLIENT”
“CLIENT”指的是向“ SERVER”发起请求,并接收“SERVER”回复的一方,就是通常称的“客户端”。既然后台程序是通过 TCP或者HTTP 接收和回复消息的,那么只要是能够发起TCP或者HTTP连接的都可以作为客户端,可以是浏览器, PC端的程序,安卓应用,IOS应用,等等。
当然,这只是“后台开发”最基本的概念认识,也是像BAT这类成熟的大型互联网公司对“后台开发”这个岗位的工作范围定位。具体到实际的工作中,后台开发工程师需要涉及的技术层面很多,接入层、逻辑层、数据层等、需要考虑的问题也很多,个人认为最重要的几个就是高可用性(availabilty)、可扩展性(scalability),健壮性(robustness)。也许以后咱们可以一起仔细聊一聊这些话题。
本文部分段落摘自《后台开发:核心技术与应用实践》绪论部分

技术分享

 


《后台开发:核心技术与应用实践》
ISBN:978-7-111-54339-8
作者:徐晓鑫

强烈推荐一本今年八月份的新书《后台开发:核心技术与应用实践》,作者腾讯资深后台开发工程师徐晓鑫