天天看点

小码哥【Java从0到架构师】wangpan学习记录

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 核心原理剖析和基本应用

需要看名字联系我