04 2020 档案
摘要:Hutool工具包中使用线程池的API是: ThreadUtil.execute() /** * 直接在公共线程池中执行线程 * * @param runnable 可运行对象 */ public static void execute(Runnable runnable) { GlobalThre
阅读全文
摘要:问题 CompletableFuture.runAsync() 返回 CompletableFuture<Void>对象,调用CompletableFuture.allOf(f1,f2).join() 是否能够阻塞主线程 结论 public static void main(String[] arg
阅读全文
摘要:一.相同点: join()和get()方法都是用来获取CompletableFuture异步之后的返回值 二.区别: 1.join()方法抛出的是uncheck异常(即未经检查的异常),不会强制开发者抛出, 会将异常包装成CompletionException异常 /CancellationExce
阅读全文
摘要:docker-compose: 是一个用于定义和运行多容器 Docker 的应用程序工具,可以帮助我们可以轻松、高效的管理容器 安装: 1.安装pip 工具-目的是为了下载docker-compose包(因为docker-compose是Python编写) yum install -y python
阅读全文
摘要:什么叫事务传播行为? 听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不不存在传播这个行为。 事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。 例如:methodA事务方法调用metho
阅读全文
摘要:装饰器模式属于结构型模式,它是作为现有的类的一个包装 1、意图: 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活 2、主要解决: 一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀 3、何时使用: 在不想
阅读全文
摘要:浏览器端发起 HTTP 请求流程 浏览器输入网址:http://www.baidu.com,之后会完成什么步骤呢? 1、构建请求 首先,浏览器构建请求行信息,构建好后,浏览器准备发起网络请求。 GET /index.html HTTP1.1 2、查找缓存 在真正发起网络请求之前,浏览器会先在浏览器缓
阅读全文
摘要:规范和实现 针对Java虚拟机的实现有专门的《Java虚拟机规范》,在遵守规范的前提下,不同的厂商会对虚拟机进行不同的实现。 就好比开发的过程中定义了接口,具体的接口实现大家可以根据不同的业务需求进行实现。 PS:大家都有必要了解一下《Java虚拟机规范》,关注公众号“程序新视界”,回复“002”获
阅读全文
摘要:1. 存在几个线程: 主库一个线程,从库两个线程 2.主库生成一个log dump线程,和从库IO线程交互 3.IO线程请求主库binlog,写入到中继日志relay log 4.SQL线程读取中继日志,解析然后写入到从库
阅读全文
摘要:redo 重做日志 作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,到达事务一致性 undo 回滚日志 作用:保证数据的原子性,记录事务发生之前的数据的一个版本,用于回滚。 innodb事务的可重复读和读取已提交 隔离级别就是通过mvcc+undo实
阅读全文
摘要:转自:https://blog.csdn.net/kk185800961/article/details/79378313/ 以下考虑主要为 Innodb 引擎 【 innodb_buffer_pool_size 】 用于缓存 索引 和 数据的内存大小, 这个当然是越多越好, 数据读写在内存中非常快
阅读全文
摘要:MRR,全称「Multi-Range Read Optimization」。 简单说:MRR 通过把「随机磁盘读」,转化为「顺序磁盘读」,从而提高了索引查询的性能。 至于: 为什么要把随机读转化为顺序读? 怎么转化的? 为什么顺序读就能提升读取性能? 咱们开始吧。 磁盘:苦逼的底层劳动人民 执行一个
阅读全文
摘要:抛几个问题: 1.谁进行空间担保? JVM使用分代收集算法,将堆内存划分为年轻代和老年代,两块内存分别采用不同的垃圾回收算法,空间担保指的是老年代进行空间分配担保 2.什么是空间分配担保? 在发生Minor GC之前,虚拟机会检查老年代最大可用的连续空间是否大于新生代所有对象的总空间, 如果大于,则
阅读全文
摘要:1、标记 -清除算法 “标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的。 缺点 1.一个是
阅读全文
摘要:1.使用top -c 查看CPU 占用情况 ,按P(大写)可以倒序查看占CPU占用率 2.找到占用率高的进程以后,再定位到具体线程 比如 此时进程ID 14724 CPU占用高,进一步使用top -Hp 14724定位该进程内所有的线程使用情况 3.定位到该进程内,15153 的线程CPU占用高,进
阅读全文