spring AOP 注解原理

缘起

我们知道,其实AOP是一种编程思想——面向切面. 即程序运行期间动态的将某段代码切入到指定位置进行运行的编程方式. 典型的用法可以参见【1】. 其实非java config的用法在之前使用xml的时候都大同小异的使用过. 但是本文就想从源码的角度分析Sping-AOP是如何实现的

Read More

@Profile 原理

缘起

@Profile这个注解是Spring-Context包提供的一个非常强大的注解——它可以根据程序员配置的启动参数(不论是通过-D形式的jvm参数还是通过代码配置)来只让profile参数吻合的bean注入到ioc容器中去。那么原理是啥呢?

Read More

左式堆

缘起

【1】中我们介绍了优先队列以及它的一种实现——堆. 其实又叫二叉堆. 因为它的结构是完全二叉树. 而这里介绍的是优先队列的另一种实现方式——左式堆(left heap). 它的引入是为了满足堆结构之间的合并这种基本操作.

Read More

动态存储管理

缘起

在学习数据结构的过程中,每一种数据结构我们都介绍了它们在内存中的映像. 但那是借助高级语言(C/C++)实现的. 高级语言的特点是使用变量标识符取代了低级语言(汇编)的内存地址. 程序员已经不需要和内存地址直接打交道了. 而这些变量对应的标识符都是由编译器在编译或者执行的时候进行内存分配的. 因此内存管理不论对于操作系统还是编译器而言,都是一个极为重要的问题(内存管理是操作系统的基本问题之一). 我们来简易探究一下.

Read More

hashCode和equals官方注释译文

缘起

hashCode和equals在我们学习javase的伊始就学过了. 但是初学者(例如我)真的不一定去好好读读它的注释. 因为如果没理解HashMap、HashSet、HashTable等哈希系列的集合的源码的话,还真不一定能理解,所以最多为了面试背了一些条条框框. 在【1】的基础上,回头再次阅读注释并给出如下译文.

Read More

java.util.HashMap 源码分析

缘起

面试一家魔都电商的高级java工程师职位的时候,面试官问了我有木有看过HashMap的源码? 虽然对于此问题我早有心理准备并且已经纳入了阅读计划,但是无奈那时还在与前端技术搏斗~~ 所以还没看. 于是懵逼了. 最后只给了中级java工程师的offer. 于是痛定思痛,决心将hashmap掏底!

Read More