X Tutup
Skip to content

Commit ab76ddd

Browse files
committed
no message
1 parent 870b0ee commit ab76ddd

File tree

4 files changed

+49
-12
lines changed

4 files changed

+49
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88

9-
## 一、数据结构与算法
9+
## 一、数据结构与算法2
1010

1111
> 大纲:[[under editing] 数据结构与算法](notes/数据结构与算法.md)
1212

notes/JavaArchitecture/07 Java Web.md

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -188,75 +188,112 @@ http://www.blogjava.net/crazycy/archive/2006/07/03/56387.html
188188

189189
## 1. Spring IOC、AOP的理解、实现的原理,以及优点 【蚂蚁金服面经】
190190

191+
spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分
192+
191193
### IOC
192194

193195
- **我的理解**
194196
- 正常的情况下,比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象
195197
- 通过控制反转,把对象的创建不是通过new方式实现,而是交给Spring配置创建类对象
198+
- IOC的意思是控件反转也就是由容器控制程序之间的关系,这也是spring的优点所在,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。换句话说之前用new的方式获取对象,现在由spring给你至于怎么给你就是di了。
196199

197200

198201

199202
- **Spring IOC实现原理**
200203

204+
- 创建xml配置文件,配置要创建的对象类
205+
201206
- 通过反射创建实例;
202207
- 获取需要注入的接口实现类并将其赋值给该接口。
203208

204209

205210

206211
- **优点**
207212

213+
- 解耦合,开发更方便组织分工
214+
- 高层不依赖于底层(依赖倒置)
215+
- 是应用更容易测试
216+
217+
- 因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是现实于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨
218+
208219

209220

210221
### AOP
211222

212223
- **我的理解**
213224

214-
- AOP(Aspect-Oriented Programming)指一种程序设计范型,该范型以一种称为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散在对象、类或方法中的横切关注点(crosscutting concern)。
215-
- "横切关注"是会影响到整个应用程序的关注功能,它跟正常的业务逻辑是正交的,没有必然的联系,但是几乎所有的业务逻辑都会涉及到这些关注功能。通常,事务、日志、安全性等关注就是应用中的横切关注功能。
225+
- AOP(Aspect Oriented Programming )称为面向切面编程,扩展功能不是修改源代码实现,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。
226+
- 面向切面编程(aop)是对面向对象编程(oop)的补充
227+
- 面向切面编程提供声明式事务管理
228+
- AOP就是典型的代理模式的体现
216229

217230

218231

219232
- **Spring AOP实现原理**
220233

221-
- 动态代理(利用反射和动态编译将代理模式变成动态的)
222-
- JDK的动态代理
234+
- 动态代理(利用**反射和动态编译**将代理模式变成动态的)
235+
236+
- JDK的动态代理
237+
238+
- JDK内置的Proxy动态代理可以在运行时动态生成字节码,而没必要针对每个类编写代理类
223239
- JDKProxy返回动态代理类,是目标类所实现接口的另一个实现版本,它实现了对目标类的代理(如同UserDAOProxy与UserDAOImp的关系)
240+
224241
- cglib动态代理
225242
- CGLibProxy返回的动态代理类,则是目标代理类的一个子类(代理类扩展了UserDaoImpl类)
243+
- cglib继承被代理的类,重写方法,织入通知,动态生成字节码并运行
226244

227-
245+
228246

229247
- **优点**
248+
- 各个步骤之间的良好隔离性
249+
- 源代码无关性
250+
251+
252+
253+
## 2. Spring 的优点有哪些
254+
255+
1. 降低了组件之间的耦合性 ,实现了软件各层之间的解耦
256+
257+
2. 可以使用容易提供的众多服务,如事务管理,消息服务等
258+
259+
3. 容器提供单例模式支持
230260

261+
4. 容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
231262

263+
5. 容器提供了众多的辅助类,能加快应用的开发
232264

265+
6. spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
233266

267+
7. spring属于低侵入式设计,代码的污染极低
234268

235-
## 2. 介绍spring的IOC和AOP,分别如何实现(反射、动态代理)
269+
8. 独立于各种应用服务器
236270

271+
9. spring的DI机制降低了业务对象替换的复杂性
237272

273+
10. Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部
238274

239275

240276

241277
## 3. 什么是依赖注入,注入的方式有哪些
242278

243-
- **DI**
279+
- DI(依赖注入)
244280
- 所谓依赖注入,就是把底层类作为参数传入上层类,实现上层类对下层类的控制。DI依赖注入,向类里面属性注入值 ,依赖注入不能单独存在,需要在IOC基础上完成操作。
245281
- - 使用set方法注入
246282
- 使用有参构造注入
247283
- 使用接口注入
284+
- 注解注入(@Autowire)
248285

249286

250287

288+
## 4. Spring IOC初始化过程
251289

252290

253291

254292

255-
## 5. Spring IOC初始化过程
256293

257294

258295

259-
## 6. Spring初始化哪个方法
296+
## 5. Spring初始化哪个方法
260297

261298

262299

notes/JavaWeb/Spring.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ public class UserService {
454454

455455
AOP(Aspect Oriented Programming )称为面向切面编程,扩展功能不是修改源代码实现,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子。
456456

457-
- AOP:面向切面(方面)编程,扩展功能不修改源代码实现
457+
- AOP:面向切面编程,扩展功能不修改源代码实现
458458
- AOP采取**横向抽取机制**,取代了传统**纵向继承**体系重复性代码(性能监视、事务管理、安全检查、缓存)
459459

460460

notes/Linux.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
####
22

3-
# Linux
3+
# Linux2
44

55
[TOC]
66

0 commit comments

Comments
 (0)
X Tutup