JAVA关键词汇
一: java
记录java项目中的关键词汇
1.1 HandleInterceptor拦截器
SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对请求进行拦截和处理。
- preHandle:在业务处理器处理请求之前被调用。预处理,可以进行编码、安全控制、权限校验等处理;
- postHandle:在业务处理器处理请求执行完成后,生成视图之前执行。后处理(调用了Service并返回
- ModelAndView,但未进行页面渲染),有机会修改ModelAndView (这个博主就基本不怎么用了);
afterCompletion:在DispatcherServlet完全处理完请求后被调用,可用于清理资源等。返回处理(已经渲染
单个实现类的执行顺序
preHandler -> Controller -> postHandler -> model渲染-> afterCompletion
1.2 instanceof
用来在运行时指出对象是否是特定类的一个实例,返回布尔类型
if (anObject instanceof String){
}else{
}
1.3 分布式跟踪技术
1.3.1 Dapper
- Dapper:大规模分布式系统的跟踪系统,帮助理解系统行为,用于分析性能问题,
1.3.2 Sleuth框架
用于跟踪服务的调用过程
Sleuth借鉴了Google Dapper的设计,先了解两个概念
- Trace 表示整个跟踪过程,从用户发起请求到最终的响应。一次跟踪包括多个跨度,这些跨度以树状结构进行保存。
- Span:跨度,表示一次调用的过程,一次跟踪包含多次调用过程。假设用户向A服务发起请求,A服务又要调用B服务,那么此时将会产生两个跨度。用户调用A服务、A服务调用B服务。
1.3.3 RPC
- RPC(Remote Procedure Call Protocol)–远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议
- RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。
1.3.4 Zipkin
- Zipkin是一个分布式跟踪系统,主要用于收集、管理微服务产生的数据。Zipkin的设计基于Google Dapper,在实际用时,我们需要让各个微服务Zipkin服务器报告过程数据。
- 对于Spring Cloud来说,已经提供了几个模块来实现数据报告功能,仅需要加入依赖,以及简单配置,即可实现向Zipkin“写入”数据
1.4 Thymeleaf
- Thymeleaf是一个流行的模板引擎,
- 页面模板技术
- Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板
传统的Spring WEB技术,使用JSP页面技术,spring boot 已不推荐,spring boot 支持以下页面模板语言
- Thymeleaf
- FreeMarker
- Velocity
- Groovy
- JSP
二:注解
2.1 @Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标记
三:理论
3.1 CAP理论
CAP理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
- 一致性:即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致,所以,一致性,说的就是数据一致性。
- 可用性:服务一直可用,而且是正常响应时间。对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应。所以,一般我们在衡量一个系统的可用性的时候,都是通过停机时间来计算的。
- 分区容错性:分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。简单点说,就是在网络中断,消息丢失的情况下,系统如果还能正常工作,就是有比较好的分区容错性。
假设在N1和N2之间网络断开的时候,有用户向N1发送数据更新请求,那N1中的数据V0将被更新为V1,由于网络是断开的,所以分布式系统同步操作M,所以N2中的数据依旧是V0;这个时候,有用户向N2发送数据读取请求,由于数据还没有进行同步,应用程序没办法立即给用户返回最新的数据V1,怎么办呢?
有二种选择
- 第一,牺牲数据一致性,保证可用性。响应旧的数据V0给用户;
- 第二,牺牲可用性,保证数据一致性。阻塞等待,直到网络连接恢复,数据更新操作M完成之后,再给用户响应最新的数据V1。
这个过程,证明了要满足分区容错性的分布式系统,只能在一致性和可用性两者中,选择其中一个。