摘要:
jdk1.7.0_79 在上文《10.并发包阻塞队列之ArrayBlockingQueue》中简要解析了ArrayBlockingQueue部分源码,在本文中同样要介绍的是Java并发包中的阻塞队列LinkedBlockingQueue。ArrayBlockingQueue队列是由数组实现,而Lin 阅读全文
摘要:
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需 阅读全文
摘要:
背景在使用spring时,有时候有会有一些自定义annotation的需求,比如一些Listener的回调函数。 比如: 一开始的时候,我是在Spring的ContextRefreshedEvent事件里,通过context.getBeansWithAnnotation(Component.clas 阅读全文
摘要:
某些情况下我们要获取 IOC 容器中指定注解、类型、名字的 Bean 要获取 IOC 容器中指定条件的 Bean 可以通过 ApplicationContext 相应的方法 @Autowired private ApplicationContext applicationContext; 获取指定注 阅读全文
摘要:
getBeansWithAnnotation Map<String,Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType) throws BeansException Find all beans whos 阅读全文
摘要:
import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; importorg.springframework.beans.factory.annotation.Autowired; importorg.sp... 阅读全文
摘要:
目前spring框架是j2ee比较常用的项目开发技术,只需在web.xml文件中进行少许配置即可,代码如下所示:<!--spring的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>cl 阅读全文
摘要:
ApplicationListener和ContextRefreshedEvent一般都是成对出现的。最近在面试中问到了被面试者对于这两个的用法,面试者大多数被问懵了。可见基础知识的掌握程度。基于此本文将介绍它们的用法。 事件机制作为一种编程机制,在许多语言中都提供了支持。JAVA语言也不例外,ja 阅读全文
摘要:
0 概述ContextRefreshedEvent 事件会在Spring容器初始化完成会触发该事件。我们在实际工作也可以能会监听该事件去做一些事情,但是有时候使用不当也会带来一些问题。 1 防止重复触发主要因为对于web应用会出现父子容器,这样就会触发两次,那么如何避免呢?下面给出一种简单的解决方案 阅读全文
摘要:
两个方法都是获取发生事件的事件源对象,区别也许是返回的类型不同,如果是getSource()需要强制类型转换为Component 对象;而getComponent()无需转换; API的说明如下: 类ComponentEvent getComponent()返回发起事件的 Component 对象, 阅读全文
摘要:
** * Java反射 *所谓反射,可以理解为在运行时期获取对象类型信息的操作。 *传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下, *编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。 *严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射机制, * 阅读全文
摘要:
最近项目中遇到一个业务场景,就是在Spring容器启动后获取所有的Bean中实现了一个特定接口的对象,第一个想到的是ApplicationContextAware,在setApplicationContext中去通过ctx获取所有的bean,后来发现好像逻辑不对,这个方法不是在所有bean初始化完成 阅读全文
摘要:
Java 线程池 Executors提供了几种线程池实现? 5个,分别如下 1、newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。(线程最大并发数不可控制)2、newFixedThreadPool:创建一个定长线程池 阅读全文
摘要:
//instanceof是判断左侧对象是不是右侧类的实例 package myPackage; /** * instanceof运算符用法 * 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当 * 左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false * * 阅读全文
摘要:
目录 1、obj 必须为引用类型,不能是基本类型 2、obj 为 null 3、obj 为 class 类的实例对象 4、obj 为 class 接口的实现类 5、obj 为 class 类的直接或间接子类 6、问题 7、深究原理 8、instanceof 的实现策略 目录 1、obj 必须为引用类 阅读全文
摘要:
instanceof用来判断内存中实际对象A是不是B类型出现这种情况经常是需要强制转换的时候class Dog extends Animal譬如dog定义了自己的方法wangwangAnimal anAnimal = new Dog();此时不能直接调用anAnimal.wangwang方法但是可以 阅读全文
摘要:
在java.lang包中有String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split("."); 2、如果用“|”作为 阅读全文
摘要:
特殊情况有 * ^ : | . \ 一、单个符号作为分隔符 String address="上海\上海市|闵行区\吴中路"; String address="上海|上海市|闵行区|吴中路"; String address="上海*上海市*闵行区*吴中路"; String address="上海:上海 阅读全文
摘要:
public class Test { public static void main(String[] args) { ExecutorService executor = Executors.newSingleThreadExecutor(); FutureTask future = new F 阅读全文
摘要:
一、背景题主最近遇到一个问题,本来通过ScheduledExecutorService线程池定时调度一个任务。奈何不知道为啥跑了2个多月,其中一个任务Hang住了,原本定时的任务则出现了问题。 关于定时线程池,好多人认为设置好频率(比如1Min),它会按照这个间隔按部就班的工作。但是,如果其中一次调 阅读全文