Java 从 0 到 架构师
第一阶段:Java 基础语法
第二阶段:JavaEE 基石
基本概念 + 环境搭建
Servlet_JSP
MySQL 基础 + 多表查询
JDBC、Spring JDBC、JUnit
JS_jQuery_BootStrap
Maven
会话跟踪 Cookie_Session
Filter_Listener_AJAX
第二阶段项目实战 - 个人简历项目
第三阶段:进阶互联网架构师
MyBatis - 查询
MyBatis - 增删改、动态SQL
MyBatis - 连接池、分页_PageHelper
MyBatis - 多表查询_延迟加载
MyBatis - 缓存_构造方法
MyBatis - dao
Spring - IoC 控制反转、DI 依赖注入
Spring - 复杂对象、Converter
Spring - 整合 MyBatis
Spring - 生命周期、代理
Spring - AOP
Spring - 事务管理
Spring - 注解
SpringMVC - 基础
SpringMVC - 返回值
SpringMVC - 特殊的请求参数
SpringMVC - 异常处理_拦截器
SpringMVC - RESTful
SSM 整合(XML、纯注解)
Maven - 依赖冲突、分模块构建项目
SpringBoot - 入门_配置文件_YAML
SpringBoot - 页面模版_Thymeleaf
SpringBoot - MyBatis
日志处理 - Log4j 1.x
日志处理 - SLF4J、Logback、Log4j 2.x
日志处理 - 复杂的日志系统、SpringBoot 集成日志框架
SpringBoot - SpringMVC
项目实战 - 驾考(旧)- Freemarker、MyBatis-Plus
项目实战 - 前后端分离、后端校验、Swagger
第四阶段:高级互联网架构师
工具
git
争取9月开学前学完这门课!!!!冲啊!!!
第一阶段:Java 基础语法
学习视频:Java从0到架构师①零基础高效率入门
面向对象基础、Java程序的内存划分、嵌套类(内部类、静态嵌套类)、局部类、接口的升级问题(默认方法、静态方法)、instanceof
匿名类(代码传递、回调、过滤器)、Lambda表达式(方法引用)、函数式接口(Supplier、Consumer、Predicate、Function)
字符串(String、StringBuilder),日期(Date、日期SimpleDateFormat、Calendar)
单字符匹配、预定字符、量词、Matcher(贪婪、勉强、独占模式)、捕获组、边界匹配符、String类与正则表达式
异常、try-catch、finally、异常的种类、throws、thorw、自定义异常、断言类
枚举、包装类、Math、Radnom、UUID、格式化、DecimalFormat、高精度计算(BigDecimal)
泛型(泛型类型、原始类型、泛型方法)、通配符(上界、下界、无限制、继承)
ArrayList、LinkedList、Stack、Queue、Set、Map, 迭代器 Iterable、Iterator,Collections类
File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-with-resources语句
多线程、线程同步、死锁、线程间通信(生产者消费者模型)、可重入锁、线程池
计算机网络体系结构(OIS参考模型、TCP/IP体系、网络通信标准化组织)及 Java网络编程
第二阶段:JavaEE 基石
学习视频:Java从0到架构师②JavaEE技术基石
Gitee 代码:https://gitee.com/szluyu99/mj_java/tree/master
基本概念 + 环境搭建
【Java从0到架构师】基本概念 + 环境搭建
基本概念
网页基础知识、基本HTML标签
Apache Tomcat
环境搭建
启动和关闭 Tomcat
Tomcat 乱码问题
Idea 关联 Tomcat 源码
Idea 左侧显示多个项目
新建 Web 项目
Servlet_JSP
【Java从0到架构师】Servlet_JSP
Servlet
乱码问题
Servlet 的细节
Servlet 处理请求的常见过程
Servlet 生命周期
loadOnStartup
ServletContext
JSP
EL表达式、JSTL标签库
JSP 处理请求的常见过程
Servlet + JSP
Servlet + JSP 处理请求的常见过程
转发 (forward)
转发链条
重定向 (redirect)
转发 vs 重定向
JSP 九大内置对象
MySQL 基础 + 多表查询
【Java从0到架构师】MySQL 基础
MySQL
MySQL 的使用步骤
数据库的内部存储细节
GUI 工具
SQL 语句
DDL 语句
DDL 语句 - 数据库
DDL 语句 - 表
常用数据类型 - 数字类型
常用数据类型 - 字符串类型
常用类型 - 日期和时间类型
TRUNCATE
表的复制
列的常用属性
DML 语句
DQL 语句
聚合函数 (Aggregate Function)
常见的 WHERE 字句
UNIQUE 索引
主键 (PRIMARY KEY)
外键 (FOREIGN KEY)
级联 (CASCADE)
【Java从0到架构师】SQL 多表查询
多表查询
多表查询核心概念
多表查询 SQL 示例
INNER JOIN
LEFT JOIN
LEFT JOIN EXCLUDING INNER JOIN
RIGHT JOIN
RIGHT JOIN EXCLUDING INNER JOIN
FULL OUTER JOIN
FULL OUTER JOIN EXCLUDING INNER JOIN
更多的表
排序、分页
子查询
JDBC、Spring JDBC、JUnit
【Java从0到架构师】JDBC、Spring JDBC、JUnit
下载 MySQL 的 JDBC 实现(jar,驱动包)
JDBC 使用
Statement 的常用 API
ResultSet 的常用 API
PreparedStatement
配置文件
数据库连接池
Spring JDBC
JUnit
常用注解
断言类 Assert 的常用方法
JS_jQuery_BootStrap
【Java从0到架构师】JS_jQuery_BootStrap
JavaScript
script 标签
基础语法
数据类型
字符串的遍历
数组的遍历
对象的遍历
常用 API 参考
函数
DOM 操作
jQuery
基于 jQuery 的各种插件
BootStrap
Maven
【Java从0到架构师】Maven
Tomcat 部署项目的方式
传统项目 vs Maven 项目
Maven
Maven 项目的常见目录
pom.xml
构建生命周期
default 生命周期
常用命令
dependency 中 scope 的取值
Maven 常见操作
初始化配置:环境变量、仓库位置、配置镜像
修改 Maven 的 JDK 版本
命令行新建 Maven 项目
IDEA 导入 Maven 项目
IDEA 新建 Maven 项目(Web 项目)
生成 Runnable Jar
安装本地 jar 到 Maven 的 LocalRepository
Maven 常见问题解决
文件编码的警告:Using platform encoding
控制台输出乱码
会话跟踪 Cookie_Session
【Java从0到架构师】会话跟踪 Cookie_Session
Cookie
Cookie 的有效期 - expires、max-age
Cookie 的作用域 - domain、path
服务器设置 Cookie
Session
Tomcat 中 getSession 的内部原理
Session 的有效期
Cookie Session 总结
Filter_Listener_AJAX
【Java从0到架构师】Filter_Listener_AJAX
过滤器 - Filter
Filter 中的生命周期方法
Filter - dispatcherTypes
Filter 示例
监听器 - Listener
Listener 示例
AJAX
原生 AJAX 示例
jQuery AJAX 示例
jQuery - getJSON
第二阶段项目实战 - 个人简历项目
【Java从0到架构师】个人简历项目实战
功能性
登陆流程
验证码
JavaWeb
Service、Dao 方法名规范
form 文件上传 - 前端、后台、实时预览
页面可见性
Service 层
面向接口编程
后端技巧
利用 Jackson 将 Java 对象转成 Json 字符串
利用反射获取泛型的类型
前端技巧
利用 reset 清空 form 表单
图片的 MIMEType
验证码功能发送不同的参数防止缓存
登陆/修改密码功能,利用隐藏域发送加密后的密码
第三阶段:进阶互联网架构师
学习视频:Java从0到架构师③进阶互联网架构师
在学习各种框架的时候,首先要牢牢掌握 XML 的使用方式,因为注解都是基于 XML 的
Gitee 代码:https://gitee.com/szluyu99/mj_java_frame/tree/master
企业流行框架:
SSM (Spring、SpringMVC、Mybatis)
Apache Shiro
SpringBoot
MyBatis - 查询
【Java从0到架构师】MyBatis - 查询
数据库事务 (Database Transaction)
MyBatis 使用准备
依赖
配置文件
创建 Session
MyBatis 查询
实体映射
字段映射 - resultMap
传参 - 单个参数
传参 - 多个参数
打印 SQL 语句
多表关联查询 - resultType
MyBatis - 增删改、动态SQL
【Java从0到架构师】MyBatis - 增删改、动态 SQL
动态 SQL
if 标签
where 标签
sql 标签
foreach 标签
typeAliases 标签
添加
主键设置
批量添加 - 利用 foreach 标签
更新
删除
批量删除 - 利用 foreach 标签
MyBatis - 连接池、分页_PageHelper
【Java从0到架构师】MyBatis - 连接池、分页_PageHelper
集成 druid 连接池
读取外部的配置文件
分页查询 - PageHelper
PageHelper 环境配置
PageHelper 使用方法
MyBatis - 多表查询_延迟加载
【Java从0到架构师】MyBatis - 多表查询_延迟加载
多表关系
一对一
association 标签 + JOIN 实现一对一
一对多 \ 多对一
collection 标签 + LEFT JOIN 实现一对多
多对多
多对多的本质:双方都是一对多的关系
延迟加载
全局延迟加载开关
延迟加载示例
MyBatis - 缓存_构造方法
【Java从0到架构师】MyBatis - 缓存_构造方法
缓存
一级缓存 - SqlSession
二级缓存
开启二级缓存
useCache - 是否开启二级缓存
lushCache - 是否需要清楚缓存
指定构造方法
XML 中指定构造方法
注解指定构造方法
MyBatis - dao
【Java从0到架构师】MyBatis - dao
使用 MyBatis 实现 dao 层的几种方式
自定义实现类,XML 实现 dao 层
只定义接口类,getMapper + XML 实现 dao 层
只定义接口类,getMapper + 注解实现 dao 层
@Select、@Insert、@Update、@Delete、@SelectKey
@Param、@Options、@CacheNamespace
@Results、@ResultMap、@One、@Many
@ConstructorArgs、@Arg
script
Spring - IoC 控制反转、DI 依赖注入
【Java从0到架构师】Spring - IoC 控制反转、DI 依赖注入
Spring 简介
Spring 基本使用 - IoC 容器
依赖注入 (Dependency Injection)
基于 setter 的注入 - 自定义对象 bean
基于 setter 的注入 - 基本类型、String、BigDecimal
基于 setter 的注入 - 数组、集合类型
基于 setter 的注入 - properties
基于 constructor 的注入 - 基本类型、String、BigDecimal
基于 constructor 的注入 - 自定义对象 bean
基于 constructor 的注入 - 集合类型
Spring - 复杂对象、Converter
【Java从0到架构师】Spring - 复杂对象、Converter
创建过程比较复杂的对象
实例工厂
静态工厂
FactroyBean
引入外部配置文件
SpEL表达式
scope - 控制 bean 是否单例
Converter
Spring 内置基本的类型转换功能
自定义 Converter
Spring - 整合 MyBatis
【Java从0到架构师】Spring - 整合 MyBatis
整合 MyBatis - 依赖
整合 MyBatis - 数据源
整合 MyBatis - SqlSessionFactoryBean
整合 MyBatis - MapperScannerConfigurer
完整配置文件
Spring - 生命周期、代理
【Java从0到架构师】Spring - 生命周期、代理
bean 的生命周期
代理
业务层的一些问题
静态代理 (Static Proxy)
动态代理 (Dynamic Proxy)
JDK 动态代理 - Proxy.newProxyInstance
CGLib 动态代理 - Enhancer、MethodInterceptor
Spring - AOP
【Java从0到架构师】Spring - AOP
AOP 编程使用
AOP - MethodBeforeAdvice
AOP - MethodInterceptor
AOP - 动态代理的底层实现
AOP - 切入点表达式
AOP - 目标方法相互调用的细节
AOP - 配置多个 pointcut、advisor
Spring - 事务管理
【Java从0到架构师】Spring - 事务管理
声明式事务
propagation - 设置事务传播行为
read-only - 告诉数据库该事务只读
timeout - 超时抛出异常
rollback-for、no-rollback-for - 异常回滚
isolation - 设置事务的隔离级别
Spring - 注解
【Java从0到架构师】Spring - 注解
读取多个配置文件
注解实现 bean 标签 - @Component、@Component-scan
注解实现注入 - @Autowired、@Value、@PropertySource
注解实现 AOP
复用切入点 - @Pointcut
注解实现事务管理
@Configuration、@Bean
@Bean 方法的注入 - bean
@Bean 方法的注入 - FactoryBean
@Bean 方法的注入 - 其他类型
创建工厂的入口
bean 的创建方式总结
SpringMVC - 基础
【Java从0到架构师】SpringMVC - 基础
SpringMVC - 入门
web.xml 配置 DispatcherServlet
appliactionContext.xml
新建 Controller
SpringMVC - 基础
请求参数 - @RequestParam
请求路径变量 - @PathVariable
利用反射获取参数名
乱码处理 - GET、POST 请求参数乱码
乱码处理 - 响应数据乱码
Servlet 的 url 匹配 - 3 种
Tomcat 中默认的 Servlet
静态资源被拦截的解决方案 - 2种
SpringMVC - 返回值
【Java从0到架构师】SpringMVC - 返回值
controller 中的返回值
无返回值 - 使用原始的 Servlet 的方法
普通文本、HTML - 设置响应头 Content-Type
XML - 推荐使用 jaxb
JSON - 框架中已经集成 jackson
jsp 相关
转发 - ModelAndView、String
路径问题总结(Java、Html)
重定向 - “redirect:”
mvc:view-controller - 配置请求路径和 viewName
InternalResourceViewResolver - 设置视图的公共前缀、后缀
忽略 InternalResourceViewResolver
自定义 InternalResourceViewResolver
@ResponseStatus - 设置响应码
SpringMVC - 特殊的请求参数
SpringMVC - 特殊的请求参数
集合类型 - Map、List、Set、String[]
Multipart 参数 - multipartResolver
文件参数 - MultipartFile
多文件参数 - MultipartFile[]、List<>
CommonsMultipartResolver 的常用属性
日期类型
@DateTimeFormat
Converter
SpringMVC - 异常处理_拦截器
【Java从0到架构师】SpringMVC - 异常处理_拦截器
异常处理
简单的异常与页面映射 - SimpleMappingExceptionResolver
√自定义异常处理类 - 实现 HandlerExceptionResolver 接口
@ExceptionHandler
√@ExceptionHandler + @ControllerAdvice
拦截器 (Interceptor)
实现 HandlerInterceptor 接口
配置拦截器
方法解析 preHandle、postHadnle、afterCompletion
SpringMVC 的执行流程 - 源码跟踪
doDispatch 核心流程
SpringMVC - RESTful
【Java从0到架构师】SpringMVC - RESTful
RESTful 风格的实践建议
关于 put、delete
@RestController
SSM 整合(XML、纯注解)
【Java从0到架构师】SSM 整合(XML、纯注解)
父子容器
父子容器的配置文件建议
子容器的加载创建
父容器的加载创建
MyBatis 补充
mybatis-config.xml
Maven 补充
SSM 整合 - 纯注解
Initializer 取代 web.xml
SpringConfig
SpringMVCConfig
Interceptor - 添加拦截器
ViewResolver - 添加视图解析器
MultipartResolver - 添加 multipart 参数解析
Converter - 类型转换器
MessageConverters - 解决编码问题
DefaultServletHandler
Maven - 依赖冲突、分模块构建项目
【Java从0到架构师】Maven - 依赖冲突、分模块构建项目
依赖冲突
解决方案 - dependencyManagement
自定义属性
分模块构建项目
继承 - parent
聚合 - modules
依赖 - dependency
各模块的分工 - 以层来划分
父模块:全局定义
dao 模块:定义 dao 类、Model 类等
service 模块:定义 service 类等
web 模块:定义 controller 类等
optional
SpringBoot - 入门_配置文件_YAML
【Java从0到架构师】SpringBoot - 入门_配置文件_YAML
SpringBoot - 入门
@SpringBootApplication
可运行 jar - spring-boot-maven-plugin
热部署 - devtools
配置文件 - application
运行参数、VM 选项
配置文件的内容
YAML
提高开发效率的依赖
属性绑定 - @ConfigurationProperties]
构造方法绑定 - @ConstructorBinding
宽松绑定 (Relaxed Binding) - 概念
拆分配置文件
banner
SpringBoot - 页面模版_Thymeleaf
【Java从0到架构师】SpringBoot - 页面模版_Thymeleaf
集成 JSP
集成 Thymeleaf
Thymeleaf 基本语法
注释 - 3 种
字面量 - ${}、[[ ${} ]]
局部变量 - th:with、三目运算
选中变量表达式 - *{}
消息表达式 - #{}
链接表达式 - @{}
条件判断 - th:if、th:unless、th:switch
遍历 - th:each
block - th:block
属性设置 - th:attr
内置对象
视图映射 - WebMvcConfigurer
SpringBoot - MyBatis
【Java从0到架构师】SpringBoot - MyBatis
集成 MyBatis
引入依赖
数据源配置 - 源码
MyBatis 配置 - 源码
扫描 Dao
MyBatis 主配置 - XML、注解、application
XML配置
注解
application
starter 的命名规范
日志处理 - Log4j 1.x
【Java从0到架构师】日志处理 - Log4j 1.x
Java 日志处理的发展史
Log4j 1.x
日志级别 - 6种
pattern - 输出格式
Log4j 1.x - properties
子Logger
Appender - 控制日志的输出目标
ConsoleAppender - 将日志输出到控制台
FileAppender - 将日志输出到文件(单个)
RollingFileAppender - 将日志输出到文件(滚动)
DailyRollingFileAppender - 根据日期格式将日志输出到文件(滚动)
Log4j 1.x - XML
Filter - 让 Appender 在 Logger 的基础上过滤日志信息
日志处理 - SLF4J、Logback、Log4j 2.x
【Java从0到架构师】日志处理 - SLF4J、Logback、Log4j 2.x
SLF4J + Log4j 1.x
SLF4J + Logback
Logback - 配置文件
Logback - 控制台彩色打印
Logback - configuration
Logback - Appender 控制日志输出位置
Logback - Filter 在 Logger 基础上过滤日志输出信息
Logback - AsyncAppender 将写日志变为异步操作
Log4j 2.x
Log4j 2.x - 配置文件
Log4j 2.x - 控制台彩色打印
Log4j 2.x - Filter
Log4j 2.x - Appender
滚动策略 - Delete
Log4j 2.x - Loggers
Log4j 2.x - Async
SLF4J + Log4j 2.x
日志处理 - 复杂的日志系统、SpringBoot 集成日志框架
【Java从0到架构师】交错的日志系统、SpringBoot 集成日志框架
交错复杂的日志系统① - 多个项目实现 SLF4J 门面
交错复杂的日志系统② - 统一底层实现为 Logback
交错复杂的日志系统③ - 统一底层实现为 Log4j 2.x
解决方案1
解决方案2
日志依赖总结
SpringBoot 集成日志框架
SpringBoot 集成 Logback
SpringBoot 集成 Log4j 2.x
SpringBoot 的 logging 配置 (application)
SpringBoot - SpringMVC
【Java从0到架构师】SpringBoot - SpringMVC
SpringMVC 的配置
文件上传功能
文件下载 - 以附件形式下载
静态资源访问
静态资源访问 - 映射
静态资源访问 - webjars
项目实战 - 驾考(旧)- Freemarker、MyBatis-Plus
【Java从0到架构师】项目实战 - 驾考(旧)- Freemarker、MyBatis-Plus
项目实战 - 前后端分离、后端校验、Swagger
【Java从0到架构师】项目实战 - 前后端分离、后端校验、Swagger
第四阶段:高级互联网架构师
工具
git
【Java从0到架构师】git 核心原理剖析和基本应用
需要看名字联系我