并发、分布式
CrazySnail_x
这个作者很懒,什么都没留下…
展开
-
深入理解synchronized锁升级过程
1.简介在Java高并发系统中,我们常常需要使用多线程技术来提高系统的运行速度,而多线程带来的数据安全问题就是我们必须要解决的问题。在Java中,可以使用synchronized关键字来实现多线程并发中的数据安全问题。这里简单介绍下synchronized的三种用法:修饰实例方法:以实例对象作为锁,进入同步代码前需要获得当前实例对象的锁 修饰类方法(static修饰的方法):以类对象为锁,进入同步代码块前需要获得当前类对象的锁 修饰代码块:需要指定一个锁对象(既可以是实例对象,也可以是)即原创 2020-08-02 23:34:41 · 10300 阅读 · 2 评论 -
自定义注解 + 拦截器 + Redis 实现限流
前言在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存:缓存的目的是提升系统访问速度和增大系统处理容量 降级:降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开 限流:限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理背景最近项目生产环...原创 2020-01-04 16:37:00 · 856 阅读 · 0 评论 -
并发,并行与串行的区别
并发(concurrency)和并行(parallellism)是:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以我认为它们最关键的点就是:是否是『同时』。并发就是同步的串行,一个任务执行完执行下一个任务;并行,在用同一个时刻执行多个线程;...原创 2019-12-20 18:03:54 · 10387 阅读 · 2 评论 -
IllegalStateException: Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true'
在使用 @Async 注解实现异步线程的时候,为了能够在同类中调用,使用AopContext获取类的实例,结果报错:调用如下:@GetMapping("test03") public void testAsync03() throws InterruptedException { log.info("=====03主线程执行start: " + Thread.cu...原创 2019-12-16 16:58:05 · 8488 阅读 · 2 评论 -
常见容错机制:failover、failfast、failback、failsafe
1.failover:失效转移Fail-Over的含义为“失效转移”,是一种备份操作模式,当主要组件异常时,其功能转移到备份组件。其要点在于有主有备,且主故障时备可启用,并设置为主。如Mysql的双Master模式,当正在使用的Master出现故障时,可以拿备Master做主使用2.failfast:快速失败从字面含义看就是“快速失败”,尽可能的发现系统中的错误,使系统能够按照事先设定好的...原创 2019-12-13 15:04:47 · 471 阅读 · 0 评论 -
分布式 常见的容错机制
常见容错机制:failover ,failsafe,failfase ,failback,forking,来源于阿里的定义。Failover 失败自动切换当出现失败,重试其它服务器,通常用于读操作(推荐使用)。 重试会带来更长延迟。Failfast 快速失败只发起一次调用,失败立即报错,通常用于非幂等性的写操作。 如果有机器正在重启,可能会出现调用失败 。Failsafe 失败安...转载 2019-12-13 15:00:17 · 1162 阅读 · 0 评论