给学妹的 Java 学习路线
大家好,这篇文章主要是讲解下如何自学 Java,这个问题有很多粉丝私信问过,今天又有直系学妹问我如何学习 Java?
我就以我的经历,总结下分享给大家,有不当指出或者有更好的方法建议也欢迎留言指出,大家一起交流进步。
首先给出一张思维导图,图片和思维导图源文件可以在公众号武培轩后台回复java即可。
首先第一步就是学习 Java 基础:
Java 基础
Java 是一门面向对象的编程语言,所以在了解基础语法之后,还要搞懂它的面向对象编程思想(比如涉及到的封装、继承、多态、类、对象、接口等),除此之外还有泛型、反射等知识也需要学习,因为反射在许多框架中都有所应用。
除上述外,IO、集合、异常等也需要去了解下,不仅在面试中会问到,工作中也会用到。
有精力的可以去了解下 Java 8 的新特性,比如 Lambda 表达式、Stream 流操作以及新的 Date API。
关于书籍的话,我推荐 《Java核心技术卷1:基础知识》 和 《Java核心技术卷2:高级特性》,这两本书都比较适合入门,另外 《码出高效:Java开发手册》 这本书也挺好的,还不是非常厚,可以阅读下。
如果觉得看书看不进去的话可以看视频学习(尚硅谷、黑马、达内等),另外我觉得在学习完一些知识后,可以自己动手去敲代码玩玩,兴趣不一定是最好的老师,但成就感一定是。
再分享一个我学习新知识的方法-闭环式学习:再学习完之后,通过思考对知识进行总结(可以使用思维导图),然后和其他人进行讲解分享,若身边没有这个环境的话,也可以在技术交流群里进行分享。
在了解了 Java 基础知识后,可以去学习下并发相关的知识:
并发
并发相对于 Java 基础可能会有些难以理解,可以通过 《Java并发编程实战》 和 《Java并发编程之美》 等书籍进行学习,主要包括如下内容:
- 并发理论基础:线程安全、锁、线程等
- 并发工具类:Lock、Condition、Semaphore、ReadWriteLock、CountDownLatch 等
- 并发设计模式:Future、Master/Salve、Copy-on-Write、Balking 等
在你了解完并发相关知识后, 你可能会发现它很多与 JVM 有关,因此来了解下 JVM:
JVM
对于 JVM 的学习,我这里推荐的书籍是 《深入理解Java虚拟机:JVM高级特性与最佳实践》(第三版可以在微信读书上阅读),虽然在开发中很少用到,但是我们不光要知其然,还要知其所以然,因为在学习 JVM 后,才能更深刻了解到 Java 程序是如何被执行以及优化的,况且在面试中也是必考点,JVM 方面内容主要包含:JMM、GC 以及调优等。
数据结构与算法
算法能力不是短时间内可以迅速提高的,因此可以在学习完 Java 基础之后就可以着手学习了,许多大厂对于算法的要求还是蛮高的,推荐刚开始可以刷剑指 Offer,然后刷 LeetCode,做完题一定要分类总结。
算法方面的书籍,入门级别的我推荐 《大话数据结构》、《算法图解》、《我的第一本算法书》,图文并茂,很适合入门,针对面试的话,我推荐 《编程之美》、《剑指offer》、《编程珠玑》、《程序员面试代码指南》,这几本书的题刷完完全足够应付面试了。
同时一定要对基本的数据结构了如指掌(链表、数组、栈、队列、哈希表、树等),还有常见的算法也要了解,能够手撕代码,比如:二分搜索、分治、快排、动态规划、回溯法、双指针等。
操作系统
操作系统的书籍推荐阅读 《计算机组成原理》、《操作系统》、《程序是怎样跑起来的》,在了解了底层运行机制后,对于以后的学习是很有帮助的,主要内容包括:进程、线程、内存相关原理。
计算机网络
计算机网络方面的数据,我推荐 《计算机网络自顶向下方法》,书中的例子都很形象,很适合入门,另外 《网络是怎样连接的》、《图解HTTP》 这两部也很适合初学者阅读。
数据库
首先简单学习下 MySQL 的基本语法,最好了解下索引的原理以及优化的方式。书籍方面,《高性能 MySQL》 有点厚,不过知识很全,《MySQL 技术内幕—InnoDB 存储引擎》 这本书讲的就比较深了,想要深入的可以阅读下。
Redis 方面的书籍推荐 《Redis设计与实现》,感觉讲的挺好的,从源码角度解析 Redis 架构设计。
设计模式
设计模式方面的书籍推荐 《设计模式之禅》、《大话设计模式》、《HeadFirst 设计模式》,这三本书都挺适合入门的,设计模式有 23 种,不需要每一个都很熟悉,只需要把常用常见的几个掌握就好了:单例模式、工厂模式、策略模式、代理模式等。
框架
了解下 Spring、SpringMVC、Mybatis 等框架的基本使用,可以通过一个实战项目去了解下,这样更能够去知道每个框架都是干啥的,然后再去了解相关的原理,像 Spring 和 SpringMVC 的原理在面试中还是比较常考的,比如 IOC 和 AOP 的原理,SpringMVC 的执行流程等。
框架的学习其实推荐看官方文档,里面的例子都很全面和经典,如果英语不好的话,可以去阅读相关的书籍,比如 《Spring实战》。
另外,SpringBoot 框架也可以去了解下,通过实战 demo 可以很快地掌握如何使用。
微服务现在公司用的也比较多,在有时间和精力的前提下,可以通过实战项目了解学习下 SpringCloud。
在做完项目之后,要多总结,还可以自己去扩展完善下自己的项目。
中间件
这部分就是多多益善了,你掌握的越多越好,比如消息队列、RPC 通信框架等,可以在掌握其使用后,在有精力的前提下了解原理实现。
工具
工欲善其事,必先利其器,在开发中可能需要了解如下工具:
- 开发工具:我这里推荐 IDEA,不过 Eclipse 也是可以的,只是个开发工具,不用太纠结
- 项目管理:Maven 和 Gradle 的都有,一般 Maven 的多一些,选择一个学习即可
- 版本控制:主要是 Git 和 SVN,不过 SVN 目前用的比较少了,可以学习下 Git,熟练使用即可
源码
在能够熟练使用一个东西之后,有余力的再去钻研源码,可以先阅读 JDK 源码,把常用的集合类、juc 并发包下的、线程相关的看下,看的时候可以结合视频或者博客进行阅读,方便理解。
在对 JDK 常用类的源码有所了解后,可以去阅读 Spring 等框架的源码,学习优秀开发者的编程思想。
总结
在有了学习目标和学习路线后,可以根据自己的情况,选择视频、书籍等方式去学习,学习之后要多思考、多总结,能够分享给其他人最好,只有你能把你学到了分享出来,你才能确保你真的懂了。
学习本来就是反人类的行为,可以和身边的小伙伴一起学习,有一个良好的氛围是十分有益的,若没有这个环境也可以公众号武培轩回复加群一起技术交流讨论。
基础不牢,山崩地裂,建议大家还是稳扎稳打,这样才可以走的更长更远。
还有就是一定要有一个自己的规划和方向,然后朝着目标一步一步地学习奋斗,只要坚持,总会有回报的。
写得不好的或者大家有什么更好的建议,也欢迎留言讨论,你的一句话,可能就会帮助到一个即将入门的新手。
最好的关系就是互相成就,大家的在看、转发、留言三连就是我创作的最大动力。
给学妹的 Java 学习路线的更多相关文章
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
- 最新java学习路线:含阶段性java视频教程完整版
最新java学习路线:带阶段性java视频教程版本 第一阶段:Java基础 学习目标: 掌握基本语法.面向对象.常用类.正则.集合.Io流.多线程.Nio.网络编程.JDK新特性.函数式编程 知识点细 ...
- 一份最中肯的Java学习路线+资源分享(拒绝傻逼式分享)
这是一篇针对Java初学者,或者说在Java学习路线上出了一些问题(不知道该学什么.不知道整体的学习路线是什么样的) 第一步:Java基础(一个月左右) 推荐视频: 下面的是黑马内部视频,我比较推荐的 ...
- 【Todo】Java学习路线(方向指导)
在网上搜了下Java学习路线(关键词:学习,因为众所周知,实践出牛人,在平时工作不怎么深入的情况下,才强调学习的方向的重要性 ^_^) 发现下面知乎这个回答写的真好.mark如下: https://w ...
- 【强烈推荐】可能是最适合你的 Java 学习路线和方法
如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...
- 从入门到精通,Java学习路线导航
引言最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧. Ja ...
- 从入门到精通,Java学习路线导航(附学习资源)
原文链接:https://blog.csdn.net/qq_42453117/article/details/100655512 引言 最近也有很多人来向我"请教",他们大都是一些 ...
- Java学习路线【转】
Java学习路线[转] 第一阶段:JavaSE(Java基础部分) Java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,程序的执行过程,相 ...
- java学习路线(好资源大家分享)
对于入门java将近两年的时间,曾经迷惘过,一直想知道java的具体学习路线,看过了许许多多的java经验分享的帖子,评论,以及其他各种培训机构所谓的学习路线,发现没有一个符合我个人需求的学习路线,根 ...
随机推荐
- Deep Protein Methylation Profiling by Combined Chemical and Immunoaffinity Approaches Reveals Novel PRMT1 Targets (结合层析法和免疫沉淀法的蛋白甲基化的深度检测技术发现了PRMT1新的靶标蛋白)
题目:Deep Protein Methylation Profiling by Combined Chemical and Immunoaffinity Approaches Reveals Nov ...
- Nvue/Weex
Nvue/Weex 使用Uniapp做了一个App,感觉性能不是很好,了解过Uniapp的Nvue,就想做一个纯Nvue项目,其实基本就是做一个Weex项目,不得不说坑是真的多,但是渲染性能真的是没得 ...
- MATLAB中mean的用法
https://blog.csdn.net/wangyang20170901/article/details/78745587 MATLAB中mean的用法 转载仙女阳 最后发布于2017-12-07 ...
- POJ-3134-Power Calculus(迭代加深)
题意:输入一个n,问x从1次方开始,到n次方 ,可以乘或除已经计算出来的数 ,最少需要执行多少步? 思路:迭代加深 ,深度从0开始 ,直到返回值为真. 在深搜过程中剪枝(深度的判断 ,当前最大值尽全力 ...
- 初步进入linux世界
[Linux 系统启动过程] Linux的启动其实和windows的启动过程很类似,不过windows我们是无法看到启动信息的,而linux启动时我们会看到许多启动信息,例如某个服务是否启动. Lin ...
- SQL Server中创建sde数据库
在ArcCatalog或者ArcMap中打开ArcToolBox工具箱. 在工具箱中,找到创建企业级地理数据库工具,依次为数据管理工具→地理数据库管理→创建企业级地理数据库,如图所示. 双击打开创建企 ...
- 基础英语(一):Unit1
零,英语学习方法 我看了大量的学习方法,在其它科目都是很管用的,唯独英语,没有任何一个学习方法能够适合适用于我,但是我也从其他的学习方法中总结出了一些规律,那就是任何学习都是脱离不了例子的,任何事物都 ...
- js之for与forEach循环的区别
回武汉打卡第四天,武汉加油,逆战必胜!今天咱们探讨一下for循环和forEach()循环的区别. 首先,for循环在最开始执行循环的时候,会建立一个循环变量i,之后每次循环都是操作这个变量,也就是说它 ...
- D3属性大全
https://www.cnblogs.com/bester-ace/articles/10948793.html https://www.cnblogs.com/qingmingsang/artic ...
- 【Java技术系列】爱情36技之Bug大战
1. 鲁迅先生说:程序员,天不怕地不怕,就怕小虫儿爬呀爬,爬呀爬. 随着时间的推移,鲁迅先生又说:真正勇猛的程序员,敢于让虫子面对惨淡的虫生. 虫子在程序员心中是啥东西?虫子的学名为 Bug,是多少入 ...