加入收藏 | 设为首页 | 会员中心 | 我要投稿 南昌站长网 (https://www.0791zz.cn/)- 终端安全、安全管理、数据治理、图像分析、大数据!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

最热门的JavaScript开源项目

发布时间:2021-01-30 12:14:14 所属栏目:传媒 来源:互联网
导读:可以看到每次INSERT都会开启一个事务,你可能会疑惑,我们只是简单的执行了INSERT语句,没有显示的开启事务。那为什么会有事务产生呢? 这是因为MySQL采用了自动提交(AUTOCOMMIT)的机制,我使用的InnoDB存储引擎,是支持事务的,所有的用户活动都发生在事务中

可以看到每次INSERT都会开启一个事务,你可能会疑惑,我们只是简单的执行了INSERT语句,没有显示的开启事务。那为什么会有事务产生呢?

这是因为MySQL采用了自动提交(AUTOCOMMIT)的机制,我使用的InnoDB存储引擎,是支持事务的,所有的用户活动都发生在事务中。我们可以通过show variables like '%AUTOCOMMIT%';命令查看,如果结果是ON则代表是开启的。

1.3 复制的核心步骤

我们假设主库已经开启了binlog,并正常的记录binlog。

首先从库启动I/O线程,跟主库建立客户端连接。

主库启动binlog dump线程,读取主库上的binlog event发送给从库的I/O线程,I/O线程获取到binlog event之后将其写入到自己的Relay Log中。

然后从库启动SQL线程,将Relay中的数据进行重放,完成从库的数据更新。

总结来说,主库上只会有一个线程,而从库上则会有两个线程。
 

这张图说明了类从加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期。

一般来说,我们把 Java 的类加载过程分为三个主要步骤:加载、链接、初始化,具体行为在 Java 虚拟机规范里有非常详细的定义。

1、首先是加载阶段

  1. 它是 Java 将字节码(jar 包)数据从不同的数据源读取到 JVM 中,并映射为 JVM 认可的数据结构(Class 对象),
  2. 重点:加载阶段是用户参与的阶段,我们可以自定义类加载器,去实现自己的类加载过程。
  3. 通过字节流将类的.class 文件中的二进制数据读入到内存。然后在堆中创建 java.lang.class 对象,用来封装类在方法区的数据结构
  4. 只会创建一个 Class 对象,该 Class 对象来描述有哪些构造方法,都有哪些成员变量

2、第二阶段是链接,这是核心的步骤,简单说是把原始的类定义信息平滑地转化入 JVM 运行的过程中。这里可进一步细分为三个步骤:

① 验证

  1. 这是虚拟机安全的重要保障,JVM 需要核验字节信息是符合 Java 虚拟机规范的,否则就被认为是 VerifyError,这样就防止了恶意信息或者不合规的信息危害 JVM 的运行,
  2. 验证阶段有可能触发更多 class 的加载。

② 准备

  1. 创建类或接口中的静态变量,并初始化静态变量的初始值。
  2. 但这里的“初始化”和下面的显式初始化阶段是有区别的,
  3. 测重点在于分配需要的内存空间,不会去执行更进一步的 JVM 指令

这里的初始化是指:

1、8 种基本数据类型的默认初始值是 0。

2、引用类型默认的初始值是 null。

3、对于有 static final 修饰的常量会直接赋值,例如:static final int x=123;则 x 直接会初始化为 123。

③ 解析

  1. 在这一步会将常量池中的符号引用(symbolic reference)替换为直接引用。
  2. 符号引用就是唯一的字符串,直接引用可以理解为一个地址值和偏移量
 

(编辑:南昌站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读