讲讲SpringIOC和SpringAOP:
IOC控制反转是设计思想,就是将原本在程序中手动创建对象的控制权,交给Spring框架来管理,IOC容器是Spring用来实现IOC的载体,IOC容器其实就是一个Map,Map中存放的就是Spring框架管理的对象,IOC将对象之间的依赖关系交给IOC容器来管理,并且由IOC容器完成对象的注入,这样可以简化应用的开发,我们通过注解就可以使用对象
AOP就是面向切面编程,如果业务A和业务B现在需要一个相同的操作,传统方法我们可能需要再A,B中都加入相关操作代码,但应用AOP就可以只写一遍代码,让业务A和业务B共同使用这段代码,并且当AB都需要增加新的操作时,我们可以再不改动原代码的情况下添加新的业务逻辑实现,总体来说就是AOP把所有共用代码都分离出来,单独放置到某个类中进行管理,在具体运行的时候由容器进行动态植入这些公共代码
什么是spring mvc:
MVC是目前比较流行的框架,MVC即Model-view-controller
model:通常用来模型对象对数据库的存取操作
view:视图部分,通常是jsp,html等用来对用户展示的一部分
controller:控制层 通常用来处理业务逻辑,负责从视图读取数据,并向模型发送数据
当执行view的操作会触发controller去改变model,然后model去改变视图,这样的话三个部分代码都分开来写逻辑就会清晰很多
什么是MVVM:
MVVM是Model-View-ViewModel的简写,即模型-视图-视图模型.模型指的是后端传过来的数据,视图就是所看到的页面,我们可以将ViewMode看作是Model和View的连接桥,View可以通过事件绑定Model,Model可以通过数据绑定View,通过ViewModel可以实现数据和视图的完全分离
MVVM和MVC的区别:
MVC和MVVM区别其实不大,都是一种设计思想,主要就是MVC中Controller演变成MVVM中的ViewModel,从整体来看的话,MVVM比MVC精简很多,不仅简化了业务与界面的依赖,还解决了数据频繁更新的问题,不用再用选择器操作DOM元素.因为在MVVM中,View不知道Model的存在,Model和ViewModel也观察不到View,这种低耦合模式提高代码的可重用性
SpringCloud是什么:
Spring Cloud是一个微服务框架,Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由,集群状态管理等操作提供了一种简单的开发方式。Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用
口述冒泡排序:
首先循环遍历要排序的数组,在外循环下嵌套一个内循环,这个内循环的循环次数是数据的长度-1-外循环的i值,作用是每跑一趟就减少一次循环,然后用第一个数与第二个数进行比较,如果满足条件位置不变,不满足条件则替换位置,以此类推就可以求出最大值
PageHelper原理:
就是把page分页信息, 放到本地线程的变量里,然后实现mybatis拦截器接口,取出本地线程里的变量,获取分页信息并进行sql语句组装
cookie和session的区别:
- 数据存放位置不同:
cookie数据存放在客户的浏览器上,session数据放在服务器上。 - 安全程度不同:
cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。 - 性能使用程度不同:
session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。 - 数据存储大小不同:
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。
cookie存活时间是当前会话窗口,会话窗口关闭后就消失了
session默认存活时长是30分钟,会话窗口关闭后不会消失
Spring注解:
1.@Controller:用于标注控制器层组件
2、@Service:用于标注业务层组件
3、@Component : 用于标注这是一个受 Spring 管理的组件,组件引用名称是类名,第一个字母小写。可以使用@Component(“beanID”) 指定组件的名称
4、@Repository:用于标注数据访问组件,即DAO组件
5、@Bean:方法级别的注解,主要用在@Configuration和@Component注解的类里,@Bean注解的方法会产生一个Bean对象,该对象由Spring管理并放到IoC容器中。引用名称是方法名,也可以用@Bean(name = “beanID”)指定组件名
6、@Scope(“prototype”):将组件的范围设置为原型的(即多例)。保证每一个请求有一个单独的action来处理,避免action的线程问题。
由于Spring默认是单例的,只会创建一个action对象,每次访问都是同一个对象,容易产生并发问题,数据不安全。
7、@Autowired:默认按类型进行自动装配。在容器查找匹配的Bean,当有且仅有一个匹配的Bean时,Spring将其注入@Autowired标注的变量中。
8、@Resource:默认按名称进行自动装配,当找不到与名称匹配的Bean时会按类型装配。
为什么要使用SpringCloud:
在网站开发前期,项目面临的流量相对较少,单一应用就可以实现我们所需要的功能,从而减少开发,部署和维护的难度,这种对于简单的crud的数据访问框架ORM很重要
随着用户访问量不断提升,单一应用需要不断的增加服务器来应对,同时将单一的应用拆分成多个应用来处理提升效率,这种用于加速web前端加载的web框架起到了很大的作用
伴随着企业服务量的不断提升,MVC框架的部署导致系统的负重越来越多,无法满足并发的要求,系统间数据、报文的传输会出现频繁的丢失。这时候我们需要考虑服务化的架构(SOA)。SOA表示面向服务的架构。将应用根据不同的职责划分成不同的模块(类似于企业划分不同的事业部),不同的模块使用特定的调用协议(RPC)和接口进行交互。
这样使整个系统切分成很多单个组件服务来完成请求,当流量过大时通过水平扩展相应的组件来支撑,所有的组件通过交互来满足整体的业务需求。
SOA服务化的优点是,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。
服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
服务化架构是一套松耦合的架构,服务的拆分原则是服务内部高内聚,服务之间低耦合。
SpringCloud自动装配:
@EnableAutoConfiguration自动配置的魔法骑士就变成了:从classpath中搜寻所有的META-INF/spring.factories配置文件,并将其中org.springframework.boot.autoconfigure.EnableutoConfiguration对应的配置项通过反射(Java Refletion)实例化为对应的标注了@Configuration的JavaConfig形式的IoC容器配置类,然后汇总为一个并加载到IoC容器。