源码

spring初始化源码浅析之关键类和扩展接口

本小妞迷上赌 提交于 2020-02-04 00:49:27
目录 1、关键接口和类 1.1、关键类之 DefaultListableBeanFactory 1.2、关键类之XmlBeanDefinitionReader 1.3、关键类之ClassPathXmlApplicationContext 2、spring初始化过程中对外暴露的扩展接口 3、扩展点的启动顺序 spring的IOC容器初始化流程很复杂,本文只关注流程中的关键点,勾勒出主要轮廓,对容器的初始化有一个整体认识,以下基于spring的5.1.2.RELEASE分析,本文演示代码地址:https://github.com/amapleleaf/spring-code.git 本文分为两部分:《spring初始化源码浅析之关键类和扩展接口》、《spring初始化源码浅析之代码浅析》 1、关键接口和类 1.1、关键类之 DefaultListableBeanFactory 该类核心功能: 1、提供注册、获取等等与BeanDefinition对象操作相关的方法,BeanDefinition缓存在DefaultListableBeanFactory的beanDefinitionMap变量(ConcurrentHashMap类型) 2、提供创建、注册、获取、单例等等跟bean对象操作相关的方法供ApplicationContext使用

源码安装apache

一个人想着一个人 提交于 2020-02-03 23:56:34
准备工作 输入:’yum search apr’ 命令,查找apr相关软件 输入:’yum install apr apr-devel apr-util-devel apr-util’ 安装apr依赖包 输入:’yum groupinstall Development Tools -y’ 安装开发者工具包 下载安装httpd 官网下载httpd (apache在linux中叫做httpd) 下载链接 用FZ传输到虚拟机中 输入:’tar -zxvf httpd-2.4.37.tar.gz’ 解压httpd 在usr/local/下新建apache2的文件夹 cd /usr/local/ mkdir apache2 然后输入:’cd http-2.4.37’ 进入htthd目录 输入: ./configure –grefix=/usr/local/apache2 进行安装 大专栏 源码安装apache 遇到错误(缺少pcre) 下载pcre,传输到虚拟机中 解压pcre 进入到pcre文件中 输入: ‘./configure’ make && make install 错误解决,回到httpd继续安装 继续安装httpd ./configure –grefix=/usr/local/apache2 make && make install 编译于当前软件相依赖的源码,生成可执行程序

Mybatis框架源码解读

