IOC 初始化源代码阅读之我见】的更多相关文章

由于本人的能力有限,只能说出自己的见解,如有错漏什么的,请大家批评指出.由于代码封装太多,这里只列出了我认为的部分最重要的代码,一些简单的封装代码,不在下面列出.由于代码太过于复杂,在本次博客中,只列出了关键的代码(包含代码在哪个类),具体的所有代码和细节,需要查看源码. 在源代码解读的时候,关键的方法代码,用红色字体,如:resolvePath(locations[i]).另外,所有具体的实现方法,都是以do开头的. IOC容器初始化,包括有定位.加载.注册三个步骤,下面介绍下xml配置方式的…
转自:http://xiyong8260.blog.163.com/blog/static/66514621200892465922669/ 在我的Doctor课题研究中,基于ARF协议设计了一个改进型的AMARF协议,该文发表在milcom06和电子科学学刊英文版上.最近,我们将PC机上,使用linux操作系统,基于madwifi开源代码实现了AMARF协议,已经在室内固定以及移动环境测试表明,AMARF协议明显优越于现有的协议. 2008-9-20 现在使用了madwifi程序实现AMARF…
Linux源代码阅读——内核引导 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html 目录 Linux 引导过程综述 BIOS POST 自举过程 Boot loader 主引导扇区结构 GRUB stage1 GRUB stage2 内核初始化:体系结构相关部分 内核映像结构 header.S 初始化与保护模式 自解压内核 startup_32 内核初始化:体系结构无关部分 核心数据结构初始化 设备初始化 1 Lin…
Linux源代码阅读——环境准备 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/0_prepare.html 目录 Linux 系统环境准备 定制安装 Ubuntu 安装工具链 编译 Linux 内核 默认编译 自定义编译 模拟执行 Linux 用 qemu 模拟 Hello World 系统 准备源码阅读环境 vim 基本设置 在 vim 中使用 cscope 在 vim 中使用 ctags 使用 taglist 显示 symbol…
Linux源代码阅读——中断 转自:http://home.ustc.edu.cn/~boj/courses/linux_kernel/2_int.html 目录 为什么要有中断 中断的作用 中断的处理原则 Linux 中断机制 中断控制器 中断描述符 中断数据结构 中断的初始化 内核接口 中断处理过程 CPU 的中断处理流程 保存中断信息 处理中断 从中断中返回 编写中断处理程序 软中断.tasklet与工作队列 上半部与下半部 软中断 tasklet 工作队列 1 为什么要有中断 1.1 中…
Java 推荐读物与源代码阅读                                                     江苏无锡  缪小东 1. Java语言基础     谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它任何一本书可以超越它.该书的作者Bruce Eckel在网络上被称为天才的投机者,作者的<Thinking in C++>在1…
Exercise1 源代码阅读 文件系统部分 buf.h fcntl.h stat.h fs.h file.h ide.c bio.c log.c fs.c file.c sysfile.c exec.c 1.buf.h:对xv6中磁盘块数据结构进行定义,块大小为512字节. // xv6中磁盘块数据结构,块大小512字节 struct buf { int flags; // DIRTY, VALID uint dev; uint sector; // 对应扇区 struct buf *prev…
Exercise1 源代码阅读 锁部分:spinlock.h/spinlock.c以及相关其他文件代码 // Mutual exclusion lock. struct spinlock { uint locked; // 0未被占用, 1已被占用 // For debugging: char *name; // Name of lock. struct cpu *cpu; // The cpu holding the lock. uint pcs[10]; // The call stack…
Exercise1 源代码阅读 1.内存管理部分: kalloc.c vm.c 以及相关其他文件代码 kalloc.c:char * kalloc(void)负责在需要的时候为用户空间.内核栈.页表页以及缓冲区分配物理内存,将物理地址转为虚拟地址返回,物理页大小为4k.void kfree(char * v)接收一个虚拟地址,找对对应的物理地址进行释放.xv6使用空闲内存的前部分作为指针域来指向下一页空闲内存,物理内存管理是以页(4K)为单位进行分配的.物理内存空间上空闲的每一页,都有一个指针域…
Exercise1 源代码阅读 1.启动部分: bootasm.S bootmain.c 和xv6初始化模块:main.c bootasm.S 由16位和32位汇编混合编写成的XV6引导加载器.bootasm.S内的汇编代码会调用bootmain.c中的void bootmain(void):main.c主函数内部初始化各模块: 当x86 PC启动时,它执行的是一个叫BIOS的程序.BIOS存放在非易失存储器中,BIOS的作用是在启动时进行硬件的准备工作,接着把控制权交给操作系统.具体来说,BI…
Exercise1 源代码阅读 1.基本头文件:types.h param.h memlayout.h defs.h x86.h asm.h mmu.h elf.h types.h:仅仅是定义uint, ushort, uchar pde_t别名: typedef unsigned int uint; typedef unsigned short ushort; typedef unsigned char uchar; typedef uint pde_t; parame.h 利用宏定义了进程最…
Mongodb源代码阅读笔记:Journal机制 Mongodb源代码阅读笔记:Journal机制 涉及的文件 一些说明 PREPLOGBUFFER WRITETOJOURNAL WRITETODATAFILES REMAPPRIVATEVIEW 涉及的文件 mongoDB中和持久性相关的文件只要有以下几个: dur.h: dur.cpp,dur_preplogbuffer.cpp,dur_writetodatafiles.cpp ,dur_commitjob.h: dur_commitjob.…
本文是Tomcat源代码阅读系列的第二篇文章,我们在本系列的第一篇文章:在IntelliJ IDEA 和 Eclipse运行tomcat 7源代码一文中介绍了如何在intelliJ IDEA 和 Eclipse中运行Tomcat源代码,本文介绍一下Tomcat的总体结构. 本文没有特别指明的地方,源代码都是针对tomcat7.0.42来说. Tomcat的总体结构 Tomcat即是一个Http服务器也是一个Servlet容器,它的总体结构我们可以用下图来描述: 通过上图我们可以看出Tomcat中…
阅读开源项目的源代码是提高自己编程能力的好方法,而有一个好的源代码阅读工具无疑能够让你在阅读源代码时事半功倍.之前找过不少源代码阅读工具,像SourceInsight.sourcenav.scitools等,但是这些工具要么是收费的,要么只有windows版本.sourcenav虽然是开源的,但是个人觉得不是很好用.直到最近毕设时老师要求用doxygen生成代码文档,在使用doxygen的过程中,突然发现这个东西配合上浏览器其实就是一个很好的源码阅读工具,所以给大家推荐一下. 废话不多说,相信大…
上一篇博客(CI框架源代码阅读笔记4 引导文件CodeIgniter.php)中.我们已经看到:CI中核心流程的核心功能都是由不同的组件来完毕的.这些组件类似于一个一个单独的模块,不同的模块完毕不同的功能,各模块之间能够相互调用,共同构成了CI的核心骨架. 从本篇開始,将进一步去分析各组件的实现细节.深入CI核心的黑盒内部(研究之后.事实上就应该是白盒了,只对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 依照惯例.在開始之前.我们贴上CI中不全然的核心组件图: 因为BenchM…
淘宝数据库OceanBase SQL编译器部分 源代码阅读--Schema模式 什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们能够能够把Database看作是一个大仓库,仓库分了非常多非常多的房间,Schema就是当中的房间,一个Schema代表一个房间,Table能够看作是每一个Schema中的柜子,行和列就是柜子中的格子.User就是房间的主人.简单来说,Schema是包含表,列,索引,视图等数据库对象的集合. OceanBase中的强…
从本篇開始.将深入CI框架的内部.一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说.全局函数具有最高的载入优先权.因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就很诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源代码阅读笔记2 一切的入口 index…
[C++ 2011 STL (VS2012 Update4) 源代码阅读系列(2)]熟悉一些宏定义和模版偏特化或叫模版专门化 // point_test.cpp : 知识点练习和测试,用于单步调试,跟踪. // #include "stdafx.h" #include <functional> #include <string> #include <iostream> using namespace std;  //for _1, _2, _3...…
在IntelliJ IDEA 和 Eclipse运行tomcat 7源代码(Tomcat源代码阅读系列之一) Tomcat总体结构(Tomcat源代码阅读系列之二) Tomcat启动过程(Tomcat源代码阅读系列之三) Tomcat关闭过程(Tomcat源代码阅读系列之四) Tomcat请求处理流程(Tomcat源代码阅读系列之五) Tomcat类加载器机制(Tomcat源代码阅读系列之六) Tomcat Session管理机制(Tomcat源代码阅读系列之七) Tomcat 设计模式总结(T…
三.源代码阅读 3.元素包括containsKey(Object key) /** * Returns <tt>true</tt> if this map contains a mapping for the * specified key. * * @param key The key whose presence in this map is to be tested * @return <tt>true</tt> if this map contain…
SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理运行计划. 前两个步骤请參见我的博客<<淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树>>和<<淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成逻辑计划>>.这篇博客主要研究第三步,生成物理查询计划. 一. 什么是物理查询计划 与之前的阅读方法一致,这篇博客的两个主要问题是what 和how.那么什么是物理查询计划?物理查询计划可以直接运行并返回数据…
淘宝数据库OceanBase SQL编译器部分 源代码阅读--生成逻辑计划 SQL编译解析三部曲分为:构建语法树.生成逻辑计划.指定物理运行计划. 第一步骤,在我的上一篇博客淘宝数据库OceanBase SQL编译器部分 源代码阅读--解析SQL语法树里做了介绍,这篇博客主要研究第二步.生成逻辑计划. 一. 什么是逻辑计划? 我们已经知道,语法树就是一个树状的结构组织,每一个节点代表一种类型的语法含义.如 update student set sex="M" where name =&…
上一节(CI框架源代码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程.这里再次贴出流程图.以备參考: 作为CI框架的入口文件.源代码阅读,自然由此開始. 在源代码阅读的过程中,我们并不会逐行进行解释.而仅仅解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development能够是不论什么你喜欢的环境名称(比方dev,再如test).相相应的,你要在以下的switch c…
Spark源代码阅读笔记之DiskStore BlockManager底层通过BlockStore来对数据进行实际的存储.BlockStore是一个抽象类,有三种实现:DiskStore(磁盘级别的持久化).MemoryStore(内存级别的持久化)和TachyonStore(Tachyon内存分布式文件系统级别的持久化). DiskStore通过DiskBlockManager来实现Block和相应磁盘文件的映射关系,从而将Block存储到磁盘的文件里.DiskBlockManager依据YA…
1.前言 本文是基于JAVA配置方法对Spring IOC进行分析,掌握Spring IOC初始化流程对于我们更好的使用Spring.学习Spring还是很有帮助的,本文所使用的的Spring版本为5.2.2,下面进入分析 2.初始化流程概要图 PS:图比较大,可以选择新标签页打开 3.初始化流程详解 3.1核心对象说明 beanDefinitionMap:单例bean缓存池(对于使用FactoryBean创建出来的bean,并未保存在此map中!FactoryBean的情况,这里面存的是bea…
IOC初始化销毁的2种实现方式 1.bean内调用init-method 和destroy-method 2.通过注解实现@PostConstruct 和@PreDestroy -----------------------------bean内调用init-method 和destroy-method------------------------ 1.创建IOrderDao package com.longteng.lesson2.dao; public interface IOrderDa…
上文,我们看了IOC设计要点和设计结构:紧接着这篇,我们可以看下源码的实现了:Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的.@pdai Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程 引入 如何将Bean从XML配置中解析后放到IoC容器中的? 初始化的入口 设置资源解析器和环境 设置配置路径 初始化的主体流程 初始化BeanFactory之obtainFreshBeanFactory…
Bootstrap 通过Tomcat的启动脚本能够看到启动的入口是在Bootstrap,来看下Bootstrap的main方法, /** * Main method and entry point when starting Tomcat via the provided * scripts. * * @param args Command line arguments to be processed */ public static void main(String args[]) { if…
这是win32下的结构 从ruby_setup开始阅读 Ruby对象内存结构 RVALUE是一个union,内含ruby所有结构体(RBasic RObject RClass RFloat RString RArray RRegexp RHash RData RTypedData RStruct RBignum RFile RNode RMatch RRational RComplex)以及用于gc的free结构.RVALUE是object space heap的最小单元.ruby及C扩展通常用…
阅读本节内容前可先了解 apkplug基础教程 本教程是基于apkplug V1.6.8 版本号编写  最新开发方式以官网为准 可下载最新的apkplugdemo源代码http://git.oschina.net/plug/apkplugDemos apkplugdemo演示图 一 apkplugdemoproject源代码结构 src |-com.apkplugdemo.adapter             --插件列表Adapter |-com.apkplugdemo.adapter.ba…