摘要:
上篇博客介绍了LoggerContext的设计以及如何创建Logger,Logger是logback的核心类,也是所有日志框架的核心类。这篇博客详细介绍一下Logger的各字段和方法,重点介绍Logger类是怎样记录日志的。 Logger类实现了slf4j框架定义的Logger接口,并且Logger 阅读全文
摘要:
上一篇博客介绍了StaticLoggerBinder如何提供ILoggerFactory的实现类,首先拥有一个默认的LoggerContext的实例,再去初始化该实例(可配置化,可通过配置文件或者java类或者使用默认配置),ContextInitializer是如何初始化LoggerContext 阅读全文
摘要:
上一篇博客介绍了slf4j-api的核心类和接口,以及如何和日志实现框架对接的。简而言之就是通过下面这行代码: return StaticLoggerBinder.getSingleton().getLoggerFactory(); 每个实现门面slf4j-api的日志实现框架都提供了org.slf 阅读全文
摘要:
一.引言 日志在排除线上问题、跟踪线上系统运行情况中发挥着重要的作用。在java应用的开发中,有许多的日志框架。 这些日志框架大致可以分为两类,一类是日志门面(JCL、slf4j),定义日志的抽象接口。另一类是日志的实现(JUL、log4j、log4j2、logback),负责真正的处理日志。 日志 阅读全文
摘要:
一.什么是不可变对象 不可变对象:有一种对象只要它发布了就是安全的,它就是不可变对象。 一个不可变对象需要满足的条件:1.对象创建后其状态不能修改。 2.对象所有的域都是final类型。 3.对象是正确创建的。(对象创建期间,this引用没有逸出) 二.如何创建一个不可变对象 (1)自己定义这里可以 阅读全文
摘要:
1.什么叫安全发布对象 发布对象:使一个对象能够被当前范围之外的代码使用。 对象逸出:一种错误的发布。当一个对象还没有构造完成时,就使它被其他对象所见。 不安全发布对象实例: 对象逸出代码示例: 分析: *这个内部类的实例里面包含了对封装实例的私有域对象的引用,在对象没有被正确构造完成之前就会被发布 阅读全文
摘要:
一.相关定义: 线程安全类:当多个线程访问某个类时,不管运行环境采用何种调度方式或者这些进程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 线程安全性主要体现在三个方面:原子性、可见性、有序性。 1.原子性(Atomicity) 原 阅读全文
摘要:
一、CPU多级缓存 CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源,所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题。CPU多级缓存配置(演变):局部性原理:(1) 时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问。(2 阅读全文
摘要:
一.什么是并发与高并发 并发:多个线程操作相同的资源,保证线程安全,合理使用资源。 高并发:服务能同时处理很多请求,提高程序性能。 二.并发及并发的线程安全处理 如何进行并发编程且保证并发线程的安全性可以从以下几个点进行展开。 1.线程安全性:原子性、可见性、有序性、atomic包、CAS算法、sy 阅读全文
摘要:
Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本的功能; 另一个是ApplicationC 阅读全文