1. 前言 上文介绍了HotSpot编译和调试的方法,而这篇文章将迈出正式调试的第一步--调试HotSpot的启动过程. 学习启动过程可以帮助我们了解程序的入口,并对虚拟机的运行有个整体的把握,方便日后深入学习具体的一些模块. 2. 整体感知启动过程 整体的感知启动过程可以在启动时添加_JAVA_LAUNCHER_DEBUG=1的环境变量.这样JVM会输出详细的打印. 通过这些打印,我们大致能了解到启动过程发生了什么. ----_JAVA_LAUNCHER_DEBUG---- Launcher…
目录 1. 引言 2. 初始化bean的入口 3 尝试从当前容器及其父容器的缓存中获取bean 3.1 获取真正的beanName 3.2 尝试从当前容器的缓存中获取bean 3.3 从父容器中查找bean 3.4 解析bean的依赖 3.5 再一次尝试从缓存中获取 4. 真正创建Bean的方法createBean() 4.1 实例化bean的前置处理 4.2 选择合适的策略创建bean实例 4.3 填充bean的属性,解析依赖,递归创建依赖的bean 4.4 初始化bean 5. 总结 6.…
CrawlerProcess主进程 它控制了twisted的reactor,也就是整个事件循环.它负责配置reactor并启动事件循环,最后在所有爬取结束后停止reactor.另外还控制了一些信号操作,使用户可以手动终止爬取任务. 此类在scrapy/crawler.py中定义,此模块有三个类:Crawler.CrawlerRunner和CrawlerProcess.Crawler代表了一种爬取任务,里面使用一种spider,CrawlerProcess可以控制多个Crawler同时进行多种爬取…
目录 1. 前言 1.1 IOC容器到底是什么 1.2 BeanFactory和ApplicationContext的联系以及区别 1.3 解读IOC容器启动流程的意义 1.4 如何有效的阅读源码 2. 初探IOC容器启动源码 2.1 启动容器的真正入口refresh() 2.2 容器启动流程的不同阶段 3 容器启动前的准备工作 4. 总结 1. 前言 1.1 IOC容器到底是什么 IOC和AOP是Spring框架的核心功能,而IOC又是AOP实现的基础,因而可以说IOC是整个Spring框架的…
redis整个程序的入口函数在server.c中的main函数,函数调用关系如下图1,调用顺序为从上到下,从左至右. 图1 redis启动函数调用图 main函数源码如下,1-55行根据配置文件和启动命令参数设置全局对象server ,57-59设置redis的服务器端为后台进程, initServer主要提前创建一些经常用到的对象用于节约内存,根据设置的ip地址和端口创建监听套接字用于客户端连接,并初始化时间事件,64行用于设置server->el ->beforesleep = befor…
NioEventLoop的启动时机是在服务端的NioServerSocketChannel中的ServerSocketChannel初始化完成,且注册在NioEventLoop后执行的, 下一步就是去绑定端口,但是在绑定端口前,需要完成NioEventLoop的启动工作, 因为程序运行到这个阶段为止,依然只有MainThread一条线程,下面就开始阅读源码看NioEventLoop如何开启新的线程自立家门的 总想说 NioEventLoop的整体结构,像极了这个图 该图为,是我画的NioEven…
在上一节中讲解了——Flume-NG启动过程源码分析(一)(原创)  本节分析配置文件的解析,即PollingPropertiesFileConfigurationProvider.FileWatcherRunnable.run中的eventBus.post(getConfiguration()).分析getConfiguration()方法.此方法在AbstractConfigurationProvider类中实现了,并且这个类也初始化了三大组件的工厂类:this.sourceFactory…
上篇<Spark(四十九):Spark On YARN启动流程源码分析(一)>我们讲到启动SparkContext初始化,ApplicationMaster启动资源中,讲解的内容明显不完整. 本章将针对yarn-cluster(--master yarn –deploy-mode cluster)模式下全面进行代码补充解读: 1)什么时候初始化SparkContext: 2)如何实现ApplicationMaster如何启动executor: 3)启动后如何通过rpc实现executor与dr…
本文參考Android应用程序组件Content Provider的启动过程源码分析http://blog.csdn.net/luoshengyang/article/details/6963418和<Android系统源码情景分析>,作者罗升阳. 0.总图流程图例如以下: 1.MainActivity进程向ActivityServiceManager主线程发送GET_CONTENT_PORVIDER_TRANSACTION 例如以下图: watermark/2/text/aHR0cDovL2…
引导: 该篇章主要讲解执行spark-submit.sh提交到将任务提交给Yarn阶段代码分析. spark-submit的入口函数 一般提交一个spark作业的方式采用spark-submit来提交 # Run on a Spark standalone cluster ./bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://207.184.161.138:7077 \ --execut…