Java基础
学习建议:从个人学习的角度而言,在这个阶段不要一开始就抓细节,最好是学习两遍:
第一遍 在Java刚入门时,最重要的工作就是熟悉Java的语法结构、命名方式、常用库等,形成对整个Java语言的一种感觉;
第二遍 再次学习一遍教程,在这个过程最好可以在IDEA中进行代码的编写和运行,进行诸如Debug之类的操作,从而对Java语法进一步熟悉。
学习教程
廖雪峰的官方网站
廖老师的Java课程很全,在初学阶段学习只需要关注以下几个章节:Java快速入门、面向对象编程、集合、IO。
Java基础
——理解Java基本数据类型、类型转换、抽象、注解等基本知识。
备注:我个人初学编程语言时不太喜欢看视频,有这方面爱好的初学者可以考虑搜索狂神系列,看过几节视频,挺不错的。
查漏补缺
String、StringBuilder、StringBuffer的区别
——这三者需要仔细辨析,并在使用的时候选择合适的对象。
数组和列表的区别
——在Java中,数组和列表是不同的。
BigDecimal无精度损失
——bigDecimal可以无精度损失的表示一个浮点数,在比较大小时要注意位数必须相等。
ConcurrentHashMap
——注意jdk1.7和1.8的优化,及其优化的原因。
Java琐事
——这篇文章将锁机制讲的很清楚。
Java进阶
学习建议:在度过了基础阶段之后,要做的事情就是不断加深对Java知识的理解和补充,这个时候不要局限于某一个固定的教程,而要多去搜索一些相关的博客去看、去理解,看到好的文章要收藏并总结。
在这个阶段主要学习Java的反射、注解、泛型、多线程、Maven、异常、集合框架等,另外还要注意语法格式。
编码规范
阿里Java开发手册
——讲解了在Java项目开发中需要注意的命名格式、编码规约等。
反射
反射的最直观理解
——反射主要由java.lang.reflcet提供。
面试中常问的Java反射机制
——这篇文章从Java反射使用的角度来讲解,适合入门。
Java反射机制入门、使用、原理
——正如题所言,这篇文章更注重讲解反射机制的原理,即“反射”这个机制,底层到底是通过什么函数实现的?
注解
如何写自定义注解
——能够写自定义注解,那就说明对注解这个概念已经理解的十分透彻了,并且能够实现它。
一文搞懂Java注解
——当时笔者所写的一份总结性文章,适合进行查阅。
对线面试官
——这篇文章主要是从面试的角度来讲解Java注解。
泛型
Java泛型详解
——从为什么需要泛型入手,讲解了泛型使用的各种情况,并举例说明。
关于泛型的补充
——建议学习了之前的泛型教程,再看这个,算是一个总结和补充。
多线程
Java多线程学习
——这一篇文章足够了,Java多线程由Runable接口和Thread类(其实也是实现了Runable接口)实现,讲解相应的多线程知识。
异常
深入理解Java异常
——异常是什么?就是阻止程序继续运行的bug!当遇到异常时,系统会生成异常对象,通知程序进行处理。注意区分它和error的区别。
集合框架
Java集合框架简述
——先简要了解Java集合框架的大致情况
Java集合框架综述
——Java集合框架的根接口是collection和map,由此衍生出四种集合:list、set、queue、map。学习集合框架的重点是结合java.util源码,理清其中的继承、实现关系。
java.util源码
——结合源码去理清各个集合类的关系。
hashmap底层原理
——hashmap的底层其实就是数组加链表,有一点值得注意的是,在hashmap中判断同一个键值是根据hashcode来的,所以只是重载equals是不可取的。
JVM相关
为什么需要JVM?
JMM内存模型正是对多线程操作下的一系列规范约束,因为不可能让程序员的代码去兼容所有的CPU,通过JMM我们才屏蔽了不同硬件和操作系统内存的访问差异,这样保证了Java程序在不同的平台下达到一致的内存访问效果,同时也是保证在高效并发的时候程序能够正确执行。——主要是因为各个硬件和CPU的差异。
JVM锁机制
几把JVM级锁
——Java的一些锁机制是由JVM提供的。
Class文件结构
JVM值Class文件结构
——从一个实际的二进制文件入手,讲解Class文件的构成和组成部分。
类加载过程
JVM类加载的五个过程
——Java类加载过程分为五个阶段:加载、验证、准备、解析、初始化,着重各个阶段所进行的工作。
GC垃圾回收原理、策略
JVM垃圾回收机制总结
——垃圾回收主要有两种算法:引用计数算法、可达性分析算法,同时介绍了常用的垃圾收集算法。
JVM性能调优
——JVM性能调优的原理是对GC回收各区域的大小进行相应的调整(不同的程序对于GC各区域的使用情况各不相同,JVM调优就是据此进行定制性优化)。
Java8新特性
Stream
Java 8 Stream教程
——Java8新特性其中一个就是Stream,是函数式编程的实现,可以进行流式数据操作。
Lambda
Lambda表达式
——Lambda表达式,又称为闭包,可以使代码更加简洁紧凑
Optional类
Optional类
——Optional类是Java8函数式编程的组件。
方法引用
方法引用
——方法引用跟C++的域名空间有几分类似,可以通过类名::方法来直接定位某个方法。
单元测试
单元测试最佳实践
——单元测试是项目开发阶段必备的阶段,良好的单元测试可以提高代码的可用性,提高软件开发效率。
单元测试框架:Junit、Mockito
——java最常用的两个测试框架就是Junit和Mockito。
系统设计
设计模式
前言:设计模式是在面向对象领域总结成的系统架构、代码编写的经验,是必备的专业素养。
教程:
《大话设计模式》书籍
或总结的笔记:大话设计模式新讲
系统设计理念
系统设计入门
——从基础的系统设计原则入手,一步一步讲解系统设计的方法和注意事项,如CAP理论、CDN、分片分库等。
Spring相关
Spring简介
[什么是Spring?](https://www.e-learn.cn/topic/3369373)<br />——这个是对Spring和SpringBoot最粗略的介绍,方便新手对其形成一个基本概念。
Spring教程
Spring实战(v5)
——Spring的入门书籍;
Spring上下文与容器
Spring上下文关系
——这个博客对于理解Spring的IOC以及容器、上下文等概念,有极其重要的帮助。
Spring自动装配的底层实现
——想了解Spring自动装配、注解装配、XML等知识的就直接看这个。这篇博客里还讲解了与自动装配相关的注解等知识。
Spring答疑
Spring常见面试题
——通过这些面试问题,可以进一步回顾相应的知识点,补充其细节。
Spring MVC
SpringMVC如何并发处理请求
——Spring MVC是基于Servlet的,之所以能够并发的处理请求,是因为在Servlet容器(如Tomcat)中维护了一个线程池,每来一个新的请求就会维护一个新的线程。同时还要注意在Controller中存在的多线程冲突的问题。
常用中间件
Kafka
Kafka底层原理分析
——kafka是Java常用的消息中间件。
Netty
Netty讲解
Netty基本知识
——严格来说Netty并不是一个中间件,而是一个基于NIO的RPC框架(异步任务事件驱动的网络应用程序框架),写在这主要是为了快速跳转。关于NIO可以提前补一些基础知识。
Mybatis
Mybatis基础教程
——Mybatis是一个Java常用的持久层框架,是对JDBC的封装。
Hibernate
Hibernate一文
——这是另外一个持久层框架,跟Mybatis的区别在于,它屏蔽了了底层数据库的差异,因此开发者不需要在配置文件中编写Sql语句就可以实现数据的插入。
Web开发
前言:现在常用的Web开发有两种主流方式:MVC与前后端分离。
不管是MVC还是前后端分离,其核心理念就是前后端各自负责自己擅长的东西。
教程:
MVC框架
Web从手写框架到SpringMVC
——廖老师的Web开发教程是学习依以来见过讲的最清楚最透彻的,并附有全套的代码。
Servlet容器
Servlet、Servlet容器
——重点在于理解Servlet与Servlet容器,如Tomcat这些概念的区别和联系;
不错的项目
新峰商城项目
——基于SpringBoot的在线商城系统,可以直接在本地运行,具有很高的学习价值。
总结文档
Java面试八股文
——可以进行一些知识的复习和拓展。
(未完待续)