高性能队列——Disruptor

背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Mart
2021年06月08日 484次浏览

mybatis批量更新语句

mysql 实现批量 可以用点小技巧来实现:UPDATE yoiurtable SET dingdan = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 ENDWHERE id IN
2021年06月07日 555次浏览

线程池之Executors线程池工具类

Executors: 对 ThreadPoolExecutor和ScheduledThreadPoolExecutor 封装的工具类,方便创建线程池。但是《阿里巴巴Java开发手册》中有要求:【强制】线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样
2021年06月06日 412次浏览

用volatile的视角,来打开JMM内存模型

灵魂拷问开始】面试官:Java并发这块了解的怎么样?说说你对volatile关键字的理解?面试官:能不能详细说下什么是内存可见性,什么又是指令重排序呢?面试官:volatile怎么保证可见性的?多个线程之间的可见性,你能讲一下底层原理是怎么实现的吗?面试官:volatile关键字是怎么保证有序性的?
2021年06月06日 319次浏览

二叉树之前序遍历,中序遍历,后序遍历

前序遍历前序遍历(DLR),是二叉树遍历的一种,也叫做先根遍历、先序遍历、前序周游,可记做根左右。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。若二叉树为空则结束返回,
2021年06月06日 310次浏览

装饰器模式

装饰器动态地给一个对象添加一些额外的职责。就增加功能来说,相比生成子类更为灵活。装饰器(Decorator)模式,是一种在运行期动态给某个对象的实例增加功能的方法。我们在IO的Filter模式一节中其实已经讲过装饰器模式了。在Java标准库中,InputStream是抽象类,FileInputStr
2021年06月05日 317次浏览

设计模式之适配器模式

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式是Adapter,也称Wrapper,是指如果一个接口需要B接口,但是待传入的对象却是A接口,怎么办?我们举个例子。如果去美国,我们随身带的电器是无法直接使用的,因为美国的插座标准和中国不
2021年06月05日 338次浏览

spring之事件驱动

谈到Spring 事件驱动模型,我想大家都不陌生,事件驱动模型,通常也可以说是观察者设计模式,对观察者设计模式不熟悉的朋友可以看我之前写的笔记,设计模式java语言实现之观察者模式,在java事件驱动的支持中,EventBus做移动端开发的朋友应该都比较了解,其实,java本身也自带了对事件驱动的支
2021年06月05日 339次浏览

JMH实践-代码性能测试工具

概述JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件JMH比较典型的应用场景有:想准确的知道某个方法需要执行多长时间,以及执行时间和输入之间的相关性;对比接口不同实现在给定条件下的吞吐量;查看多少百分比的请求在多长时间内完成;基本概念模式Throu
2021年06月04日 617次浏览

常见容错机制:failover、failfast、failback、failsafe

1.failover:失效转移Fail-Over的含义为“失效转移”,是一种备份操作模式,当主要组件异常时,其功能转移到备份组件。其要点在于有主有备,且主故障时备可启用,并设置为主。如Mysql的双Master模式,当正在使用的Master出现故障时,可以拿备Master做主使用2.failfast
2021年06月01日 462次浏览