cookie和session区别
cookie:是服务器发送到浏览器,并保存在浏览器端的一小块数据
浏览器下次访问服务时,会自动携带该块数据,将其发送给服务器
session:是javaEE标准,用于在服务端记录客户端信息
数据存放在服务端更加安全,但是会增加服务端的内存压力
Spring IOC含义
springIOC容器像一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。IOC容器负责创建对象,将对象连接在一起,配置这些对象并从创建中处理这些对象的整个生命周期,直到他们被完全销毁。
Spring涉及的设计模式
工厂模式:spring使用工厂模式通过beanFactory,ApplicationContext创建bean对象
代理模式:springAOP功能的实现
单例设计模式:spring中的bean默认都是单例的
模版方法模式:spring中jdbcTemplate以Template结尾的对数据库操作的类,他们都使用到了模版模式
装饰器模式:项目需要连接多个数据库,而且不同客户在每次访问中根据需要会去访问不同的数据库,装饰器模式让我们可以根据客户的需求动态切换不同的数据源
观察者模式:spring事件驱动模型
适配器模式:springAOP的增强或通知使用到了适配器模式
静态内部类
静态内部类与非静态内部类之间存在一个最大的区别,我们知道非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建他的外围类,但是静态内部类却没有,这意味着:
他的创建不需要依赖外围类的创建,
他不能使用任何外围类的非static成员变量或方法
CMS收集器
CMS收集器是一种以获取最短回收停顿时间为目标的收集器,这是HotSpot虚拟机第一款真正意义上的并发收集器,他第一次实现了让垃圾收集线程和用户线程同时工作。
初始标记:暂停所有的其他线程,并记录下直接与root相连的对象,速度很快
并发标记:同时开启GC和用户线程,用一个闭包结构去记录可达对象。但在这个阶段结束,这个闭包结构并不能保证包含当前所有的可达对象。因为用户线程可能会不断的更新引用域。所以gc线程无法保证可达性分析的实时性,所以这个算法会跟踪记录这些发生引用更新的地方
重新标记:重新标记阶段就是为了修正并发标记期间因为用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短。
并发标记:开启用户线程,同时GC线程开始对未标记的区域做清扫
java函数参数是值拷贝还是引用拷贝
形参为基本类型数据都是值传递(只是在拷贝他的值)
形参是引用数据类型的都是引用传递(只是对对象的引用,实际上指的是同一个对象)
Hash表如何解决hash冲突
线性探测法:当我们的所需要存放值的位置被占了,我们就往后面一直加1并取模直到存在一个空余的地址供我们存放值
链地址法:将所有哈希地址相同的记录都链接在同一链表中
再哈希法:同时构造多个不同的哈希函数,等发生哈希冲突时用其他哈希函数计算地址,直到不发生冲突为止