摘要: 一、介绍 Java 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这个过程称为虚拟机的类加载机制。与那些在编译阶段需要进行连接的语言不同,在 Java 语言里面,类型的加载、连接、初始化、过程都在运行期间完成, 阅读全文
posted @ 2022-04-21 18:38 空心小木头 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 前面已经介绍了 Java 的内存分区,本文将基于内存分区来介绍 Java 区别与其他语言一个很重要的机制 : 垃圾回收(GC)。 二、如何判断一个对象该被回收了 有一个比较直观的想法就是:用一个引用计数器来记录该对象被引用的次数,多一个引用就+1,少一个就-1,当引用数等于 0 的时候就是 阅读全文
posted @ 2022-04-20 19:06 空心小木头 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 Java 的内存结构可以从两个方面来讲:内存模型和内存区域。 内存模型:即 JMM,内存模型是抽象线程和主内存的抽象关系,即JVM在计算机内存(RAM)中的工作方式,在研究多线程时,JMM需要深入理解 内存区域:即JVM 在程序运行时对内存的划分(强调内存划分) 二、JVM内存区域 上图时 阅读全文
posted @ 2022-04-16 18:45 空心小木头 阅读(960) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 前面介绍了在并发事务下的可能出现的几种问题,脏读、脏写、不可重复读、幻读,几种隔离级别中 RU、RC、RR都是利用 MVCC 解决了脏读、不可重复读,在 RR 下解决了大部分的幻读,而完全解决 幻读 和 脏写 则需要利用 MySql 中的锁机制。 二、锁的几种类别 共享式和独占式: 共享式 阅读全文
posted @ 2022-03-25 16:24 空心小木头 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 一、为什么要隔离事务 在只有一个事务对数据库进行操作的时候,不需要用到事务隔离,但在多个事务并发的时候,问题就来了,如果不采取任何措施,可能产生的结果如下: 我们这里假设有事务 T1 和 事务 T2 ,以及一个数据段 x = 0,y = 0; T1 和 T2 事务并行执行; 我们规定一致性要求 x 阅读全文
posted @ 2022-03-20 19:11 空心小木头 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 一、日志介绍 MySql 日志共有错误日志、查询日志等等几个大类的日志,其中比较重要的主要是三种日志:二进制日志 binlog(归档日志)、事务日志 redolog(重做日志)、undolog(回滚日志)。每种日志的作用不尽相同,下文将对这三种日志进行详细介绍。 二、 redo日志 我们可以想象一个 阅读全文
posted @ 2022-03-20 15:53 空心小木头 阅读(2012) 评论(2) 推荐(2) 编辑
摘要: 一、介绍 索引是的字面意思就是我们平常经常见的目录,是帮助快速找到书中某块内容的设计,而要具体去弄懂 MySql 索引的原理,需要先清楚 MySql 是如何存储数据的 二、InnoDB存储方式 MySql现在使用比较多的就是 InnoDb 引擎,本文讲述的就是此引擎。 我们有一个主观的印象就是 My 阅读全文
posted @ 2022-03-12 20:18 空心小木头 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 在 Java 1.5后引入了原子类操作类,这些操作的加入,让我们不用锁即可以实现原子操作,更加高效,简洁。 Atomic包下所有的原子类都只适用于单个元素,即只能保证一个基本数据类型、对象、或者数组的原子性。根据使用范围,可以将这些类分为四种类型,分别为原子更新基本类型、原子更新数组、原子 阅读全文
posted @ 2022-03-09 16:39 空心小木头 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 AQS的全称是 AbstractQueuedSynchronizer,主要是用来构造同步器和锁,Java的 Juc 包中很多锁如 ReentrangLock、Semaphore,它们都有一个共同的基类,就是AQS,因为 AQS 能十分便利的搭建锁或者同步器,所以在 Java 并发编程中得以 阅读全文
posted @ 2022-03-08 16:03 空心小木头 阅读(1052) 评论(0) 推荐(0) 编辑
摘要: 一、介绍 线程我们可以使用 new 的方式去创建,但如果并发的线程很多,每个线程执行的时间又不长,这样频繁的创建线程会大大的降低系统处理的效率,因为创建和销毁进程都需要消耗资源,线程池就是用来解决类似问题。 线程池实现了一个线程在执行完一段任务后,不销毁,继续执行下一段任务。用《Java并发编程艺术 阅读全文
posted @ 2022-03-06 20:07 空心小木头 阅读(7373) 评论(0) 推荐(1) 编辑