Spring
Spring框架是一个分层框架,有七个模块构成
SpringCore,Spring上下文,SpringDao,SpringAOP,SpringORM,SpringWeb,SpringMVC
Spring的功能:对java中类的对象的管理;
Spring的核心
IOC与AOP,应用了工厂和代理的设计模式
IOC----控制反转: 对象间的依赖关系由类本身决定变为由容器进行管理
DI------依赖注入:类中定义的依赖,不在是依赖具体实现,而是依赖接口
AOP—面向切面编程:动态代理(对与类:cglib代理;对于接口:jdk代理)-----在不修改源代码的情况下动态添加功能
SpringMVC
核心:Servlet
Servlet的生命周期(SpringMVC的原理)
用户发送请求到达前端控制器(核心控制器),核心控制器对请求转发给页面处理器进行处理,页面处理器调用业务对象,交给模型,模型将处理后的结果(模型数据)返回给到页面处理器,页面处理器将数据通过ModelAndView类返回一个对象给核心控制器,核心控制器将得到的对象进行渲染后交由视图层进行展示,并返回控制权给核心控制器做出响应
MyBatis
半自动化的ORM框架,在映射文件中编写SQL语句,通过SQLsession工厂获取Sqlsession,执行SQL语句。
谈谈你对栈和堆的理解
在数据结构中:栈:一种限定性的线性表,插入和删除操作只能在表的一端进行,堆:是一个完全二叉树
在Java中:java把内存分成两种,一种叫做栈内存,一种叫做堆内存,都是Java在内存中存放数据的地方。由Java自动管理
栈(stack):用于存储函数分配的一些基本类型的变量和对象的引用变量(堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,而栈中的这个变量的取值等于数组或对象在堆内存中的首地址,因此栈中的这个变量就成了数组或对象的引用变量,这样就可以在程序中使用栈中的引用变量来访问堆中的数组或对象),其空间大小是固定的,由操作系统来分配,只要栈剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出,由操作系统决定何时释放,好处是快捷,但是自由度小。
堆(heap):用于存放由new创建的对象和数组。堆的大小受限于系统中有效的虚拟内存,由程序员自己来分配和释放,虽然堆的使用容易产生碎片,进行存储分配比用栈进行存储存储需要更多的时间,但是自由度 大。