不知不觉踏入互联网行业已经四年了。
回顾当初第一次接触Java,是在大学的课堂,晦涩难懂的知识点,现在还能想起被期末考试支配的恐惧。
直到踏入互联网这个行业,再回想一下自己整个入行到工作的历程,总结了一下学习Java的路线,希望可以帮到各位初入行的Java小白。
一、大纲
多数事情,都要有目标的行动,行动为了完成目标。还可以把目标写下来或打印出来,贴到身边明显的地方,有利于督促自己。
学Java,但是不能只学Java,因为在计算机这棵大树中,Java只是一片叶子。
一个合格的Coder,除了Java,还需要熟悉操作系统、计算机网络、数据库、前端、中间件、框架等等这些东西,如果要成为一个Top Coder,项目管理、英语、沟通、算法也很重要。
就针对就业来说,个人觉得掌握 Java基础、计算机基础、工具的使用、数据库、web前端,Javaweb,框架使用、Linux、中间件,就算一个入门级的Coder了。
一、Java基础
我把 Java 基础部分真正要学的内容列一下。
01、Java 简介
- Java语言概述
- Java中JDK、JRE、JVM三者之间的关系
- Java中public class与class
- Java标识符与关键字
- Java 变量
- Java 数据类型
- Java运算符
- Java 表达式 & 语句 & 代码块
- Java中的注释
02、Java 控制语句
- Java if else
- Java switch 语句
- Java for 循环
- Java while 循环
- Java break 语句
- Java continue 语句
03、Java 数组
- Java 数组
- 多维数组
- Java 数组复制
04、Java 面向对象(1)
- Java 类和对象
- Java 方法
- Java 方法重载
- Java 构造方法
- Java 字符串
- Java 访问权限
- Java this 关键字
- Java final 关键字
- Java 递归
- Java instanceof 操作符
05、Java 面向对象(2)
- Java 继承
- Java 方法重写
- Java super 关键字
- 抽象类 & 抽象方法
- Java 接口
- Java 多态
- Java 封装
06、Java 面向对象(3)
- 嵌套&内部类
- Java static 关键字
- Java 匿名内部类
- Java 单例
- Java 枚举类
- Java 枚举构造方法
- Java 枚举字符串
- Java 反射
07、Java 异常处理
- Java 异常简介
- Java 异常处理
- Java try catch
- Java throw 和 throws
- Java 捕获多个异常
- Java try-with-resources
- Java 注解
- Java 注解类型
- Java 日志
- Java 断言
08、Java 集合
- Java 集合框架
- Java 集合接口
- Java List 接口
- Java ArrayList
- Java Vector
- Java Stack
09、Java 队列
- Java 队列接口
- Java 优先级队列
- Java 双端队列接口
- Java LinkedList
- Java 数组队列
- Java 阻塞队列接口
- Java ArrayBlockingQueue
- Java LinkedBlockingQueue
10、Java Map
- Java Map 接口
- Java HashMap
- Java LinkedHashMap
- Java WeakHashMap
- Java EnumMap
- Java SortedMap 接口
- Java NavigableMap 接口
- Java TreeMap
- Java ConcurrentMap 接口
- Java ConcurrentHashMap
11、Java Set
- Java Set 接口
- Java HashSet
- Java EnumSet
- Java LinkedHashSet
- Java SortedSet 接口
- Java NavigableSet 接口
- Java TreeSet
- Java 集合算法
- Java 迭代器接口
- Java ListIterator 接口
12、Java 字节流
- Java IO 流简介
- Java InputStream
- Java OutputStream
- Java FileInputStream
- Java FileOutputStream
- Java ByteArrayInputStream
- Java ByteArrayOutputStream
- Java ObjectInputStream
- Java ObjectOutputStream
- Java BufferedInputStream
- Java BufferedOutputStream
- Java PrintStream
13、Java 字符流
- Java Reader
- Java Writer
- Java InputStreamReader
- Java OutputStreamWriter
- Java FileReader
- Java FileWriter
- Java BufferedReader
- Java BufferedWriter
- Java StringWriter
- Java PrintWriter
14、Java 并发编程
- 进程与线
- 多线程的入门类和接口
- 线程组和线程优先级
- 线程的状态及主要转化方法
- 线程间的通信
- 重排序和 happens-before
- volatile
- synchronized 与锁
- CAS 与原子操作
- AQS
- 计划任务
- Stream 并行计算原理
- Frok/Join
- 通信工具类
- CopyOnWrite
- 并发集合容器
- 锁接口和类
- 阻塞队列
- 线程池原理
15、Java 虚拟机
- Java 内存结构
- 堆
- 栈
- 垃圾回收
- JVM 内存区域
- Java 虚拟机栈
- class 文件
- 字节码指令
- JVM 参数调优
- Java 对象模型
- HotSpot
- 类加载机制
- 编译和反编译
- 反编译工具(javap)
- JIT
- 虚拟机性能监控和故障处理工具(jps、jstack、jmap、jstat、jconsole、javap)
怎么系统化的学习呢?
推荐一套视频,动力节点老杜讲的Java零基础教程,在 B 站上看。
https://www.bilibili.com/video/BV1Rx411876f
二、计算机基础
计算机基础都包括哪些呢?
计算机组成原理、操作系统、计算机网络、数据结构与算法。
计算机组成原理
先说计算机组成原理,这部分内容主要涉及
- 计算机系统概述
- 数据与运算
- CPU 概述
- 存储子系统概述
- 总线和 IO 概述
计算机基础知识的学习建议学习《计算机专业导论》
计算机专业导论可以帮助你对即将学习的学科有一个大致的了解,知识注重广度而非深度。
软件工程专业的同学也可以去看《软件工程导论》
三、工具的使用
如果你既想写出质量杠杠的 Java 代码,又想追求开发效率,用 Intellij IDEA 准没错!
可以去 B 站上看一下这个 Intellij IDEA 的教学视频。
www.bilibili.com/video/BV14t411z77T
大家都知道,版本控制系统非常重要!!!!!!
即便你只是一个人在编码,它也可以帮助你创建项目的快照、记录每个改动、创建不同的分支等等。
如果你参与的是多人协作,它更是一个无价之宝,你不仅可以看到别人对代码的修改,还可以同时解决由于并行开发带来的冲突。
版本控制系统有很多,其中最突出的代表就是 Git。
想要把 Git 学好的话,可以看看这套Git教学视频。
www.bilibili.com/video/BV1iv411p7ap
四、数据库
Java 实习工作,不外乎增删改查嘛,不要抱太多幻想,基本上任何一个人的实习经历,都是从 CRUD 开始的。
要学习MySQL 的话,推荐看下边这套
www.bilibili.com/video/BV1fx411X7BD
B站上很经典的视频教程,好评如潮,涵盖MySQL的全部知识点了
这一套组合拳打下来,找一份实习工作我认为是完全没问题了。
这也是一个 Java 后端程序员必须掌握的技能点,缺一不可!
五、web前端
虽然是作为Java后端开发Coder,但是面对一个完整的项目,与前端有着不可或缺的关系。
简单的前端知识我们还是需要了解的。
还有就是,也不是所有的公司都是区分前后端的,全栈工程师显然更厉害。
前端基础技术(HTML/CSS/JavaScript)
HTML:
www.bilibili.com/video/BV11t411K74Q
CSS:
www.bilibili.com/video/BV1tt411M7Vj
JavaScript:
www.bilibili.com/video/BV1Ft411N7R3
另外推荐一些你会遇到的知识学习教程
Linux基础知识(用于做web服务器)
www.bilibili.com/video/BV1Li4y1V7pG
Vue.js(最容易上手的前端框架)
www.bilibili.com/video/BV1q54y1v7T7
六、JavaWeb
Web阶段过后,就是JavaWeb了。
推荐这两套视频,不同版本的,直接跟着视频学
JavaWeb【IDEA版本】
www.bilibili.com/video/BV1Yz411B7Pk
JavaWeb【Eclipse经典版】
www.bilibili.com/video/BV18z411i7g
七、框架
要找到一份 Java 实习工作的话,Spring 的系列框架是要懂一些,不要求多熟练,如果可以掌握一个框架,尤其是 Spring Boot,那对你也有帮助。因为如果你不会这玩意的话,基本上是做不了项目的。
- 主要涉及的内容有:
- Spring
- Spring MVC
- MyBatis
- Spring Boot
关于 SSM(Spring+Spring MVC+MyBatis)的学习,可以看下面这个视频。
www.bilibili.com/video/BV1Ug4y1i7W7
关于 Spring Boot 的学习,可以看下边这个视频
www.bilibili.com/video/BV1pK411G7aw
学了 SSM + Spring Boot,就可以上手实战项目了,像 GitHub 上的 vhr 和 mall,都是不错的练手项目,强烈推荐。
八、互联网分布式技术
这时候你的水平还是仅仅存留在对框架的简单运用上,要想进一步学习,还要找一些框架的源码,进行深入了解。
除此之外还有这个时候的你应该对设计模式了如指掌,还需要看一些关于代码编写优化的书,提高自己的代码能力。
可以学习分布式架构、微服务等提升自己的技术。
随着我们的业务量越来越大和越重要,单体的架构模式已经无法对应大规模的应用场景,而且系统中决不能存在单点故障导致整体不可用,所以只有垂直或是水平拆分业务系统,使其形成一个分布式的架构,利用分布式架构来冗余系统消除单点的故障,从而提高整个系统的可用性。
同时分布式系统的模块重用度更高,速度更快,扩展性更高是大型的项目必不可少的环节。
而微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。
既然已经踏入互联网圈子,成为程序员中的一员,就要秉持“一直学习”的观念,经常更新自己的技术库,对于专业的java程序员来说真的不夸张!
推荐视频:
Dubbo视频教程:https://www.bilibili.com/video/BV1Sk4y197eD
Redis视频教程:https://www.bilibili.com/video/BV14t411H76W
Maven多模块管理:https://www.bilibili.com/video/BV1kg4y187td
Linux视频教程:https://www.bilibili.com/video/BV1dt411W7N1
SpringCloud视频教程:https://www.bilibili.com/video/BV1ZV411y7ix
SpringCloud Alibaba视频教程:https://www.bilibili.com/video/BV1nK4y1j7gL
Nginx视频教程:https://www.bilibili.com/video/BV11V411C7r9
Spring Session视频教程:https://www.bilibili.com/video/BV1iK411p7dZ
FastDFS视频教程:https://www.bilibili.com/video/BV1ta4y1v7Kw
RabbitMQ视频教程:https://www.bilibili.com/video/BV1Ap4y1D7tU
MyCat视频教程:https://www.bilibili.com/video/BV1gK4y1b7iU
Docker视频教程:https://www.bilibili.com/video/BV1QA411L7B5
Kubernetes(k8s)视频教程:https://www.bilibili.com/video/BV1KU4y147g3
MySQL集群视频教程:https://www.bilibili.com/video/BV1Rg4y1i7VR
SVN视频教程:https://www.bilibili.com/video/BV1ux411j7H2
Apache Shiro视频教程:https://www.bilibili.com/video/BV14T4y1g75M
大型互联网电商项目:https://www.bilibili.com/video/BV1RQ4y1K7Pq
总之,先把主要知识点掌握彻底掌握,慢一点是正常的,求快得不偿失,等把底层基础知识打牢,在学东西的时候就会快很多,以后完全可以多找项目练手,学习效率嗖嗖的,有时候慢就是快。