大一的时候,我仅仅接触过 C 语言,对 C 语言的掌握程度仅仅是可以完成老师布置的课后习题。那时候我的主要的精力都放在了参加各种课外活动,跟着一个很不错的社团尝试了很多我之前从未尝试过的事情:露营、户外烧烤、公交车演讲、环跑古城墙、徒步旅行、异地求生、圣诞节卖苹果等等。

到了大二我才接触到 HTML、CSS、JS、Java、Linux、PHP 这些名词。最开始接触 Java 的时候因为工作的需要我选择的安卓方向,我自己是在学习了大概 3 个月的安卓方向的知识后才转向 Java 后台方向的。最开始自己学习的时候,走了一些弯路,但是总体路线相对来说还是没问题的。我读的第一本 Java Web 方向的书籍是《Java Web 整合开发王者归来》,这本书我现在已经不推荐别人看了,一是内容太冗杂,二是年代比较久远导致很多东西在现在都不适用了。

很多人在学完 Java 基础之后,不知道后面该如何进行下一步地进行学习,或者不知道如何去学习。如何系统地学习 Java 一直是困扰着很多新手或者期待在 Java 方向进阶的小伙伴的一个问题。我也在知乎上回答了好几个类似的问题,我觉得既然很多人都需要这方面的指导,那我就写一篇自己对于如何系统学习 Java 后端的看法。刚好很多朋友都是学 Java 不太久的,希望这篇文章对学习 Java 的朋友能有一点启示作用。

由于我个人能力有限,下面的学习路线以及方法推荐一定还有很多欠缺的地方。欢迎有想法的朋友在评论区说一下自己的看法。本文适合刚入门或者刚入门不久的朋友,比较基础。

学习路线以及方法推荐

下面的学习路线以及方法是笔主根据个人学习经历总结改进后得出,我相信照着这条学习路线来你的学习效率会非常高。 建议使用 Intellij IDEA 进行编码,可以单独抽时间学习 Intellij IDEA 的使用。

step 1:Java 基础

《Java 核心技术卷 1/2》 和 《Head First Java》 这两本书在我看来都是入门 Java 的很不错的书籍 (《Java 核心技术卷 1/2》 知识点更全,我更推荐这本书),我倒是觉得《Java 编程思想》有点属于新手劝退书的意思,慎看,建议有点基础后再看。你也可以边看视频边看书学习(尚学堂(推荐高淇300集)、黑马、尚硅谷、慕课网的视频都还行)。对于 Java8 新特性的东西,我建议你基础学好之后可以看一下,暂时看不太明白也没关系,后面抽时间再回过头来看。

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

记得多总结!打好基础!把自己重要的东西都记录下来。 API 文档放在自己可以看到的地方,以备自己可以随时查阅。为了能让自己写出更优秀的代码,《Effective Java》、《重构》 这两本书没事也可以看看。

step 2:多线程的简单使用

多线程这部分内容可能会比较难以理解和上手,前期可以先简单地了解一下基础,到了后面有精力和能力后再回来仔细看。推荐《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 常用组件。

step 3(可选):操作系统与计算机网络

操作系统这方面我觉得掌握操作系统的基础知识和 Linux 的常用命令就行以及一些重要概念就行了。

对于 Linux 我们要掌握基本的使用就需要对一些常用命令非常熟悉比如:目录切换命令、目录操作命令、文件的操作命令、压缩或者解压文件的命令等等。

计算机网络方面的学习,我觉得掌握基本的知识就行了,不需要太深究,一般面试对这方面要求也不高,毕竟不是专门做网络的。推荐 《网络是怎样连接的》 、《图解 HTTP》 这两本书来看,这两本书都属于比较有趣易懂的类型,也适合没有基础的人来看。

step 4(可选):数据结构与算法

如果你想进入大厂的话,我推荐你在学习完 Java 基础或者多线程之后,就开始每天抽出一点时间来学习算法和数据结构。为了提高自己的编程能力,你也可以坚持刷 Leetcode。就目前国内外的大厂面试来说,刷 Leetcode 可以说已经成了不得不走的一条路。

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

