1、mybatis的缓存
一级缓存:默认开启,是sqlsession层面实现的缓存,第一次·发出的查询sql,查询结果写入sqlsession的一级缓存中,缓存使用的数据结构是一个map;
二级缓存:二级缓存的范围是mapper级别,mapper以命名空间为单位创建数据结构;
2、值传递和引用传递的区别
值传递:在方法的调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元,因此形参和实参虽然值相同,但是有不同的存储单元,形参的改变不会影响实参的值;
引用传递:在方法调用中。传递的是对象,这时形参和实参指向同一个存储单元,因此形参的改变会影响实参的值
3、servlet的生命周期
初始化阶段:检查web服务器中是否存在servlet实例,不存在则装载servlet类并创建实例,调用servlet的init初始化方法;
服务阶段:初始化完毕,调用servlet的service方法响应客户端的请求;
销毁阶段:服务器调用destroy方法移除servlet对象;
4、java运行时数据区
堆:虚拟机内存中最大的一块,是被所有线程共享的,几乎所有对象实例都在这分配内存,
虚拟机栈:存储局部变量表、操作数栈、动态链接、方法出口等信息,存放着各种基本数据类型和对象的引用一个方法对应一个栈;
本地方法栈:服务的·本地方法,与虚拟机栈作用一样
方法区:存放被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据;常量池也在方法区
程序计数器:可以看作是当前线程执行字节码的行号指示器;