- 前提条件:
需要有高中毕业的水准 (或者同等学历的也行,比如中专,我本人就是读中专然后再读自考大专的)。 - 学习方式:
完全可以自学,最好自己有电脑。 - 偏重方向:
偏重软件,而不是计算机硬件。 - 英语要求:
掌握3000个左右的常用单词,能读就差不多了, 如果不想看英文可以找中文翻译版的,我个人偏向看中文,对于非常好的书我通常中英文都买来看。
以下列出的书是按照循序渐进的方式介绍的,
都是我自学过程中学过的并且觉得不错的书,
计算机基础类的书籍与Java相关书籍的比例是5:2,所以非常强调基础,
核心书籍将近35本,预计需要花两年半时间左右,
别觉得书很少,能平均一个月完成一本算挺不错了,说明你在计算机方面有一些天赋。:)
另外,扩展阅读也有35本,这些可以选读。
(注:这是我12年来的自学生涯中特意挑选出来的书,如果当初就有人告诉我该这么自学我肯定会少走无数的弯路)
- 计算机基础类的书籍
- Java相关书籍
- 扩展你的眼界
主要有: 微积分、线性代数、概率论与数理统计、离散数学




顾名思义,这是计算机专业的学生第一本要读的专业书, 这本书对整个计算机科学的各个领域做了一个概述,点到为止, 包括最基本的十进制、二进制、十六进制;数据的存储、运算; 计算机组成、网络、操作系统、算法与数据结构、程序设计语言、数据库、人工智能等等。
读完这本书,就知道整个计算机学科都有哪些东西了,这本书适合泛读,若碰到不理解的,可以直接跳过。







http://book.douban.com/subject/1179807/ 这本书一时没找到,我就不拍照片了,只要大概了解一下即可,除非打算将来做网络管理员之类的工作。
这类书比较偏理论,会有点难读,不过我还是强烈建议你硬着头皮认真读一读, 只要你能理解透书中的内容,以后你再学习新的程序语言都是件轻而易举的事, 并且也是从事数据库SQL引擎研究的前提。
先读『自动机理论、语言和计算导论』, 里面告诉你什么是自动机、什么是正则语言、什么是上下文无关语言,还有图灵机。 清华大学的『形式语言与自动机理论』也可以同时看。
接着就可以看『编译原理』了,此书也叫“龙书”,当你想从事编译器开发时这本书是必看的, 『编译原理』出了两个版本了,如果有钱的话我还是建议你两个版本都买, 『编译原理』和『自动机理论、语言和计算导论』的内容有一些重叠, 有些人一上来就直接看『编译原理』而不看自动机和形式语言,这会有点难, 『自动机理论、语言和计算导论』算是『编译原理』的前导课程。
最后可以再读读『程序设计语言原理』和『程序设计语言实践之路』 这两本书其实不偏重理论的,有了前面的基础反而更简单,算是各类程序语言的综述, 各种泛式的语言都有涉及,包括: 过程式语言、面向对象、函数式语言,甚至基于逻辑的程序语言都讲了(比如Prolog)。
这也是我现在的工作和研究领域。
要说数据库和程序语言是整个计算机学科应用最广泛的领域应该没有人会反对, 关系数据库管理系统(RDBMS)在过去的几十年直到现在都占着绝对的统治地位, 随着互联网、社交网络的发展以及数据量的增长,图数据库、NoSQL都在蓬勃发展, 所以可以预计未来5年内数据库会是一个非常活跃的领域。
数据库的理论书籍不需要读得太多, 只要读完上面的『数据库系统基础教程』『数据库系统实现』基本上够用了, 当然,你需要慢慢的品尝、要精读,至少要读两遍以上。
『事务处理』这本书如果你将来不从事数据库事务领域的研究不需要读, 前面两本书中也会有好几个章节讲事务相关的知识。
至此,如果能学完、学好上面9小节中列出的书籍和相关知识, 那么恭喜你,你的计算机基础已经打得非常牢固了。


另外,有关线程、IO、JDBC、网络、安全相关的章节在下面都会有更专业的书来介绍, 这类书归入进阶类。

http://book.douban.com/subject/1433583/ 我是在原来的公司内部看的英文电子版,跟『Java线程』 的风格类似,完整的介绍相关API和基本概念。 NIO的知识对于实现像Netty这样的高性能网络框架必不可少,同样像Tomcat、Jetty也太量运用了NIO。


我也是看的电子版,不过没读完,因为之前看过JDBC规范了,所以就没什么必要再细读它, 虽然类似Hibernate和iBatis这类ORM和SQLMapping框架用得比较多, 不过我还是推荐你先把JDBC掌握了,这样不管以后你去看MySQL的JDBC驱动还是iBatis的源代码都会非常有帮助。
我的书没找到,只给个链接吧,
这本书其实不合我的口味,太厚太啰嗦,我并不喜欢里面的故事,比如击鼓传花什么的, 如果把此书浓缩到300页左右会更理想。





有大量以"XXX in Action"命名的书,比如Struts in Action,多是介绍具体框架的, 这类书实战性比较强,因为框架更新换代也很快,过时也比较快,所以你可以从图书馆里借阅, 或者让公司出钱买也行,这样你能省点费用。
看书只是为了打基础,并且是件相对容易的事,想要与他人不同, 你应该去研究你感兴趣的Java开源项目的代码, 看源代码是件需要时间和考验耐性的事,如何看?这是门学问,是另一个重大的话题,我就不在这里多谈了。:) 顺便卖个广告,你可以关注我的GitHub主页 里面有大量开源项目的研究。
至此,有关Java你需要掌握的最核心的东西都列在上面了,行动起来吧,不能只看书,实践也很重要。
虽然上面谈到的计算机基础类的书籍与Java相关书籍已够用了, 不过,我想你不会满足于此吧,多读点书没坏处,技多不压身, 最不济的情况下学点别的至少也能吹吹牛不是。:)
以下是我觉得可以读一读的书,至少已被我过滤了一回,你不用担心它们是垃圾书籍(我确实买了很多垃圾书籍),
当然不需要每本都看,比如像TCP/IP这种,如果你不做OS、不做网络层的开发不读也可以,比如TCP/IP三卷本我多半是买来收藏的。
这些书我就不一一介绍了,全列在这了。















