Java
文章平均质量分 66
赵军林
不断突破自己。
展开
-
Spring源码之ApplicationContextInitializer(二)
作用ApplicationContextInitializer是Spring的一个扩展接口,在spring框架刷新上下文(refresh方法)之前调用ApplicationContextInitializer的实现类完成一些ApplicationContext子类的初始化工作,例如加入一个数据源或者激活profile的环境,ApplicationContextInitializer实现类通常会实现一个Ordered接口或者使用@Order接口进行排序。配置方式spring.factories通过在M原创 2020-06-11 09:32:52 · 728 阅读 · 0 评论 -
Spring源码之SpringFactoriesLoader(一)
作用SpringFactoriesLoader可以加载jar包下META-INF下的spring.factories,把相关接口的实现按照key,value的形式加载到内存,一个接口的多个实现可以按照","进行分割。对程序员来说,利用SpringFactoriesLoader可以加载自定义的ApplicationListener、ApplicationContextInitializer、Configuration类等,spring-boot的starter就是通过SpringFactoriesLoade原创 2020-06-03 20:51:34 · 2064 阅读 · 0 评论 -
G1垃圾回收器
Region传统的垃圾收集器把堆内存划分成老年代和年轻代,每次回收的粒度都是整个分代,G1垃圾收集器把堆内存划分成了更小的Region,年轻代和老年代都拥有多个Region,堆内存中一个区域(Region)的大小可以通过-XX:G1HeapRegionSize参数指定,大小区间最小1M、最大32M,总之是2的幂次方。每个Region在逻辑上不是固定的年轻代和老年代,有可能现在是年轻代,下次垃圾回...原创 2020-04-09 18:31:59 · 594 阅读 · 0 评论 -
HashMap实现序列化
HashMap怎么实现序列化的前几天在看HashMap的源代码,看到了HashMap实现了Serializable接口(这个接口就是使得对象实例可以被保存成文件,在后续使用的时候可以直接从文件中把这个对象实例给读出来,对象中的数据还在),但是又发现了transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;,table是HashMap用来存储原创 2017-01-08 00:10:42 · 21325 阅读 · 0 评论 -
Spring事物设置回滚点
@Transactional @RequestMapping("/show") public String show(){ userService.addUser(); Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();原创 2017-03-01 14:41:48 · 5220 阅读 · 0 评论 -
JVM之类加载过程
当我们在Java代码中写下new String()的时候,我们理所当然认为java会返回给我们一个String对象,但是在JVM背后做了很多事情,包括类的加载、对象内存的分配等等工作,这些工作对我们来说都是透明的,了解JVM背后做的这些事情能让我们更好的理解java的运行过程。今天我们就一起来看看jvm如何把一个类加载到内存中的。类的生命周期一个类在jvm中的生命周期如下图:其中链接又分为...原创 2019-09-28 13:56:20 · 112 阅读 · 0 评论