本文首发于知乎,已获得1000+赞和收藏

原文链接:https://www.zhihu.com/question/269505829/answer/1791006152

先介绍下本人的情况,希望对大家学习Java之路有一定帮助。

本人本科完全没接触过Java,后自学Java,对整个技术栈有一些沉淀,并顺利拿到阿里巴巴集团校招offer,中间也走过很多弯路,希望对楼主有一些帮助。

看书一定要看经典书(不在多),先放图镇楼,然后按照由浅入深的顺序(Java语言基础->Java语言进阶->分布式&存储->修炼内功)来对书单做描述以及推荐的理由。

首先是语言基础,有了扎实的语言基础,才可能写出一手好的工业级的代码。

第一阶段、Java入门书单推荐

目的是掌握java语言基础,进行简单的开发。

学习内容:

1.Java入门书籍,后面有列举推荐。

2.代码规范。Java服务端遵循的是Oracle的Java语言编码规范,在编写代码之前,要先熟悉。

3.开发流程。了解开发流程,而且必须要熟悉每一个环节。开发流程大致是:功能开发→单元测试→功能测试→Code Review→集成测试→发布。

4.开发工具。对于入门者来说,首先建议你安装JDK+文本编辑器的开发工具包,并下载和你的JDK版本一致的API帮助。另外,你最好掌握常用类库和工具包,如goole guava等,因为JDK原生API在很多场景下并不方便。在选择Java IDE时,很多人推荐Eclipse,这个的话仁者见仁吧,我个人还是推荐Intellij IDEA,因为Intellij IDEA在调试、自动完成和重构方面的表现都比Eclipse更优秀。当然,在构建桌面的应用平台时,选择哪个就另当别论。

推荐书籍1:《head first java》

可以先从基础入手,掌握java语言基础知识:集合、多线程、网络、面向对象设计等。

首推《Head First Java》,这本书相比常见的另外两本书《Java编程思想》和《Java核心技术》,偏趣味性,语言也比较轻松,能将高深的知识讲的浅显易懂,不会让人觉得枯燥无味。

另外2本书大块头,部分章节比较枯燥难以理解,容易让初学者钻进去出不来。

推荐书籍2:《Java并发编程实战》

要写出工业级的代码,必然和并发脱离不了干系。程序员面试,并发也是必考知识点之一。

书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。

第二阶段、Java语言进阶书单

需要掌握基本的调优技能以及面向对象设计的思想,为写出工业级代码打基础。

学习目标:服务端项目开发

学习内容:

1.Spring。项目开发必备。

2.关系型数据库。主要学习MySQL,包括设计MySQL表结构,基于执行计划的SQL分析优化根据业务特点分表分库,数据库容量规划等。

3.非关系型数据库。主要学习NoSQL,Hadoop、HBase、Hive这些常用的工具一定要学会使用。

4.服务容量规划和性能调优。性能调优知识、可靠性保障、故障处理、监控报警系统,这些也都要掌握。

推荐书籍3:《深入理解Java虚拟机》

作为Java程序员,不懂JVM是不行的。

本书详细讲解了类加载、java内存原理、垃圾回收机制等知识。只有掌握了JVM,才能在实际生产环境遇到线上问题如GC频率过高、内存溢出等应对自如、还有应用系统JVM参数合理配置。

本书是JVM公认的推荐好书,是Java进阶必看书籍。

推荐书籍4:《Java性能权威指南》

市面上专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。

通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,最终使程序如虎添翼。

推荐书籍5:《大话设计模式》

如果以前未接触过面向对象程序设计,那么本书必读,毕竟面向对象程序设计和C语言中面向过程设计有很大的不同。

第三阶段、分布式书单推荐

学习目标:中间件开发和分布式系统

学习内容:

1.开源项目:学会分析项目中的设计思路、中间件开发和项目源码,比如RocketMQ、Netty等。

2.知识体系构建。回顾自己的学习过程,建构自己的知识体系,多看大型网站系统和技术建构,了解核心原理和Java实践过程。

3.参与项目。参与项目的过程是提高深化的过程。在这个过程中你就能发现自己对那些知识掌握不足,也能够提高自己的能力,多参加项目才会提高更快。

4.根据自己的实际需求提升某方面技能。这就是个查漏补缺、优势扩大的过程。在流式计算上有优势,就进一步提升,在找一些相关的书籍精读。

推荐书籍6:《数据密集型应用系统设计》

吐血推荐,本书豆瓣评分9.7分,堪称分布式领域圣经,本人非常后悔没有更早的阅读本书。

本书并没有局限于那种分布式框架,而是着重讲解分布式整体架构设计理念和基础知识。

作者水平非常高,本书广度非常大(诚然并不是很深,要在一本书里将那么多知识深度讲解也是不可能的),深入浅出,大家不用担心晦涩难懂(在这里更加推荐英文基础好的话直接读英文原版)。

包含:分布式系统的存储(第三章存储、第五章复制、第六章分片)、分布式一致性、实时计算(第十章和十一章的批处理和流处理)。书中更是给出了相当多的参考文献链接,值得深入研究。

书中有大量插图,将分布式系统高深的技术形象生动的描述,通俗易懂,比如下图是讲数据库多副本 并发写的问题的:

我最近也在三刷《设计数据密集型应用》,写了一些读书笔记,主要是帮助自己消化知识点,未来也会做一些实战案例,感兴趣的可以看一下我下面的专栏:

夏天:设计数据密集型应用-C5-主从架构及同步延迟问题

夏天:设计数据密集型应用-C5-多主数据复制架构

夏天:设计数据密集型应用-C5-去中心化复制架构

夏天:设计数据密集型应用-C6-分区和二级索引

