JavaEE
第一周
主要讲SSM:Spring-SpringMVC-Mybatis
Spring:通用框架。解决基础问题
Mybatis ORM库,做object和relation的mapping
SpringMVC:web开发
框架和中间件区别:
框架framework:以sdk,jar包形式
中间件middle-ware:独立可运行,不依赖于程序
###new创建对象会带来很多问题
云计算:Dubbo,Springcloud,K8s
云计算springcloud,但K8s功能更强大
K8s通过环境管理配置,无侵入。将运维和业务分离
###OOP Solid:
https://www.jianshu.com/p/655ccb647152
英文简写 | 名称 |
---|---|
SRP | 单一职责原则 |
OCP | 开放封闭原则 |
LSP | 里氏替换原则 |
ISP | 接口隔离原则 |
DIP | 依赖倒置原则 |
###希望完成:编译时解耦合,运行时再有耦合
IOC 控制反转:不要手工new对象,把对象创建交给spring容器,防止在编译期建立耦合
DI依赖注入:帮助在运行期建立耦合
###反射
this.engine = new Engine(); //原本new对象,会出现耦合,没有Engine类,编译不通过
this.engine = (IEngine).Class.forName('com.demo.Engine').newInstance; //修改后,forName传字符串,字符串内容可以修改,编译能通过
###AOP:面向切面编程
Aspect-Oriented Programming
需要解决的问题:Java是静态的编程语言(不能在运行时修改类定义),带来扩展问题。有源码可以修改源代码,没有源代码没办法改。
第二周
###Java中认为最重要的类
Object类
Class类
public class Person{
//类定义
}
public class Test{
public static void main(String[] args){
Person person1 = new Person();
//如何获取类:用反射
//1. 直接用Class.forName()
Class clazz = Class.forName().getClass(); //
//2,通过已有对象
Class claxx = person1.getClass();
//3,通过类
Class claxx = Person.getClass();
}
//能不能在方法中使用类的定义?,如:f(new Person())
public static void f(Object o){
}
}
###Annotation,注解
//示例:@Commponent·
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Indexed
public @interface Component {
String value() default "";
}
//其中:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME) //希望把下面的注解保持到什么时候,给编译器看的
//SOURCE表示这个Annotation类型的信息只会保留在源码里,源码经过编译之后,Annotation的数据就会消失,并不会保留在编译好的.class文件里;
//CLASS表示这个Annotation类型的信息在源码保留,在.class文件也保留,但不会把这些信息加载到虚拟机(JVM)中,如果不设置,系统默认值是CLASS;
//RUNTIME表示在源码,编译后的.class都保存信息,在执行的时候也会把这些信息加载到JVM中
@Documented //跟文档生成有关系
第三周
老师笔记
https://thoughts.teambition.com/share/5f5dd6455e3f1f001682c1b4#5f5dc556db4eae9322a8be2e
Java垃圾回收
参考资料:https://www.cnblogs.com/sunniest/p/4575144.html
内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java 的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。
1,引用计数法
2,tracing算法或mark and sweep算法