我们通常会使用工具jstack 去跟踪线程信息,其如何实现使用attach 的方式还是ptrace 的方式,这些可以去参考本人的博客的其他文章. 但这些方式都是外部使用的方式,如何直接使用java代码得到当前进程的线程的信息,方便监控jvm的整个运行状态,就不的不提到了ManagementFactory 通过调用方法 ThreadMXBean tmbean = ManagementFactory.getThreadMXBean(); 通过得到 ThreadMXBean 可以得到非常多的threa…
刚开始使用Mybaits的同学有没有这样的疑惑,为什么我们没有编写Mapper的实现类,却能调用Mapper的方法呢?本篇文章我带大家一起来解决这个疑问 上一篇文章我们获取到了DefaultSqlSession,接着我们来看第一篇文章测试用例后面的代码 EmployeeMapper employeeMapper = sqlSession.getMapper(Employee.class); List<Employee> allEmployees = employeeMapper.getAll(…
前言 前文中主要介绍了Spring中处理BeanDefinition的扩展点,其中着重介绍BeanDefinitionParser方式的扩展.本篇文章承接该内容,详解Spring中如何利用BeanDefinitionParser的特性实现注解配置的解析.本文主要从以下几个方面介绍Spring中的注解配置解析原理: @Component系注解配置的作用原理 @Autowired注解配置的作用原理 无论注解配置还是XML配置,只是外在配置形式的变化,但是Spring的核心仍然是相同的: @Compo…
一.前言 回顾 在Spring源码系列第二篇中介绍了Environment组件,后续又介绍Spring中Resource的抽象,但是对于上下文的启动过程详解并未继续.经过一个星期的准备,梳理了Spring中的BeanDefinition以及它的解析和注册过程.本文着重介绍其特点及用途并延续前面上下文启动过程的步骤继续分析源码. 目录 本文主要从以下几个方面介绍BeanDefinition 什么是BeanDefinition BeanDefinition解析注册过程及组件概览 从路径到资源加载 资…
事件机制-Spring 源码系列(4) 目录: Ioc容器beanDefinition-Spring 源码(1) Ioc容器依赖注入-Spring 源码(2) Ioc容器BeanPostProcessor-Spring 源码(3) 事件机制-Spring 源码(4) ApplicationEvent 事件抽象类 ApplicationListener 监听器接口 ApplicationContext 事件源 事件源触发事件后,将事件通知给监听器,监听器执行相应逻辑的过程   使用简单的实现: 事…
Ioc容器BeanPostProcessor-Spring 源码系列(3) 目录: Ioc容器beanDefinition-Spring 源码(1) Ioc容器依赖注入-Spring 源码(2) Ioc容器BeanPostProcessor-Spring 源码(3) 事件机制-Spring 源码(4) 如果这个接口的某个实现类被注册到某个容器,那么该容器的每个受管Bean在调用初始化方法之前,都会获得该接口实现类的一个回调.容器调用接口定义的方法时会将该受管Bean的实例和名字通过参数传入方法,…
    概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到大家讨论来讨论去,看得出很多人对metaspace还是模棱两可,不是很了解它,因此我觉得有必要写篇文章来介绍一下它,解开它神秘的面纱,当我们再次碰到它的相关问题的时候不会再感到束手无策. 为什么会有metaspace metaspace的由来民间已有很多传说,不过我这里只谈我自己的理解,因为…
hbase源码系列(九)StoreFile存储格式    从这一章开始要讲Region Server这块的了,但是在讲Region Server这块之前得讲一下StoreFile,否则后面的不好讲下去,这块是基础,Region Sever上面的操作,大部分都是基于它来进行的. HFile概述 HFile是HBase中实际存数据的文件,为HBase提供高效快速的数据访问.它是基于Hadoop的TFile,模仿Google Bigtable 架构中的SSTable格式.文件格式如下: 文件是变长的,…
从jvm源码看synchronized 索引 synchronized的使用 修饰实例方法 修饰静态方法 修饰代码块 总结 Synchronzied的底层原理 对象头和内置锁(ObjectMonitor) synchronzied的底层原理 synchronized的优化 偏向锁 轻量级锁 轻量级锁膨胀 重量级锁 自旋 编译期间锁优化 总结 参考资料 回到顶部 synchronized的使用 synchronized关键字是Java中解决并发问题的一种常用方法,也是最简单的一种方法,其作用有三个…
要分析JVM的源码,结合资料直接阅读是一种方式,但是遇到一些想不通的场景,必须要结合调试,查看执行路径以及参数具体的值,才能搞得明白.所以我们先来把JVM的源码进行编译,并能够使用GDB进行调试. 编译环境 本文使用的JDK版本:OpenJDK7,分支b147 下载页面:https://download.java.net/openjdk/jdk7 下载地址:http://download.java.net/openjdk/jdk7/promoted/b147/openjdk-7-fcs-src-…