Java学习书单

  读书是人类历史上最重要的学习方式之一,随着时代变迁,如今在互联网如此便利的环境下,信息的获取是非常方便的,知识的媒介也不再只局限于纸质的文字。

  对于程序员来说,编程这一类技术应该算是工程技能吧,书籍只是众多学习途径之一,未必是适合所有人的学习方式。单论读书这一种方式,就有实体书,电子书,技术博客,技术网站,技术论坛等多种信息获取渠道。怎样去学习编程因人而异,没有什么完美/最好的学习方法。

  对于我来说,一本优秀的书籍能减少走弯路的可能性(出版可以看作一道基础的门槛),能快速的获取作者的知识精华(吸收量因人而异,但肯定小于100%,所以好的书籍要多读几遍);阅读官方文档的方式感觉比较看个人能力和经验,官方文档比较碎片和基础,适合快速掌握一门产品技术,但对于初学者去归纳和吸收需要一定的学习能力和基础;而个人博客之类的方式很难保证信息的高质量,大部分博主的知识量和表达水平有限,再加上没有系统的勘误,所以博客中存在大量的错误是无法避免的,因此建议只follow几个同领域大牛的博客,随时能跟上业内比较流行的技术即可。

  简单记录一下我对其他学习方式的看法:视频学习,项目实战,培训机构等(主观看法)。

  1. 视频学习:节奏太慢,质量参差不齐。但对于一部分人来说确可能是最适合的学习方式(某个阶段):比如读书没有太高的专注度,视频学习的话,对于提高注意力是有帮助的,多了个耳朵来获取信息;视频这种媒介相较书本是高一级的媒介维度,动态的展示方式也能更好更具体的展示一些内容;教学视频一般会在知识点后马上跟一些实践演示,演示流程更具体和抽象,更容易理解吸收一些(但对于我来说,视频学习节奏太慢了,所以学习方法因人而异,没有所谓的优劣之分)。
  2. 项目实战:是很好的学习方式,感觉适合在学习知识点的前后阶段。如果你是动手能力和理解能力很强的人,可以在学习之前先通过实战来学习,一方面可以快速积累疑问点,另一方面也可以跳过一些比较容易理解的内容,而且动手实现是我们学习不能省略的关键步骤。找一些贴合市场和公司主流技术栈的项目实战可以帮助我们积累项目经验,对于学生、小厂或技术栈较旧的企业开发是重要的学习途径。
  3. 培训机构:首先说明我是没有参加过真正的培训机构的。通过体验一些类似的活动,我感觉培训机构只适合于没有任何编程基础,没有很好的学习能力和编程思维,也没有前辈带路的新人,简单的说就是不知道编程是做什么的这类人。不推荐这种方式的理由包括:需要可观的培训费和培训时间,培训机构的营业目的,缺乏高质量的课程和优秀的教师。
  4. 阅读源码:学习大牛的知识最本源的方式当然就是读大牛的代码啦,弊端就是没有写过相当数量的代码、没有积累到足够的知识量时啃源码真的蛮痛苦的。

最后,这些学习方式本质上没有太多不同,最多不过是不同的介质来存储信息罢了,不要太过在意这个重要性,真正重要的还是每天的学习过程中的积累。

一、Java语言

1.《Java核心技术-卷Ⅰ》(8.0) + 《Java核心技术-卷Ⅱ》(7.2)

  选内容的跳着读完了一遍,很厚。

  分卷Ⅰ和卷Ⅱ,内容比较基础也很详细,译本感觉差强人意,有些地方会因为翻译而难以理解,可以结合英文版阅读,卷Ⅱ大幅篇章用来讲Swing和Awt很迷。

2.《Java语言程序设计》(8.9)

  梁勇版,大学时教材,因为比较久远所以印象不是很深了,应该比较入门,适合初学者。

3.《Head First Java》(8.7)

  还未读过,据说很适合新手入门Java,比较经典的Java书籍。

4.《Java编程思想》(9.1)

  买了还未读过,适合不同阶段的Java程序员学习,内容详细且有深度,建议在有一定的基础后再阅读学习。

5.《Effective Java》(8.8)

  据说主要讲了很多Java调优和规范,比较经典,等以后有机会读一下。

6.《Java8实战》(9.2)

  面向 Java 8 的技能升级,豆瓣9.2分,有机会读一下。

二、数据结构和算法

1.《数据结构与算法-Java版》(8.6)

  适合新手入门学习数据结构,大学时数据结构是C语言版,后悔当时没直接学这本了。

2.《算法-第4版》(9.4)

  Sedgewick著,经典算法书,买了第4版看了大概一半了,示例都是用Java实现的非常适合Java程序员阅读,经典必读。

3. 刷题

  在系统的学习完数据结构和算法后一定要勤于刷题,如LeetCode,也可以先刷一些知名公司的算法题库,或者先读《剑指Offer》。

三、数据库

1.《MySql技术内幕》(8.6)

  了解InnoDB存储引擎底层原理必备的一本书。

2.《MySQL必知必会》(8.4)

  简单入门。

3.《高性能MySql》(9.3)

  MySql的经典书籍,但不一定适合Java程序员阅读,建议根据自身情况选择。

4.《Redis开发与运维》(9.0)

  比较新,推荐用来入门学习Redis,内容很基础:全面讲解Redis基本功能及其应用,并结合了线上开发与运维监控中的实际使用案例,深入分析并总结了实际开发运维中遇到的“陷阱”,以及背后的原因, 包含大规模集群开发与管理的场景、应用案例与开发技巧,为高效开发运维提供了大量实际经验和建议。

5.《Redis实战》(8.0)

  适合入门学习Redis,快速的掌握相关知识。