夏天:设计数据密集型应用-C6-分区Rebalancing和路由

推荐书籍7:数据库《高性能MySQL》

本书深度讲解了mysql引擎架构、索引设计、SQL查询优化的实战技巧、复制、分片等原理,还有运维技能。适合精读。

如果是从事网络相关开发,如rpc框架、mq消息中间件,那么还需要掌握网络相关基础知识,以及业界有名的高性能网络组件Netty。

第四阶段、java内功修炼

推荐书籍8:《重构》

所谓精益求精,同一件事,同一个功能,让不同的人来做会写出不同的代码。本书通俗易懂,教你如何不断优化现有代码,逐步迭代重构,写出清晰易懂、功能正确、可扩展可维护的代码。

最后,看书是一方面,更重要的是实战,勤动手,看源码,多Debug,写DEMO,多参与开源社区讨论。如果大家觉得我的回答有用,请点个赞,谢谢!

从入门到进阶,JAVA书籍的最佳阅读顺序!相关推荐

  1. 服务端工程师入门与进阶 Java 版

    前言 欢迎加入我们.这是一份针对实习生/毕业生的服务端开发入门与进阶指南.遇到问题及时问你的 mentor 或者直接问我. 建议: 尽量用google查找技术资料. 有问题在stackoverflow ...

  2. C/C++从入门到进阶必修书籍

    C到C++ 学习入门到进阶到专业(以下是学习资料文档) 链接地址 : 转载请标明出处,尊重原创谢谢! 以上所有文档资料都有,需要可联系本人!大部分来自CSDN!所以也可自行下载. 百度云地址: 下载链 ...

  3. 数据挖掘 入门和进阶 推荐书籍

    想要了解更多的技术,欢迎加入技术交流共享群:547147889 入门: 数据挖掘入门的书籍,中文的大体有这些: Jiawei Han的<数据挖掘概念与技术> Ian H. Witten / ...

  4. Unity新手入门与进阶学习书籍与教程推荐

    读研的时候喜欢做游戏,最开始在诺基亚N9手机上开发过几款产品,有APP也有游戏.用的是Qt Quick,最先在N9上发布,之后又了解到黑莓的BB10系统,也可以用Qt Quick开发,所以就把几个产品 ...

  5. C++书籍推荐与阅读顺序

    第一本:Essential C++ (由c过度到c++) 第二本:C++ Primer (内容很全,但是不深) 第三本:Effeetive C++(55个实践) 第四本:More Effeetive ...

  6. Java学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版)

    本博文系转载:原博地址:https://blog.csdn.net/qq_43336600/article/details/83537307 重要:注:原博整理的资源是加密资源,所以我在进行转载时已经 ...

  7. java书籍_学习Java最好的10本书,从入门到精通

    在当代,学习Java等编程课程的主要方式是视频资源,如果你想学,在网上五分钟之内就可以找到一堆学习视频,瞬间将你的硬盘填满.但是这些课程质量良莠不齐,对于小白来说很难辨别好坏. 但是书籍不同,书籍都是 ...

  8. C语言推荐书籍从入门到进阶带你走上大牛之路(珍藏版)

    首先是关于学习技术书籍的一些心得,很多人给我留言说看不下去书,想看视频学习,我不反对看视频学习,但是编程作为一门需要不断钻研的技术,只靠看视频是注定不可能成为专家的,还是得从经典的书籍中汲取知识,再加 ...

  9. Java学习之路整理-技术书从入门到进阶最全50+本(珍藏版 )

    学习交流加 个人微信:LyyCoder 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 一.速读一遍(最好在1~2天内完成) 人的大脑记忆力有限 ...

  10. JAVA进阶学习书籍

    你要的java从入门SE到进阶EE2018书单 https://blog.csdn.net/hexo11/article/details/82807955 你要的python从入门到进阶2018书单 ...

最新文章

  1. Teaching Machines to Converse--阅读笔记1 摘要及介绍
  2. 基于ArduinoLeonardo板子的BadUSB攻击实战
  3. Python 动态生成多维数组
  4. stm32中断优先级_关于STM32 (Cortex-M3) 中NVIC的分析(转)
  5. php 段落加上标签,php – 如何在段落中添加ReadMore
  6. C 标准库 - string.h
  7. div css 圆角样式
  8. 零基础入门Python3-列表list详解
  9. C语言课后习题(30)
  10. python基础课程第12章_流畅的python学习笔记-第12章
  11. HashMap底层实现及原理
  12. Coinbase及Bakkt为Paul Tudor Jones的家族对冲基金提供托管服务
  13. MSDN Visual系列:用WSSv3中的SPGridView控件来显示数据
  14. 微信企业号开发接口文档
  15. Java方法 根据经纬度计算距离
  16. 使计算机拒绝远程桌面服务,拒绝通过远程桌面服务登录
  17. Webview下载apk
  18. 抖音短视频怎么吸粉 手把手教你快速抖音养号吸粉引流
  19. 全市场等权中位数_市场指数估值周报20200412
  20. 中国气候分布矢量图_如何用30行代码构建气候图

热门文章

  1. Java基本语句(注释语句、javadoc、System.out.print和println和printf区别)复习2
  2. 共享库/动态库目录path
  3. SPI总线接口与简单配置
  4. hive外部表改为内部表_Hive基础之创建表
  5. python怎么读取dat类型文件_基于python批量处理dat文件及科学计算方法详解
  6. 基于国产密码算法的开源OpenSSL密码库
  7. 银行舆情监测-TOOM舆情监测系统
  8. iTerm2 + Fish 打造高效终端
  9. FANUC NC GUIDE PRO 17.1虚拟机(XP系统)
  10. react 富文本编辑器 react-draft-wysiwyg 的使用总结