框架/架构/协议

Spring框架

Spring框架:是一个轻量级的IOC和AOP容器框架,用来解决企业级应用程序开发中业务逻辑层和其他层之间的耦合问题。
Spring有6个模块:核心容器(Core Container)、AOP和设备支持、数据访问与集成、Web与远程调用、发送报文(Messaging)、测试(Test)。

IOC:即控制反转,将创建对象的控制权转移给Spring容器,由Spring的xml配置文件来创建各个实例和管理实例之间的依赖关系,降低耦合度。

Spring DI(依赖注入):
1.setter方法注入 (pojo类建立setter方法,xml建立bean标签下的property标签)
2.构造器注入 (pojo类建立构造器,xml建立bean标签下的constructor-arg标签)
3.自动装配 (pojo类上加@Component注解,引用注解加@Autowired)

AOP:即面向切面编程,通过预编译方式和运行期动态代理实现程序维护统一的一种技术。就是将那些与业务需求无关但会对多个对象造成影响的公共逻辑和行为抽取并封装成一个可重用的模块。减少重复代码,降低耦合度

AOP代理:AOP框架创建的对象,代理就是目标对象的加强。
SpringAOP的代理可以是JDK动态代理也可以是CGLIB代理,前者基于接口,后者基于子类。一般前者使用情况比较多。

AOP相关术语:
Aspect(切面):一个封装了公共逻辑代码的类
JointPoint(连接点):类中被拦截的方法
pointCut(切点):类中被实际增强的方法
Advice(通知/增强):方法执行前后要做的动作,有前置、后置、异常、最终、环绕增强
Target(目标对象):动态代理的目标对象
Weaving(织入):把增强用到目标对象上的过程(Advice——>Target)
Proxy(代理):一个类被织入增强后,产生的代理类

使用AOP的方式有哪些?
1.XML配置
2.XML+注解
3.纯注解

Spring 中Bean的作用域有哪些?

1.singleton(默认作用域,一对一)
2.prototype(一对多)
3.request
4.session
5.globalSession

SpringMVC框架

它是一个基于MVC架构的用来简化web应用开发的框架,是Spring的一个模块,无需中间整合层整合,属于表现层框架。

SpringMVC的运作流程:
1.客户发送请求到前端控制器DispatcherServlet
2.前端控制器收到请求后,调用处理器映射器HandlerMapping请求获取handler
3.处理器映射器根据具体url找到对应的处理器,生成处理器对象以及处理器拦截器一并返回给前端控制器
4.前端控制器通过处理器适配器HandlerAdapter调用处理器
5.执行处理器
6.返回ModelAndView对象给处理器映射器
7.处理器适配器返回ModelAndView对象给前端控制器
8.前端控制器将ModelAndView对象传给视图解析器ViewResolver进行解析
9.视图解析器解析后返回具体View
10.前端控制器对View进行渲染视图
11.前端控制器响应用户。

Mybatis框架?

是什么?
Mybatis是一个半ORM(对象关系映射)框架,内部封装了JDBC、加载驱动、创建连接等过程。使得开发者只需要关心如何而编写SQL语句,可以严格控制sql执行性能,灵活度高。

怎么做?
Mybatis主要使用XML或注解来配置和映射原生信息,将POJO映射成数据库中的记录,避免手写大量JDBC代码和手动设置参数以及获取结果集。

优点:
1.基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响
2.与JDBC相比,减少了50%以上的代码,还有不需要手动开关连接
3.可以很好的和数据库兼容
4.可以很好地和Spring集成

缺点:
1.当字段多、关联表多时,对开发人员的SQL编写功底有一定要求
2.因为SQL语句依赖于数据库,导致数据库移植性差,一旦更改数据库就会造成很大影响。

  • #{}和${}的区别是什么?

#{} 是预编译处理,Mybatis在处理时,sql语句会将#{}替换为 ?号,调用PreparedStatement的set方法来赋值,有效防止SQL注入,提高系统安全性
$ {}是字符串替换,Mybatis在处理时,sql会将${}替换为变量的值。

  • Mybatis的延迟加载:

Mybatis仅支持association关联对象和collection关联集合对象的延迟加载。association指的是一对一,collection指的是一对多。延迟加载的原理是使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法。

  • Mybatis的一级、二级缓存

一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当Session
flush 或close之后,该Session中的Cache被清空,默认打开一级缓存。

二级缓存:二级缓存与一级缓存机制相同,默认采用PerpeCache的HashMap本地缓存,不同在于其存储作用域为Mapper文件的namespcae,并且可自定义存储源,如EhCache。默认不打开二级缓存。

Mybatis-plus和Mybatis的区别

mybatis-plus和mybatis的区别:mybatis-plus支持mybatis的所有特性,而且还在基础上做了增强。

区别:

