Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
scu-zzy committed Jul 27, 2020
1 parent cac9652 commit edfdaf3
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 3 deletions.
13 changes: 12 additions & 1 deletion JVM.md
Original file line number Diff line number Diff line change
Expand Up @@ -347,4 +347,15 @@ G1(Garbage-First),它是一款面向服务端应用的垃圾收集器,

### 5. 初始化 ###

初始化阶段才真正开始执行类中定义的 Java 程序代码。初始化阶段是虚拟机执行类构造器 <clinit>() 方法的过程。在准备阶段,类变量已经赋过一次系统要求的初始值,而在初始化阶段,根据程序员通过程序制定的主观计划去初始化类变量和其它资源。
初始化阶段才真正开始执行类中定义的 Java 程序代码。初始化阶段是虚拟机执行类构造器 <clinit>() 方法的过程。在准备阶段,类变量已经赋过一次系统要求的初始值,而在初始化阶段,根据程序员通过程序制定的主观计划去初始化类变量和其它资源。

## 双亲委派机制 ##

当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个操作,如果上级的类加载器没有加载,自己才会去加载这个类。

### 作用 ###

1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。

2、保证核心.class不能被篡改。通过委托方式,不会去篡改核心.class,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全。

8 changes: 8 additions & 0 deletions 设计模式/结构型模式.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,14 @@

![](https://camo.githubusercontent.com/aa773bc148092510f7bee949498cccdc6e082b85/68747470733a2f2f6a617661646f6f702e636f6d2f626c6f67696d616765732f64657369676e2d7061747465726e2f70726f78792d312e706e67)

Java中代理的实现一般分为三种:JDK静态代理、JDK动态代理以及CGLIB动态代理。

**JDK静态代理**:创建一个接口,然后创建被代理的类实现该接口并且实现该接口中的抽象方法。之后再创建一个代理类,同时使其也实现这个接口。在代理类中持有一个被代理对象的引用,而后在代理类方法中调用该对象的方法。

**JDK动态代理**:JDK静态代理是通过直接编码创建的,而JDK动态代理是利用反射机制在运行时创建代理类的。

**CGLIB**:JDK代理要求被代理的类必须实现接口,有很强的局限性。而CGLIB动态代理则没有此类强制性要求。简单的说,CGLIB会让生成的代理类继承被代理类,并在代理类中对代理方法进行强化处理(前置处理、后置处理等)。

## 外观

### Intent
Expand Down
18 changes: 16 additions & 2 deletions 面向对象思想.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
具备某种功能的实体,称为对象。面向对象最小的程序单元是:类。面向对象思想是站在对象的角度思考问题,把多个功能合理放到不同对象里,强调的是具备某些功能的对象。

面向对象更加符合常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。

在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。

# 三大特性 #

## 封装 ##
Expand Down Expand Up @@ -91,13 +97,21 @@

如果不满足这个原则,那么各个子类的行为上就会有很大差异,增加继承体系的复杂度。

## 4. 接口分离原则
## 4.迪米特法则 ##

又叫最少知识原则。

一个类对于其他类知道的越少越好。

在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。

## 5.接口分离原则

不应该强迫客户依赖于它们不用的方法。

因此使用多个专门的接口比使用单一的总接口要好。

## 5.依赖倒置原则
## 6.依赖倒置原则

高层模块不应该依赖于低层模块,二者都应该依赖于抽象;

Expand Down

0 comments on commit edfdaf3

Please sign in to comment.