通过官方API结合源码,如何分析程序流程通过官方API找到我们关注的API的某个方法,然后把整个流程执行起来,然后在idea中,把我们关注的方法打上断点,然后通过Step Out,从内向外一层一层分析调用链,然后找出我们要分析的流程的逆流程,然后再通过在每层上面打上断点,进而整理出代码的执行流程:其实,对于面向对象语言,由于有了多态特性,代码中有了很复杂的抽象结构,一个接口或者抽象类有很多的实现,有时通过代码可以看出来,有些不太好看,程序执行时到底调用了哪个实现类的方法,这就需要按照上面动态的方…
版权声明:本文由晋中望原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/124 来源:腾云阁 https://www.qcloud.com/community 接上篇RxJava && Agera 从源码简要分析基本调用流程(1)我们从"1.订阅过程".“2.变换过程”进行分析,下篇文章我们继续分析"3.线程切换过程" 3.线程切换过程 从上文中我们知道了RxJava能够帮助我…
目录 前言 9.1 IP协议简述 9.2 IP地址分类 9.2.1 私有地址 9.2.2 受限广播地址 9.2.3 直接广播地址 9.2.4 多播地址 9.2.5 环回地址 9.2.6 本地链路地址 9.2.7 本网络本主机地址 9.2.8 子网 9.2.9 NAT 概念 9.3 IP数据报 9.3.1 版本号字段 9.3.2 首部长度字段 9.3.3 服务类型(TOS:type of service)字段 9.3.4 总长度字段 9.3.5 标识字段 9.3.6 标志字段 9.3.7 分片偏移…
MapReduce的MapTask任务的运行源码级分析 这篇文章好不容易恢复了...谢天谢地...这篇文章讲了MapTask的执行流程.咱们这一节讲解ReduceTask的执行流程.ReduceTask也有四种任务,可参考前一章节对应的内容,至于Reduce Task要从各个Map Task上读取一片数据,经过排序后,以组为单位交给用户编写的reduce方法,并将结果写入HDFS中. MapTask和ReduceTask都是Task的子类,分别对应于我们常说的map和reduce任务.同上一节一…
TaskTracker任务初始化及启动task源码级分析 这篇文章中分析了任务的启动,每个task都会使用一个进程占用一个JVM来执行,org.apache.hadoop.mapred.Child方法是具体的JVM启动类,其main方法中的taskFinal.run(job, umbilical)会启动具体的Task. Task分为两种类型:MapTask和ReduceTask,很明显,前者对应于Map任务,后者对应于Reduce任务.且MapTask分为4种:Job-setup Task.Jo…
在监听器初始化Job.JobTracker相应TaskTracker心跳.调度器分配task源码级分析中我们分析的Tasktracker发送心跳的机制,这一节我们分析TaskTracker接受JobTracker的响应信息后的工作内容. TaskTracker中的transmitHeartBeat方法通过调用JobTracker.heartbeat方法获得心跳的响应信息HeartbeatResponse,然后返回给TaskTracker.offerService()方法.HeartbeatRes…
Hashtable /HashMap / LinkedHashMap 概述 * Hashtable比较早,是线程安全的哈希映射表.内部采用Entry[]数组,每个Entry均可作为链表的头,用来解决冲突(碰撞). * HashMap与Hashtable基本原理一样,只是HashMap允许null的key/value,且非线程安全. * LinkedHashMap从字面看有两个意思,Hash和Linked,既通过Hash散列存储(与HashMap相同),又把每个Entry(增加了before/af…
DispatcherServlet的介绍与工作流程 DispatcherServlet是SpringMVC的前端分发控制器,用于处理客户端请求,然后交给对应的handler进行处理,返回对应的模型和视图,视图解析器根据视图名称进行视图渲染,然后返回给DispatcherServlet,该分发servlet将渲染好的视图页面呈现给用户. 工作流程图 下面是对DispatcherServlet的源码注解分析,后期将会不断完善 /* * Copyright 2002-2017 the original…
JUC同步器框架AbstractQueuedSynchronizer源码图文分析 前提 Doug Lea大神在编写JUC(java.util.concurrent)包的时候引入了java.util.concurrent.locks.AbstractQueuedSynchronizer,Abstract Queued Synchronizer,也就是"基于队列实现的抽象同步器",一般我们称之为AQS.其实Doug Lea大神编写AQS是有严谨的理论基础的,他的个人博客上有一篇论文<…
===================================================== FFmpeg的库函数源码分析文章列表: [架构图] FFmpeg源码结构图 - 解码 FFmpeg源码结构图 - 编码 [通用] FFmpeg 源码简单分析:av_register_all() FFmpeg 源码简单分析:avcodec_register_all() FFmpeg 源码简单分析:内存的分配和释放(av_malloc().av_free()等) FFmpeg 源码简单分析:常…