yeb项目提交
1.rabbitMq路由模式有哪些
简单模式、工作队列模式、发布订阅模式、路由模式、TOPIC(通配符模式)以及RPC
https://msd.misuland.com/pd/2884250137616455578
2.动态权限控制
具体内容后期补充
https://www.jianshu.com/p/a8e66020fad1
3.MVC执行流程
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找 Handler,可以根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果
https://www.cnblogs.com/yanghe123/p/11718783.html
4.Mybatis分页方式
1.数组分页
查询出全部数据,然后再list中截取需要的部分。
2.sql分页
3.拦截器分页
创建拦截器,拦截mybatis接口方法id以ByPage结束的语句
4.RowBounds分页
数据量小时,RowBounds不失为一种好办法。但是数据量大时,实现拦截器就很有必要了。
具体内容可看网上的内容:
https://www.cnblogs.com/aeolian/p/9229149.html
5.Git冲突有哪些?如何解决
1.内容冲突
产生冲突的原因:两个用户修改了同一个文件的同一块区域,git会报告内容冲突。我们常见的都是这种。
解决冲突的办法:编辑冲突文件,修改冲突。
2.树冲突
产生冲突的原因:文件名修改造成的冲突,称为树冲突。
比如,a用户把文件改名为a.c,b用户把同一个文件改名为b.c,那么b将这两个commit合并时,会产生冲突。
https://www.cnblogs.com/xiaohuihui123/p/4923391.html
6.SpringAop切面编程是什么(拦截器)
https://www.cnblogs.com/liujiayun/p/5912628.html
7.SpringMvc
https://www.cnblogs.com/baiduligang/p/4247164.html
8.拦截器 过滤器的区别
- 拦截器是基于java的反射机制的,而过滤器是基于函数回调。 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
- 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
- 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
- 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
- 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。
https://www.cnblogs.com/panxuejun/p/7715917.html
9.修改密码 (新旧密码不能相同)
10.图片保存在本地的弊端 /第三方(存储服务器)实现
1.网速(带宽问题)
2.时间(在线时间)
3.安全 (网络安全问题)
11.Redis 缓存问题/解决方案
缓存击穿
缓存雪崩
https://www.cnblogs.com/zlxyt/p/11817389.html
12.Mybatis实体类属性名/表类名不一致怎么处理
写sql语句时起别名
在MyBatis的全局配置文件中开启驼峰命名规则
在Mapper映射文件中使用resultMap来自定义映射规则
https://blog.youkuaiyun.com/wuzhenwei0419/article/details/90643798
13.包装类有哪些
对象型(Object 的直接子类)包装类:
Boolean、Character、
数值型(继承了Number类)包装类:
Byte、Short、Integer、Long、Float、Double
14.Integer a=127与Integer b=127 相等吗???
Integer a1=127;
Integer a2=127;
int a3=127;
Integer b1=128;
Integer b2=128;
int b3=128;
System.out.println(a1==a2);
System.out.println(a1==a3);
System.out.println(b1==b2);
System.out.println(b1==b3);
/*输出:true true false true
自动装箱时采用valueOf方法,由于127在静态数组的范围内,所以不是new的,
而128的两个引用是指向new出现对象的,所以第一个是true,第三个是false。
而包装类和基本数据类型比较时,只要数值是相等的,就相等。