考c++程序员应看哪些书

考c++程序员应看哪些书,第1张

《The C++ Standard Library: A Tutorial and

Reference》原文版

中文版:《C++标准程序库:自修教程与参考手册》

这是一本百科全书式的C++标准库著作,是一本需要一再查阅的参考大全。它在完备性、细致性以及精确性方面都是无与伦比的。本书详细介绍了每一标准库组件的规格和用法,内容涵盖包括流和本地化在内的整个标准库而不仅仅是STL。正如本书副标题所示,它首先适合作为教程阅读,尔后又可用作参考手册。

浅显易懂的写作风格使得这本书非常易读。如果你希望学习标准库的用法并尽可能地发挥其潜能,那你必须拥有这本书。正如网络上所言,这本书不仅仅应该摆在你的书橱中,更应该放到你的电脑桌上。我向每一位职业C++程序员强烈推荐。

《Standard C++ IOStreams and Locales: Advanced

Programmer's Guide and Reference》原文版

中文版《标准C++输入输出流与本地化》

C++标准库由STL、流和本地化三部分构成。关于STL的书市面上已经有不少,但罕见流和本地化方面的专著。本书是这两个领域中最优秀的一本,迄今为止没有任何一本书比这一本更全面详尽地讨论了流和本地化。如果你不满足于停留在“会用”流库的层面,千万不要错过孝丛它。

2001年夏天,我草草翻阅过这本书的中文版,从内容到包装都给我留下了比较深刻的印象——不过负面的居多一些。2003年秋天,无意中得知某网络书店正以超粗慎虚低价格甩卖这本书的中译本,情不自禁,一阵唏嘘。

《Effective STL》影印版、中文版

读完Scott 的《Effective C++》和《More Effective

C++》的中译本之后,我一直期待这本书的中文版。我从潘爱民先生的个人主页上了解到,他和他的合作伙伴似乎早已完成了这本书的翻译工作,可惜至今市面上仍不得见。幸运的是,我们可以看到它的原版。

本书是使用STL的程序员必读之作。在这本书中,Scott向我们讲述STL容器和算法的工作机制以及如何以最佳方式使用它们。和Scott的其他作品一样,这本书的写作风格清晰、精确,具有极佳的可读性。看过这本书以后,我想你也许会和我以及其他C++程序员一样产生这样的想法:Scott什么时候会写出一本“More

Effective STL”?

《Generic Programming and the STL: Using and Extending the C++

Standard Template Library》影印版、中文版《泛型编程与STL》

关于STL,我还提醒你留心Matthew H. Austern的《Generic Programming and the STL: Using and

Extending the C++ Standard Template

Library》(《泛型编程与STL》,中国电力出版社)。这本书散发着浓厚的学院气息。Andrew Koenig和Barbara

Moo在《Accelerated C++: Practical Programming by

