时序数据库是用于存放 时序数据 的数据库,而时序数据指基于时间的一系列数据,可以揭示数据的趋势性和规律性,对于大数据分析有重要的意义
时序数据库支持快速写入、持久化,以及多维度的聚合查询等,相比传统的数据库,时序数据库记录了所有的历史数据,在查询上也会带上时间作为过滤条件
SPATIAL索引
的表的隔离级别 Parallel Scavenge + Serial Old
i++
的JVM汇编指令是 iload => iinc => istore
,执行顺序为:
++i
的JVM汇编指令是 iinc => iload => istore
,执行顺序为:
即 i++
会先把i的值加载到操作数栈,所以语句中使用的是自增前的值,而 ++i
会先对i自增后在加载到栈顶,所以使用的是自增后的值
@Version注解是用于检测并发修改操作的,当发生这种情况时会抛出一个事务异常
@Version是基于乐观锁原理(版本号)保证字段的并发修改安全性,如果乐观锁更新失败会抛出 ObjectOptimisticLockingFailureException
异常
在ThreadPoolExecutor中,其类变量 ctl
的高三位代表线程池状态:
terminated
方法来终结线程池 terminated
方法结束后线程池终结 状态的转换通过以下方式:
将一个对象的内容按以下格式存储为二进制文件:
建造者模式是将多个简单的对象一步步构建成一个复杂的对象,将复杂对象的 构建 和 表示 相分离,使得同样的构建过程可以创建不同的表示
通过建造者模式,可以统一流程化的装配过程,相比于工厂模式,建造者模式更关注于零件装配的顺序
当需要创建复杂对象时,且内部变化不复杂时,可以使用建造者模式,更加精细地控制对象建造过程,同时将对象本身与对象的创建过程解耦,让客户端不需要知道内部组成的细节
一般地,我们理解的synchronized属于重量级锁,在其下JDK提供了两种更轻量级的锁,分别是偏向锁和轻量级锁:
Lock Record
的空间,用于存储锁对象的 Mark Word
的拷贝,然后尝试使用CAS操作将对象的 Mark Word
指向 Lock Record
,如果更新成功,则线程获取同步锁,并将锁标志位改为“00” 锁膨胀指的是,一开始使用偏向锁来进行同步,如果有其他线程进入同步块,则锁膨胀为轻量级锁,在轻量级锁的情况下,如果CAS更新失败,则锁膨胀为重量级锁
偏向锁保证了单线程的执行效率,轻量级锁保证了多线程但是几乎没有竞争的情况下的效率
将多次连接在一次的加锁和解锁操作合并为一次,扩展为一个更大的锁
对于一些不可能存在共享数据竞争的锁进行消除
Innodb引擎会监控对表上索引的查找,如果观察到建立hash索引会带来性能的提升,就会建立hash索引,称为 自适应哈希
自适应哈希是通过 缓冲池的B+树 构造而来,所以建立的速度很快,而且不需要为整张表建立索引
通过 SHOW ENGINE INNODB STATUS
可以查看索引的使用情况
~ and 0 <> (select count(*) from _table) ~ and [num] < (select count(*) from _table) ~ and 1=(select count(*) from _table where len(_name) > 0) ~ and 1=0 or [condition]
如果一个索引包含所有需要查询的字段的值,搜索时只需扫描索引,而无需全表扫描,则称为覆盖索引
在explain的extra列会显示 using index
,而不是 using where