另外,还有一本非常赞的算法书推荐给各位,这本书的名字就叫《算法》,书中的代码都是用 Java 语言编写。这本书的优点太多太多比如它的讲解基础而全面、对阅读者比较友好等等。我觉得这本书唯一的缺点就是太厚了 (小声 BB,可能和作者讲解某些知识点的时候优点啰嗦有关)。除了这本书之外,《剑指 offer》 、《编程珠玑》 、《编程之美》 这三本书都被很多大佬推荐过了,对于算法面试非常有帮助。《算法之美》 这本书也非常不错,非常适合闲暇的时候看。

算法(第4版)作者:[美] Robert Sedgewick,[美]Kevin Wayne

step 5:前端知识

这一步主要是学习前端基础 (HTML、CSS、JavaScript),当然 BootStrap、VUE 等等前端框架你也可以了解一下。网上有很多这方面资源,推荐先把 HTML、CSS、JS 的基础知识过一遍,然后通过一个实际的前端项目来巩固。

step 5:MySQL

学习 MySQL 的基本使用,基本的增删改查,SQL 命令,索引、存储过程这些都学一下吧!推荐书籍 《SQL 基础教程(第 2 版)》(入门级)、《高性能 MySQL : 第 3 版》(进阶)、《MySQL 必知必会》。

step 6:Maven

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

step 7:常用框架

学习 Struts2(可不用学)、Spring、SpringMVC、Hibernate、Mybatis、shiro 等框架的使用, (可选) 熟悉 Spring 原理(大厂面试必备),然后很有必要学习一下 SpringBoot。我也遇到很多公司对于应届生直接上手SpringBoot,不过我还是推荐你把 Spring、SpringMVC 好好学一下。

Spring 真的很重要! 一定要搞懂 AOP 和 IOC 这两个概念。Spring 中 bean 的作用域与生命周期、SpringMVC 工作原理详解等等知识点都是非常重要的,一定要搞懂。

推荐看文档+视频结合的方式,中途配合实战来学习。

step 8:高性能网站架构

学习 Dubbo、Zookeeper、常见的消息队列(比如ActiveMq、RabbitMQ)、Redis、Elasticsearch 的使用(这些东西可以通过视频最后一个分布式项目来学,边看视频,边自己做,查阅网上博客,效果更好)。

一定要学会拓展知识,养成自主学习的意识。

step 9:其他

