自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除