C++ Java学习路线

(一)语言入门:
《C++ Primer》
最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中)
适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。

《The C++ Programming Language》/《C++程序设计语言》
最新版本:第三版特别版
简称TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来)

《Essential C++》
《Accelerated C++》
这两本薄一些,都是不错的选择。《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐。

以上几本书都有相应的中文版,而且翻译的质量都不错。上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。

(二)进阶A:
这个路线侧重于语言本身

《Effective C++》
最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中)
简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。

《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》
个人认为此书应为C++程序员必备的案头书。几乎Effective系列和Exceptional系列都在这里得到了总结。最新的模版、异常的业界经验都在这里的到了体现。可能的唯一缺陷就是对一个新手而言,关于“为什么这么做”的问题,解释的不够。
我的看法是:如果你不理解其中的条款,记忆,并且照做;如果你理解其中的条款,我猜你一定会同意书中的观点。我认为这本书中的内容至少在2009年以前都不会过时,人们将广为传诵它制定的101条戒律。
还不知道他的简称,也许“101”会成为一个候选者?

提到《Effective C++》,那么另外三本书一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新书《Exceptional C++ Style》也是值得一看的好书。
上述几本书,一本也不应该放过。
个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。

(三)进阶B:
这个路线侧重于程序库。

《The C++ Standard Library》/《C++标准程序库—自修教程与参考手册》
听说过STL吗?这本书会教你最基本的,也是最重要的STL的使用。这本书,应该是必读的。

《Effective STL》
会使用STL还不够,还必须知道什么时候选择什么STL组件,这是STL使用的必读书。

《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型编程与STL》。
这本书理论性较强,但是真的很严谨,而且并不是非常难懂。理解其中对于Concept的解释,将是非常重要的。

《C++ STL》
这不是讲述使用程序库的,而是讲述程序库实现原理的。肠胃不好的,需要慢慢吸收。

这个路线的书,仍然是建议按顺序阅读。
进阶A、进阶B两个路线应该是可以并行的。

其他进阶参考书
提出这些参考书,只是避免争议,也为开阔视野,笔者并不曾完全读过所有的。

《Thinking in C++》/《C++编程思想》
这本书及其中文版传言好坏都有,没有认真看过,不做评价,如果确有兴趣,不妨尝试一下该书。

以下几本书基本上涉及的都是语言本身,大体上可以按照以下的顺序阅读。

《C++必知必会》
如果早一年,这本书将是重量级的,然而它被101和《Exceptional C++ Style》盖过一头。

《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序设计陷阱》
这又是一本我未曾读过,而且广受好评的书。

《STL 源码剖析》
这本书我刚到手,就被人"借"走,以至于到现在也没有看过。看过这本书的朋友,可以给一个合适的评价。

高级:
《The Design and Evolution of C++》/《C++语方的设计和演化》
简称D&E,内容并不艰深,Bjarne的书,仅此,就值得一读。
前段时间,互动网曾8块一本(人民币)贱卖此书,现在好像没了。

《Inside The C++ Object Model》/《深度探索C++对象模型》
C程序员读后一定会觉得C++原来并不神秘。

《C++ Template》
在阅读STL、Boost或者Loki的源代码之前,请仔细阅读本书,它可以减轻一些阅读的烦恼。这本书是讨论C++模版的权威。

《Modern C++ Design Generic Programming and Design Patterns Applied》/《C++设计新思维——泛型编程与设计模式之应用》
简称MCD。在阅读MCD之前,建议先阅读一下《C++ Template》。

《对象揭秘:Java、Eiffel和C++》
你对C++不满吗?这本书可以部分地帮你完成抱怨的目标。也许它还可以让你不迷信C++。

最后,一份C++标准文档也是应该加以咀嚼的。
还有一些书籍,并不能简单的归于C++,也难以在纯粹的书本学习中加以掌握。《Design Patterns》/《设计模式》一书就归于此类。

所有上述的书籍,要么谈论C++语言本身,要么谈论STL的,要么兼而有之(当然严格讲STL也是C++语言非常重要的一部分)。偶尔,某些书中条目也会涉及实际工程。这些书并不是C++软件开发的全部,但是他们很重要。阅读这些书,未必需要化费太多的精力,有时候是会困难,但也有时候会很快速。
最后,编程语言并非计算机科学技术的全部,尤其对于在校的学生来说,打好基础、开阔视野都是非常重要的。













