如何确定大学的目标？
Java从入门到进阶，我会推荐这8本书，而且这份书单已经获得2500+的赞和收藏，是知乎热门内容。 除了推荐书籍外，第2部分还会分享本人自学Java并拿到阿里巴巴校招offer的方法论。 本回答字数长达1万+，建议点赞收藏防止迷路~ 下面是书籍推荐的原回答链接： 先贴一张Java技术栈的全局图： Java的核心难点在于知识点太多，如果你对目前自己的Java学习路线比较迷茫，不知道自己接下来应该抓哪些重点，可以戳下面咨询入口，把你目前的情况说明一下，我来帮你诊断&建议： 看书在精不在多，一定要选择经典书籍。 首先是语言基础，有了扎实的语言基础，才可能写出一手好的工业级的代码。 目的是掌握java语言基础，进行简单的开发。 学习内容： 推荐书籍1：《head first java》 Java入门首推《Head First Java》。 这本书相比常见的另外两本书《Java编程思想》和《Java核心技术》，偏趣味性，语言也比较轻松，能将高深的知识讲的浅显易懂，不会让人觉得枯燥无味。 另外2本书大块头，部分章节比较枯燥难以理解，容易让初学者钻进去出不来。 推荐书籍2：《Java并发编程实战》 要写出工业级的代码，必然和并发脱离不了干系。程序员面试，并发也是必考知识点之一。 这本书深入浅出地介绍了Java线程和并发，是一本完美的Java并发参考手册。 书中从并发性和线程安全性的基本概念出发，重点介绍了以下内容： 但是这本书并没有摆脱译本常面临的翻译枯燥的毛病，没有上面推荐的《Head First Java》那么有趣，需要耐着性子啃下来。 再来唠叨2句，有些书籍最好不要买，比如21天精通XXX，完全就是割韭菜的。 学习计算机一定不要想着速成，没有什么捷径和超能力。要下苦功夫去啃那些经典书和源码，然后自己动手写，所有技术大佬都是一行行代码敲，一本本书啃出来的。 我在大学期间，为了把专业学好，看了大量经典的专业书籍，整理了这份计算机必读的高分经典书籍： 这份书单对于CS学习的同学帮助非常大且十分系统，这些书籍的电子版已经整理好了。 需要的直接戳这里领：计算机必看经典书籍（附pdf下载），请注意查收~ 需要掌握基本的调优技能以及面向对象设计的思想，为写出工业级代码打基础。 学习目标：服务端项目开发 学习内容：  推荐书籍3：《深入理解Java虚拟机》 作为Java程序员，不懂JVM是不行的。 本书详细讲解了类加载、java内存原理、垃圾回收机制等知识。只有掌握了JVM，才能在实际生产环境遇到线上问题如GC频率过高、内存溢出等应对自如、还有应用系统JVM参数合理配置。 本书是JVM公认的推荐好书，是Java进阶必看书籍。  推荐书籍4：《Java性能权威指南》 市面上专注于Java性能的并不多，能游刃有余地展示Java性能优化难点的更是凤毛麟角，本书即是其中之一。 通过使用JVM和Java平台，以及Java语言和应用程序接口，本书详尽讲解了Java性能调优的相关知识，帮助读者深入理解Java平台性能的各个方面，最终使程序如虎添翼。  推荐书籍5：《大话设计模式》 如果以前未接触过面向对象程序设计，那么本书必读，毕竟面向对象程序设计和C语言中面向过程设计有很大的不同。 学习目标：中间件开发和分布式系统 学习内容：  推荐书籍6：《数据密集型应用系统设计》 吐血推荐，本书豆瓣评分9.7分，堪称分布式领域圣经，本人非常后悔没有更早的阅读本书。 本书并没有局限于那种分布式框架，而是着重讲解分布式整体架构设计理念和基础知识。 作者水平非常高，本书广度非常大（诚然并不是很深，要在一本书里将那么多知识深度讲解也是不可能的），深入浅出，大家不用担心晦涩难懂（在这里更加推荐英文基础好的话直接读英文原版）。 包含：分布式系统的存储（第三章存储、第五章复制、第六章分片）、分布式一致性、实时计算（第十章和十一章的批处理和流处理）。书中更是给出了相当多的参考文献链接，值得深入研究。 书中有大量插图，将分布式系统高深的技术形象生动的描述，通俗易懂，比如下图是讲数据库多副本 并发写的问题的：  推荐书籍7：数据库《高性能MySQL》 本书深度讲解了mysql引擎架构、索引设计、SQL查询优化的实战技巧、复制、分片等原理，还有运维技能。适合精读。 如果是从事网络相关开发，如rpc框架、mq消息中间件，那么还需要掌握网络相关基础知识，以及业界有名的高性能网络组件Netty。 推荐书籍8：《重构》 所谓精益求精，同一件事，同一个功能，让不同的人来做会写出不同的代码。本书通俗易懂，教你如何不断优化现有代码，逐步迭代重构，写出清晰易懂、功能正确、可扩展可维护的代码。 再来贴出一张自己总结的脑图，然后分别详细介绍。 重要的事情说三遍。几乎各个大厂面试前2轮面试都会重点关注基础，如果基础不扎实，那么就很难进入后面的面试。计算机基础重点课程是这6门课程： （1）操作系统 操作系统必备的基础知识和常见面试题总结： （2）计算机组成原理 必备技术点： （3）数据结构 典型的数据结构：数组、队列、栈、堆、树、哈希表、并查集、字典树，原理要知晓和理解；并且队列、堆、栈、树这种典型数据结构能手写代码自己实现。 （4）算法 这几个典型的算法一定要能熟练掌握原理并能运用，举一反三，解决实际的问题。 （5）计算机网络 常见面试题： 书籍推荐《TCP/IP卷一》。 （6）数据库 这里给大家整理一份详尽的数据库重点知识点脑图： 书籍推荐一本实操性比较强的书：《MySQL必知必会》，豆瓣评分8.4. java语言基础重点知识点： 这里就参照我上面给出的书单学习： 对于22种常见的设计模式需要掌握其用法，基本是必考题。 学习网站推荐：设计模式目录：22种设计模式 mysql前面已推荐过基础书籍，进阶学习推荐阅书籍《高性能mysql》。 阅读重点章节即可：4-7章。 只学习语言还不行，还必须对常见的开发框架掌握使用，并对经典的框架了解其架构实现、读其源码。 （1）spring spring在面试中出现的频率非常高。 spring是一个轻量级java开发框架，最早由Rod Johnson，目的是解决企业级应用开发的业务逻辑层和其他各层的耦合问题。其最根本的使命是解决企业级应用开发的复杂性。 spring的优点： 架构模块设计： 常见考题可以参考之前总结的这个帖子： （2）dubbo-阿里巴巴开源的java服务框架 pache Dubbo 是一款高性能、轻量级的开源 Java 服务框架，提供了六大核心能力： 目前已有非常多的公司使用在实际生产环境中。 官网：Apache Dubbo github：apache/dubbo 其技术架构： （3）mybatis-ORM框架 MyBatis 是一款优秀的持久层框架，它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO（Plain Old Java Objects，普通老式 Java 对象）为数据库中的记录。 官网：mybatis - MyBatis 3 github：MyBatis （4）redis Redis 是完全开源的，遵守 BSD 协议，是一个高性能的 key-value 数据库。Redis 与其他 key - value 缓存产品有以下三个特点： 它有4大优势： 源码也不多，质量很高，推荐一读。 （5）rocketmq 官网：https://rocketmq.apache.org/ github：apache/rocketmq 阿里巴巴开源的消息中间件，现在已从apache顶级项目毕业。 技术架构： 也可以结合这本《RocketMQ技术内幕：RocketMQ架构设计与实现原理》来看源码。 就看这本《数据密集型应用设计》 我最近也在三刷《数据密集型应用设计》，并且做了一些读书笔记，感兴趣的可以关注我的专栏： 这个读书笔记基本每周更新一篇（因为只有周末有时间学），可以关注我的专栏追更。 没想到已经码了1万多字了，都是个人的经验总结。 如果觉得有用的话，看在字数的份上也要给我点个赞啊~ 关于Java如何打好牢固的基础？可以看我下面这个回答： Java学习应该如何进阶？ 关于Java语言从入门到进阶的书籍阅读顺序，我的这个回答已经获得了3000+赞和收藏： 关于Java完整的学习路线，可以看我下面的回答： Java代码写得太烂了应该如何优化呢？下面这个回答一定要看： 为什么阿里巴巴这么喜欢Java语言？你难道不好奇吗？ 最后想说的是，看书是一方面，更重要的是实战，勤动手，看源码，多Debug，写DEMO，多参与开源社区讨论。