摘要:
在spring体系中,配置的概念非常重要,无论是spring xml配置,还是springboot中yml/properties配置,以及spring cloud体系中的配置中心,都脱离不了spring 的配置框架,区别是配置的存储格式不同,存储位置不一样。不熟悉spring配置体系的可以参考:ht 阅读全文
摘要:
编译spring源码是学习spring的第一步,spring源码是用gradle编译的,在编译时会遇到一些问题,在此记录一下。 下载spring源码 第一步需要下载spring的源码,由于官方托管在github,国内访问github不通畅,这里就直接使用gitee的镜像仓库,在国内比较快,地址:ht 阅读全文
摘要:
用Markdown写博客的时候,有时需要用到Latex来写数学公式,通过使用MathJax,我们可以让Markdown解析Latex数学表达式,同时Next主题也支持MathJax,所以了解一下Latex语法是十分有必要的。 基础语法 公式标记 MathJax支持行内公式(inline)和陈列公式( 阅读全文
摘要:
输出GC日志 通过阅读GC日志,我们可以了解Java虚拟机内存分配与回收策略。 先来看一个简单的示例。 下面是GC日志: 0.115: [GC (System.gc()) [PSYoungGen: 3020K->600K(38400K)] 3020K->608K(125952K), 0.001229 阅读全文
摘要:
死锁在系统中可能出现的频率比较高,特别是在生产环境中,对于死锁发生原因的定位比较困难,读懂死锁日志是非常有必要的。下面我们来模拟死锁的产生,然后分析死锁日志。 死锁概念 对于死锁,MySQL官方文档是这样描述的: A deadlock is a situation where different t 阅读全文
摘要:
在InnoDB中,锁的类型有如下几种: Shared and Exclusive Locks(共享S或独占X锁) Intention Locks(意向锁) Record Locks(记录锁) Gap Locks(间隙锁) Next-Key Locks Insert Intention Locks(插 阅读全文
摘要:
在生产者消费者模型这篇文章中我们使用了ReentrantLock结合Condition实现生产者消费者模型,但我们对于ReentrantLock和Condition的工作原理并不了解,其内部的结构和源码级别实现就更加不了解了。比如在使用await方法的时候,为什么一定要用while判断条件,用if为 阅读全文
摘要:
记得去年学习Spring MVC的时候自己学着写了一个小小的框架,用了一个AppContext来表示应用上下文,每个请求都应该有各自独立的AppContext,里面可以存储一些数据,比如数据库连接Connection等,此时考虑数据库的事务问题,即在一个线程内,一个事务的多个操作拿到的是一个Conn 阅读全文
摘要:
栈介绍 栈是一种仅在表头进行插入和删除操作的线性表,并且属于后进先出(last-in,first-out,LIFO)原则,下面是栈的入栈和出栈的图示: 主要操作 栈主要有入栈和出栈操作,但要实现完整的栈操作,我们需要定义一些方法 push 入栈,将元素压入栈顶 pop 出栈,获取栈顶元素并将其从栈中 阅读全文
摘要:
在JDK9中,包含了一个叫Variable Handles的新功能,下面是该功能的描述: Define a standard means to invoke the equivalents of various java.util.concurrent.atomic and sun.misc.Uns 阅读全文