可以再回来看一下多线程方面的知识,还可以利用业余时间学习一下 NIO 和 Netty ,这样简历上也可以多点东西。如果想去大厂,JVM 的一些知识也是必学的(Java 内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM 内存管理)推荐《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(最新第二版》和《实战Java虚拟机》,如果嫌看书麻烦的话,你也可以看我整理的文档:。

另外,现在微服务特别火,很多公司在面试也明确要求需要微服务方面的知识。如果有精力的话可以去学一下SpringCloud生态系统以及其他微服务常用框架。

总结

我上面主要概括一下每一步要学习的内容,对学习规划有一个建议。知道要学什么之后,如何去学呢?我觉得学习每个知识点可以考虑这样去入手:官网(大概率是英文,不推荐初学者看)、书籍(知识更加系统完全,推荐)、视频(比较容易理解,推荐,特别是初学的时候)、网上博客(解决某一知识点的问题的时候可以看看)。

这里给各位一个建议,看视频的过程中最好跟着一起练,要做笔记!!! 最好可以边看视频边找一本书籍看,看视频没弄懂的知识点一定要尽快解决,如何解决?首先百度/Google,通过搜索引擎解决不了的话就找身边的朋友或者认识的一些人。另外,一定要进行项目实战!很多人这时候就会问没有实际项目让我做怎么办?我觉得可以通过下面这几种方式:

  1. 在网上找一个符合自己能力与找工作需求的实战项目视频或者博客跟着老师一起做。做的过程中,你要有自己的思考,不要浅尝辄止,对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去往深出学。
  2. Github 或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。
  3. 自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。

做项目不光要做,还要改进,改善。另外,如果你的老师有相关 Java 后台项目的话,你也可以主动申请参与进来。

一定要学会分配自己时间,要学的东西很多,真的很多,搞清楚哪些东西是重点,哪些东西仅仅了解就够了。一定不要把精力都花在了学各种框架上,算法和数据结构真的很重要!

转载于:https://www.cnblogs.com/tqtz777/p/10905345.html

Java学习路线以及方法推荐相关推荐

  1. java学习笔记:零基础java学习路线+配套资料+书籍推荐

    公众号菜鸟名企梦2018年,精品文章汇总: 01 我的秋招 我的秋招offer 我的offer选择 秋招全面总结-必读宝典 求职必读 02 零基础学习路线 零基础-java学习路线(上) 零基础-ja ...

  2. 【最新版】Java学习路线(含B站口碑推荐视频链接)

    文章目录 关于如何自学 一.计算机网络 二.数据结构与算法 三.操作系统 四.计算机组成原理 五.编译原理 六.设计模式 七.MySQL 八.实操工具 九.JAVA并发与JVM 十.Redis 十一. ...

  3. 好程序员Java学习路线分享finalize()方法详解

    好程序员Java学习路线分享finalize()方法详解,前言,finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法.. fi ...

  4. 乔戈里推荐的新版Java学习路线,开源!

    Java 学习路线一条龙版 by 程序员鱼皮 所以我又抽空做了新版的 Java 学习路线一条龙,补充了很多内容(比如面试题.常用 Java 类库.常用软件等),让整个路线 字数翻倍 .同时区分了各知识 ...

  5. 网站推荐(3)——黑马Java学习路线

    黑马Java学习路线 黑马的java学习路线,很详细,涵盖java基础.Java web 甚至微服务.每个阶段在B站都有配套的视频,同时资料也是可以下载的.非常适合学习 地址:http://yun.i ...

  6. 十年架构师留下最完整的Java学习路线,学完年薪40W

    文章有点长,请大家耐心看完,话不多说直接上干货! 永不过时的编程语言--Java 编程开发. Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以900万的程序员数 ...

  7. Java学习星球,Java学习路线

    目录 一.Java学习路线 二.学习计划 三.为何会有Java学习星球? 四.加入星球后,你可以得到什么? 五.如何加入Java学习星球? 六.打卡挑战 大家好,我是哪吒,一个靠着热情攀登至C站巅峰的 ...

  8. java学习路线规划

    java学习路线规划 一.写在前面 兄弟,我整理了一下关于自己之前学习java的一些方向,给你归纳在这里,有空就来看看,希望对你有帮助. 二.java基础篇 1.认识java ​ 了解java历史,大 ...

  9. 人类高质量 Java 学习路线【一条龙版】

    大家好,我是张讨嫌.现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了.大部分的博主推荐资源,也就是把播放量高的视频说一遍,水一期视频,没有一条很清晰的学习路线. ...

最新文章

  1. 波场DApp数据分析
  2. MySQL Workbench/SQLyog 高分辨率屏幕上界面模糊的解决方法
  3. mysql建表的auto_increment_koa2+koa+mysql快速搭建nodejs服务器
  4. java 的23种设计模式
  5. matlab读取正则找科学,MATLAB常用正则表达式记录
  6. spring定时任务(@Scheduled注解)
  7. arp协议属于哪一层_网络工程师(3):详解ARP协议
  8. Mac adb 安装
  9. 深入探讨PageRank(二):PageRank原理剖析
  10. ArcGIS API for JavaScript——给图层添加标注
  11. 遇见Flask-Script
  12. 结巴分词python教程_python结巴教程【python3怎么使用结巴分词】
  13. view 判断显示 微信_微信小程序开发用户授权登录(上)
  14. go模板引擎生成html,goweb-模板引擎
  15. java tolist_Java Collectors toList()用法及代码示例
  16. 从零开始制作游戏外挂
  17. R329开发板系列教程之二|实机运行aipu程序
  18. android dialog遮挡键盘,彻底解决软键盘遮挡DialogFragment
  19. JAVA入门学习资料
  20. n*n蛇形方阵的输出

热门文章

  1. python版本的Pairs图
  2. 冬日舞会服务器维护中,冬日舞会
  3. 安全加密 - 秘钥和算法关系
  4. 【无标题】程序员如何优雅地摸鱼?
  5. C++核心准则R.32: 通过​unique_ptr(widget)类型参数表示函数试图获取widget的所有权
  6. oracle基础|oracle排序用法|order by用法|where用法
  7. 差分数组分析详解+例题
  8. win10系统盘多大合适_yi点分享 | Win10下安装Ubuntu20.04,看这一篇就够了
  9. C# 里面的 #region 是什么意思? (转载)
  10. 金属表面酸洗废水除锰除铬过滤装置,除铬树脂