java面试总结-框架篇

1.谈谈spring的ioc与aop?

spring的ioc是将程序对象的生命周期管理放到spring容器中管理的一种控制方式,他充分利用了java的反射机制,当程序调用者需要被调用者实例的时候,spring就会从容器中取出当前被调用者实例,spring ioc这种方式降低了组件之间的耦合度,降低业务之间的复杂度

spring的aop基于ioc的一种实现,是对传统oop的一种补充,aop是一种横切技术,应用于在多个业务中,需要做一些相同的操作时,如日志记录之类的操作,使用aop则会减少代码的复杂度,降低代码耦合度,aop实现主要是使用动态代理的方式实现的

2.spring mvc接受一个请求内部执行流程是怎么样的?

spring mvc 由DispatcherServlet作为前端控制器接受前端请求,然后交给handlerMapping处理映射器找到对应的handlerAdapter处理适配器来完成请求的相应功能,然后返回一个ModelAndView给dispatcherServlet,然后在用ViewResolver视图解析器,根据ModelAndView找到对应视图View,在将model模型中的数据渲染到view中去

3.spring boot与spring的区别?spring boot是如何做到自动化配置的?

spring boot是在spring的基础上搭建的一个全新的微框架,他做了许多的默认化配置,极大的简化了spring的搭建及开发过程,同时spring boot也集成了许多第三方库默认化配置,使开发者专注处理项目业务逻辑上

spring boot通过springApplication在启动项目的时候,会查找所有jar下面的META-INF中spring.factories和我们自定义的Configuration类完成默认化配置,同时会查找项目中的配置文件properties,yml等,并且会根据文件配置的优先级来使用具体的配置参数,然后配置类通过配置参数来完成一系列默认配置来构建spring boot的项目运行环境

4.mybaties和hibatient区别?

都是非常优秀的orm框架,hibernate功能强大,对对象的维护和缓存比mybaties好,不需要写sql,sql语句自动生成,但是入门成本较高,且sql灵活性较差,对sql语句的修改与优化比较困难;mybaties则入门比较简单,可以非常灵活的使用sql,但是相对hibernate来说会增加工作量

5.netty是什么?netty的基本API

netty是一个高性能,异步事件驱动的NIO框架,提供对TCP,UDP和文件传输的功能,提供更简化的NIO操作,支持多种编码解码操作.

netty线程模型有三种:

    单线程模型:所有I/O操作都由一个线程完成,即多路复用,事件分发和处理都由一个Reactor线程完成,不适用高并发和高负载环境

    多线程模型:一个NIO线程只负责监听客户端连接请求,然后NIO线程池负责处理IO操作,即一个nio线程处理N条链路,

                    但每一条链路只对一NIO线程

    主从多线程模型:Acceptor线程只负责绑定监听端口,接收客户端连接,然后会将Sockchannel移除注册到从线程池上,从线程池负责处理I/O操作

netty主要由client,server端连接通过bytebuf传输数据,每一个连接对应一个channel,而channel通过使用channelPipeLine进行处理请求,channelPipeline中主要由channelHandler与channelContext构成,channelHandler是一条固定的链表结构,channelhandler分为inhandler与outhandler分别对连接数据的read与write进行处理,而channelContext则是每个channelHandler的上下文,也是连接channelHandler与channelpipeline的桥梁



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值