1.说一下JVM调优的工具
JDK自带很多工具,都位于JDK的bin目录下,其中最常用的是jconsole和jvisualvm
jconsole:用于JVM中的内存,线程和类进行监控
jvisualvm:JDK自带的全能分析工具,可以分析内存快照,线程快照,程序死锁,监控内存变化,GC变化等
2,常用的 JVM 调优的参数都有哪些?
Xms2g:初始化堆大小为2g
Xmx2g:堆的最大内存值为2G
NewRatio=4:设置年轻代和老年代的比例为1:4
SurvivorRatio=8:设置新生代Eden区和survivor比例为8:2
UseParNewGc:指定使用ParNew和serial Old垃圾回收器组合
UseParllelOldGc:指定使用ParNew和ParNew Old垃圾回收器组合
UseConcMarkSweepGC:指定使用CMS和serial Old垃圾回收器组合
PrintGC:开始打印GC信息
PrintGCDetails:打印GC
3,什么是 spring
开源框架,为了解决企业程序的复杂性而创建的,优势就是分层架构,分层架构允许你使用哪一个主键
很多底层都依赖于Spring的两个核心:依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP)
为了降低代码开发的复杂性,Soring采用了以下四种策略
基于POJO的轻量级和最小侵入性编程,
通过面向接口和依赖注入实现松耦合
基于切面和惯例实现声明式编程
通过切面和样板减少样板式编程
4,Spring 框架的设计目标,设计理念,和核心是什么
设计目标:提供一个一站式的轻量级平台
设计理念:在javaEE开发中,支持POJO和javaBean开发方式,使应用面向接口开发,充分支持OOP设计方式,Spring通过IOC容器实现对象耦合性管理,并实现依赖反转,将对象之间的依赖交给IOC容器,实现解耦
核心:IOC容器和AOP模板,通过IOC容器管理POJO对象以及他们之间的耦合关系,通过AOP以动态非入侵的方式增强服务
5,Spring框架中用到了那些设计模式
1,工厂设计模式:BeamFactory就是简单的工厂模式体现,用于创建对象的实例
2代理设计模式:Spring的AOP用到了JDK的动态代理和GGLIB字节码生成技术
3,观察者设计模式:定义对象一种一对多的关系,当一个对象的状态发生改变,所有依赖它的对象都会得到通知自动更新,
4,单例模式:Bean默认为单例模式
5模板方法:用来解决代码重复的问题
6,Spring 框架中有哪些不同类型的事件
Spring提供了5种标准事假
1,上下文更新事件(ContextRefreshedEvent):在调用ConfigurableApplicationContext接口中的refesh()方法时被触发
2,上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Strat()方法的开始/重新开始容器时触发该事件
3,上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件
4,上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件,容器被关闭时,其管理的所有单例Bean都会被销毁
5,请求处理事件(RequestHandledEvent):在web应用中,当一个HTTP请求(request)结束触发该事件.果然一个Bean是实现了ApplicationListener接口,当一个ApplicationListener被发布以后,Bean会自动通知
7,什么是 Spring IOC 容器
控制反转,IOC容器负责实例化,定位,配置应用程序中的对象和这些对象之间建立的依赖统一交给IOC容器处理,从而实现松耦合的控制反转,是一种思想
8,控制反转(IoC)有什么作用
减少代码的之间的耦合度
9,BeanFactory 和 ApplicationContext 有什么区别
Spring的两大核心接口:都可以当做Spring容器
1,ApplicationContext是BeanFactory的子接口,
2,BeanFactory:是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置文档,管理bean的加载、实例化,控制bean的生命周期,维护bean之间的依赖关系。ApplicationContext接口作为BeanFactory的派生,除了提供BeanFactory所具有的功能外,还提供了更完整的框架功能:
实现国际化,继承了MessageSoure
统一的资源文件访问方式
提供在监听器中注册Bean事件
同时加载多个配置文件
载入多个有继承关系的上下文,使每个上下文都专注于一个特定的层次
3,Bean通常以编程的方式创建,,ApplicationContext还能以声明的方式创建,如使用ContextLoader。
10,什么是 Spring 的依赖注入
组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态的将某种依赖关系的目标对象实例的注入到应用系统中个个关联的组件之间.
组件不做定位查询,只提供普通的java方法让容器去决定依赖关系