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