HostConfig.deployApps() //在监听到start事件类型,也就是StandardHost调用startInternal protected void deployApps() { File appBase = host.getAppBaseFile(); //这个值是在触发before_start时间时生成的,默认是tomcat安装目录+engine名+host名 File configBase = host.getConfigBaseFile(); //获取host上配置…
总结:主要是创建Context对象,并且将默认context配置,host级别配置,context配置的值设置进去,设置docBase,如果是war包就解压到webapp的目录中,重新设置docBase为war包解压后的目录.如果配置文件中没有指定docBase,那么就以webapps为基路径+context的baseName作为docBase HostConfig.deployApps() //在监听到start事件类型,也就是StandardHost调用startInternal prote…
HostConfig.deployApps() //在监听到start事件类型,也就是StandardHost调用startInternal protected void deployApps() { File appBase = host.getAppBaseFile(); //这个值是在触发before_start时间时生成的,默认是tomcat安装目录+engine名+host名 File configBase = host.getConfigBaseFile(); //获取host上配置…
前言 上一篇文章我们学习了Context关联类和Application Context的创建过程,这一篇我们接着来学习Activity和Service的Context创建过程.需要注意的是,本篇的知识点会和深入理解四大组件系列的部分文章的知识点相重合. 1.Activity的Context创建过程 当我们在Activity中调用startActivity方法时,其实调用的是Context的startActivity方法,如果想要在Activity中使用Context提供的方法,务必要先创建Con…
前言 Context也就是上下文对象,是Android较为常用的类,但是对于Context,很多人都停留在会用的阶段,这个系列会带大家从源码角度来分析Context,从而更加深入的理解它. 1.Context概述 Context意为上下文或者场景,是一个应用程序环境信息的接口.在开发中我们经常会使用Context,它的使用场景总的来说分为两大类,它们分别是: 使用Context调用方法,比如:启动Activity.访问资源.调用系统级服务等. 调用方法时传入Context,比如:弹出Toast.…
我们知道,zk就是一个个处理链组成的. 但是,这些处理链是在什么创建的呢? ZooKeeper 中有三种角色的服务节点存在: Leader, Follower, Observer . 而每个服务节点的承担的任务是不一样的,所以处理任务的逻辑是不一样的.而在ZK中,则是巧妙的通过责任链模式将各自节点的处理能力建立起来的. 而这个创建时机是在什么时候呢?服务一启动的时候?还是每个请求进来的时候? 其实ZK服务节点的处理链路是在角色被确定下来了之后,才创建的!我们一起看一下过程! 一.选举线程会一直工…
    特定的资源或者类构成了Android应用程序的运行上下文环境 PackageManager, ClassLoader, Assert等等 Android应用程序窗口的运行上下文环境是通过ContextImpl类来描述的,即每一个Activity组件都关联有一个ContextImpl对象.ContextImpl类继承了Context类,它与Activity组件的关系如图 这个类图在设计模式里面就可以称为装饰模式 Activity组件以后就可以通过这个ContextImpl对象来执行一些具体…
上图首先描述了在TaskTracker端Task(MapTask.ReduceTask)的执行过程,MapTask(org.apache.hadoop.mapred)首先被TaskRunner调用,然后在MapTask内部首先进行一些初始化工作,然后调用run()方法,判断如果使用了新版API就调用RunNewMapper()开始执行Map操作. 1)runNewMapper()分析 1.首先创建一个Mapper对象 // make a mapper org.apache.hadoop.mapr…
上两篇中梳理了整个java启动过程中,jvm大致是如何运行的.即厘清了我们认为的jvm的启动过程.但那里面仅为一些大致的东西,比如参数解析,验证,dll加载等等.把最核心的loadJavaVM()交给了一个dll或者so库.也就是真正的jvm我们并没有接触到,我们仅看了一个包装者或者是上层应用的实现.即我们仅是在jdk的角度看了下虚拟机,这需要更深入一点. 1. 回顾jvm加载框架 虽然jvm的加载核心并不在jdk中,但它确实没有自己的简易入口.也就是说jvm想要启动,还得依靠jdk. 所以,让…
做Android插件框架时,经常会用到dex的动态加载,就要直接或间接的使用DexClassLoader,在new DexClassLoader的时候Android系统做了很多工作,下面我们详细分析一下: public class DexClassLoader extends BaseDexClassLoader { public DexClassLoader(String dexPath, String optimizedDirectory, String libraryPath, Class…