1. 《C++ Primer》Lippman写的,经典中的经典,C++入门的宝典,读完这本书,基本语法过关,部分技巧掌握。 
2.《The C++ programming language》C++的创始人Bjarne Stroustrup写的,这本书的权威性毋庸置疑,而且这里面讲到了一些比较底层的东西,如果你看过了《C++ Primer》的话,这本书可以跳着看,懂的就跳过。 
3.《Effective C++》 Scott Meyers顶级大师用活泼幽默的语言写的书,这本书中讲到了许多应该注意的问题,这是十分值得购买的书。(Lippman曾把程序员分为看过effective c++的和没看过的两类。由此可见此书的重要性) 
4.《More Effective C++》上书的姊妹篇,这本书里讲到了许多关键性的技术,对提高程序的效率是非常有帮助的。 
5.《Advanced C++》这是一本神奇的书,里面讲到了许多连C++设计者都没想到的妙法,解决了许多看似不可能解决的问题。Scott Meyers曾隆重推荐过的书。 
6.《Inside the C++ Objects Model》又是Lippman的大作!这本书讲到了他在开发第一个C++编译器时的许多想法,彻底解析了C++底层机制是如何实现对象模型的,看过这本书,你对C++的了解会有质的飞跃!从这刻起,你有权力说你是一个C++程序员了! 

光学C++语言基本上看完上述的书就是高手了,其他经验要在实践中累积,这是我个人的经验。另外,你学了C++还要开发程序,开发软件,无疑要使用MFC之类的东西 
《API Programming》和《MFC Windows 程序设计》两书值得一看。这两本书能迅速提高你的实践水平。













【学习基本路线图】

        顺序:基本原理(进制转换啊什么的) -->  C(学习能力强的可以从C++开始)  -->   API -->  C++语法  -->  操作系统原理  -->  MFC   -->  数据库  --  数据结构  --  硬件  --  领域编程(根据你自己以后的行业特点的专业性编程)
        
       最后从数据库开始可以交叉进行。

