- 博客(15)
- 收藏
- 关注
原创 JVM整体讲解
1.类加载1.1 先来搞清楚几个概念编译我们写好".java"文件之后,要打包成".jar"或者".war"文件放到服务器去部署。这里非常关键的一步就是编译,就是把我们的".java"文件编译成".class"的字节码文件,这样才可以被运行起来。类加载器编译好的".class"字节码文件在哪里可以运行呢?java -jar xxx.jar的时候其实启动了JVM进程,它来负责运行我们编译好的".class"文件。此时,类加载器就会把编译好的".class"字节码文件加载到JVM中
2021-10-26 15:20:59
232
原创 Young GC和Full GC分别在什么情况下会发生
Young GC的触发时机Young GC其实一般就是在新生代的Eden区域满了之后就会触发,采用复制算法来回收新生代的垃圾Old GC和Full GC的触发时机下面几种情况:(1)发生Young GC之前进行检查,如果“老年代可用的连续内存空间” < “新生代历次Young GC后升入老年代的对象总和的平均大小”,说明本次Young GC后可能升入老年代的对象大小,可能超过了老年代当前可用内存空间。此时必须先触发一次Old GC给老年代腾出更多的空间,然后再执行Young GC。(2)执
2021-09-29 20:37:47
1197
原创 年轻代和老年代分别适合什么样的垃圾回收算法
年轻代1. 复制算法的背景引入针对新生代的垃圾回收算法,他叫做复制算法简单来说,就是如下图所示,首先把新生代的内存分为两块。接着假设有如下代码,在“loadReplicasFromDisk()”方法中创建了对象,此时对象就就会分配在新生代其中一块内存空间里。而且是由“main线程”的栈内存中的“loadReplicasFromDisk()”方法的栈帧内的局部变量来引用的,如下图所示。接着大家想象一下,假设与此同时,代码在不停的运行,然后大量的对象都分配在了新生代内存的其中一块内存区域里,也只
2021-09-27 21:12:40
597
原创 结合实际业务设置JVM参数
JVM核心参数-Xms:Java堆内存的大小-Xmx:Java堆内存的最大大小-Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了-XX:PermSize:永久代大小-XX:MaxPermSize:永久代最大大小-Xss:每个线程的栈内存大小-Xms和-Xmx,分别用于设置Java堆内存的刚开始的大小,以及允许扩张到的最大大小。对于这对参数,通常来说,都会设置为完全一样的大小。这两个参数,是用来限定Java堆内存的总大小的。-Xmn,这个参数也是很常见的,
2021-09-26 07:36:49
368
原创 JVM 类加载机制
JVM在什么情况下会加载一个类?其实类加载过程非常的琐碎复杂,但是对于我们平时从工作中实用的角度来说,主要是把握他的核心工作原理就可以。一个类从加载到使用,一般会经历下面的这个过程:加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载所以首先要搞明白的第一个问题,就是JVM在执行我们写好的代码的过程中,一般在什么情况下会去加载一个类呢?也就是说,啥时候会从“.class”字节码文件中加载这个类到JVM内存里来。其实答案非常简单,就是在
2021-09-24 21:36:05
431
原创 activiti入门(含代码)
代码地址:https://gitee.com/zhangxin123150/activiti-demoBPM(business process management),业务流程管理BPMN(business process model and notation),业务流程模型和符号使用步骤l 部署activiti:activiti就是一堆jar包,因此需要和业务系统一起部署l 定义流程:使用activiti的建模工具定义业务流程.bpmn文件l 部署流程定义:使用activiti提供的api把
2021-09-22 12:45:29
486
原创 spring如何解决循环依赖的
1、开篇本节课会聊聊spring IOC如何解决循环依赖问题。包括如下内容:● 什么是循环依赖● Spring IoC处理循环依赖的思路● 处理循环依赖举例2、什么是循环依赖Spring IoC中的循环依赖其实就是循环引用,两个或者两个以上的 Bean 互相持有对方,最终形成闭环。如图1所示,如A依赖于B,B依赖于C,C又依赖于A。这样这样一个场景,初始化A的时候需要完成B的初始化,而完成B的初始化又需要完成C的初始化,最后C又依赖于A,如此这般A永远也无法完成初始化的操作。这种对象的相互依赖形
2021-09-19 21:20:08
138
原创 Spring IOC容器Bean初始化流程
1、开篇通过Spring IoC容器初始化Bean的流程,在之前的章节中介绍了Spring IoC容器是如何从配置文件中读取Bean信息,并且将其转换为BeanDefinition并且注册到Spring IoC容器中进行统一管理的。今天讲的是,在Spring IoC 容器中的Bean实例是如何被创建出来的,也就是解决如何从Spring IoC取出Bean进行使用。今天有如下内容:● 创建Bean的时序图2、创建Bean的时序图由于一个Bean的创建经历了若干个类,调用了很多方法,为了将这个过程理解
2021-09-18 12:31:12
396
原创 spring IOC初始化过程
1、开篇· IoC是如何工作的?· Resource定位· 载入BeanDefinition· 将BeanDefiniton注册到容器2、IoC是如何工作的?如图1所示,通过ApplicationContext创建Spring容器,该容器会读取配置文件"/beans.xml",并统一管理由该文件中定义好的bean实例对象,如果要获取某个bean实例,使用getBean方法就行了。假设将User配置在beans.xml文件中,之后不需使用new User()的方式创建实例,而是通过Applicat
2021-09-17 06:28:08
614
原创 设计索引的时候,我们一般要考虑哪些因素
一、首先,我们在针对业务需求建立好一张表的结构之后,就知道这个表有哪些字段,每个字段是什么类型的,会包含哪些数据 接着设计好表结构之后,接下来要做的,就是要设计表的索引,这个设计索引的时候,我们要考虑第一点,就是未来我们对表进行查询的时候,大概会如何来进行查询?其实很多时候很多人可能说,你要让我刚设计完表结构就知道未来会怎么查询表,那我怎么可能知道呢,实在是想不出来!好,那么没关系,此时我们完全可以在表结构设计完毕之后,先别急着设计索引,因为此时你根本不知道要怎么查询表。接着我们就可以进入系统开发的
2021-09-16 07:04:21
443
原创 Mysql索引-B+树是如何⽣⻓的
Mysql索引的B+树的⽣⻓流程如下图所示:- B+索引树是如何⽣⻓的1.1 ⽆索引时的数据查询 数据⻚是Mysql中数据管理的最⼩单元,既然我们要研究索引是如何⾼效查询数据的,⾸先我们肯定要搞清楚数据是如何存放的,数据⻚的结构通过上篇⽂章我们了解到⼤概是这样的:⽽数据表中的每⾏数据就存放在数据区中,数据区中每⾏数据以单向链表的⽅式,通过指针连接起来,如下图所示:同时每个数据⻚之间再通过双向链表的⽅式组织连接起来,如下图所示:(1)⽆索引时的数据查询通过以上对数据⻚以及数据⻚内部数据结
2021-09-15 08:15:02
149
原创 MySQL隔离机制
脏写、脏读、不可重复读、幻读等问题1)脏写2)脏读无论是脏写还是脏读,都是一个事务去更新或查询了另一个事务未提交的数据,如果另一个事务回滚,就出现了脏写、脏读的情况3)不可重复读不可重复读不是什么大问题,具体取决于是否允许不可重复读,如果业务要求事务期间每次读取的数据都是一致的,这就是问题,需要解决4)幻读MySQL隔离机制1)read uncommitted不允许脏写(不允许两个未提交的事务同时更新一条数据),但是会出现脏读、不可重复读、幻读问题2)read com..
2021-09-14 06:43:10
186
原创 MySQL架构设计--存储引擎篇
这里写自定义目录标题MySQL架构设计--存储引擎篇1. sql操作流程图(innodb存储引擎)2. 流程图解析3. buffer pool4. undo log5. redo logMySQL架构设计–存储引擎篇1. sql操作流程图(innodb存储引擎)2. 流程图解析1)前台操作触发mysql服务器执行请求前台用户各种操作触发mysql执行,通过web项目中自带的数据库连接池:dbcp、c3p0、druid等,与数据库服务器建立网络连接数据库连接池中的线程监听到请求后,将接收到的sq
2021-09-12 20:38:59
171
原创 MySQL架构设计--服务篇
MySQL架构设计--服务篇1、 MySQL驱动到底是什么东西2、 MySQL数据库的连接池是用来干什么的3、 SQL接口:负责处理接收到的SQL语句4、 查询解析器:让MySQL能看懂sql语句5、 查询优化器:选择最优的查询路径6、 执行器:根据执行计划调用存储引擎的接口7、 调用存储引擎接口,真正执行SQL语句1、 MySQL驱动到底是什么东西 我们如果要在Java系统中去访问一个MySQL数据库,必须得在系统的依赖中加入一个MySQL驱动,有了这个MySQL驱动才能跟MySQL数据库建立连接,
2021-09-11 15:22:23
140
原创 深入理解 JVM 第三版
链接:https://pan.baidu.com/s/161r2lmGaqktoycMjZvnq0g提取码:qzxt ##**
2021-03-08 15:35:51
2629
11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