今天我们来聊一聊 MySQL 的 binlog 和 redo log。 redo log redo log(重做日志) 是 InnoDB 引擎特有的日志,处于引擎层,主要负责...
今天我们来聊一聊 MySQL 的 binlog 和 redo log。 redo log redo log(重做日志) 是 InnoDB 引擎特有的日志,处于引擎层,主要负责...
对象标记算法 对象回收前,需要标记其"死活",常用的对象标记算法主要包括引用计数算法和可达性分析算法。 引用 强引用 (Strongly Reference) 只要强引用还存...
一、AdaptiveSizePolicy简介 AdaptiveSizePolicy(自适应大小策略) 是 JVM GC Ergonomics(自适应调节策略) 的一部分。 如...
要学习Raft算法,强烈推荐一个网址: http://thesecretlivesofdata.com/raft/ 基本上述网址多看几遍,Raft算法就了解得七七八八了。 但...
线程池终止主要依靠以下2个命令: shutdown() shutdownNow() 首先看一下shutdown方法: shutdown advanceRunState 执行完...
ThreadPoolExecutor如何实现任务的提交和执行的呢? 首先,看一下ThreadPoolExecutor的Worker内部类。 Worker ThreadPool...
线程池架构 Java的线程池架构如下图所示: Executor接口 该接口只提供了一个execute方法,该方法用于已提交的Runnable任务对象,该接口提供了任务提交和任...
Semaphore是啥? 贴个官方解释: Semaphore用于限制可以访问某些资源(物理或逻辑的)的线程数目,其维护了一个许可证集合,有多少资源限制就维护多少许可证集合,假...
CyclicBarrier允许一组线程在到达某个栅栏点(common barrier point)互相等待,直到最后一个线程到达栅栏点,栅栏才会打开,处于阻塞状态的线程恢复继...
CountDownLatch是一个同步工具类,用来协调多个线程之间的同步。 CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个...
Condition定义了等待/通知两种类型的方法,当前线程调用这些方法时,需要提前获取到Condition关联的锁。 Condition对象由Lock对象(调用Lock的ne...
前言 ThreadLocal很多同学都搞不懂是什么东西,可以用来干嘛。但面试时却又经常问到,所以这次我和大家一起学习ThreadLocal这个类。 下面我就以面试问答的形式学...
上篇我们讲了Java的AQS详解1--独占锁的获取及释放,本篇接着讲共享锁的获取及释放。 加锁 共享锁加锁的方法入口为: tryAcquireShared(arg)尝试获取锁...
其实,很早之前就写过一篇浅谈Java的AQS,当时对AQS的运作机制有了大致的掌握,但可能源码还是没完全吃透,有些细节还是云里雾里。 最近又过了一遍AQS源码,觉得体悟更深了...
基础知识 线程切换代价 Java的线程是映射到操作系统的原生线程之上的,如果阻塞或唤醒一个线程就需要操作系统介入,需要在用户态和内核态之间切换,该切换会消耗大量的系统资源,因...
何为State 为实现增量计算和容错,Flink提出了State机制,本质上State就是用来存放计算过程中各节点的中间结果或元数据等,并提供Exactly-Once语义。 ...
一致性哈希算法(Consistent Hashing)最早在论文《Consistent Hashing and Random Trees: Distributed Cachi...
轮询算法分为简单轮询(Round-Robin)和加权轮询(Weighted-Round-Robin)。 简单轮询(Round-Robin) 简单轮询是最简单的一种负载均衡算法...
上篇我们已经把SpringApplication.run过程中SpringApplicationRunListener的加载及starting流程讲解完了,本篇我们接着往下跟...