SpringMVC
springMVC工作原理
如何解决POST请求中文乱码问题,GET的又如何处理呢?
- 在web.xml中加入:CharacterEncodingFilterorg.springframework.web.filter.CharacterEncodingFilterencodingutf-8CharacterEncodingFilter/*以上可以解决post请求乱码问题。对于get请求中文参数出现乱码解决方法有两个:修改tomcat配置文件添加编码与工程编码一致,如下:
<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
SpringMVC与Struts2的主要区别?
SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决
- 是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段
@RequestMapping注解用在类上有什么作用
Spring MVC的异常处理 ?
- 答:可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。
怎么样在方法里面得到Request,或者Session?
- 直接在方法的形参中声明request,SpringMvc就自动把request对象传入。
- 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?
- 可以在@RequestMapping注解里面加上method=RequestMethod.GET
什么是springmvc映射器,有几种
什么是springmvc适配器,有什么作用
springmvc的handle有几种实现方式
springmvc控制器中获取数据的方式有哪些
springmvc拦截器有什么用
springmvc的拦截器有几种配置方式
springmvc拦截器的实现方式有哪些
springmvc实现文件上传有哪些步骤
springmvc上传文件解析器是什么
springmvc上传文件解析器的id名称是否可以更改,为什么
springmvc中函数返回值是什么
springmvc怎么处理返回值
springmvc怎么设定重定向和转发
springmvc用什么对象从后台向前台传递数据的
springmvc有个类把视图和数据都合并的一起的,叫什么
springmvc怎么和ajax相互调用
springmvc用什么对象从后台向前台传递数据的,itoo是如何用的
- itooresult使用, 封装的内容都包括什么
Spring
spring核心 ioc和aop
事务管理
spring与其他技术宅的融合使用
面试题
为什么要用spring
ioc 和aop原理
解释以下名词:横切性关注点;切面;连接点;切入点,通知,目标对象,织入,引入
AOP和动态代理关系
什么是切入表达式
通知有几种类型,运行顺序是什么
BeanFactory和ApplicationContext有什么区别?
有哪些不同类型的IOC(依赖注入)方式?
哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入?
什么是Spring beans?
Spring Bean的作用域之间有什么区别?
Spring框架中bean的生命周期
什么是Spring的内部bean?
在 Spring中如何注入一个java集合?
什么是bean的自动装配?
Spring 框架中都用到了哪些设计模式?
为什么需要事务
spring事务管理有哪几种核心组件
使用事务来解决什么问题,使用事务和不使用事务,数据在程序中和数据中分别是什么状态
有几种不同类型的自动代理
Mybatis
mybatis参数处理
mybatis动态sql
mybatis关系映射
mybatis缓存机制
面试题
mybatis核心原理,使用mybatis和其他orm框架对比,有哪些优势,有哪些优点和缺点
mybatis与hibernate有什么异同
mybatis中有哪些常用的查询方法
mybatis如何进行mapper动态代理
{}和${}的区别是什么?
mybatis如何定义别名查询
mybatis怎样定义结果集resultmap
mybatis结果集resultmap可以定义哪些类型
mybatis怎样进行分页查询
mybatis怎样进行动态条件查询
mybatis动态查询常用有哪些标签
mybatis怎样进行crud操作
mybatis怎样进行事务管理
mybatis框架有哪些注解
如何使用mybatis的注解实现动态sql语句查询
mybatis怎样进行”多对一”关联查询?
如何实现mybatis 一对多的join查询
如何实现mybatis 一对多的n+1次查询
mybatis如何进行关联关系(一对一,一对多,多对多),以及双向关联关系查询
mybatis有几种缓存,获取sqlsession后,查询数据的顺序,mybatis中与hibernate中获取session后,查询数据顺序有什么区别
mybatis怎样处理延迟加载
mybatis动态sql语句怎样生成
什么是mybatis接口绑定,有什么好处
接口绑定有几种实现方式,分别是怎么实现的
什么情况下用注解绑定,什么情况下用xml绑定
xml映射文件中,除了常见的select|insert|update|delete标签之外,还有那些标签
mybatis是如何将sql执行结果封装为目标对象并返回的,都有哪些映射形式
mybatis的xml映射文件中,不同的xml映射文件,id是否可以重复
mybatis如何执行批处理
mybatis引入xxx.mapper映射文件有几种方式
mybatis事务管理有几种方式
mybatis中驱动是否会一直等待数据库响应,如何设置数据库最大响应时间
mybatis在接口定义的方法是否可以有多个参数,如何进行多参数传递
mybatis中如何实现sql复用
谈谈mybatis和hibernate在执行效率上的对比
谈谈mybatis和hibernate在对象管理上的对比
谈谈mybatis和hibernate在开发效率上的对比
mybatis中sql语句执行类型有几种方式(ExecutorType)
mybatis防止n+1次查询的方式有几种
逆向工程
逆向工程使用
逆向工程模板的修改
面试题
什么是mybatis逆向工程,有什么好处
逆向工程原理是什么
如何搭建逆向工程
shiro
itoo中jwt的使用, jwt+redis, redis起的什么作用
权限与前端的结合,如何使用?
面试题
什么是shiro?为什么使用shiro
shiro核心组件
shiro认证流程是什么
shiro授权过程
shiro认证中有哪些常见异常,分表表示什么意思
什么是散列算法
什么是授权
解释授权的关键概念: 主体,资源,权限,角色
shiro授权有哪三种方式
解释如下术语:Subject, SecurityManager,Authenticator,Authorizer.Realm,SessionManager,SessionDAO,CacheManager,Crytography
shiro如何与web项目进行整合
shiro如何控制菜单的权限控制与按钮权限
shiro常用标签与注解有哪些
什么是shiro缓存,为什么要使用缓存
shiro缓存怎样实现
maven
- itoo-root的了解和使用
面试题
maven是什么
什么是maven坐标
什么是依赖管理
什么是远程仓库
maven module与project有什么区别
maven怎样添加依赖
maven编译时,如何跳过单元测试
maven怎样安装到本地仓库
zookeeper
zookeeper是什么
zookeeper三种角色leader,follower,observer作用
zookeeper选举leader过程
zookeeper配置文件管理原理
使用zookeeper实现分布式锁功能
dubbo
itoo中dubbo的使用
dubbo与spring的结合
面试题
dubbo架构图讲解
Dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
可以的,启动dubbo时,消费者会从zk拉取注册的生产者的地址接口等数据,缓存在本地。每次调用时,按照本地存储的地址进行调用
注册中心对等集群,任意一台宕掉后,会自动切换到另一台
注册中心全部宕掉,服务提供者和消费者仍可以通过本地缓存通讯
服务提供者无状态,任一台 宕机后,不影响使用
服务提供者全部宕机,服务消费者会无法使用,并无限次重连等待服务者恢复
- dubbo连接注册中心和直连区别
- 在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,
点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,
服务注册中心,动态的注册和发现服务,使服务的位置透明,并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover, 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外,注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
注册中心和监控中心都是可选的,服务消费者可以直连服务提供者
- dubbo在安全机制方法是如何解决的
- Dubbo通过Token令牌防止用户绕过注册中心直连,然后在注册中心上管理授权。Dubbo还提供服务黑白名单,来控制服务所允许的调用方。
- 默认使用的是什么通信框架,还有别的选择吗?
- 默认也推荐使用netty框架,还有mina
- 服务调用是阻塞的吗?
- 默认是阻塞的,可以异步调用,没有返回值的可以这么做。
- 一般使用什么注册中心?还有别的选择吗?
- 推荐使用zookeeper注册中心,还有redis等不推荐。
- 默认使用什么序列化框架,你知道的还有哪些?
- 默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。
- 服务提供者能实现失效踢出是什么原理?
- 服务失效踢出基于zookeeper的临时节点原理
- 服务上线怎么不影响旧版本?
- 采用多版本开发,不影响旧版本。
- 如何解决服务调用链过长的问题?
- 可以结合zipkin实现分布式服务追踪。
- dubbo服务负载均衡策略?
- Random LoadBalance
随机,按权重设置随机概率。在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。(权重可以在dubbo管控台配置)
- RoundRobin LoadBalance
轮循,按公约后的权重设置轮循比率。存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。
- LeastActive LoadBalance
最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。
- ConsistentHash LoadBalance
一致性Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。缺省只对第一个参数Hash,如果要修改,请配置
- dubbo服务集群配置(集群容错模式)
在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failover 重试。可以自行扩展集群容错策略*
Failover Cluster(默认)
- 失败自动切换,当出现失败,重试其它服务器。(缺省)通常用于读操作,但重试会带来更长延迟。可通过retries=”2”来设置重试次数(不含第一次)。
Failfast Cluster
- 快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。
Failsafe Cluster
- 失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。
Failback Cluster
- 失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。
Forking Cluster
- 并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过forks=”2”来设置最大并行数。
- dubbo通信协议dubbo协议为什么要消费者比提供者个数多:
- 因dubbo协议采用单一长连接,假设网络为千兆网卡(1024Mbit=128MByte),
根据测试经验数据每条连接最多只能压满7MByte(不同的环境可能不一样,供参考),理论上1个服务提供者需要20个服务消费者才能压满网卡。
- dubbo通信协议dubbo协议为什么不能传大包:
- 因dubbo协议采用单一长连接,
如果每次请求的数据包大小为500KByte,假设网络为千兆网卡(1024Mbit=128MByte),每条连接最大7MByte(不同的环境可能不一样,供参考),
单个服务提供者的TPS(每秒处理事务数)最大为:128MByte / 500KByte = 262。
单个消费者调用单个服务提供者的TPS(每秒处理事务数)最大为:7MByte / 500KByte = 14。
如果能接受,可以考虑使用,否则网络将成为瓶颈。
- dubbo通信协议dubbo协议为什么采用异步单一长连接
- 因为服务的现状大都是服务提供者少,通常只有几台机器,
而服务的消费者多,可能整个网站都在访问该服务,
比如Morgan的提供者只有6台提供者,却有上百台消费者,每天有1.5亿次调用,
如果采用常规的hessian服务,服务提供者很容易就被压跨,
通过单一连接,保证单一消费者不会压死提供者,
长连接,减少连接握手验证等,
并使用异步IO,复用线程池,防止C10K问题。
- dubbo通信协议dubbo协议适用范围和适用场景
- 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
适用场景:常规远程服务方法调用
dubbo协议补充:
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian二进制序列化
- RMI协议
- RMI协议采用JDK标准的java.rmi.*实现,采用阻塞式短连接和JDK标准序列化方式,Java标准的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:TCP
传输方式:同步传输
序列化:Java标准二进制序列化
适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
适用场景:常规远程服务方法调用,与原生RMI服务互操作
- Hessian协议
- Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现
基于Hessian的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:Hessian二进制序列化
适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者压力较大,可传文件。
适用场景:页面传输,文件传输,或与原生hessian服务互操作
- http
- 采用Spring的HttpInvoker实现
基于http表单的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:表单序列化(JSON)
适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
适用场景:需同时给应用程序和浏览器JS使用的服务。
- Webservice
- 基于CXF的frontend-simple和transports-http实现
基于WebService的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:SOAP文本序列化
适用场景:系统集成,跨语言调用。
- 还了解别的分布式框架吗
solr
itoo中solr的使用
- 题库, 搜索相似题
面试题
为什么要用solr服务,为什么要用luncence?
solr集群结构是什么
solr如何与spring集成
Fastdfs
架构图
FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
quartz
itoo哪里用了
面试题
- quartz与xxjob区别
xxjob
itoo哪里用了
- 教务: 选课前将课程信息放到redis中
面试题
druid
- itoo中如何通过druid来看sql执行情况
超级全的使用手册https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
swagger
http://note.youdao.com/noteshare?id=20e428335e50d27f6418b1a7d3bec92d&sub=0DE8F959BEBC4CA6BDC62DEB4884BB73)
P6spy
项目配置介绍https://blog.csdn.net/kwy15732621629/article/details/77924398
附赠log4j配置说明https://blog.csdn.net/kwy15732621629/article/details/79354885