谈谈你对spring的理解
什么是spring 首先spring是一个轻量级的开源胶水框架,它的宗旨是让原有的技术更加容易使用,所以它能够很好的整合其它框架,它是为了解决企业级开发的复杂度问题也就是耦合度问题,它是通过以下2点来解决系统的耦合度问题
- spring是通过ioc控制反转这个容器实现了依赖注入,通过依赖注入来控制对象的生命周期,解除了我们程序员和对象管理之间的耦合,也解除了模块之间的耦合
- aop 面向切面编程,首先我们可以把代码分为 主业务代码和系统业务代码,主业务代码的复用性很低 ,逻辑联系紧密,但是系统业务逻辑代码独立性很高 spring通过aop把大部分的系统业务代码通过动态代理统一“织入”,而不用我们手动去编写这些代码,使得系统业务代码和主业务代码之间解耦
以上就是我对spring的理解
谈谈你对mvc模式和Springmvc的理解
MVC,即 Model 模型、View 视图,及 Controller 控制器。
View:视图,为用户提供使用界面,与用户直接进行交互。
Model:模型,承载数据,并对用户提交请求进行计算的模块。其分为两类,一类称为数据承载 Bean,一类称为业务处理 Bean。所谓数据承载 Bean 是指实体类,专门用户承载业务数据的,如 Student、User 等。而业务处理 Bean 则是指 Service 或 Dao 对象, 专门用于处理用户提交请求的。
Controller:控制器,用于将用户请求转发给相应的 Model 进行处理,并根据 Model 的计算结果向用户提供相应响应。
springmvc 是对mvc模式的封装它是围绕着DispatcherServlet设计的,它处理所有的http响应和请求,它的执行过程分是
1、用户发送请求至前端控制器DispatcherServlet,DispatcherServlet是spring项目的入口
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter处理器适配器
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体View
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
谈谈你对mybaties的理解
MyBatis是一个第一类持久层框架,支持自定义SQL,存储过程和高级映射。MyBatis几乎消除了所有JDBC代码和手动设置参数。MyBatis可以使用简单的XML或注解来映射Map和Java POJO(Plain Old Java Objects)到数据库记录。
在 XML 文件中配置 SQL 语句,实现了 SQL 语句与代码的分离,给程序的维护带来了很大便利。
因为需要程序员自己去编写 SQL 语句,程序员可以结合数据库自身的特点灵活控制 SQL 语句,因此能够实现比 Hibernate 等全自动 ORM 框架更高的查询效率。以上就是我对mybaties的理解
动态 SQL,即通过 MyBatis 提供的各种标签对条件作出判断以实现动态拼接 SQL 语句。
谈谈你对微服务的理解
微服务是一种编程思想,它把功能分解到各个离散的服务中来实现对解决方案的解耦,从形式上来讲我觉得微服务也就是同一类docker容器的集合,它的开发方式是分布式开发,它主要要解决以下4个问题
- 第一: 服务那么多 客服端如何去访问
我们 一般在N个服务和UI之间设置一个api网关,提供统一的服务入口,方便访问,并且可以聚合后台服务, - 第二:服务间如何通信
一般有2种通信方式 同步调用和异步调用
同步调用又可以分为RESTAPI 也就是HTTP 通信和RPC (远程过程调用) 我们一般是对外REST 对内RPC
异步调用可以是消息队列 - 服务的治理
其实就是服务的注册与发现 ,我们一般通过zookeeper去管理这些服务 - 服务挂了怎么办
为了防止服务挂了我们一般采用以下方法来应对
重试机制
限流机制
熔断机制
负载均衡
降级机制
以上就是我对微服务的理解
谈谈你对springboot的理解
springboot是一个新型java企业级开发标准,springboot赋予了java开箱即用的特性 它对很多主流框架无配置集成,无配置不是没有配置 而是springboot帮我们按照约定优于配置的理念配置好了,springboot项目可独立运行,无需外部依赖 Servlet 容器,所以springboot极大地提高了开发、部署效率,以上就是我对springboot的理解
谈谈你对tcp协议的三次握手和四次挥手的理解
TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这个端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字
那什么是三次握手呢?
最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,客户端先向服务端发送一个报文请
求连接,然后服务端接收到这个包后返回一个报文给客户端此时是不能携带数据过去的 ,然后客户端收到报文后,又向服务端发送一个报文并且此时可以携带数据这就是三次握手
那什么又是四次挥手呢
首先客户端向服务端发送一个解除连接的报文 第一次挥手
然后服务端收到报文,并返回一个报文告诉服务端 我已经知道了,此时tcp连接处于一个半连接状态即客户端不能向服务端发数据了,但是服务端向客户端发数据,客户端还是要收的
然后服务端也发送一个报文给客户端 告诉它我也要断开了
然后客户端收到信息,给服务到发送一个报文,连接真正的关闭‘
以上就是我对三次握手,4次挥手的理解