一、背景 1.1 传统Mybatis的弊端 1.1.1 场景描述 假设有两张表:一张商品表、一张订单表,具体表的字段如下: 现有如下需求: 分别根据id查询商品表和订单表所有信息 根据支付状态和通知状态查询订单表信息 对订单表增加一个订单状态,根据订单状态查询 ...
DelayQueue基本原理DelayQueue是一个没有边界BlockingQueue实现,加入其中的元素必需实现Delayed接口。当生产者线程调用put之类的方法加入元素时,会触发Delayed接口中的compareTo方法进行排序,也就是说队列中元素的顺序是按到期时间排序的,而非它们进入队列的顺序。排在队列头部的元素是最早到期的,越往后到期时间赿晚。 消费者线程查看队列头部的元素,注意是查 ...
2021-03-03 15:15 0 261 推荐指数:
一、背景 1.1 传统Mybatis的弊端 1.1.1 场景描述 假设有两张表:一张商品表、一张订单表,具体表的字段如下: 现有如下需求: 分别根据id查询商品表和订单表所有信息 根据支付状态和通知状态查询订单表信息 对订单表增加一个订单状态,根据订单状态查询 ...
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } ...
问题的引出: 传统的OOP程序经常表现出一些不自然的现象,核心业务中总掺杂着一些不相关联的特殊业务,如日志记录,权限验证,事务控制,性能检测,错误信息检测等等,这些特殊业务可以说和核心业务没有根本上 ...
Mycat原理 Mycat的原理并不复杂,复杂的是代码,如果代码也不复杂,那么早就成为一个传说了。Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实 ...
volatile是java语言中的一个关键字,常用于并发编程,有两个重要的特点:具有可见性,java虚拟机实现会为其满足Happens before原则;不具备原子性.用法是修饰变量,如:volatile int i. volatile原理 介绍其可见性先从cpu,cpu缓存和内存的关系入手 ...
随着 CoreOS 和 Kubernetes 等项目在开源社区日益火热,它们项目中都用到的 etcd 组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算时代,如何让服务快速透 ...
为了帮助卖家提高运营水平,卖家管理后台会展示一些访客、订单等趋势和指标数据,如PV,UV,转化率,GMV等; 这些指标的计算依靠前端埋点和订单详情等数据,其特点是数据量大,并有一定的实时性要求。 Druid本质是一个分布式时序数据库,其设计恰好满足这个场景: Historical数据 ...
堆这种数据结构应用场景很多,最经典的莫过于堆排序。堆排序是一种原地的、时间复杂度为O(nlogn)的排序算法。我们今天就来分析一下堆这种数据结构。 一、什么是堆 堆是一种特殊的树。只要满足以下两点,就称为堆。 堆是一个完全二叉树。 堆的每一个节点的值都必须大于等于(或小于等于 ...