Java基础(3)

nginx的三种负载均衡策略:1.轮询策略 2.权重策略 3.ip hash策略

轮询策略:根据配置文件的顺序依次访问

权重策略:根据设定的权重大小 挑选哪台服务器优先访问

inphash策略:iphash策略怎么实现ip与用户之间的绑定的?

答;他是根据IP的方式进行hash计算,hash计算完了然后对数据进行求模,求模得到的结果与后台服务器进行绑定,这样用户每一次进行访问都能访问到固定的服务器

iphash算法的弊端:
1.由于hash计算不能保证均匀分布,所以可能出现负载不均的现象

2.将用户数据存储到对象服务器中,如果服务器宕机则直接影响关联用户

nginx是什么 ,是干什么用的?

nginx是一个轻量级,高性能的,http和反向代理服务器,其特点是占用内存少并发能力强

主要是用来反向代理和负载均衡

谈一下负载均衡和

反向代理

1.反向代理介于用户和目标服务器之间

2.用户的资源从反向代理服务器中获取

3.用户不清楚正式的服务器到底是谁,保护了服务器的信息,称为服务器代理端

谈一下正向代理

1.正向代理服务器介于用户和目标服务器之间

2.用户的资源从正向代理服务器中获取

3.服务器不清楚是谁访问的服务器,以为是代理服务器访问的称之为客户端代理

hash的本质是函数

负载均衡:访问量高时,可以让服务器尽量分担压力

ssm框架

spring框架:整个服务器负责”宏观调控“的(主导),负责整合其他的第三方框架

springMVC框架:主要负责前后端数据的交互

springbatis框架/MybatisPlus框架:持久层框架,简化了jdbc的操作数据库的方式提高效率

springBoot框架:/工具 SpringBoot采用了一种更加简单的方法封装了之前的框架让程序更加简单

springcloud是一个基于springBoot实现的服务治理工具包,在微服务架构中用于管理和协调服务的

他的五大组件:Eureka、Ribbon、Feign、Hystrix、Zuul

微服务:就是把一个单体项目拆分成多个微服务,每个微服务可以独立技术选型,独立开发,独立部署,独立运维,并且多个服务相互协调相互配和最终完成用户的价值

什么是事务?

事务是一个逻辑单元执行的一些列操作,一个逻辑单元必须有四个属性,称为ACID(原子性,持久性,隔离性,一致性)属性

数据库有几种隔离级别?

串行化,可重复读,读已提交,读未提交

mybatis工作基本流程(简化jdbc)

1.读取配置文件,配置文件包含数据库连接信息和mapper映射文件,

2.有了这些信息就能创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行时建立起来,程序结束时消亡

3.SqlSessionFactory建立SqlSession,目的执行sql语句,sqlSession是过程级,一个方法中建立一旦结束应该关闭

4.当用户使用mapper.xml文件中配置的方法时,mybatis首先会解析sql的动态标签,为对应的数据库sql语句的形式,并将其封装进mapperStatemeny对象,然后通过executor执行器将sql注入到数据库执行,并返回结果

5.将返回的结果通过映射,包装成Java对象

MVC(Model模型、View视图、Control控制层),将软件进行分层达到松耦合的效果

springMvc的工作流程

1.客户端发送请求到DispacherServlet(前端控制器)(迪斯Dis破森斯pacher丝我赖特Servlet   迪斯破森斯丝我赖特)

2.由DispacherServlet前端控制器查询HanderMapping(处理器映射器)

3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成),一并返回给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(解析)进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet(前端控制器)响应用户。

SpringMVC严格上来说是一种设计思想而不是设计模式,其底层采用反射的机

mvc简化----

1.客户端发送请求到前端控制器,

2.前端控制器收到请求调用处理器映射器,

3.处理器映射器找到具体的处理器   (生成处理器对象和处理器拦截器(如果有就生成))返回给前端控制器,

4.前端处理器调用处理器适配器,

5.处理器控制器经过适配调用具体的处理器Controller  也叫后端控制器,

6.后端控制器执行完成返回视图解析器,

7.处理器适配器将后端控制器执行结果视图解析器返回给前端控制器,

8.前端控制器将模型和视图返回给视图解析器,

9.视图解析器返回具体的解析,

10.前端控制器根据解析进行视图渲染(将模型填充到试图),

11.前端控制器响应用户

(客户端,前端控制器,处理器映射器,具体的处理器,返回前端控制器,调用处理器适配器,调用具体的后端控制器,返回视图解析器,处理器适配器将后端控制器执行结果视图解析器返回给前端控制器,将模型和视图返回给视图解析器,返回具体解析,前端控制器进行渲染,返回浏览器响应用户)

js是一门设计对象和事件驱动的语言,通常用来提升页面和用户的交互性

html超文本标记语言实现页面展现,形成静态网页

css全称叫做层叠样式表(stylesheet),是用来修饰html的一门技术,增强网页的展示能力

