1.checkException和unCheckException的理解
答:其中RuntimeException +Error 和其子类都是属于 unCheckException
Exception类中除了 RuntimeException之外的类 都是属于 checkException
2.动态代理有哪些?动态代理什么场景下不能使用?
答:JDK和cglib,JDK是基于接口的代理,实现了InvocationHandler接口,cglib是基于继承的代理。
jdk代理,在没有实现接口的情况下, 是无法使用使用该代理的,
cglib代理,基于继承,那么被private,final修饰的类或者方法不能被代理
3.redis有几种数据结构,hash算法的实现,除了做缓存还有什么作用?
答:有5种数据结构,String、List、hash、set、zset,
1.最新列表,例如新闻热点列表,将最新的热点放入redis的List中
2.排行版列表,将排行数据放入redis有序的zset中,zset会自动排序,使用ZRANGE(正序)或者ZREVRANGE(反序)来获取数据
3.计数器,因为redis是单线程和原子性的。
4.数据重排,使用redis的set数据结果
5.实时的反垃圾系统:反垃圾系统通常都是基于关键词的,使用Redis储存关系词,能够利用Redis的高性能,为监控系统提供稳定及精确的实时监控功能,典型的案例如,邮件系统、评论系统等
6.可以发布、订阅实时消息系统:Redis中Pub/Sub系统可以构建实时的消息系统,比如,很多使用Pub/Sub构建的实时聊天应用
7.队列应用:队列在现在程序中应用十分广泛,比如日志推送、任务处理等等。以往通常使用http sqs实现队列,其实,使用redis的list类型,也可以实现队列
4.spring+mybatis 动态切换数据源的过程?
答:SqlSessionFactoryBean中配置了数据源(多数据源)、mybatis的配置文件、mapper映射文件,数据源(多数据源)又由
AbstractRoutingDataSource进行封装,将多个数据源放入AbstractRoutingDataSource的属性中。