原创 CopyOnWriteArrayList和ReentrantReadWriteLock

CopyOnWriteArrayList適用於讀多寫少的併發場景,比如白名單,黑名單等場景。 在併發編程中,多個線程讀取一個數據集合是安全的;但是對於數據的修改操作比如add、remove等是不安全的。 CopyOnWriteAr

原创 JVM類加載機制——自定義類加載器

一、java命令執行代碼大致流程 1、windows調用C++程序實現java虛擬機; 2、創建一個引導類加載器(BootstrapClassloader); 3、引導類加載器創建JVM啓動器launcher,由lunacher類

原创 CMS垃圾回收器——三色標記算法

CMS(current Mark Sweep):顧名思義,這是一個併發,標記、清除的垃圾回收器,適用於老年代垃圾回收。 在jdk1.8中和新生代的ParNew垃圾回收器搭配使用。 CMS垃圾回收器主要過程 整個過程可以大致分爲五

原创 springmvc源碼01——servlet請求過程

servlet的請求過程符合MVC架構,其中: jsp表示View; 設置數據表示model; servlet表示contrillor; springmvc其實是基於servlet架構的!

原创 spring源碼10——AbstractAutoProxyCreator.postProcessAfterInitialization

根據配置的攔截器創建一個代理 /** * Create a proxy with the configured interceptors if the bean is * identified as one to proxy

原创 spring源碼08——finishBeanFactoryInitialization(beanFactory)

調用鏈: finishBeanFactoryInitialization(beanFactory) ---->DefaultListableBeanFactory.preInstantiateSingletons(); 類名:De

原创 spring源碼06——AbstractAutowireCapableBeanFactory.doCreateBean

類名:AbstractAutowireCapableBeanFactory protected Object doCreateBean(final String beanName, final RootBeanDefinitio

原创 spring源碼01——AnnotationConfigApplicationContext

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Test.class) 類名:AnnotationC

原创 spring源碼02——registerBean源碼解析

類名:AnnotatedBeanDefinitionReader registerBean(java.lang.Class<?>, java.lang.String, java.lang.Class<? extends java.

原创 spring源碼04——AbstractApplicationContext.registerBeanPostProcessors

類名:AbstractApplicationContext protected void registerBeanPostProcessors(ConfigurableListableBeanFactory beanFactory

原创 spring源碼09——AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization

applyBeanPostProcessorsAfterInitialization就是在bean初始化之後,執行的方法。 public Object applyBeanPostProcessorsAfterInitializat

原创 spring源碼03——AbstractApplicationContext.refresh()

類名:AbstractApplicationContext public void refresh() throws BeansException, IllegalStateException { synchron

原创 Java基礎——lambda表達式

使用lambda表達式可以簡化我們的代碼,但是該表達式的使用有個前提: 實現接口方法,並且該接口中只有一個方法。 語法形式: (parameters) -> expression (parameters) -> {stateme

原创 spring源碼07——AbstractAutowireCapableBeanFactory.initializeBean

類名:AbstractAutowireCapableBeanFactory#initializeBean protected Object initializeBean(final String beanName, final

原创 spring源碼05——AbstractBeanFactory.doGetBean

類名:AbstractBeanFactory protected <T> T doGetBean(String name, Class<T> requiredType, final Object[] args, boolean t