摘要:
1.为什么需要事务 首先我们要知道什么是事务:事务(Transaction)是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列。一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。 通俗易懂来说就是,我们在执行一个操作时,要保证要么都成功,要么都不成 阅读全文
摘要:
在介绍一条sql是怎么执行的之前,我们先来了解一下mysql的架构: 如上图mysql主要分为server层和存储引擎层: server层算是mysql的核心能力层,如sql语句的解析优化,权限管控,各类的sql函数、存储过程,以及自身数据备份,恢复等高级功能(binlog实现),我们用到的一些基础 阅读全文
摘要:
从刚开始工作到现在,除了实习的时候在国企用过oracle,毕业之后陪伴我的数据库一直都是mysql,而由于mysql的开源特性,也让成为无数公司的宠儿,越走越远。 我们在刚开始使用mysql时,会发现写一条简简单单的sql,就可以查询出数据来,那么mysql到底是怎么做的呢? 后来随着接触的业务越来 阅读全文
摘要:
我们已经知道skywalking的入口就是premain方法: public static void premain(String agentArgs, Instrumentation instrumentation) throws PluginException { final PluginFin 阅读全文
摘要:
skywalking通过maven配置指定org.apache.skywalking.apm.agent.SkyWalkingAgent为premain-class,该类中包含了一个premain方法: 该方法包含两个参数,参数 agentArgs 是通过命令行传给 Java agent 的参数, 阅读全文
摘要:
在了解内存屏障之前,我们先了解一下JMM模型的8种原子操作: 1.lock 锁定 : 把主内存中的一个变量标志为一个线程独享的状态 2.unlock 解锁 : 把主内存中的一个变量释放出来 3.read 读:将主内存中的变量读到工作内存中 4.load 加载:将工作内存中的变量加载到副本中 5.us 阅读全文
摘要:
上节java内存模型(jmm)概念初探大致了解了由于cpu的快速发展,导致的越来越复杂的内存模型诞生,java内存模型相当于是底层内存模型的映射(实际并不是一一映射,但可以借鉴理解),也是衍生出并发三大特性:可见性,原子性,有序性,在多线程情况下这些特性也有多种方式可以保证,如volatile,sy 阅读全文
摘要:
1.和java内存结构的区别: 很多人会把jmm和Java内存结构搞混,网上搜到的一些文章也是如此,java内存结构就是我们常说的堆,栈,方法区,程序计数器..., 当jvm虚拟机启动的时候,会初始化这些内存区域。而java内存模型是一套虚拟机规范,它遵循虚拟机规范定义了一套用于处理多线程下对数据的 阅读全文
摘要:
关于比较学术的jvm每个内存区域我之前都写过,就不重复赘述了,这里附上链接:https://www.cnblogs.com/gmt-hao/p/13603534.html, https://www.cnblogs.com/gmt-hao/p/13653218.html,这里都有详细介绍jvm内存区域 阅读全文
摘要:
我们一般写的java文件jvm是识别不了的,因此需要编译,编译后会变成.class文件,而要执行代码,jvm首先会去加载.class文件到内存中,那么他的流程是什么样的呢: 1.首先肯定创建java虚拟机(就像我们运行windows的程序首先得安装windows系统一个道理) 2.同时会创建一个引导 阅读全文