【学习方法】

        1.基本原理:

        这个部分主要理解就行了,至于是不是非要记住十六进制怎么转换二进制啊,CPU结构图啊什么的,完全没有必要。记住主要是理解,记忆并没有什么意 义,有些人略过这些一样能学会C++,之后回头再详细学习效果会更好,更开始就大概知道有这个回事就行了。
        推荐书籍:《微机原理与接**术》作者:牟琦  这本书看到第23页就行了,知道进制转换的大概方法和有这么一回事就行了。
                       《汇编语言》第二版   作者:王爽(只看第一,二,三章)    这是第一本让我觉得过人也能写出好书的书,相当经典,汇编领域过人写的出还真的是不错,一本80X86领域的就是这本,WIN32的就是罗云彬的那本 《WIN32汇编程序设计》第三版,现在好像出第四版了,叫什么玉拙成器什么什么的。

        2.C

        既然我们是学习C++,那么C就是路过的,C是一门面向过程的语言(哲学说法,现在你还不需要懂,不要怕呵呵),而C++是一门面向过程的语言(也 是哲学呵呵,不懂先别着急,这个要慢慢去领悟),说白了,C++是C的一个超集,对C做了一些有意义的扩充,这个说多了暂时你还不明白,总之这个阶段的学 习有些人喜欢从C开始,有些人喜欢直接从C++开始,其实多半都是一样的,学了C以后你学起来C++更加简单,因为很多东西都是一样的,著名的《C++ primer plus》就把C++的学习分成了两个部分,C部分和C++部分。
        推荐书籍:如果你想快速掌握C和C++的基础语法,那么选择谭浩强的绿本本吧,这本书写的很简陋,快速浏览一下C和C++的基础语法还是可以的,真 正掌握就算了吧。
                      还有网上不论青红皂白推荐的书下面做一下介绍:
                      回复最多的无非就是两本: 谭浩强 C 和 K&R C,K&R是C的创始人,他们的书根本不适合新人去看,到不是有多难,他们只是在建立一种标准,而不是一本真正的教程。
                      个人认为真正想学习C的人,看清楚了,真正想学习C的人啊,不是路过的人,应该看一下《C primer plus》,这本书有些罗嗦,但是讲的很全面,可以当字典使用。

        3.API
        这部分的话,其实是慢慢积累的,你去Google查一下什么是API就好了,学习Windows原理的时候你会理解到是个什么东西的,大概说起来就 是微软给我们提供了一些封装好了的函数,我们可以调用过来实现一些简单而且常用的功能,比如MessageBox是弹出一个窗口,你只要在他的参数里自己 设定大小啊和现实什么啊就是了。
        推荐书籍:MSDN 微软提供的字典式的帮助文档,这个是你积累API什么的最好的老师。

        3.C++
       
         重点来了,如果你前面学习了C,那么你现在可以先温习一下C的语法,因为在你没有学习面向对象之前,C和C++的语法是基本一样的,注意是基本,循环 啊,指针啊,数组啊,结构啊,函数啊,+—×/%啊什么的。然后你要开始重要的一步:学习C++自己独有的特性,类啊,封装啊,重载啊,多态啊,继承啊什 么的,这些都是非常重要的,在你日后写Windows程序的时候都是经常用到的知识,并且是必不可少的。
        推荐书籍:《C++ primer plus》 第五版中文版 这本书详细到真是有些罗嗦,C++的每一个角落都不放弃,学习的时候不求掌握所有的特性,但是必须去理解,以后你遇到了不懂的或者比较生疏的可以回头来 查,这样学习的才比较扎实。
                       《C++ primer》第四版 这是C++领域里我读过最经典的书籍之一了,在这本书里,你将震惊于大师的技法和教学角度,你会经常感叹,再感叹。这本书呢,不是你现在学的,而是等自己 写出几个像样的Windows程序以后,再回头来看,你才能有所领悟。

        4.操作系统原理
        
        这个其实是学习MFC(下一步要介绍的)必须学习的,如果你用C写过Windows程序,你会对这个了如指掌,但是我们只是学了语法,这部分就必须 去学习,其实很快,我们不必知道的太多,只需要得到必须的就可以了,这部分当年我一天学完的,就是看孙鑫的视频学会的(只看视频第一章就行了,第二章讲C++特性 的你也可以看看,MFC从第三章开始,以后接着看)。
        推荐书籍:这里推荐孙鑫的视频,这部视频在《深入详解VC++》这本书的的配套光盘里,非常经典,不可多得的过人讲解的超高水平的视频,看不懂就多 看几遍,我当年看了三遍才看懂(光看是绝对看不懂的,自己跟着写才行)。你只要看第一章就行了。
      
       5.MFC
   
       坚持住,学完这部分你就能写出真正的WIN32应用程序了,MFC呢就是微软把你所需要实现的功能进一步封装起来了(比API),你只需要实现你的功能, 至于程序的框架(最大化按钮啊,关闭按钮啊,边框啊,标题啊,什么的都给你提供好了,不用你自己用API代码实现了),具体的你学完操作系统原理(看完孙鑫的视 频第一章以后才能理解,现在不多说)。
       MFC虽然给编程提供了诸多方便,但是无形中给学习却增加了难度,这部分要坚持住,多看几遍孙鑫的视频,好好的去啃才能有收获。
       推荐书籍:孙鑫《VC++深入详解》,主要是视频比较著名。
                     侯先生(台湾)《深入浅出MFC》第二版,这本书很老了,但是依然是MFC的经典,但是是你以后真正拿MFC写出程序了以后,再去看,不然你绝对是看不 懂的,现在不着急看。

      6.最后你们都会有自己的想法了,具体我也教不了你们什么了,之后你要设计的领域都写在路线图里了,至于更高级的领域,设计模式什么的,是有一定经验以后再去加深的。
      这个时候你要做的,就是还要不断的学习
















(一)语言入门:
《C++ Primer (3RD)中文版》Stanley B.Lippman, Josee Lajoie
适合有丰富C经验,缺乏C++经验的。
 
《The C++ Programming Language》/《C++程序设计语言》Bjarne Stroustrup(c++之父)
简称TC++PL
 
《The Design and Evolution of C++》Bjarne Stroustrup 
简称D&E
TC++PL和D&E是C++语言圣经
 
《Essential C++》Stanley B. Lippman
《Accelerated C++》
这两本薄一些,都是不错的选择。
 
上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。
 