Example》一书末尾郑重推荐另外两本进阶好书(除了他们自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本书!

网络编程

在网络编程时代,C++应该扮演着怎样的角色,让ACE(Adaptive Communications Environment)来告诉你。

Douglas C. Schmidt, Stephen D. Huston,《C++ Network Programming》Volume 1:

Mastering Complexity with ACE and Patterns、Volume 2: Systematic Reuse with ACE

and Frameworks

中文版:,《C++网络编程》卷1:运用ACE和模式消除复杂性、卷2:基于 ACE 和框架的系统化复用

采用C++进行企业级网络编程,目前ACE(以及这两本书)是一个值得考虑的选择。ACE是一个面向对象、跨平台、开放源码的网络编程框架,目标在于构建高性能网岩燃络应用和中间件。Douglas是ACE的创始人,Stephen则已为ACE提供了数年的技术支持和顾问服务,两位都是ACE社群(是的,ACE的影响和实际应用的程度已经形成了一个社群)的专家。

ACE并不单单被大学和研究所追捧,它已经被成功地应用于世界上成千上万个商业应用中。在电信、宇航、医药和财经领域的网络系统中,ACE已经并继续发挥着重要的作用。如果你准备开发高性能通讯系统,你应该考虑考虑这一汇集世界顶尖专家智慧的成果。

除了使用C++面向对象设计技术和模板等高级语言特性外,ACE还运用了大量的模式。《C++网络编程》卷1和卷2并不仅仅教你关于ACE的方方面面,它还会教给你模式和通用框架设计等高级技术等。所以,作为一名中、高级C++程序员,即使你很少进行正儿八经的C++网络程序设计,阅读这两本书同样可以从中受益。

是的,并非所有网络应用都要使用Web服务器(以及其他应用服务器)和重量级组件模型,换个思路,它们或许也可以从轻量级的ACE组件中获益。

杂项

以下几本书所以被列入“杂项”单元,是因为我没有考虑到合适的归类方法,它们和上面的书籍一样,值得一读。

Bruce Eckel,《Thinking in C++》影印版二版、三版(又名卷二)

中文《C++编程思想》二版、卷一:标准C++导引 卷二:实用编程技术

《Thinking in

C++》的第1版于1996年荣获“软件研发”杂志评选的图书震撼大奖。最新推出的第2版对内容进行了大幅改写和调整,以反映C++标准化带来的影响以及近几年面向对象领域最新研究和实践成果。“输入输入流”、“多重继承”、“异常处理”和“运行时类型识别”等高级主题连同C++标准化以后增加的一些内容则被放入第二卷中。Bruce是一名经验丰富的C++讲师和顾问,其培训和写作经验都是世界一流水准,他的作品比那些“玩票”的技术人员写的东西更能吸引读者。事实上,在同类图书中,对于大多数读者而言,这本书的可读性要超过TCPL和《C++

Primer》。顺带一提,访问作者的站点,你可以先睹第二卷的风采。

Andrew Koenig, Barbara E. Moo,,《Ruminations on C++: A Decade of Programming

Insight and Experience》原版、中文版《C++沉思录》

Andrew是世界上屈指可数的C++专家。这是一本关于C++编程思想和程序设计技术而非语言细节的著作。如果你已经具有一定的基础,这本书将教你在进行C++编程时应该怎样思考,应该如何表达解决方案。整本书技术表达透彻,文字通俗易懂。Bjarne这样评价这本书:本书遍布“C++是什么、C++能够做什么”的真知灼见。

Stanley B. Lippman,《Inside The C++ Object Model》影印版、中文版《深度探索C++对象模型》

从编译器的角度观察C++可以使你知其然并知其所以然。本书探讨了大量的C++面向对象程序设计的底层运作机制,包括构造函数、函数、临时对象、继承、虚拟、模板的实例化、异常处理、运行期类型识别等,另外还介绍了一些在实现C++对象模型过程中做出的权衡折衷。喜欢刨根问底的C++程序员不要错过这本书。

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns:

Elements of Reusable Object-Oriented software

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,《Design Patterns:

Elements of Reusable Object-Oriented software》影印版、中文版《设计模式:可复用面向对象软件的基础》

设计可复用的面向对象的软件,你需要掌握设计模式。本书并非专为C++程序员而写,但它采用了C++(以及Smalltalk)作为主要示例语言,C++程序员尤其易于从中受益。四位作者都是国际公认的面向对象软件领域专家,他们将面向对象软件的设计经验作为设计模式详细记录下来。这本书影响是如此深远,以至于四位作者以及本书都被昵称为GoF(Gang

of

Four)。本书学院气息浓厚,行文风格严谨简洁,虽然它不如某些讲解模式的书籍易读,但真正要精准地理解设计模式,本书是终极权威。学习设计模式,这本书需要一而再、再而三的咀嚼。顺带一句:请将设计模式化作开拓思维的钥匙,切莫成为封闭思维的枷锁。

John Lakos,《Large-Scale C++ Software Design》中文版《大规模C++程序设计》、候捷:《STL 源码剖析》

还有一些C++好书值得一读,恕此处无法一一列出。例如John Lakos的著作《Large-Scale C++ Software

Design》(《大规模C++程序设计》,中国电力出版社)和侯捷先生的《STL 源码剖析》(华中科技大学出版社)等。

《STL

源码剖析》是一本很有特色的书,但我认为它还可以更好。我个人期待侯捷先生自第一版发行以来经过对模板技术的沉淀和再思考之后,再写一本剖析得更深入、更透彻并且更全面的“第二版”。遗憾的是,侯捷先生在完成《C++

Templates: The Complete Guide》一书的翻译后似乎决定暂时告别模板、泛型编程和STL领域。

使用C++成功开发大规模软件系统,不仅需要很好地理解大多数C++书籍中讲述的逻辑设计问题,更需要掌握《大规模C++程序设计》中讲述的物理设计技术。当然,这本书的确有点过时了,不过,如果你的精力和金钱都比较宽绰,买一本看看并无坏处。

至此,我想有必要声明一下,有一些(好)书没有得到推荐,主要原因如下:

以上这些书已经足够多、足够好了。

我不会推荐通过正常渠道很难购买到的书籍 ——不管是中文版还是英文版。

作(译)者名气大小不影响我的推荐。我们是在看书,不是看人。

我不会推荐我从来没有看过的书。我至少要看过其中的某个版本(包括电子档)。这个“看”,一般指“认真阅读”,不过有一些也只能算是“浏览”。

结语

作为一名普通技术写译者,我深知技术创作和翻译的艰辛(和快乐),并多多少少了解一些有关技术书籍创作、翻译、制作、出版以及市场推介背后的细节。今天,我不会再对一本看上去差强人意的图书信口开河。罗列同一本书的各种版本的用意只在于为你多提供一些信息,让你多一种选择。

在本文成文的后期,我给Bjarne写了一封信,请教如果他来写这篇文章会怎么写。他给了我简明扼要的建议。在肯定以上列出的绝大部分图书都是世界顶尖水平的C++著作的同时,Bjarne提醒我别忘了向专家级程序员推荐《The

C++ Standard : Incorporating Technical Corrigendum No. 1》

《The C++ Standard : Incorporating Technical Corrigendum No. 1》

Bjarne还友好地提醒我,在我的推荐列表中没有哪一本有助于C++程序员进行Windows编程——这正是我的本意。在这篇文章中,我只推荐、点评平台中立的C++著作(网络编程除外)——和 *** 作系统无关,和集成开发环境无关,我甚至幻想它们和编译器也无关。你可以根据业务开发需要,选读自己喜爱的领域相关的C++书籍。

说到“系统无关、平台中立”,我不由得想起了“抽象层”的概念。开发实际应用的C++程序员通常工作于特定 *** 作系统、特定开发环境和特定业务领域之中,而对标准C++和C++标准库扎实而深刻的把握,无疑是你得以在不同的 *** 作系统、不同的开发环境以及不同的业务领域之间纵横驰骋的“抽象”本钱。

《程序员》软件工程

读书报告 主持人:熊节(Gigix):《程序员》杂志社技术编辑,C-View成员。嘉 宾:刘艺(Newdream):大学教师,撰写和编译图书多部。 汪颖(Adams):UMLChina成员,《人月神话》译者。 Newdream:随着计算机技术的发展,由一两个人关起门来打天下的软件英雄时代一去不复返了。现在的商业软件大部分都是很多人协同工作的结果,应用软件也已经由桌面应用发展到分布式网络应用,软件开发的难度和规模日益扩大。不管我们愿不愿意,软件工程正在从课堂上、书本上走下来,强迫我们去学习它,应用它。工程是将理论知识应用于实践的科学,而软件工程则借鉴了传统工程的原则和方法,以求高效地组织和开发高质量软件。国内软件工程的研究虽然并不比国外晚,但在软件工程的实用方面仍然滞后于美国等发达国家,特别是软件工程的应用人才奇缺。最近几年,随着大量国外软件工程经典图书的引进,国内的计算机研究和开发人员了解和学习了很多最新的软件工程理论和技术,从而推动了软件工程的广泛应用。现在越来越多的IT企业意识到软件工程对保证产品质量、降低开发风险、提高管理效率的重要作用,而精通软件工程的开发人员也成为大公司高薪争聘对象。软件工程图书正在成为计算机图书的一大热点。 Gigix:是的。两位在软件工程方面都有比较深的认识,并且也都博览群书。下面我们就来谈谈软件工程的书籍吧。 Newdream:对于软件工程的初学者来说,清华大学出版社的中国计算机软件专业技术水平考试指定用书《软件工程》(分为初、中、高级)是一本不错的入门读物。该书的作者郑人杰教授是我国知名的软件工程专家。这本书通俗易读,内容系统权威,可以帮助读者较全面地了解软件工程方面的知识。但由于这本书侧重应试,因此实用性较差。 Adams:新近业界推崇的CMM 2级从需求管理、配置管理、SQA、软件计划以及软件跟踪等KPA的角度,为规范化的软件管理提供了理论依据——然而,它依然带有学术派的色彩,使若干从业者有意犹未尽的感觉。《[ISBN]7-111-07282-0[/ISBN]》则涵盖了上述领域,全面深入浅出地介绍了软件工程学科的各个方面。其中,所涉及的实践已在很大程度上超越了目前的软工水平——不用再哀叹敬段路在何方,路就在脚下。另外,《超越混沌——有效管理软件开发项目》这本软件工程的散文集里总结了许多经验教训,有空翻一翻,经常会心有戚戚焉的感觉。可惜,目前还没有影印版。 Gigix: Newdream的评价比较“中庸”,呵呵。在我看来,软件工程教材,能够起到的惟一作用(如果的确有作用的话),就是指导软件开发者的工作。如果不能指导实际工作,那些听起来很美的词汇、术语就没有任何意义。因此,我总是认为那本《[ISBN]7-111-07282-0[/ISBN]》算是目前为止最好的一本教材。对于名词的解释,那本《[ISBN]7-111-07282-0[/ISBN]》肯定不如某些国产教材来得好;但是这种一定程度的晦涩和复杂,对于正经学习软件工程是必要的。任何一个道理,如果说得过于抽象过于概括,那肯定会变成同义反复(也就是废话)。国产教材往往就犯这个毛病。好象我不应该用“国产教材”这样一个比较隐晦的称呼?没错,说郑人杰教授那套《软件工程》教材,记得以前在学校的时候,大概有一年的时间在学郑教授那套“钦定”教材。学完的感觉就是:他解释的每个词都很好,说的每句话都正确。整本书放之四海而皆准——科技工作者的直觉告诉我,放之四海而皆准的东西,多半都不可 *** 作。这也算是我挑选软件工程书的一个办法吧:不光要有办法,还要有办法的约束条件,以及办法不适用的场合。也就是说,书中提供的知识必须是可证伪的。如果一本书不能说明自己提供的办法在什么条件下失效,那读者学到这些办法之后还得自己去摸索它的约束条件,这本书又有什么作用呢?前一阵Smiling上有人讥笑“刚从学校出来的小朋友”,大抵就是这种情况。 Adams:其实,软件工程归根到底是实践性的学科,它主要针对的是软件开发中社会学——人的问题。因而,很难找到一篇放之四海而皆准的圣经,每一位前人的著作都是来自于自己罩稿激的项目、实践,已经为大家提供了非常好的参考。在同一位“大牛”李亮的交流中提到,“即使是相同性质的项目,不同的物袜团队(人员)也需要对原先积累的过程、方法进行调整。”换言之,“迷时师渡,悟了自渡”,各种书籍、文献、前人的经验,在“工作在如此易于驾驭的介质上。程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。程序员凭空地运用自己的想象,来建造自己的‘城堡’”的学科中,只能充当自己的老师,需要的还是自己的顿悟。另一个角度而言,尽信书,不如无书。如果完全迷信书中的观点,也是不可行的。 Gigix:刚才Adams引用的是《人月神话》中的句子吧?这本书恐怕是最近一段时间最热门的一个话题了。记得前次有人在一个小论坛上问“这本书究竟怎么样”,我的回答是:“如果没有读过‘人月’,如果不知道‘no silver bullet’,恐怕很难被认为是一个合格的软件工程师。”Adams没有多谈《人月神话》,大概是作为译者的避嫌吧。我知道的确有人不同意我的观点。有个朋友认为《人月神话》只是说出了一些指导性的原则、一些大而化之的概念,认为不应该过分地推崇它。但是,我认为,国内的情况,并不是普及过分,而是普及严重不足。这一点从许多的实例中就可以看出来。所以,尽管可能被人骂为“盲从”,但我还是得说:作为一名软件工程师,《人月神话》就是必读书目。 Newdream: Gigix谈到普及《人月神话》的重要性,殊不知现在许多做软件的人(他们也有软件工程师、系统分析师等各种时髦的称谓),根本就没有软件工程的概念。经常见到一些言必谈各种专业术语和词汇,甚至怀揣系统分析员证书的人,却连基本的软件开发文档都读不懂。记得有一次讲面向对象的方法,我举的是COM+的例子,居然还有软件工程师问哪里有对象,我说什么是COM,不就是组件对象模型(The Component Object Model)吗,COM就是对象呀。像这种笑话很多,我们许多搞软件开发的人还停留在崇尚编码英雄的“小农经济”时代,而软件工程化则是软件工业化生产时代的必由之路,没有软件工程思想的指导,我们无法想象如何去应对复杂多变的需求,如何组织和实施软件开发,如何进行人员管理和团队协作。实际上正是近几年来软件工程在理论和实践上的迅速发展,才使软件行业的生产率得以提高,而这种提高并不是建立在新增多少软件英雄或编程高手的基础上。所以普及和推广软件工程是一个十分严肃的话题。而这项工作需要面对不同层次和水准的对象。你不可能指望每个开发人员都去读《设计模式——可复用面向对象软件的基础》或《人月神话》,甚至连《软件工程:实践者的研究方法》这样的教科书对于某些人也勉为其难。相反林锐的一篇《软件工程思想》的随笔却成为众多程序员追捧的软件工程入门读物,在网上广为传播。这篇文章的魅力在于它来自作者的经验和体会,同时也向我们展示了一个梦想成为编程高手的程序员最终成长为一名软件工程信徒的曲折心路历程。最有趣的是文中“让我们高举程序主义、软件工程思想的伟大旗帜,紧密团结在以Microsoft为核心的软件公司周围,沿着比尔·盖茨的生财之道,不分白天黑夜地编程,把建设有中国特色的软件产业的伟大事业全面推向21世纪”的“经典名句”已经成为不少程序员津津乐道的口头语。无可否认,近两年大量引进的外国软件工程经典图书确实为我们打开了眼界,据说单是机械工业出版社和中信出版社就引进了70多种软件工程外版图书。由于出版界的努力,我们可以有幸阅读到世界大师级的一流作品,但是我们还缺少来自开发第一线的、真正具有实践体会的自己同行的作品。后者才是最贴近实际需要,为广大程序员所接受的书籍。所以普及软件工程的基础知识和思想方法要比普及《人月神话》这样的一两本经典名著更有重要意义。 Gigix:记得刚毕业的时候,我也特别喜欢看一些软件工程书,例如CMM、PSP、TSP之类的。但是过不多久就发现:看不懂。真的是看不懂。书里每个字都认识,每句话都明白,每一章节都觉得很有道理,就是凑到一起不知道对自己有什么用。后来反思一下,就是因为自己的实践经验太少。别人分析的问题,说到的约束条件,自己一点感性认识都没有,所以看到别人拿出的解决方案也就只能感叹“真有道理”了。Adams说“不要迷信”,可像这样经验尚浅,突然看到这么经典的东西,想不迷信也难呀。后来就转去看一些比较贴近实际的东西,例如Martin Fowler最推崇的敏捷方法之类,感觉很好。像敏捷建模(agile modeling)、重构、XP之类的技术,体现的是软件工程思想,又离低级实践很近,比较容易为程序员所接受。例如XP,它不怎么讲一套一套的大道理,只告诉你怎么设计、怎么编码、怎么测试,就比较容易看懂。直到现在我也还是看不懂某些软件工程书(包括大学里的教材),像CMM之类的更是敬而远之。不过我也翻译了两本软件工程方面的书:一本《最后期限》和一本《系统重构》(台湾版),感觉吃得很透。我想,自己的现象大概有一定的代表性:程序员不是不愿意接受软工思想,只是被那些一本正经的软工书给吓倒了。当然,这里面有程序员经验不足的原因(中国的程序员平均从业时间只有4年,美国是14年)。当然还有学校教育的问题。仅以我的经验来说,学校的老师从来都没认为软件工程是什么“实践性很强”的课。其实要培养软件工程的素养,真的也不那么难:两个人一起做做pair programming,每个模块编码之前先设计测试用例,有空的时候做做refactoring……从这些训练中得到好处了,自然也就有软件工程的素养了。 Adams:软工书籍的不易于理解还有一个风格和导向以及求学认知的问题。国内的部分图书、教材与其说是诲人不倦,不如说是形而上学、拖沓冗长。记得一位前辈谈起,“中国的数学教材,两三页纸横跨上下两三百年。”姑且不论这种观点是否有失偏颇,相信许多莘莘学子也会有这样的困惑“教科书太过抽象,不知道在说什么”。记得,在学习汇编语言的时候,当时颇流行一本“经典”教材。若干年后,偶然翻到一本外文原版的书籍,才知道原是减头去尾,断章取义,把前人浅显易懂的文字“抽象”“升华”——无言以对。 CMM等学术经典在于它能够提供一个框架,虽然太过简练。而许多软件工程的书籍,如《人月神话》、《软件工程:实践者的研究方法》恰恰填补了理论与实践之间的空白,至少能为读者切实实践提供真正的指导。《设计模式》、面向对象等数据则从软件开发的角度提供了过程(工程)的载体。正所谓,工欲善其事,必先利其器,另外还需要思想的指导。软件工程就是起这样的作用,不过正如马列主义思想的诞生一样,都需要不断地实践、实践、再实践。这的确是一个长期漫长的过程,没有其它捷径。 Newdream:我非常同意汪颖关于风格和导向的见解。的确这是不容忽视的问题。国内的专业书籍和教材八股风格居多,引经据典,却很少有自己的研究成果和实践经验。软件工程方面亦然。当然,这也和学术风气不好有关。好在现在是市场经济的时代,读者对于作者和图书有最大的选择权和投票权。特别是大量优秀外版图书的引进,将对国内的学人和作者产生巨大的冲击。关于软件工程以实践为本的导向,这是一个十分重要的观点,对大家如何去学习和掌握软件工程的理论和方法有着积极的指导意义。一般,我会建议入门者先学习一两本基础教材,建立软件工程的概念和框架体系。计算机专业的学生可以直接阅读《软件工程:实践者的研究方法》,不过这本书也不是万能的,国外网站上有不少读者批评这本书只适合作教材、拿学位,对实际开发指导不够。如果作了程序员,还可以边工作边读一些实践性很强的开发指导书,比如《[ISBN]7-111-10537-0[/ISBN]》、《Applying UML And Patterns (Second Eition)》、《Systems Analysis and Design Methods(Fifth Edition)》等。值得一提的是《Systems Analysis and Design Methods(Fifth Edition)》采用案例教学法,非常易学易用,高教出版社有影印版,价格便宜,原汁原味。这些书将伴随你在实践中解决问题,不断提高你的水平。有了程序员的经验,再读《统一软件开发过程》、《设计模式》、《人月神话》等名著才能真正掌握设计开发的要旨,领会软件过程的精髓,进一步铺就通往系统分析员和项目主管的金光大道。总之,程序员要提高自身的开发水平,决不可能通过阅读几本软件工程经典名著就可以一蹴而就。学习——实践——再学习——再实践才是唯一的成功之路。所以在不同的发展阶段,要选好适合自己的软件工程图书,决不能好高骛远或人云亦云、盲从盲信。

1、《深入理解计算机系统》

从c语言到汇编语言到硬件再到 *** 作系统,写得非常好。是一本能帮助深入理解计算机系统的书。基本上把这本书吃透面试 *** 作系统的大部分问题都不是问题。

2、《算法导论(第三版)》

被很多acmer coder奉为学算法的经典之作,但不太适合初学者,因为它这本书很多内容只提供了伪代码,而没有具体实现。但可以从这本书学数据结构和算法好,因为日后的编程语言对实现而言实际上并没有特别大的障碍,只是适合与不适合的选择罢了,而把想法转换成编程语言才是对算法知识的考验。如果不想太过深入的话可以忽略掉第四部分(高级设计和分析技术)第五部分(高级数据结构)和第七部分(算法问题选编),你会发现书其实比你想象中薄很多噢!

3、《计算机网络:自顶向信棚下方法》

软件学院的计算机网络教材,非常适合初学者,里面将计算机网络从顶层到底层逐章分析了一遍,如果能够结合一些实验来辅助理解会更好,因为里面的讲解比较抽象。

4、《STL源码剖析》

如果你是经常用c++刷算法题的同学,那么一定经常用STL的各种集合, vector, set, stack, queue等等。它们的实现原理,在源码面前,完全没有秘密。

5、《图解HTTP》

日本人著的介绍HTTP协议的书,对理解HTTP协议的一些细节有非常大的帮助,插画也很多,感觉就像看漫画一样,很容易理解的。

6、《TCP/IP详解卷一》

这本书能把枯燥的知识讲得很细致,强烈推荐这本,看完相应章节后大概能够明白为什么TCP/IP要这么设计了。面试的时候经常问到三次握手和四次挥手,还有各种状态的转移, TIME_WAIT的时间为什么是2*MSL······

7、《UNIX网络编程卷一:套接字联网API(第三版)》

中文版快800页,不过我只看了一些章节,这本书也是把TCP/IP的细节讲得很深很深,此外还有非常重要的基本套接字编程,就是写网络程序的时候那些bind, accept, listen, send, receive函数之类的,内容非常多,但是这些是理解多路复用模型所需要掌握的······select/poll/epoll这些系统调用解决了什么问题?事件机制能不能理解?就看这本书的前六章了扰激。

8、《数据库管理系统(原理与设计)》

这个也是web开发中离不开的东西,必须划缓坦袜重点学会的是ER图/SQL语句/存储数据(磁盘|文件|RAID|缓冲池等)/三大范式/索引以及相应的数据结构/事务相关的所有概念,尤其重点学习SQL 。之后学会使用mysql workbench来进行数据库建模/逆向工程生成建表语句/根据SQL生成JAVA实体类等就不赘述了,开发过程中百度谷歌一下就知道啦,然后如果习惯在windows下开发的同学推荐利用navicat这个好东西。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12503537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存