自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 一致性哈希算法

一致性哈希的基本概念其实,一致性哈希算法也是使用取模的方法,只是,刚才描述的取模法是对服务器的数量进行取模,而一致性哈希算法是对2^32取模,什么意思呢?我们慢慢聊。首先,我们把二的三十二次方想象成一个圆,就像钟表一样,钟表的圆可以理解成由60个点组成的圆,而此处我们把这个圆想象成由2^32个点组成的圆,示意图如下: 圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2...

2018-03-31 17:51:22 133

原创 redis--常用命令

字符串命令字符串可以存储字符、整数,浮点数INCR key-name;将key-name存储的值加1DECR key-name;将key-name存储的值减一INCRBY key-name account;将key-name存储的值加accountDECRBY key-name account;将key-name存储的值减accountINCRBYFLOAT key-name a...

2018-03-27 23:02:37 164

原创 redis线程模型

前言Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。redis的多路复用选择...

2018-03-27 23:00:44 1451

原创 @ControllerAdvice @ExceptionHandler 全局处理 Controller 层异常

前言 通过@ControllerAdvice。我们可以将对于控制器的全局配置放置在同一个位置,注解了@ControllerAdvice的类的方法可以使用@ExceptionHandler,@InitBinder,@ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。@ExceptionHandler:用于全局处理控制器里面的异...

2018-03-26 13:02:55 1300

原创 Spring Aop

介绍在软件开发中,散布于应用中多处的功能被称为横切关注点(crosscutting concern)。通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的(但是往往会直接嵌入到应用的业务逻辑之中)。把这些横切关注点与业务逻辑相分离正是面向切面编程(AOP)所要解决的问题。如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对...

2018-03-25 23:05:55 222

原创 spring 事务管理

spring 事务接口spring的事务属于逻辑事务。不是物理事务。 Spring事务管理涉及的接口的联系如下: 事务管理器Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。 Spring事务管理器的接口是: org.springframework.transacti...

2018-03-25 16:04:36 170

原创 TCC事务特性

介绍TCC主要用来解决应用业务操作原子性的问题。 跨应用的业务操作原子性要求,其实是比较常见的。比如在第三方支付场景中的组合支付,用户在电商网站购物后,要同时使用余额和红包支付该笔订单,而余额系统和红包系统分别是不同的应用系统,支付系统在调用这两个系统进行支付时,就需要保证余额扣减和红包使用要么同时成功,要么同时失败。TCC 算法介绍Try:尝试执行业务。完成...

2018-03-25 11:07:02 276

转载 高并发系统 限流

前言在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹。降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开。限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或...

2018-03-24 21:42:46 549

转载 spring 拦截器配置

spring boot拦截器自定义拦截器Interceptor定义 方法 说明 preHandle 在实际的Handle执行前执行 postHandle Handle执行后视图渲染前执行 afterCompletion Handle执行且视图渲染完成后执行Spring为方便使用实现了HandlerInterceptorAd...

2018-03-23 17:55:11 276

原创 动态加载JSP的Class类

Tomcat动态加载JSP的Class类在项目中修改JSP文件时,tomcat不需要重启。 具体实现时:当tomcat监听到jsp文件发生变化时,新定义一个类加载器。重新加载此类。 一下介绍其简单实现:定义服务类public class Servlet { public void service(){ System.out.println("运行服...

2018-03-22 19:15:01 3050

原创 分布式追踪工具 Spring cloud sleuth

介绍spring cloud sleuth是用来解决分布式中服务的跟踪。span 和trace的图解如下: 实现:log实现在日志中打印traceId 通过ThreadLocal 、MDC进行实现。RestTemplate TraceId实现通过实现RestTemplate拦截器接口:ClientHttpRequestInterceptorprivate...

2018-03-18 22:46:55 715

原创 动态管理配置文件扩展接口EnvironmentPostProcessor

介绍SpringBoot支持动态的读取文件,留下的扩展接口org.springframework.boot.env.EnvironmentPostProcessor。这个接口是spring包下的,使用这个进行配置文件的集中管理,而不需要每个项目都去配置配置文件。这种方法也是springboot框架留下的一个扩展 举例实现EnvironmentPostProcessor...

2018-03-18 11:29:37 308

原创 MySql binlog 日志

binlog想必大家都不陌生,在主从复制或者某些情况下的数据恢复会用到。由于binlog是二进制数据,要查看一般都借助mysqlbinlog工具。binlog 的用途binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新(比如DELETE语句执行删除而实际并没有符合条件的数据)在mysql主从复制中就是依靠的binlog。binlog 与redo/undo...

2018-03-11 10:42:13 118

原创 服务的线性扩展

无状态的服务如何做线性扩展 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息 。有状态服务如何做线性扩展 有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的 ...

2018-03-08 23:07:34 3120

转载 X/Open DTP模型,两阶段提交,JTA接口定义

X/Open DTP模型 X/Open DTP(X/Open Distributed Transaction Processing Reference Model) 是X/Open 这个组织定义的一套分布式事务的标准,也就是了定义了规范和API接口,由厂商进行具体的实现。X/Open DTP 定义了三个组件: AP,TM,RMAP(Application Program):也就是...

2018-03-08 22:36:50 382

转载 spring aop类内部调用不拦截原因及解决方案

spring对应java web开发的同学来说,都不陌生,其中事务@Transactional在service层更是常常使用。aop类内部调用不拦截原因细心的同学也许早就发现当service中的某个没标注@Transactional的方法调用另一个标注了@Transactional的方法时,居然没开启事务。例如@Servicepublic class UserService {...

2018-03-07 22:46:49 1686

原创 Spring boot常用注解

@Configuration@Configuration 它就是JavaConfig形式的Spring Ioc容器的配置类 ,SpringBoot社区推荐使用基于JavaConfig的配置形式。一个标注了@Configuration的类 类似于 xml配置文件中的< beans>import org.springframework.context.annotation.Be...

2018-03-07 22:04:21 175

转载 spring 事务传播性

Required:必须有逻辑事务,否则新建一个事务,使用PROPAGATION_REQUIRED指定,表示如果当前存在一个逻辑事务,则加入该逻辑事务,否则将新建一个逻辑事务,如图所示; 在前边示例中就是使用的Required传播行为: 一、在调用userService对象的save方法时,此方法用的是Required传播行为且此时spring事务管理器发现还没开启逻辑事务,因此Spri...

2018-03-07 22:00:42 146

原创 SpringBoot Endpoint

介绍SpringBoot的Endpoint主要是用来监控应用服务的运行状况,并集成在Mvc中提供查看接口。内置的Endpoint比如HealthEndpoint会监控dist和db的状况,MetricsEndpoint则会监控内存和gc的状况。Endpoint的接口如下,其中invoke()是主要的方法,用于返回监控的内容,isSensitive()用于权限控制。public in...

2018-03-07 13:02:22 3521

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除