jQuery是一款免费的,免费开源的js函数库,主要是简化js代码

vue是一个基于mvvm设计模式的渐进式(融合)的前端js框架,基于此框架可以让客户端的操作更简单

tomcat服务器是一个免费的开放源代码的wab应用服务器,属于轻量级服务器(软件服务器)

为什么要做单点登录设计?(业务简化。代码复用,不需要每个代码都登录一次)

你知道那些sso系统的解决方案?(基于用户登录状态信息的存储进行方案设计)

Redis 简介(分布式内存数据库 非关系行数据库)

为什么使用Redis缓存(为了解决分布式系统下数据缓存的问题)

什么是跨越?浏览器解决Ajax时。要求浏览器的网址,与ajaxd的请求的网址,必须满足三要素

1.协议相同

2.端口号相同

3.域名相同

可以简化get的提交数据(/10/100)

restful方式获取请求参数:通过{}绑定地址中的参数的位置+注解获取{???}的值

1.spring的优势

通过spring的ioc特性,将对象之间的依赖关系交给了spring控制,方便了解耦。简化了开发

通过了spring的AOP特性,对事务的模块进行集中,实现事务。日志。权限的控制

spring的DI注入:在程序运行期间由容器动态的将某个依赖关系注入到组件之中

提供了对其他优秀开源框架的集成支持

springMvc的优势:

springMvc是使用了Mvc设计思想的轻量化级的web框架对web层进行解耦使我们开发更简洁

mybatis的优势是对jdbc的封装,mybatis消除了几乎所有的jdbc的代码和手工设置以及结果集的检索。mybatis使用简单的xml文件或注解用于配置和原始映射,将jiava和普通的pojo(普通的java对象)映射成数据库的记录

Maven项目对象模型(POM):管理项目的构建,报告和文档的项目管理工具软件

Maeven:组成部分:1.中央仓库 2. 镜像仓库 3.本地仓库

spring框架:是针bean的生命周期进行管理的的轻量级容器

bean:spring容器管理的对象就叫bean

 生命周期: 对象创建/对象的初始化/对象执行业务逻辑/对象销毁

jdbc的过程

1.注册驱动2.获取数据库连接3.获取传输器4.执行sql5.解析结果集6.释放资源

sentinel:是面向分布式服务框架的轻量级流量控制框架     流量控制      熔断降流        系统负载保护         多个方法来维护系统的稳定性

流量控制(flow control), 其原理是监控应用的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。.

熔断降级就可以解决这个问题,当检测到链路中某个资源出现不稳定的时候,则对这个资源进行限制,迅速地结束这个请求,避免影响到其他资源,导致级联故障

Sentinel核心分为两个部分:

核心库(Java 客户端):能够运行于所有 Java 运行时环境,同时对Dubbo /Spring Cloud 等框架也有较好的支持。

控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行。

Sentinel是如何对请求进行限流的?(基于sentinel依赖提供的拦截器)

你了解哪些限流算法?(计数器、令牌桶、漏斗算法,滑动窗口算法,…)

Sentinel 默认的限流算法是什么?(滑动窗口算法)

你了解sentinel中的阈值应用类型吗?(两种-QPS,线程数)

Sentinel的限流规则中默认有哪些限流模式?(直连,关联,链路)

Sentinel的限流效果有哪些?(快速失败,预热,排队)

何为降级熔断?(让外部应用停止对服务的访问,生活中跳闸,路障设置-此路不通)

什么要进行熔断呢?(平均响应速度越来越慢或经常出现异常,这样可能会导致调用链堆积,最终系统崩溃)

Sentinel中限流,降级的异常父类是谁?(BlockException)

entinel熔断降级策略有哪些?(慢调用比例、异常比例、异常数)

如何理解热点数据?(访问频度比较高的数据,某些商品、谋篇文章、某个视频)

热点数据的限流规则是怎样的?(主要是针对参数进行限流设计)如何理解sentinel中的系统规则?(是对所有链路的控制规则,是一种系统保护策略)

Sentinel的常用系统规则有哪些?(RT,QPS,CPU,线程,Load-linux,unix)
Sentinel系统保护规则被触发以后底层会抛出什么异常?(SystemBlockException)
 

热点规则的限流模式只有QPS模式(这才叫热点)


mybatis的基本工作流程:
1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件。
2.有了这些信息就能创建SqlSessionFactory,SqlSessionFactory的生命周期是程序级,程序运行的时候建立起来,程序结束的时候消亡
3.SqlSessionFactory建立SqlSession,目的执行sql语句,SqlSession是过程级,一个方法中建立,方法结束应该关闭
4.当用户使用 mapper.xml文件中配置的方法时,mybatis首先会解析sql动态标签为对应数据库sql语句的形式,并将其封装进MapperStatement对象,然后通过executor执行器将sql注入数据库执行,并返回结果。
5.将返回的结果通过映射,包装成java对象。  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值