提高锁性能的几种方式
介绍了《实战java高并发》中介绍的几种提高锁性能的几种方式
使用JMH进行性能测试
介绍了性能测试工具JMH的基本使用
JDk并发容器
介绍了JDK的一些常用并发容器(线程安全)
分而治之:Fork/Join框架
介绍了java的Fork/Join框架
多线程之同步控制
总结了《实战java高并发》中关于多线程同步控制的内容
接口幂等性
背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。
例如:
前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。
我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;
发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;
创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。
等等很多重要的情况,这些逻辑都需要幂等的特性来支持。
幂等性概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。
在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。
这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数.
更复杂的操作幂等保证是利用唯一交易号(流水号)实现.
我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的
技术方案1. 查询 ...
分布式事务解决方案
分布式
Springboot事务失效的原因和解决方案
介绍了自己遇到的springboot中@Transactional事务注解以及其失效的原因及解决方案
使用 Apache 的 FastDateFormat 代替 JDK 的 SimpleDateFormat,提升性能
SimpleDateFormat 的问题在 Java 中,格式化日期通常使用 SimpleDateFormat 这个类(JDK提供的)。
我们知道,SimpleDateFormat 是线程不安全的,SimpleDateFormat在对时间进行格式化的方法format中,会先对calendar对象进行setTime的赋值,若是有多个线程同时操作一个SimpleDateFormat实例的话,就会对calendar的赋值进行覆盖,进而产生问题。。
1234567891011121314public final String format(Date date) { return format(date, new StringBuffer(), DontCareFieldPosition.INSTANCE).toString();}// Called from Format after creating a FieldDelegateprivate StringBuffer format(Date date, StringBuffer toAppendTo, Field ...
springboot-定时任务Schedule
前言
在日常项目运行中,我们总会有需求在某一时间段周期性的执行某个动作。比如每天在某个时间段导出报表,或者每隔多久统计一次现在在线的用户量。在springboot中可以有很多方案去帮我们完成定时器的工作,有Java自带的java.util.Timer类,也有强大的调度器Quartz,还有SpringBoot自带的Scheduled,今天主要介绍Scheduled和Springboot整合quartz。
Spring Schedule 实现定时任务Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解。 因为是Spring Boot 项目 ,要尽量避免使用XML配置的形式,因此主要说注解的形式。
三种定时方式演示代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344/** 1、fixedDelay控制方法执行的间隔时间,是以上一次方法执行完开始算起,如上一次方法执行阻塞住了,那么直到上一次执行完, 并间隔 ...