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