摘要: 按锁思想分类 悲观锁 优点:适合在写多读少的并发环境中使用,虽然无法维持非常高的性能,但是在乐观锁无法提更好的性能前提下,可以做到数据的安全性 缺点:加锁会增加系统开销,虽然能保证数据的安全,但数据处理吞吐量低,不适合在读书写少的场合下使用 乐观锁 优点:在读多写少的并发场景下,可以避免数据库加锁的 阅读全文
posted @ 2020-12-26 15:42 曹自标 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 事务的实现 redo log保证事务的持久性,undo log用来帮助事务回滚及MVCC的功能。 InnoDB存储引擎体系结构 redo log Write Ahead Log策略 事务提交时,先写重做日志再修改页;当由于发生宕机而导致数据丢失时,就可以通过重做日志来完成数据的恢复。 InnoDB首 阅读全文
posted @ 2020-12-25 23:33 曹自标 阅读(1621) 评论(0) 推荐(1) 编辑
摘要: 数据结构与对象 SDS SDS(simple dynamic string): 简单动态字符串 SDS定义: SDS与C字符串区别: C字符串并不记录自身的长度信息,SDS有len属性。 C字符串容易缓冲区溢出,SDS不会,SDS会先检查空间是否满足需要,不够扩展空间 SDS字符串可以减少修改字符串 阅读全文
posted @ 2020-12-24 22:52 曹自标 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 索引 查找一条数据的过程 先看下InnoDB的逻辑存储结构: 表空间:可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中。默认有个共享表空间ibdata1。如果启用innodb_file_per_table参数,需要注意每张表的表空间内存放的只是数据、索引和插入缓冲Bitma 阅读全文
posted @ 2020-12-24 15:14 曹自标 阅读(505) 评论(0) 推荐(1) 编辑
摘要: MySQL体系结构 连接池组件 管理服务和工具组件 SQL接口组件 查询分析器组件 缓冲组件 插件式存储引擎 物理文件 各存储引擎对比 InnoDB存储引擎 InnoDB存储引擎体系架构 InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责: 维护所有进程/线程需要访问的多 阅读全文
posted @ 2020-12-23 14:17 曹自标 阅读(179) 评论(0) 推荐(0) 编辑
摘要: ThreadPoolExecutor的参数解释 public class ThreadPoolExecutor extends AbstractExecutorService { public ThreadPoolExecutor(int corePoolSize, int maximumPoolS 阅读全文
posted @ 2020-12-21 17:00 曹自标 阅读(94) 评论(0) 推荐(0) 编辑
摘要: Java内存结构图 说明: 每个线程都会有一个局部变量 threadLocals,存放在各自线程栈帧局部变量表中,指向堆中的ThreadLocalMap实例对象 不同的线程在堆中对应不同的ThreadLocalMap实例对象 ThreadLocalMap的key是ThreadLocal实例对象 每个 阅读全文
posted @ 2020-12-21 14:16 曹自标 阅读(144) 评论(0) 推荐(0) 编辑
摘要: Semaphore Semaphore最主要功能特点,是控制同时访问特定资源的线程数量。 其源码实现就是在初始化时传入permits参数,紧接着调用AQS同步器setState方法,将内存中state值设为permits传入的参数值; 而当要同时访问的线程数, 大于state的值,即remainin 阅读全文
posted @ 2020-12-18 15:16 曹自标 阅读(103) 评论(0) 推荐(0) 编辑
摘要: ReentrantReadWriterLock 读写锁类图(截图来源https://blog.csdn.net/wangbo199308/article/details/108688148) state的设计 读写锁将变量state切分成两个部分,高16位表示读,低16位表示写 源码中将4字节(32 阅读全文
posted @ 2020-12-18 13:11 曹自标 阅读(323) 评论(0) 推荐(0) 编辑
摘要: synchronized synchronized的作用范围 public class SynchronizedTest { // 实例方法,方法访问标志ACC_SYNCHRONIZED,锁对象是对象实例 public synchronized void test1(){} // 静态方法,方法访问 阅读全文
posted @ 2020-12-17 22:08 曹自标 阅读(300) 评论(0) 推荐(1) 编辑