目录
GC垃圾回收机制
在java中,堆被划分为两个不同的区域:新生代、老年代,新生代有三个分区:Eden、ToSurvivor、FromSurvivor,新生代使用复制算法完成回收,老年代使用标记算法。在易电源区执行第一次GC,用可达性分析算法分析死亡的对象被回收,存活的对象被分配到From区,然后再采用复制算法将Eden和From区一起清理,存活的被复制到to区,移动一次年龄加一,当年龄大于一定值的时候直接移动到老年区,年龄默认值是15。当老年代存满后,使用Full GC清理整个堆包括年轻代和老年代。
数据库索引的作用
为了提高数据库的查询效率,给查询需要量大,字段值比较大的情况加索引,因为创建索引所占的空间比较大,所以不是所有条件都适合加索引。例如:如果每次都需要取到所有表记录,进行全表扫描;非唯一字段,例如“性别”这种大量重复的字段。
spring:IOC和DI
IOC:将对象的创建,对象的存储(map),对象的管理(依赖查找、依赖注入)交给了spring容器。
DI:组件之间的依赖关系由容器在应用系统运行期来决定,也就是容器动态的将某种依赖关系的目标对象实例注入到应用系统中的各个关联组件之间.
AOP:把系统分为核心关注点和横切关注点。核心主要处理业务逻辑,横切是权限验证,日志,事务处理。
AOP面向切面编程:切面:piontcut与point的组合
连接点:程序执行过程中明确的点。
通知:前置通知、后置通知、环绕通知、返回后通知、异常通知
切点:提供一组规则来匹配Joinpoint
目标对象:包含连接点的对象。也被称作被通知或被代理的对象。
AOP代理:AOP框架创建的对象,包含通知。在spring中,AOP代理可以是JDK动态代理或者CGLIB代理。
织入:组装方面来创建一个通知对象。这可以在编译时完成也可以在运行时完成。spring在运行时完成。
springMVC
什么是springmvc
SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架。通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错。
springmvc的处理流程
1.浏览器发送请求,被前端控制器dispatcherservlet捕获。
2.dispacherservlet通过请求的url解析到请求资源标识uri,然后根据该uri调用handlermapping,获取对应的handler。
3.得到handler后,开始有handleradpter适配器进行操作。
4.handleradpter根据handler来调用controller控制器,开始处理请求,处理具体业务。
5.处理器处理完业务后会返回一个ModelAndView对象,Model是数据对象,View是个逻辑上的view。
6.ViewResolver视图解析器通过逻辑view查找实际的view。
7.dispacherservlet把model交给view进行视图渲染。
8.最后再把view返回给浏览器
Mybatis
什么是mybatis?
MyBatis 是一款优秀的**持久层框架**,它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
Mybatis工作流程
1.mybatis应用程序通过sqlSessionFactoryBuilder从mybatis-config.xml配置文件中构建出sqlSessionFactory。
2.sqlSessionFactory的实例直接开启一个sqlSession
3.再通过SqlSession实例获得Mapper对象
4.执行Mapper映射的SQL语句,完成对数据库的CRUD操作和事务提交
5.关闭sqlSession
sqlSession是单线程对象,因为他是非线程安全的,是持久化操作的独享对象。
resultType和resultMap的区别
resultType是直接表示返回类型的,resultMap是对外部resultMap的引用,resultType和resultMap不能同时存在。
(1)返回类型属性是resultType时,Mybatis会将Map里面的键值对取出赋给resultType所指定对象对应的属性。