• Mysql索引、底层数据结构

    索引数据结构Mysql底层存储采用的是B+Tree数据结构,而B+Tree又是由BTree改造而来。要理解B+Tree之前,需先理解二叉树、红黑树、BTree二叉树如下图所示,先插入的是6,后续插入4,经过比对后发现4比6小,所以会放入到6的右边,而再次插入7的时候发现7比6大,所以会将数据放到6的...

    Java基础 常量池

    Class常量池与运行时常量池Class常量池可以理解为是Class文件中的资源仓库。Class文件中除了包含类的版本、字段吧、方法、接口等描述信息外,还有一项信息就是常量池(constantpooltable),用于存放编译器生成的各种字面量(Literal)和符号引用(SymbolicRefer...

    JVM 调优工具(二)

    关于ArthasArthas是Alibaba在2018年9月开园的Java诊断工具。支持JDK6+,采用命令行交互模式,可以方面的定位和诊断线上程序问题。官方文档:https://alibaba.github.io/arthas安装Arthas#从github下载Arthaswgethttps://...

    JVM 调优工具(一)

    准备程序先启动一个web应用程序,并且使用jps查看其进程id,接下来用jdk自带命令优化应用[root@localhostparallels]#jps7088Jps14331jar我的应用程序是jar包运行的,进程id为14331。Jmap此命令可以用来查看内存信息,实例以及占用内存大小#输出内容...

    Java基础 G1垃圾收集器

    G1收集器(-XX:+UseG1GC)G1收集器的内存划分G1(Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器以及大容量内存的机器。以极高概率满足GC停顿时间的要求同时,还具备高吞吐量性能的特征。G1将Java的堆划分为多个大小相等的独立区域,它不再是传统的一部分E...

    Java基础 JVM垃圾收集器 ParNew、CMS、三色标记

    分代收集理论当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将Java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量的对象死去,所以可以选择复制算法,只需要付出少量对象的...

    Java基础 JVM 对象创建、内存分配机制、内存回收

    对象的创建过程对象创建的主要流程:1、类加载检查虚拟机遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过,如果没有,那必须先执行响应的类加载过程。2、分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存...

    SpringBoot 使用AOP拦截实现Redis分布式锁

    在使用redis的setnx指令过程中,需要在每一个用到的地方手动加锁,手动释放锁,接下来介绍使用aop和redis实现一个轻量级的分布式锁。新建两个注解@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public@in...

    Java基础 JVM内存模型

    JVM组成部分举例代码publicclassMath{publicstaticfinalintinitData=666;publicstaticUseruser=newUser();publicintcompute(){inta=1;intb=2;intc=(a+b)*10;returnc;}pub...

    Java基础 JDK类加载机制

    类加载运行全过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到JVM。packagecn.pencilso.study.classloader;publicclassTestRun{privatestaticintint1=1;privatestaticfi...