学习是一个循序渐进的过程,也是一个非常难坚持的过程,而Java由于其良好的封装性和稳定性,在web开发和大数据方向常年都占据霸主地位,很多大型科技公司都愿意采用Java解决方案,所以如果你真的准备学习Java,就请一定坚持下去,找到一份好工作绝对不是问题。

我这边也由浅入深整理一份Java的学习资源和路线图,帮助你更好的学习Java。

1、Java基础

基本的程序语法是入门一个编程语言的必经之路,而且学好基础的语法还可以帮助小白迅速建立编程逻辑思维,学好基础语法之后,便要理解Java面向对象的编程逻辑,训练自己以对象的方式去写Java的程序。

这里推荐大家去看《Head First Java》这本书,一本真正为零基础小白写的Java入门的书,里面的插图很多,内容风趣且通俗易懂,基本上涵盖了所有Java相关的基础知识,对于基础不行的小白、又不喜欢看大段文字的人来说再适合不过了。

此外在基础阶段《Java 核心技术卷 1/2》这本书也强烈建议去看一下,对于 Java8 新特性的东西,我建议你基础学好之后可以看一下,暂时看不太明白也没关系,后面抽时间再回过头来看。

看完之后,你可以用自己学的东西实现一个简单的 Java 程序,也可以尝试用 Java 解决一些编程问题,以此来将自己学到的东西付诸于实践。

记得多总结!打好基础!把自己重要的东西都记录下来。 API 文档放在自己可以看到的地方,以备自己可以随时查阅。为了能让自己写出更优秀的代码。

学习完之后可以看一下下面这几篇文章,检查一下自己的学习情况:

《Head First Java》《Java 核心技术卷 1/2》下载地址:

链接:https://pan.baidu.com/s/1kx2A5MSlnJCxahAP86zISw

提取码:ku9m

2、多线程的简单使用

学完了Java基础语法知识就需要学点多线程与并发的知识了,因为Java作为主流的后端语言,经常需要处理系统传来的各种线程和并发的问题,而且找工作的时候面试官也肯定会问。推荐 看《Java高并发编程详解》 或者 《Java并发编程实践》这两本书。

学习完多线程之后可以通过下面这些问题检测自己是否掌握。

Java 多线程知识基础:

  1. 什么是线程和进程?
  2. 请简要描述线程与进程的关系,区别及优缺点?
  3. 说说并发与并行的区别?
  4. 为什么要使用多线程呢?
  5. 使用多线程可能带来什么问题?
  6. 说说线程的生命周期和状态?
  7. 什么是上下文切换?
  8. 什么是线程死锁?如何避免死锁?
  9. 说说 sleep() 方法和 wait() 方法区别和共同点?
  10. 为什么我们调用 start() 方法时会执行 run() 方法,为什么我们不能直接调用 run() 方法?

Java 多线程知识进阶:

  1. synchronized 关键字:① 说一说自己对于 synchronized 关键字的了解;② 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗;③ 讲一下 synchronized 关键字的底层原理;④ 说说 JDK1.6 之后的 synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗;⑤ 谈谈 synchronized 和 ReentrantLock 的区别。
  2. volatile 关键字: ① 讲一下 Java 内存模型;② 说说 synchronized 关键字和 volatile 关键字的区别。
  3. ThreadLocal:① 简介;② 原理;③ 内存泄露问题。
  4. 线程池:① 为什么要用线程池?;② 实现 Runnable 接口和 Callable 接口的区别;③ 执行 execute() 方法和 submit() 方法的区别是什么呢?;④ 如何创建线程池。
  5. Atomic 原子类: ① 介绍一下 Atomic 原子类;② JUC 包中的原子类是哪 4 类?;③ 讲讲 AtomicInteger 的使用;④ 能不能给我简单介绍一下 AtomicInteger 类的原理。
  6. AQS :① 简介;② 原理;③ AQS 常用组件。

《Java高并发编程详解》《Java并发编程实践》下载地址:

链接:https://pan.baidu.com/s/1BSq4kOESgl0IMenXoU0ZZQ

提取码:xuul

3、计算机网络

为了保证系统安全可靠的传输,你还需要了解到HTTP,TCP协议,什么是三次握手,四次挥手。计算机网络方面的学习,我觉得掌握基本的知识就行了,不需要太深究,一般面试对这方面要求也不高,毕竟不是专门做网络的。推荐 《网络是怎样连接的》《图解 HTTP》 这两本书来看,这两本书都属于比较有趣易懂的类型,也适合没有基础的人来看。

《网络是怎样连接的》《图解 HTTP》下载地址:

链接:https://pan.baidu.com/s/1oP9P8sgi1vmDBCoDmoZdbQ

提取码:76ha

4、数据结构与算法

如果你想进入大厂的话,我推荐你在学习完 Java 基础或者多线程之后,就开始每天抽出一点时间来学习算法和数据结构。因为算法才是编程的灵魂,不管学的什么语言都跨不过算法这个门槛。

对于想要入门算法和数据结构的朋友,建议看这两本书 《算法图解》《大话数据结构》,这两本书虽然算不上很经典的书籍,但是比较有趣,对于刚入门算法和数据结构的朋友非常友好。

除了上面两本书之外,《剑指 offer》《编程之美》 这两本书也可以看一下,对于算法面试非常有帮助。

下载地址:

链接:https://pan.baidu.com/s/1FTvU-nJwR78LtYeKPC7Pjg

提取码:rz4w

5、数据库

数据库可能是整个系统中最值钱的部分了,大家应该经常听到删库跑路的笑话,对于互联网公司来说,数据库差多不约等于公司所有资源,所以数据库这部分一定要好好学。基本的增删改查,索引、存储过程、事务隔离级别,主被同步,读写分离这些都需要学一下!推荐书籍 《MySQL 必知必会》《高性能MySQL》

下载地址:

链接:https://pan.baidu.com/s/1KSJrthecsyjjc8Ms3QwLWg

提取码:fjyf

6、常用工具

  1. Maven :建议学习常用框架之前可以提前花半天时间学习一下Maven的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。

  2. Git :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。(Git 入门

7、常用框架

SpringSpringMVCHibernateMybatisshiro 这些框架都需要了解一下, 尤其是 Spring 原理,大厂面试必问,然后很有必要学习一下 SpringBoot ,很多公司对于应届生都是直接上手 SpringBoot。记住Spring 真的很重要! 一定要搞懂 AOP 和 IOC 这两个概念。Spring 中 bean 的作用域与生命周期、SpringMVC 工作原理详解等等知识点都是非常重要的,一定要搞懂。推荐看《Spring技术内幕》和《Spring实战》这两本书。

《Spring技术内幕》和《Spring实战》下载地址:

链接:https://pan.baidu.com/s/19J3xeuJqpk4EtalEDpnuxw

提取码:zc3z

最后

我觉得学习一门新的知识,最优的学习路径应该是这样的:

  1. 官网(大概率是英文,不推荐初学者看)
  2. 书籍(知识更加系统完全,推荐)
  3. 视频(比较容易理解,推荐,B站上有很多学习视频,大概率能找到你想要的学习视频)
  4. 网上博客(解决某一知识点的问题的时候可以看看)

相信你看到这,大概能理解为什么程序员的工资会这么高了,因为要学的东西确实很多,而且技术更新还很快,需要不断学习新的东西,但是也别慌,只要你合理安排自己的时间,搞清楚哪些东西是重点,哪些东西仅仅了解就够了。这样你学习起来就会有侧重点,效率也会提升很多。

往期精彩文章