6.《Redis设计与实现》(8.5)

  适合系统深入的学习Redis,本书比较详细的介绍了Redis的原理。

四、框架

1.《Spring实战》(8.3)

  Spring框架入门书籍,还未读过,因为工作原因直接从Spring Boot入门的,有机会读一下。

2.《Spring揭秘》(9.1)

  有点老了,不过评价不错。

3.《JavaEE开发的颠覆者: Spring Boot实战》(6.3)

  国内作者,入门学习,配合简单的代码实战,适合快速学习,建议有突击需求的可以看一下,但不建议购买。

4.《Java Web高级编程》(8.8)

  涵盖WebSockets、Spring Framework、JPA Hibernate和Spring Security。有些内容可能有些过时,内容感觉不够简洁,可能比较适合新人读吧,但感觉没基础读这个很多地方也会卡壳。

5.《精通Hibernate》(7.5)

  Hibernate入门。

6.《MyBatis从入门到精通》(7.6)

  MyBatis入门。

7.《MyBatis技术内幕》(7.9)

  由浅到深学习MyBatis。

8.《Expert One-on-One J2EE Development without EJB中文版》(8.9)

  经典,建议必读。

9.《Maven实战》(8.2)

  想学习一下Maven可以看一下。

10.《Netty权威指南》(6.9)

  没读过,有人推荐,有机会拜读一下。

五、计算机网络

1.《计算机网络》(7.8)

  谢希仁版,大学教材,很经典CS考研参考书籍,但可能不太好啃。

2.《计算机网络-自顶向下方法》(8.9)

  买了还没看,据说很好,待看过再评价。

3.《网络是怎样连接的》(9.2)

  户根勤著,读了前两章,简单易懂且内容丰富,内容的结构设计也很棒,非常适合小白阅读。

4.《图解HTTP》(8.1)

  漫画风格讲解网络知识,非常适合小白阅读。

六、操作系统

1.《现代操作系统》(9.0)

  很厚,目前没兴趣看,据说很经典,待看后具体评价。

2.《UNIX环境高级编程》(9.5)

  买了还没来得及看,非常经典。

3.《鸟哥的Linux私房菜》(9.1)

  最有名的Linux入门书。

七、其他

1.《深入理解Java虚拟机》(8.9)

  还未读完,读过部分的感受大概比较能深入进去,书中的内容很容易理解,很不错的一本书。

2.《Java并发编程实战》(9.1)

  准备读,Java并发包开发人员写的书,比如知名的Doug Lea,待读后再具体评价。

3.《Java并发编程的艺术》(7.3)

  买后还未读,国内作者,所以不会有译版的问题,待读后再具体评价。

4.《Java多线程编程核心技术》(5.1)

  买后还未读,高洪岩著,待读后再具体评价。

5.《Java并发编程-核心方法与框架》(2.8)

  买后还未读,高洪岩著,据说很辣鸡,当时凑单买的,不建议购买。

6.《实战Java高并发程序设计》(8.3)

  有机会读一下。

7.《Java性能调优指南》(7.0)

  没读过,有机会拜读一下。

8.《大话设计模式》(8.3)

  内容轻松有趣,本应该是枯燥难懂的设计模式让作者以比较有趣的方式展现给读者,强烈推荐。

9.《设计模式-可复用面向对象软件的基础》(9.1)

  设计模式的经典书籍。

10.《Head First 设计模式(中文版)》(9.2)

  设计模式入门书籍,强烈推荐。

11.《代码整洁之道》(8.6)

  经典,建议必读,因为时间关系还未读完,但如果有时间我会选择先读这本书。

12.《重构-改善既有代码的设计》(9.1)

  买了还未读,很经典,有重构需求一定要看一下。

八、分布式

  学习阶段还未到以下内容,待将来再整理书单

1.《分布式Java应用》(7.8)

  据说淘宝大牛创作,适合入门,没读过无法评价。

2.《大型网站技术架构-核心原理与案例分析》(7.9)

  据说推荐适合入门架构学习,有机会要读一下。

3.《大型分布式网站架构设计与实践》(6.2)

  偏向于实践,有机会再考虑是否需要读一下。

4.《分布式服务框架-原理与实践》(6.8)

  偏向分布式服务的原理讲解和对应实践,有机会再考虑是否需要读一下。

5.《大型网站系统与Java中间件开发实践》(7.9)

  想学中间件相关内容可以看一下。

6.《从Paxos到Zookeeper分布式一致性原理与实践》(7.8)

  zookeeper入门书籍,有机会要读一下。

7.《大规模分布式存储系统》(7.9)

  主要讲解分布式存储相关知识,有机会要读一下。

8.《微服务设计》(8.2)

  是围绕微服务中的要解决的问题展开细聊,有机会要读一下。

9.《微服务架构设计模式》(9.8)

  比较新,评价不错,有机会要读一下。

10.《Spring Cloud微服务:入门、实战与进阶》(8.2)

  比较新,准备当入门看一下。

11.《高可用可伸缩微服务架构》(8.4)

  评价不错,准备当入门看一下。

九、云计算

  学习阶段还未到以下内容,待将来再整理书单

1.《OpenStack设计与实现》(7.3)

2.《第一本Docker书》(7.4)

3.《Docker开发指南》(8.8)

4.《Docker——容器与容器云》(8.5)

5.《kubenetes权威指南》(7.4)

十、大数据

  学习阶段还未到以下内容,待将来再整理书单

1.《大数据技术原理与应用》(9.0)

2.《Hadoop实战》(7.7)

3.《Hadoop权威指南》(8.7)


参考博客和文章书籍等:

有什么值得推荐的Java书籍?

如何系统的学习JAVA?

因博客主等未标明不可引用,若部分内容涉及侵权请及时告知,我会尽快修改和删除相关内容