Java基础
**学习建议:**从个人学习的角度而言,在这个阶段不要一开始就抓细节,最好是学习两遍:
第一遍 在Java刚入门时,最重要的工作就是熟悉Java的语法结构、命名方式、常用库等,形成对整个Java语言的一种感觉;
第二遍 再次学习一遍教程,在这个过程最好可以在IDEA中进行代码的编写和运行,进行诸如Debug之类的操作,从而对Java语法进一步熟悉。
学习教程:
廖老师的Java课程很全,在初学阶段学习只需要关注以下几个章节:Java快速入门、面向对象编程、集合、IO。
备注:我个人初学编程语言时不太喜欢看视频,有这方面爱好的初学者可以考虑搜索狂神系列,看过几节视频,挺不错的。
查漏补缺:
String、StringBuilder、StringBuffer的区别
——这三者需要仔细辨析,并在使用的时候选择合适的对象。
——在Java中,数组和列表是不同的。
Java进阶
**学习建议:**在度过了基础阶段之后,要做的事情就是不断加深对Java知识的理解和补充,这个时候不要局限于某一个固定的教程,而要多去搜索一些相关的博客去看、去理解,看到好的文章要收藏并总结。
在这个阶段主要学习Java的反射、注解、泛型、多线程、Maven、异常、集合框架等,另外还要注意语法格式。
学习资料:
编码规范
——讲解了在Java项目开发中需要注意的命名格式、编码规约等。
反射
——这篇文章从Java反射使用的角度来讲解,适合入门。
——正如题所言,这篇文章更注重讲解反射机制的原理,即“反射”这个机制,底层到底是通过什么函数实现的?
注解
——能够写自定义注解,那就说明对注解这个概念已经理解的十分透彻了,并且能够实现它。
——当时笔者所写的一份总结性文章,适合进行查阅。
——这篇文章主要是从面试的角度来讲解Java注解。
泛型
——从为什么需要泛型入手,讲解了泛型使用的各种情况,并举例说明。
——建议学习了之前的泛型教程,再看这个,算是一个总结和补充。
多线程
——这一篇文章足够了,Java多线程由Runable接口和Thread类(其实也是实现了Runable接口)实现,讲解相应的多线程知识。
异常
——异常是什么?就是阻止程序继续运行的bug!当遇到异常时,系统会生成异常对象,通知程序进行处理。注意区分它和error的区别。
集合框架
——先简要了解Java集合框架的大致情况
——Java集合框架的根接口是collection和map,由此衍生出四种集合:list、set、queue、map。学习集合框架的重点是结合java.util源码,理清其中的继承、实现关系。
——结合源码去理清各个集合类的关系。
——hashmap的底层其实就是数组加链表,有一点值得注意的是,在hashmap中判断同一个键值是根据hashcode来的,所以只是重载equals是不可取的。
JVM相关
Class文件结构
——从一个实际的二进制文件入手,讲解Class文件的构成和组成部分。
类加载过程
——Java类加载过程分为五个阶段:加载、验证、准备、解析、初始化,着重各个阶段所进行的工作。
GC垃圾回收原理、策略
——垃圾回收主要有两种算法:引用计数算法、可达性分析算法,同时介绍了常用的垃圾收集算法。
——JVM性能调优的原理是对GC回收各区域的大小进行相应的调整(不同的程序对于GC各区域的使用情况各不相同,JVM调优就是据此进行定制性优化)。
Java8新特性
Stream
——Java8新特性其中一个就是Stream,是函数式编程的实现,可以进行流式数据操作。
Lambda
——Lambda表达式,又称为闭包,可以使代码更加简洁紧凑
Optional类
——Optional类是Java8函数式编程的组件。
方法引用
——方法引用跟C++的域名空间有几分类似,可以通过类名::方法来直接定位某个方法。
单元测试
——单元测试是项目开发阶段必备的阶段,良好的单元测试可以提高代码的可用性,提高软件开发效率。
——java最常用的两个测试框架就是Junit和Mockito。
系统设计
设计模式
**前言:**设计模式是在面向对象领域总结成的系统架构、代码编写的经验,是必备的专业素养。
教程:
《大话设计模式》书籍
或总结的笔记:大话设计模式新讲
系统设计理念
——从基础的系统设计原则入手,一步一步讲解系统设计的方法和注意事项,如CAP理论、CDN、分片分库等。
Spring相关
——这个是对Spring和SpringBoot最粗略的介绍,方便新手对其形成一个基本概念。
——通过这些面试问题,可以进一步回顾相应的知识点,补充其细节。
常用中间件
Kafka
——kafka是Java常用的消息中间件。
Web开发
**前言:**现在常用的Web开发有两种主流方式:MVC与前后端分离。
不管是MVC还是前后端分离,其核心理念就是前后端各自负责自己擅长的东西。
教程:
——廖老师的Web开发教程是学习依以来见过讲的最清楚最透彻的,并附有全套的代码。
不错的项目
——基于SpringBoot的在线商城系统,可以直接在本地运行,具有很高的学习价值。
(未完待续)