自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 策略模式+工厂模式-项目实战

策略模式项目实战首先,我们可以定义一个接口并添加其基础的两个功能方法,在这里需要实现的是接口重试功能,故name()和dotraCall(),name方法主要是为了从工厂中获取指定的Bean实例,dotryCall()是为了执行我们的接口重试功能,下面看看具体的实现逻辑。定义接口定义工厂 (***我们需要在项目初始化时加载bean,所以这里需要将方法和工厂Map都定义成static类型)在对应的功能类上使用init方法(@PostConstruct:实现在项目初始化时自动执行该方法),使用Cha

2023-06-25 11:40:09 229

原创 CountDownLatch 和 CyclicBarrier

1,CountdownLatch适用于所有线程通过某一点后通知方法,而CyclicBarrier则适合让所有线程在同一点同时执行 2,CountdownLatch利用继承AQS的共享锁来进行线程的通知,利用CAS来进行–,而CyclicBarrier则利用ReentrantLock的Condition来阻塞和通知线程。

2024-03-13 23:29:54 1497 2

原创 CAS深入理解

我们的CAS虽然解决了原子性,避免了锁的不必要开销。但是还是存在三个问题。第一个问题就是自旋时间长开销大!有时候自旋时间过长,消耗CPU资源,如果资源竞争激烈,多线程自旋长时间消耗资源。所以我们通过具体场景来选择加锁还是通过CAS来解决,CAS是适用于多读的环境的,如果是大量读写的操作的话,还是加锁吧!第二个问题就是我们的ABA问题!在上面已经具体介绍了,以及给上了解决方法。第三个问题就是我们的CAS只能保证一个共享变量的原子操作。也就是说我们只能对一个变量进行赋值,不能同时更新多个。

2024-01-11 14:50:37 1541

原创 线上分布式锁问题排查

1.由于在进行lock操作时,会设置一个时间,当你在完成lock后,里面的业务代码执行时间大于lock时间时,进行unlock,会抛出该异常。2.多线程竞争的问题,当第一个线程完成lock,此时并未 unlock,如此,第二个线程尝试获取锁,并进行lock操作,会抛出该异常。在lock或unlock前,判断下状态合法性即可,而非直接进行加锁解锁操作。为什么会有这样的问题,主要可能原因有两个。线上分布式锁问题排查。

2023-12-28 15:44:06 355 1

原创 个人mysql处理笔记

mysql处理笔记

2023-12-18 13:53:56 341 1

原创 Feign源码解析

在之前简单写了一个模拟远程调用的文章,所以对Feign的底层原理产生了兴趣,在工作之余看了一下Feign的相关源码,所以整理了这篇文章,记录一下这些天的学习心得。在看Feign源码时,我们最先从Feign的注解出发,@EnableFeignClients是我们熟悉的开启Feign的注解。

2023-12-09 22:49:23 1647

原创 SpringCloud-模拟远程调用

在公司参与企微项目开发,需要频繁调用第三方企微接口,这时,不想去写Http代码,不要问为什么,就是懒,所以想着换种方式去实现http调用,这时,我们项目技术经理就出现了,告诉我可以通过Fegin调用去实现,因为fegin的远程调用实质上是模拟http请求,操作其实很简单。使用url去指定域名,path指定路径,mapping中写具体路径,name随意,调用时可能会报空,但是不影响功能,一看还是很简单,上线啦。

2023-11-14 14:14:55 26 1

原创 微信事件接收回调处理 反射 责任链模式 策略模式

通过反射,责任链模式,策略模式 等去处理微信事件接收

2023-11-12 19:10:31 121 1

原创 AOP-项目实战

项目需求:由于系统由多方公司联合开发,其他公司的相关接口可能偶尔网络不通,或者处于调试阶段,导致我方开发人员由于外部接口错误从而无法相关模块的开发,这里就可以使用Aop+自定义主键去实现接口拦截,从而返回正确响应参数。开启,有需要的话也可以关闭,pointCut()指定该切面的作用域,这里是用于注解,around()为处理接口拦截的具体业务。首先,我们可以自定义一个注解,这里的jsonFilePath用来指定文件(该文件包含正确的返回信息)的存放位置。

2023-06-26 11:23:50 158 1

空空如也

空空如也

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

TA关注的人

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