Appearance
java
JavaSE
语言核心,基于标准JDK的开发都是JavaSE,即Java Platform Standard Edition
JavaEE
JavaEE并不是一个软件产品,它更多的是一种软件架构和设计思想。我们可以把JavaEE看作是在JavaSE的基础上,开发的一系列基于服务器的组件、API标准和通用架构。
JavaEE最核心的组件就是基于Servlet标准的Web服务器,开发者编写的应用程序是基于Servlet API并运行在Web服务器内部的:
目前流行的,使用最广泛的是Servlet和JMS,以及一系列开源组件。
语言之美

基础语法

- 变量、常量、函数、包
- 数组、数组列表
- 指针、类、方法
- 接口
- 线程、Routine
- 错误处理
数据类型
集合
java.util
- List
- ArrayList
- LinkedList
- Queue
- Vector 线程安全
- Set
- Map
- HashTable 线程安全
流程控制
运算符
其他
日期和时间
高级语法
注解
注解是干嘛的?
什么是注解(Annotation)?注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”:
java
@Resource("hello")
public class Hello {
@Inject
int n;
@PostConstruct
public void hello(@Param String name) {
System.out.println(name);
}
@Override
public String toString() {
return "Hello";
}
}使用@interface语法来定义注解(Annotation)
有一些注解可以修饰其他注解,这些注解就称为元注解(meta annotation)
泛型
反射
进阶
文件读写
JSON 序列化和反序列化
并发
进程和线程的关系就是:一个进程可以包含一个或多个线程,但至少会有一个线程。

Java 多线程
Java语言内置了多线程支持:一个Java程序实际上是一个JVM进程,JVM进程用一个主线程来执行
main()方法,在main()方法内部,我们又可以启动多个线程。此外,JVM还有负责垃圾回收的其他工作线程等。
线程的状态

线程同步,synchronized,加锁
- 线程安全
网络
TCP
UDP
HTTP
RPC
错误处理
抛出异常
处理异常
自定义异常
数据库 JDBC
- 查询
- 更新
- 事务
- 连接池
日志

- Log4j
OO

面向对象基础
- 继承
- 多态
- 抽象
- 接口
- 静态
- 包 package
Java 核心类
日期和时间
旧API转新API
Java Web
- Servlet规范定义了几种标准组件:Servlet、JSP、Filter和Listener;
- Servlet的标准组件总是运行在Servlet容器中,如Tomcat、Jetty、WebLogic等
war
war,表示Java Web Application Archive
Tomcat

Servlet

Tomcat这样的Web服务器也称为Servlet容器
JSP
JSP和Servlet有什么区别?其实它们没有任何区别,因为JSP在执行前首先被编译成一个Servlet。
JSP本身目前已经很少使用,我们只需要了解其基本用法即可。
JSP对页面开发不友好,更好的替代品是模板引擎?
Maven
命令
javascript
mvn compile
mvn clean目录结构
一个使用Maven管理的普通的Java项目,它的目录结构默认如下:
plain
a-maven-project
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
└── target常用的插件
- maven-shade-plugin:打包所有依赖包并生成可执行jar;
- cobertura-maven-plugin:生成单元测试覆盖率报告;
- findbugs-maven-plugin:对Java源码进行静态分析以找出潜在问题。
发布包
plain
how-to-become-rich
├── maven-repo <-- Maven本地文件仓库
├── pom.xml <-- 项目文件
├── src
│ ├── main
│ │ ├── java <-- 源码目录
│ │ └── resources <-- 资源目录
│ └── test
│ ├── java <-- 测试源码目录
│ └── resources <-- 测试资源目录
└── target <-- 编译输出目录Nexus
是一个支持Maven仓库的软件,由Sonatype开发,有免费版和专业版两个版本,很多大公司内部都使用Nexus作为自己的私有Maven仓库,而这个central.sonatype.org相当于面向开源的一个Nexus公共服务。
直接上框架吧
Spring Boot和Spring的关系就是整车和零部件的关系,它们不是取代关系,试图跳过Spring直接学习Spring Boot是不可能的。
Spring Boot的目标就是提供一个开箱即用的应用程序架构,我们基于Spring Boot的预置结构继续开发,省时省力。
Spring
Spring 主要功能包括IoC容器、AOP支持、事务支持、MVC开发以及强大的第三方集成功能等
- IoC ??
- AOP 面向切面??黑人问好
- 事务支持 ??
- MVC
Spring Framework主要包括几个模块:
- 支持IoC和AOP的容器;
- 支持JDBC和ORM的数据访问模块;
- 支持声明式事务的模块;
- 支持基于Servlet的MVC开发;
- 支持基于Reactive的Web开发;
- 以及集成JMS、JavaMail、JMX、缓存等其他模块。
IoC
控制反转

AOP
面向切面【】
在 OOP 中,我们以类(class)作为我们的基本单元,而 AOP 中的基本单元是 Aspect(切面)
OOP把系统看作多个对象的交互,AOP把系统分解为不同的关注点,或者称之为切面(Aspect)。
一些常用功能如权限检查、日志、事务等,从每个业务方法中剥离出来。

原先不用AOP时,交叉业务的代码直接硬编码在方法内部的前后,而AOP则是把交叉业务写在方法调用前后。
Spring提供了JdbcTemplate来简化JDBC操作;
[HSQLDB](http://hsqldb.org/)
数据库访问框架 ORM/ODM
Hibernate、JPA和MyBatis这些数据库访问框架
Spring MVC
Spring Boot
Spring Boot是一个基于Spring的套件,它帮我们预组装了Spring的一系列组件,以便以尽可能少的代码和配置来开发基于Spring的Java应用程序。
MyBatis
使用MyBatis访问MySQL
更新: 2021-04-13 09:33:16
原文: https://www.yuque.com/u3641/dxlfpu/wayznu