只谈情不闲聊 提交于 2020-02-03 21:27:32
Configuration:存储数据源,事务配置等信息 调用addMapper方法的时候它主要是调用的mapperRegistry的addMapper方法, mapperRegistry会new一个MapperProxyFactory对象(构造函数的入参是我们的Mapper接口) 然后以Mapper接口的全限定名为key,MapperProxyFactory对象为值存放在Configuration内部的一个map对象中(knownMappers) 接下来就是调用MapperAnnotationBuilder的parse方法解析对应的xml文件或者是使用了注解的Mapper接口 public void parse() { String resource = type.toString(); if (!configuration.isResourceLoaded(resource)) { //判断是否有xml文件,如果有的话,使用对应的xml解析器进行解析 loadXmlResource(); configuration.addLoadedResource(resource); //设置命名空间 assistant.setCurrentNamespace(type.getName()); //对CacheNamespace注解进行解析 parseCache(); /

jdk源码学习计划

风格不统一 提交于 2020-02-03 18:41:43
jdk源码学习计划 1.lang 2.util 3.io 4.nio 5.net 6.beans 7.math 8.time 9.rmi 10.sql 接下来一段时间,将会过一遍jdk源码。 很简单就能够知道,jdk的结构。 对比jdk的结构,暂时分为9部分,其中界面和web程序不进行研究。 安全也不进行研究,暂时接触不到。 自然语言相关的包也不进行研究。 每次学习一点,回来增加一点。 1.lang 说实话,java lang的内容其实非常的多,毕竟Java都多少年了,里面的东西很多。 所以研究下日常编程中常见的东西。 2.util 里面有许多非常强大的工具,了解下相关的算法,实现,以及为什么 3.io 输入输出 4.nio 输入输出 5.net 网络 6.beans bean 7.math 数学 8.time 时间? 9.rmi 远程调用 10.sql 数据库 来源: CSDN 作者: a18792721831 链接: https://blog.csdn.net/a18792721831/article/details/104158776

Virtualbox源码分析9 CPU manager1

懵懂的女人 提交于 2020-02-03 12:28:43
Virtualbox源码分析9 CPU manager1 接下来3篇文章,介绍CPU虚拟化管理部分: CPUM 每个VM 都有一个或者多个VCPU,VCPU是VM运行的单位,类似于操作系统中的进程和线程的概念,VM是进程,VCPU是线程,一个host里可以有多个VM。 每个VCPU都需要全局变量保存相关信息,比如VCPU进入/退出 GuestOS都需要保存相关上下文信息。第一篇介绍一些重要的结构体。 9.1 vm.h里关于CPU的相关结构体 每个VCPU,都有一个对应的VMCPU结构体,保存每个VCPU对应的信息 VMCPUSTATE //VCPU的状态 typedef enum VMCPUSTATE { /** The customary invalid zero. */ VMCPUSTATE_INVALID = 0 , /** Virtual CPU has not yet been started. */ VMCPUSTATE_STOPPED , /** CPU started. */ VMCPUSTATE_STARTED , /** CPU started in HM context. */ VMCPUSTATE_STARTED_HM , /** Executing guest code and can be poked (RC or STI bits of HM). */

mysql源码编译

醉酒当歌 提交于 2020-02-03 09:05:45
1.mysql源码下载: 在mysql官网下载页下载最新的mysql5.7.18源码, 并下载对应的boost_1_59_0库 2.配置win10 wsl 和clion CMake options: -DWITH_DEBUG=1 -DWITH_BOOST=/mnt/f/installDes/boost_1_59_0 -DCMAKE_INSTALL_PREFIX=/mnt/f/installDes/mysqlcompile -DCMAKE_INSTALL_PREFIX=/mnt/f/installDes/mysqlcompile -DMYSQL_DATADIR=/mnt/f/installDes/mysqlcompile/mysql_data/5.7.18/data -DSYSCONFDIR=/mnt/f/installDes/mysqlcompile/mysql_data/5.7.18 -DMYSQL_UNIX_ADDR=/mnt/f/installDes/mysqlcompile/mysql_data/5.7.18/data/mysql.sock 成功后执行: make -j 4 使用多核特性make, 这里使用4个cpu cores来make make install -j 4 成功后进入basedir, 初始化数据库 cd /mnt/f/installDes

Lua源码分析 - 数据结构篇 - Mem内存操作

a 夏天 提交于 2020-02-03 04:06:32
原先以为Lua的内存操作也是高大上的,但是仔细研究了一下,突然发现,这块代码绕来绕去,封装来封装去,有一些low low感。 废话少说,直接上原理吧。这部分的代码,我也不画详细的图了。 Mem内存操作 - 核心分配函数 Lua的全局状态机里面,有两行代码,定义了内存分配的基础函数。底层的内存分配函数主要调用了c语言本身的内存分配函数(malloc、free、realloc等)。想要研究linux系统的内存分配器的,可以看我这边文章 《Linux c 开发 - 内存管理器ptmalloc》 先看一下全局状态机里面的定义: /* ** 'global state', shared by all threads of this state ** lua 全局状态机 ** 作用:管理全局数据,全局字符串表、内存管理函数、 GC 把所有对象串联起来的信息、内存等 */ typedef struct global_State { /* 版本号 */ const lua_Number *version; /* pointer to version number */ /* 内存管理 */ lua_Alloc frealloc; /* Lua的全局内存分配器,用户可以替换成自己的 - function to reallocate memory */ void *ud; /*

vuex源码分析(二) state及strict属性 详解

六月ゝ 毕业季﹏ 提交于 2020-02-03 03:36:52
state也就是vuex里的值,也即是整个vuex的状态,而strict和state的设置有关,如果设置strict为true,那么不能直接修改state里的值,只能通过mutation来设置 例1: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script> <script src="https://unpkg.com/vuex@3.1.0/dist/vuex.js"></script> </head> <body> <div id="app"> <p>count:{{count}}</p> </div> <script> const store = new Vuex.Store({ state:{count:1} }) var app = new Vue({ el:"#app", store, computed:{ count(){return store.state.count } } }) </script> </body> </html> 渲染如下: 当我们在控制台修改store.state

Eureka 源码编译安装部署

僤鯓⒐⒋嵵緔 提交于 2020-02-03 03:29:06
Netflix开源的Eureka 是使用Gradle 构建的,所以我们也使用Gradle来编译它 所需环境 Eclipse , Gradle , Tomcat ,git 这些插件如果己经安装可直接跳过到Eureka 服务器的步骤 Eclispe 下载官网 https://www.eclipse.org/ 下载下来安装即可,过程省略 本人使用的是:Version: Neon Release (4.6.0) 版本 Gradle 1、下载Gradle https://services.gradle.org/distributions/gradle-2.14-all.zip 2、添加环境变量GRADLE_HOME,添加值为 C:\gradle-2.9-bin\gradle-2.9;(注意根据自己的实际安装路径修改) 3、PATH环境变量中添加%GRADLE_HOME%/bin; 4、验证,命令行中输入gradle -v,查看是否配置正确,正确会输出gradle的版本信息; Gradle eclipse 插件: 1.eclipse中依次打开“Help”–》“Eclipse Marketplace”,在搜索栏中输入“buildship”进行搜索; 2.点击install,等待安装完成,按照提示重启eclipse即可。 3.安装成功后,可以在Window–>Show View–>Others