摘要:
前面介绍了log4j和log4j2这两种日志的实现,但是在具体使用中,它们一般不会单独出现,而是与日志门面结合使用;但是在我们众多的业务系统中,由于开发者或者团队不同,日志实现与日志接口的选型也是五花八门,这篇文章就是来整理下日志实现与日志框架之间的组合。主要参考:https://my.oschin 阅读全文
摘要:
一、背景 随着业务服务(Server App)逐渐增加,我们的业务系统中的日志输出面临的问题越来越多,高并发下对磁盘io这块消耗的越来越大,因此,急需要一个高性能且最好能够支持异步输出日志的日志框架,而且能兼容市面上目前主流的日志组件(log4j1.x,logback等) 二、简介 log4j2也是 阅读全文
摘要:
log4j是Apache的一个开源项目,陪伴了我们多年,但是现在已经不更新了。官网原文如下: Log4j 1.x has been widely adopted and used in many applications. However, through the years development 阅读全文
摘要:
一、什么是JAVA的反射 1、在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。 2、对于任意一个对象,都能够调用它的任何方法和属性。 这种动态获取信息以及动态调用对象的方法的功能称为JAVA的反射。 二、反射的作用 在JAVA中,只有给定类的名字,就可以通过反射机制来获取类的所有信息,可 阅读全文
摘要:
一、为什么会有AOP 在日常的开发中经常会有这样一种场景,支付相关的业务中经常需要记录日志,而记录的日志大体相同;这样就会造成支付组件和日志组件强关联,耦合在一起了。而AOP的出现就是为了解决这种问题的。 二、什么是AOP AOP里面有这样几个概念:目标对象、切点、切面支持类、切面、通知。AOP为开 阅读全文
摘要:
一、Bean对象创建的时机 依赖注入是在Bean对象创建的时候完成的,那么第一个问题来了,Bean对象什么时候创建? Bean对象的创建是在getBean方法被调用的时候发生的,而在Spring中有两个场景会触发getBean方法被调用。 1、单例模式并且是非延迟加载的对象,会在IOC容器初始化的时 阅读全文
摘要:
IOC容器初始化分为三个步骤,分别是: 1、Resource定位,即BeanDefinition的资源定位。 2、BeanDefinition的载入 3、向IOC容器注册BeanDefinition 下面我们来详细展开这三部分的内容 一、Resource定位 以ApplicationContext的 阅读全文
摘要:
一、IOC接口设计 IOC容器设计的源码主要在spring-beans.jar、spring-context.jar这两个包中。IOC容器主要接口设计如下: 这里的接口设计有两条主线:BeanFactory和ApplicationContext 1、BeanFactory-->Hierarchica 阅读全文
摘要:
前面介绍过Channel、Buffer,后面的文章主要讲解Selector的实践以及实现原理,选择器的概念比起通道、缓冲区要复杂一些,并且选择器是NIO中最重要的一部分内容。 为什么使用Selector Selector又称为“选择器”,单个线程通过Selector可以管理多个SelectableC 阅读全文
摘要:
Executor框架的两级调度模型 在HotSpot VM的模型中,JAVA线程被一对一映射为本地操作系统线程。JAVA线程启动时会创建一个本地操作系统线程,当JAVA线程终止时,对应的操作系统线程也被销毁回收,而操作系统会调度所有线程并将它们分配给可用的CPU。 在上层,JAVA程序会将应用分解为 阅读全文