- 博客(6)
- 收藏
- 关注
原创 简单了解 重入锁 (ReentrantLock)的使用以及特点
重入锁使用类来实现,使用案例如下所示:重入锁与synchronized相比,有着明显的操作过程,开发必须手动指定何时加锁,注意,退出临界区的时候,必须释放锁,否则其他线程就没有机会访问临界区了。重入锁提供了无条件的、可轮询的、定时的以及可中断的锁获取操作。在这种情况下,一个线程连续获得同一把锁,这是被允许的,否则同一个线程就会在第二次获得锁的时候与自己产生死锁。注意:如果同一个线程多次获得锁,那么在释放锁的时候也必须释放相同的次数!如果释放的多了,就会得到一个异常;反之,则相当于线程还持有这个
2022-06-15 14:49:28
382
1
原创 如何避免Kafka的重复消费
从Producer和Consumer两个角度分析重复消费的问题。Producer端消息重复场景Producer的send()方法可能会出现异常,配合生产者参数retries>0,生产者会在出现可恢复异常的时候进行重试。若出现不可恢复异常的时候,配合send()的异步发送方式,则可能在回调函数中进行消息重发。上述均可能导致消息重复。解决方法Kafka的幂等性就是为了避免出现生产者重试的时候出现重复写入消息的情况。开启幂等性功能配置(该配置默认为false)如下:prop.put(Pro
2022-03-11 16:00:53
6517
2
原创 分布式简介及Dubbo简易demo
分布式什么是分布式?最早期的web项目都是单一架构,如果用户访问量过大,我们只能将项目部署在多台服务器上来提高并发量。但是这种模型有一些问题,后来演变成了垂直架构垂直架构:将项目拆分成多个不同的模块,各个模块之间互不关联(没有交互)。垂直架构中模块拆分过多的时候,各个模块之间避免不了交互,但是垂直结构并不支持交互,此时就出现了SOA(面向服务架构)SOA:SOA(面向服务架构)是一个架构思想,它的宗旨就是根据项目的服务完成架构的设计以及搭建,以服务为基础完成组件化和模块化。提供服务是项目的基本内容
2022-01-12 09:02:56
184
原创 SpringBoot整合Swagger2
Swagger2springboot整合swagger2在目前的开发模型中,前后端都是通过接口文档来进行沟通,一个好的接口文档可以减少成本、方便编程。但是在开发过程中,接口文档总是出现各种变化。例如文档设计不合理、甲方需求变更等,而维护起来很麻烦,所以我们可以使用swagger2来让接口更加规范以及更加容易维护。swagger2是一个Restful接口文档的在线自动生成以及测试的软件。导入swagger2的依赖 <!--swagger2页面支持--> <depen
2021-09-23 10:07:21
69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人