spring(三)——bean加载

AbstractBeanFactory.class //获取bean protected <T> T doGetBean(String name, @Nullable Class<T> requiredType, @Nullable Ob...

2019-07-18 19:03:25

阅读数 7

评论数 0

spring(四)——构造方法

构造方法自动注入 ConstructorResolver.class public BeanWrapper autowireConstructor(String beanName, RootBeanDefinition mbd, @Nullable Constructor<?&a...

2019-07-18 19:02:54

阅读数 19

评论数 0

spring源码解析(二)——默认标签解析

DefaultBeanDefinitionDocumentReader.class //根据不同标签进行不同处理 private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) { ...

2019-07-18 19:02:34

阅读数 9

评论数 0

spring源码解析(一)——文件加载

分析xml配置文件的加载过程 大概分为几步: test.class //1.读取加载配置文件 //2.解析配置文件,根据配置的值,生成bean,存储 XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource(...

2019-07-18 19:02:20

阅读数 39

评论数 0

java中instanceof的实现原理

instanceof的使用 obj instanceof class 注:obj 操作数的类型必须是引用类型或空类型,否则,发生编译时错误。 instanceof的实现原理 代码: boolean rs; if (obj == null) { rs= false; } else { tr...

2019-07-18 19:01:35

阅读数 21

评论数 0

mybatis运行原理(一)

我们平常使用mybatis如下,主要分为四步: <!--全局配置文件--> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE c...

2019-05-26 16:31:44

阅读数 17

评论数 0

mybatis运行原理(二)

二、生成SqlSession //2、获得session SqlSession session = factory.openSession(); openSession中实际上是调用了openSessionFromDataSource完成的 private SqlSession openSes...

2019-05-26 16:31:09

阅读数 11

评论数 0

JDK1.8 Hashmap源码解析

注释 基于hashtable,实现了map接口:map提供相关操作; 允许空值和空键:hashmap 大致相当于 hashtable, 只是它不同步, 并允许空值; 无序:不保证map中的顺序,不保证顺序一直不变; 基本操作 (get and put) 恒定时间性能:O(log n) ...

2019-05-14 22:16:52

阅读数 11

评论数 0

redis源码解析(四)——ziplist

版本:redis - 5.0.4 参考资料:redis设计与实现 文件:src下的ziplist.c ziplist.h 一、基础知识 压缩列表是Redis为了节约内存而开发的,是由一系列特殊编码的连续内存块组成的顺序性数据结构。一个压缩列表可以包含任意多个节点,每个节点可以保存一个字节数...

2019-05-09 20:39:04

阅读数 14

评论数 0

redis源码解析(五)——zipmap

版本:redis - 5.0.4 参考资料:redis设计与实现 文件:src下的zipmap.c zipmap.h 一、注释 zipmap与ziplist类似,主要目的就是节约内存 1.存储方式: Memory layout of a zipmap, for the map "foo&...

2019-05-08 11:23:55

阅读数 21

评论数 0

java中的锁——类锁和对象锁

对象锁(方法锁) 针对一个对象实例,只锁住当前的对象。在该对象的某个内存位置声明一个标识,说明该对象是否拥有锁。 synchronized修饰普通方法,即为对象锁 synchronized修饰的代码块传入this也属于对象锁 //对象锁的两种形式 public synchronized void ...

2019-04-29 16:03:21

阅读数 40

评论数 0

redis源码解析(三)——dict

版本:redis - 5.0.4 参考资料:redis设计与实现 文件:src下的dict.c dict.h 一、dict.h dict(字典),又称为符号表,关联数组或映射。用于保存键值对。 字典使用哈希表作为底层实现。 1、注释 /*Hash Tables Implementation. *...

2019-04-26 16:19:24

阅读数 42

评论数 0

redis源码解析(二)——SDS(简单动态字符串)

版本:redis - 5.0.4 参考资料:redis设计与实现 文件:src下的sds.c sds.h 一、基础知识 c语言中,字符串最后需要加一个空字符‘\0’,作为结束标志。sds延续了这种做法,兼容部分c字符串函数。 二进制安全:由于以空字符作结束标志,所以C语言中,字符串...

2019-04-24 20:31:55

阅读数 59

评论数 0

inline,static inline

本文摘自网络各处,具体出处已不可考 inline 函数被调用时,需要出栈入栈。当函数频繁被调用时,则不断地有函数出栈入栈,会造成栈空间或栈内存的大量消耗。所以引入了inline。 inline:在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数。 内联函数:...

2019-04-24 09:14:16

阅读数 244

评论数 0

redis源码解析(一)—— adlist

这是对adlist结构体的定义,与其他代码关联不大。 #ifndef __ADLIST_H__ #define __ADLIST_H__ /* Node, List, and Iterator are the only data structures used currently. */...

2019-04-23 11:18:30

阅读数 82

评论数 0

java中的锁——偏向锁,轻量级锁,重量级锁

CAS操作 3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。 执行:当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。整个比较并替换的操作是一个原子操作。 CAS问题: 循环时间长开销很大。如果CAS失败,会一直进行尝试。如果CAS长时间一...

2019-04-21 18:20:33

阅读数 23

评论数 0

代理机制

代理分为静态代理和动态代理,动态代理又有cglib代理和jdk代理之分。 1.静态代理(针对接口): 首先,先定义一个接口,然后实现它,这就是我们的核心代码。 一个代理类,用于对实现类进行处理包装:获取其静态代理,并增加附加功能,如: public class StaticProxy ...

2019-01-30 13:30:06

阅读数 39

评论数 0

AOP简单实现(面向切面编程)

一、代理机制 首先简单描述一下代理机制。核心代码完成后,我们想给代码增加一些附加功能,比如日志,拦截等,这时不应该去修改核心代码,我们可以通过获取代理,在核心代码以外增加代码,实现相关功能。同样在我们没有源代码或无法触碰源代码时,也是如此。核心功能与附加功能分开,互不干扰,称之为解耦,使开发过程...

2018-10-28 00:43:33

阅读数 55

评论数 0

原型、原型链

一、类,对象,函数 var obj = {};//对象 obj.num = 10;//js对象中成员的增加,可以通过直接赋值实现 console.log(obj); console.log(window); 运行结果: obj可以看做window的一个成员。 //fun是...

2018-10-27 16:34:43

阅读数 55

评论数 0

包及jar包扫描

public PackageScanner() { } //扫描包 private void scanFile(File currentFile, String packageName) { //File[] fileList = file.listFiles(); //得到该文...

2018-10-04 21:14:57

阅读数 116

评论数 0

提示
确定要删除当前文章?
取消 删除