- 浏览: 22906 次
最新评论
文章列表
Dubbo SPI的思想 --->!大家是否熟悉spi(service providerinterface)机制,即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下),
jdk通过ServiceLoader类实现spi机制的服务查找功能。
我们来看下jdk是如何实现: JDK实现SPI服务查找: ServiceLoader。
package com.test;
public interface SPI {
String sayHello();
}
ServiceLoader会遍历所有jar查找META-INF/se ...
分析java线程池的实现原理
- 博客分类:
- Java
线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。
Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。
1、Executors.newFixedThreadPool(20)初始化一个包含20个线程的线程池executor;2、通过executor.execute方法提交20个任务,每个任务打印当前的线程名;3、负责执行 ...
JVM源码分析之SystemGC完全解读
- 博客分类:
- jvm
概述
JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下System.gc的原理.
或许大家已经知道如下相关的知识.
system.gc其实是做一次full gc
system.gc会暂停整个进程
system.gc一般情况下我们要禁掉,使用-XX:+DisableExplicitGC
system.gc在cms gc下我们通过-XX:+ExplicitGCInvokesConcurren ...
Spring源码--IOC容器的实现步骤
- 博客分类:
- spring
Spring IOC(控制反转)与DI (依赖注入)
IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。 Spring所倡导的开发方式就是如此,所有 ...
1.由于大家平常用Spring基本都是Web项目中,那么今天就从Web的角度来看看IOC容器是怎么启动并管理Bean的。 2.本文及后续代码版本:Spring3.0.5。所以如发现代码(或图)不一致请注意Spring版本。 3.还是建议大家在前几遍读源码的时候,先把路走通,再回头研究细节。
Web容器接口体系
为了方便在Web环境中使用IOC容器,spring为Web应用提供了上下文接口WebApplicationContext来满足启动过程的需要。这个WebApplicationContext接口的类层次关系如图所示:
在接口设计中,最后是通过ApplicationContext接 ...
jdk1.8之前HashMap实现原理
1,HashMap的数据结构
数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。
数组
数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数 组的特点是:寻址容易,插入和删除困难;
链表
链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。
哈希表
那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