(二)进阶A:
这个路线侧重于语言本身
 
高效、健壮编程
《Effective C++》
简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》,可能还要《More Effective C++》”。
 
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 编程规范》
 

提到《Effective C++》,那么另外三本书一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新书《Exceptional C++ Style》也是值得一看的好书。
上述几本书,一本也不应该放过。
个人建议上述书籍按顺序阅读。并且,在将来反复阅读这几本书。
 
(三)进阶B:
这个路线侧重于程序库。 
 
标准库 
《The C++ Standard Library》/《C++标准程序库—自修教程与参考手册》
听说过STL吗?这本书会教你最基本的,也是最重要的STL的使用。这本书,应该是必读的。
 
《Effective STL》
会使用STL还不够,还必须知道什么时候选择什么STL组件,这是STL使用的必读书。
 
模板和泛型编程
《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型编程与STL》。
这本书理论性较强,但是真的很严谨,而且并不是非常难懂。理解其中对于Concept的解释,将是非常重要的。 
 
《C++ STL》
这不是讲述使用程序库的,而是讲述程序库实现原理的。肠胃不好的,需要慢慢吸收。
 
 
网络编程
《C++网络编程,卷1:运用ACE和模式消除复杂性》,华中科技大学出版社
《C++网络编程,卷2:基于 ACE 和框架的系统化复用》,电子工业出版社
 
杂项
《C++编程思想(第2版)第1卷:标准C++导引》,机械工业出版社
《C++编程思想(英文版 第2版)》,机械工业出版社
《C++沉思录》,人民邮电出版社
《深度探索C++对象模型》,华中科技大学出版社
《深度探索C++对象模型(影印版)》,中国电力出版社

 
C++工程领域的最高境界:
《设计模式:可复用面向对象软件的基础》,机械工业出版社

 
这个路线的书,仍然是建议按顺序阅读。
进阶A、进阶B两个路线应该是可以并行的。

















首先是 c++的,我想买这个C ++ Prime 第四版,这本书很多人评论说很好,不知道看过这本书的人觉得怎么样?还有更好的书推荐码?

其次是数据结构的书,我原本想买严蔚敏的,但是听别的朋友说最好是买国外的。

再次是windows编程,这个是sdk编程。不知道《Windows核心编程》适合我不?

最好是MFC编程,这个我已经选了孙鑫的视频了,但是还是缺一本书,不知道 《MFC Windows应用程序设计 》 任哲著这本书如何?《Windows程序设计 第二版》王艳萍的,这本书又如何呢?

 

最后还有就是一本 《VC++技术内幕第四版》的,这本书什么程度才能看呢?至于《Windows程序设计第五版》电子书我已经有了。

对于初学者,应该从《C++ Primer》第四版、《C++ Primer Plus》(第5版),《C++编程思想》或者《Accelerated C++》开始,当然《C++入门经典》(第3版)或者《C++大学教程(第五版)》也可以考虑,在书店里翻看,根据自己的阅读和学习习惯进行选择好了。唯一的忠告是:不要选择国内自编的入 门教程。在学习的同时,可以将《C++编程规范》和一本巨著放在一旁,阅读对应的相关段落和章节,如果有时间,做对应的习题。掌握基本特性后,可以对照 《C++必知必会》和《C++编程规范》,并试着做一做Exceptional系列中难度较小的题目,检查自己的学习效果。编程实践时可以阅读《C++高 级编程》或者《C++编程思想》中的一些段落,当然,其他比较实用的软件工程书也可以。这期间应该阅读Effective系列,并挑选难度合适的 Exceptional题自测。经过这样的锤炼,你应该已经基础非常扎实,可以步入C++的殿堂了。

既然java架构师,
首先你要是一个高级java攻城尸,熟练使用各种框架,并知道它们实现的原理。
jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;

池技术,什么对象池,连接池,线程池...:;

java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;

nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;
java多线程同步异步;
java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。

熟练使用各种数据结构和算法,数组、哈希、链表、排序树...,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题;有时间再补充。

熟练使用linux操作系统,必备,没什么好说的 。

熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化; 熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。

系统集群、负载均衡、反向代理、动静分离,网站静态化 。

分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景 。

分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash 。

工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。

数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。

还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。

以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。

想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。

架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。

架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失;




 
  


你可能感兴趣的:(Life)