1.依赖少
2.损耗小
3.支持热加载
4.支持代码生成

1.mapper接口需要继承自BaseMapper接口
2.mapper接口不需要方法
3.业务接口需要继承IService接口
4.具体业务实现类要继承ServiceImpl类和实现业务接口

hibernate和mybatis的区别及特点?

hibernate:全自动、学习门槛高、复杂、数据库移植性强、维护性低
Mybatis:半自动、学习门槛低、简单、数据库移植性差、维护性强

  • hibernate有哪些查询方式?

HQL、QBC、SQL

Springboot框架

Springboot是用来简化应用开发的一种框架,是Spring家族中的一员。它简化了Spring众多框架中所需大量繁琐的配置文件(xml),去xml化。

微服务

微服务一种构建应用的架构方案。它与传统项目最大的区别就是可以拆分为多个小服务并作为核心独立运行。
常见的微服务架构有:Dubbo、Spring Cloud

  • 为什么微服务中要用网关?

网关=路由转发+过滤器

网关的优点:
1.每次要引入新服务的时候,在网关上配置就行了(可扩展性)
2.需要维护的时候,直接先停了服务,然后进行维护(可维护性)

Spring Cloud框架

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等

什么是WebService?

WebService是一个基于编程的web应用程序,包含的技术很多,具备开放和跨平台的特性。

依据WebService规范实施的应用之间,就算它们使用的语言和协议不同,也可以相互交换数据。

简述cookie与session的联系和区别?

区别:
1.cookie数据存放在客户端,session数据存放在服务端
2.单个cookie存放数据的大小不能超过4k,而session存放数据的大小超过5M
3.cookie的安全性没有session的高
4.当访问增多的时候,session比较消耗服务器性能。

联系:
session是通过cookie来工作的

RPC和RestFul的区别是什么?

相同点:都是网络交互的协议规范。通常用于多个微服务之间的通信协议。

RPC:也叫远程过程调用(Remote Procedure Call),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,通常用于Dubbo。

Rest:是一组架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或者设计就是RestFul,通常用于Spring Cloud。GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源

不同点:
1.RPC一般使用TCP协议,RestFul一般使用Http协议
2.RPC的性能相比RestFul的高
3.RPC灵活度低于RestFul

TCP与UDP的区别(传输层)

1:TCP面向连接,即发送数据前需要建立连接;UDP是无连接的,即发送数据前不需要建立连接。

2:TCP可靠稳定,能保证数据正确性;UDP不可靠不稳定,可能会发生丢包。

3:TCP传输速度慢,效率低;UDP传输速度快,效率高。

4:TCP是流模式,面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是数据报模式,面向报文,没有堵塞机制,因此网络出现堵塞不会使源主机的发送速率降低(对实时应用很有效,如IP电话,实时视频会议等)。

HTTP和HTTPS的区别(应用层)

1、HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
2、HTTP 是不安全的,而 HTTPS 是安全的
3、HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
4、HTTP 无法加密,而HTTPS 对传输的数据进行加密
5、HTTP无需证书,而HTTPS 需要CA机构颁发的SSL证书

GET和POST有什么区别?

1、数据传输方式不同:GET请求通过URL传输数据,而POST的数据通过请求体传输
2、安全性不同:POST的数据因为在请求主体内,所以有一定的安全性保证,而GET的数据在URL中,通过历史记录,缓存很容易查到数据信息
3、缓存性不同:GET请求是可以缓存的,POST请求是不可以缓存
4、无害性不同: 刷新、后退等浏览器操作GET请求是无害的,POST可能重复提交表单

SpringMVC 常用注解的作用

@Controller:用于定义控制器类

@ResponseBody:用于Controller的方法上,返回例如json格式的数据返回到前端,写入到HTTP response对象的body数据区。

@RequestBody:用于方法中的参数前面,作用是将前端传来的json数据转换为对象。

@PathVariable:用于获取路径参数

@RestController:是@Controller和@ResponseBody的合集

@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射

@ControllerAdvice:统一处理异常。

前端知识

Ajax:是一种用于局部页面的异步刷新技术。

Bootstrap:是一个web前端开发框架,简洁、直观、强悍

Angular JS:是一个前端框架,用来克服HTML在构建应用上的不足。特点是:模块化、自动化双向数据绑定、依赖注入等。常用指令有ng-model 、ng-repeat、ng-if 等

Vue:是一个用来构建用户界面的渐进式框架,特点是只关注视图层,采用自底向上增量开发的设计。

AngularJS和Vue的区别:
(1)Angular是mvvm框架,而vue是一个渐进式的框架,属于轻量级的框架
(2)Angular入门难,而vue简单易学
(3)Angular是在整个html页面下进行实例化,而vue需要一个el对象进行实例化
(4)Angular适合用于大型项目的开发,vue一般用于移动端的开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值