Spring AOP 源码解析一 (AOP入口浅谈)

引言在进行aop的源码解析之前,我们首先要知道Spring AOP是怎么用的,只有知道怎么用的,我们才能更好的理解aop,才能进行下一步解析 使用AOP好了,废话不多说,我们直接动手来用一下spring的AOP实现 首先新建一个MyPointCut接口,并且实现它 12345678910/** * MyPointCut * * @author wangjn * @date 2018/12/7 */public interface MyPointCut { void sa...

阅读全文

Spring IOC 源码解析五(非延迟加载bean的初始化)

引言 上期分析了refresh方法中大部分,这期我们只分析finishBeanFactoryInitialization(beanFactory)这一个方法,分析这个方法的过程中我们会顺藤摸瓜把bean初始化的整个流程都分析一遍 finishBeanFactoryInitialization(beanFactory)提前初始化一些非延迟加载的单例类型的bean,这里主要看最后一行 beanFactory.preInstantiateSingletons(),这里是初始化非延迟加载单例的入...

阅读全文

Spring IOC 源码解析四(加载非延迟单例前的操作)

引言 上一期讲述了BeanDefinitions的载入和注册,beanDefinition相当于spring对bean的数据抽象定义,这一期我们继续顺着的 refresh 方法往下讲 回到refresh方法上一期其实主要是介绍了obtainFreshBeanFactory() 这一步,这一期我们继续接着往下看 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495...

阅读全文

Spring 源码解析三(BeanDefinitions的载入注册)

引言 这期主要是解析BeanDefinitions的载入和注册的整个过程,整个过程看似非常复杂,其实我们可以分成几个部分去看: 1.载入 2.注册和解析如果没有看过前面几期的话,建议先过一下前面几期 为了帮助大家理清整个调用过程,简单的画了一个图 关键类 XmlBeanDefinitionReader AbstractBeanDefinitionReader xml配置形式的BeanDefinition的读取器 XmlReaderContext 解析过程的上下文对象,实际持有Bea...

阅读全文

数据库设计要注意的几个点

数据库设计字符集 统一使用utf8mb4,MySQL在5.5.3之后增加了utf8mb4字符编码,简单的说utf8mb4才是真正的utf-8,因为它可以支持4个字节每个字符,ps:当我们要存储emoji表情就必须使用utf8mb4,性能上不会有损失 建表规范 字段名必须使用小写字母 小数类型为decimal,禁止使用float和double(会有精度损失) 如果存储的字符串长度几乎相等,使用char定长字符串类型(与varchar的区别,例如,存储字符串'abc',对于c...

阅读全文

AVL树

引言在介绍二叉平衡树之前,有必要先了解下二叉树,下面是基于维基百科对二叉树的解释 二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉树的分支具有左右次序,不能随意颠倒 二叉树的第i层至多拥有2^(i-1)个节点。深度为k的二叉树至多总共有2^(k+1) - 1个节点(定义根节点所在深度k0 = 0),而总计拥有节点数匹配的,称为满二叉树 深度为k有n个节点的二叉树,当且仅当其中的每一节点,都...

阅读全文

Spring 源码解析二(BeanFactory的创建)

引言 在第二期介绍容器的refresh方法开始之前,首先大家应该对Spring容器的整个继承体系有个大概的了解,不然就会有雾里看花的感觉 为了帮助大家理清整个继承体系,我将接下来所要涉及到的几个重要类及接口的继承关系贴上来,在阅读中如有疑惑的话,可以回过头来看看这几张图 XmlWebApplicationContext由web容器启动的Spring容器类,注意与DefaultListableBeanFactory的区别 DefaultListableBeanFactory实际实现的b...

阅读全文

Spring 源码解析一(IOC容器的创建)

引言 Spring源码值得每一个程序员去研读,不仅仅因为她是最常用的框架,更因为她所体现的编码思想 本文主要介绍web应用启动时Spring容器的创建过程 Spring 启动监听最终入口 123<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> ContextLoade...

阅读全文

浅析计算机字符集和编码

什么是字符集呢?我们知道,在计算机内部,所有信息都是二进制表示的,二进制对于计算机来说是极为重要的,可以想象成一个开关的闭开信号,只有 0 1两种状态。计算机中 8个二进制(8位)代表一个字节,也就是说一个字节可以代表256种可能,于是上个世纪60年代,美国制定了一套字符集,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今,ASCII码一共规定了128个字符的编码,比如空格”SPACE”是32(二进制00100000),大写的字母A是65(二进制010000...

阅读全文

CAS 单点登录原理解析

引言CAS是耶鲁大学发起的一个开源单点登录项目,也是用的最为广泛的开源项目。对于学习SSO有非常好的参考价值 什么是单点登录单点登录(Single Sign On),简称为 SSO。多用于多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,最简单的单点登入实现可以完全基于cookie,通过往浏览器写带有登入信息的token来达到多点登入的目的,有兴趣的可以自己动手实现一个 CAS单点登入的实现先盗个图 : 从结构上看,分成了三部分:CAS Client,CAS Server,浏...

阅读全文


Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2020 王俊男的技术杂谈 All Rights Reserved.

访客数 : | 访问量 :