摘要:1.新模块放入的时候需要把mybatis相关配置去掉,因为单体有统一的配置,如果每个模块再有就会有冲突, 现象时sql无法绑定 2.引入模块要注意jar包冲突问题。 3.单体服务在启动的时候rabbitmq queue无法创建,但是本地启动是可以的,最后发现是nocas出现问题引起的。 4.cont
阅读全文
摘要:多线程实现使用方式: 1.实现Runnable接口(函数式接口) Runnable r = ()->{task code} Thread t = new Thread(r); t.start(); 2.继承Thread类(每个任务都会建立新的进程,开销很大,目前不建议使用,一般使用线程池) Clas
阅读全文
摘要:优化SQL语句的一般步骤 1.通过show status 查看数据库各种类型的sql执行频率 show status like 'Com_%'; Innodb: Innodb_rows_read/inserted; 其他引擎:Com_select/insert 事务相关:Com_commit和Com
阅读全文
摘要:一.如何判断对象已经死亡 1.引用计数 无法处理循环引用的情况 2.可达性分析 目前主流实现方式。 原理: 从GC Roots对象作为起点开始查询,如果有引用链说明对象存活,反之就是已经死亡。 GC Roots对象: (1)栈(栈帧)中引用的对象。 (2) 方法区中类静态变量引用的对象。 (3)方法
阅读全文
摘要:本文梳理常见的内存溢出情况,以及如何查询解决。 Java堆溢出 1.设置参数 -XX:+HeapDumpOnOutOfMemoryError 2.该参数可以在堆内存溢出是保存快照以便于进行分析。 思路: (1)分析转存快照,判断一下泄露对象到GC Roots的引用链,确定一下为啥GC无法回收,从而确
阅读全文
摘要:最近在研究JVM原理,整理心得以便于后续面试复习使用。 一。JVM内存模型(运行时数据区) 说明:这是JVM规定的内存模型,每个具体实现根据厂商有所不同。比如:HotPot 1.8之前有持久带(方法区的实际实现)的概念,其他如IBM J9没有这个概念, 1.程序计数器(PC) 线程执行的字节码的行号
阅读全文