首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android点滴分享

    AudioTrack源码解读(2)

    源码介绍 播放线程运行 首先从播放线程的拉起开始,这儿以PlaybackThread为例, 由于PlaybackThread是以智能指针形式存在的,因此在创建后,会调用onFirstRef,因此这整个流程从这个函数开始 - 1; part1 = mFrameCountP2 - rear; } else { front &= mFrameCountP2 = STOPPING_2 && mState != STOPPED && mState != PAUSED && mState ! int32_t flush = android_atomic_acquire_load(&cblk->u.mStreaming.mFlush); if (flush ! } } mFlushed += (newFront - front) & mask; } } 这时候就完成了AudioTrack主要流程的实现解读

    1.6K20编辑于 2022-10-25
  • 来自专栏Android记忆

    Android源码解读-事件分发机制

    34B66A6E-F3C7-4D02-A508-14F271CD3445.png A6A6A7B1-1CC9-4820-9F87-D513CA85F93C.png 48C9C055-75B4-4B0B-9D82-8F8A699AA1C1.png 449E97DB-A71E-4E1E-8915-7E9A6BFFE07D.png D397C456-AD94-42DB-8123-74FB3CF44FAB.png

    58750编辑于 2022-01-04
  • 来自专栏Android记忆

    Android源码解读-Handler、Looper、MessageQueue

    二、源码解析 Looper源码解析 Android应用程序进程在启动的时候,会在线程中加载 /frameworks/base/core/java/android/app/ActivityThread.java 2.获得当前线程,这个线程主要用来判断Looper是不是属于当前线程。 myLooper方法,比较简单,直接从ThreadLocal取出。 next源码 Message next() { final long ptr = mPtr; ............... 在代码2中,如果拿到数据了,接下来就是考虑延迟处理消息还是直接处理消息。 2.生产消费设计模式: 生产者enqueueMessage往queue中入队消息,next往MessageQueue里拿消息是一个消费者。

    1.8K40编辑于 2023-03-29
  • 来自专栏余林丰

    MyBatis源码解读2)——MapperProxy

    1 //org.apache.ibatis.binding.MapperRegistry 2 public <T> T getMapper(Class<T> type, SqlSession sqlSession MapperProxy是一个重要的类,所以我们将其代码全部贴出: 1 //org.apache.ibatis.binding.MapperProxy 2 public class MapperProxy

    1.2K80发布于 2018-01-09
  • 来自专栏Android记忆

    Android源码解读-App启动过程

    一.Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity;

    53911编辑于 2022-01-13
  • 来自专栏小工匠聊架构

    Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_2

    ---- Pre 接上文 Spring5源码 - 04 invokeBeanFactoryPostProcessors 源码解读_1 ---- 源码解读 总体流程 ? ---- 源码分析 /** * *调用bean工厂的后置处理器 * 1)BeanDefinitionRegistryPostProcessor(先被执行) * 所有的bean定义信息将要被加载到容器中 ,Bean实例还没有被初始化 * 2)BeanFactoryPostProcessor(后执行) * 所有的Bean定义信息已经加载到容器中,但是Bean实例还没有被初始化 bean定义前后进行处理 * BeanDefinitionRegistryPostProcessor是bean定义解析前调用 * 1)实现了PriorityOrdered接口的 * 2) ---- 那继续分段来解读Spring的设计思想 【初始化对应的集合 & 遍历用户自己手动添加的后置处理器】 ?

    48520发布于 2021-08-17
  • 来自专栏857-Bigdata

    源码解读】|SparkContext源码解读

    (最短栈、最长栈) private[spark] case class CallSite(shortForm: String, longForm: String) 源码中通过「getCallSite( )」 方法配置返回CallSite 参数示意: 参数英文名 参数含义 lastSparkMethod 方法存入 firstUserFile 类名存入 firstUserLine 行号存入 源码如下:

    2.3K20编辑于 2022-05-17
  • 来自专栏857-Bigdata

    源码解读】| LiveListenerBus源码解读

    scheduling pool, job group, description, etc. from an ActiveJob associated // with this Stage //2.

    1.9K20编辑于 2022-07-07
  • 来自专栏857-Bigdata

    源码解读】|SparkEnv源码解读

    端那么直接创建一个Ref RpcUtils.makeDriverRef(name, conf, rpcEnv) } } 创建BroadcastManager广播管理器 Spark2. metricsSystem, memoryManager, outputCommitCoordinator, conf) 总结 Spark Env 源码顺序大致就是上面的流程 ,更细致的后面的博文中会持续更新解读

    1.6K20编辑于 2022-05-17
  • 来自专栏Android记忆

    Android源码解读-View绘制流程之setContentView

    1.直接看下setContentVIew源码 activity.java public void setContentView(@LayoutRes int layoutResID) { getWindow ().setContentView(layoutResID);// initWindowDecorActionBar(); } 1.在activity.java源码中我们可以看到 mWindow = new PhoneWindow(this, window, activityConfigCallback);所以我们直接看PhoneWindow源码中的setContentView。 2.调用mLayoutInflater.inflate,把resId文件映射成各种view。 2.addViewInner 主要是把子view添加到childViews数组中。

    84241编辑于 2022-01-11
  • 来自专栏Android技术分享

    Android View源码解读:浅谈DecorView与ViewRootImpl

    前言 对于Android开发者来说,View无疑是开发中经常接触的,包括它的事件分发机制、测量、布局、绘制流程等,如果要自定义一个View,那么应该对以上流程有所了解、研究。 以下源码均取自Android API 21。 transitionTo(newScene); } else { mLayoutInflater.inflate(layoutResID, mContentParent); // 2 } } if (mContentParent == null) { mContentParent = generateLayout(mDecor); // 2 messages to start doing things try { root.setView(view, wparams, panelParentView); // 2

    1K20发布于 2019-08-22
  • 来自专栏大数据-数据人生

    DAGScheduler源码解读2-task创建

    在上一篇文章中,我们分析了DAGScheduler的代码,重点了解了stage的创建和划分,是重中之重。这篇文章重点分析下task的创建:

    56351发布于 2020-05-04
  • 来自专栏三好码农的三亩自留地

    RxJava2 源码解读之 ConcatMap

    上一篇文章中我们学习了RxJava2中 FlatMap 的原理,同时知道,FlatMap经过转换后发射的数据不是严格有序的,如果需要数据按顺序被发射,RxJava2提供了另外一个操作符, 也是这篇文章的主角 FlatMap vs ConcatMap 之前分析了FlatMap发射数据无序的原因,但是没有实际用代码验证过,这里我们在分析ConcatMap源码之前,我们先运行测试代码,有个直观的感受。 废话不多说,直接看ConcatMap源码。 ConcatMap 源码 嗯,先看方法定义,熟悉的味道 @CheckReturnValue @SchedulerSupport(SchedulerSupport.NONE) public final < 这样,整个流程就清楚了,不是很难,但是读了源码,用的时候,会更有自信。以上,水平有限,看官们开心-v-

    1.2K30发布于 2018-09-11
  • 来自专栏葬爱家族

    Android ContentProvider_2 源码解析

    源码分析 在上篇文章介绍 ContentResolver 时提到,外界(包括当前进程的其他组件)也无法直接访问 ContentProvider 的,而是需要通过ContentResolver来间接访问, 这一点我在 第 2 节 ConentProvider 的启动过程 会详细介绍 。 现在,我们先分析 ContentResolver#query(...) 的源码: 1.1 获取 IContentProvider 对象 源码中 ContentResolver#acquireProvider() 是抽象方法,具体实现在子类 ApplicationContentResolver 查询 todo ---- 2. 启动 ContentPrivider 的方法就是上面源码中的 installContentProviders(); 2、installContentProviders() 会初始化属于当前进程的 ContentProvider

    68430编辑于 2022-11-07
  • 来自专栏拭心的安卓进阶之路

    Android 进阶14:源码解读 Android 消息机制( Message MessageQueue Handler Looper)

    这才去翻了翻源码,今天总结一下。 Android 消息机制主要涉及 4 个类: Message MessageQueue Handler Looper 我们依次结合源码分析一下。 ; m.obj = obj; return m; } Pasted from: http://book2s.com/java/src/package/android 这篇文章结合源码完整的看了一遍 Message MessageQueue Handler Looper,现在看着上面的图,可以自信地说我“熟悉 Android 消息机制”了哈哈。 Thanks 《Android 开发艺术探索》 http://book2s.com/java/src/package/android/os/handler.html#d0bdd75e69340e6c9e876ee32501beae http://book2s.com/java/src/package/android/os/looper.html http://book2s.com/java/src/package/android

    1.7K90发布于 2018-01-05
  • 来自专栏睿Talks

    React 源码深度解读(八):事务 - Part 2

    在学习 React 源码的过程中,给我帮助最大的就是这个系列文章,于是决定基于这个系列文章谈一下自己的理解。本文会大量用到原文中的例子,想体会原汁原味的感觉,推荐阅读原文。 本系列文章基于 React 15.4.2 ,以下是本系列其它文章的传送门: React 源码深度解读(一):首次 DOM 元素渲染 - Part 1 React 源码深度解读(二):首次 DOM 元素渲染 - Part 2 React 源码深度解读(三):首次 DOM 元素渲染 - Part 3 React 源码深度解读(四):首次自定义组件渲染 - Part 1 React 源码深度解读(五):首次自定义组件渲染 - Part 2 React 源码深度解读(六):依赖注入 React 源码深度解读(七):事务 - Part 1 React 源码深度解读(八):事务 - Part 2 React 源码深度解读(九 ):单个元素更新 React 源码深度解读(十):Diff 算法详解 正文 上一篇文章介绍了 transaction 的基本概念和用法。

    40620编辑于 2022-06-14
  • 来自专栏大数据-数据人生

    Spark DAGScheduler源码解读2-task创建

    在上一篇文章中,我们分析了DAGScheduler的代码,重点了解了stage的创建和划分,是重中之重。这篇文章重点分析下task的创建:

    43620发布于 2020-04-01
  • 来自专栏三好码农的三亩自留地

    RxJava2源码解读之 Map、FlatMap

    (这个对我们实际工程中使用map有意义,知道代码被执行的线程是必须的) 废话不多说,进入源码 Map源码 Observable类是RxJava的门面,基本上所有的转换符都在这里定义,直接看Map 的方法定义 map 方法.png 可以看到,Function类,泛型有2个参数,第一个是原数据类型,第二个是转换后的数据类型,最终返回的是ObservableMap 类(RxJava的类命名很规范,如果是Observable 源码的实现还是很简单的,在我们了解了源码的实现后,思路会更清晰,写代码时也会更有把握。 现在我们来解答前面我们抛出的问题,Function在什么时候被调用?在哪个线程被调用? 问题先留在这里,进入源码 FlatMap 源码 FlatMap操作符涉及的代码会相对多一些,但是也是有规律可循。 dramloop.png Map 和 FlatMap 二个操作符的 源码就解析到这里,水平有限,有不对的,还望大佬不吝赐教。

    1.5K10发布于 2018-09-11
  • 来自专栏编码小白

    tomcat源码解读三(2) tomcat中JMX的源码分析

    throw new RuntimeException(e.toString()); } return on; }      就这样tomcat的JMX是注册成功的,但是既然分析源码      1. findDescriptor 方法根据bean找到对应描述文件,将实例加载到Registry类的registry句柄中去,然后再进行查找(后文描述),一般这种情况是找的到的      2. = ret ) { continue; } name=unCapitalize( name.substring(2));

    1.6K50发布于 2018-03-08
  • 来自专栏Python程序员杂谈

    urllib2源码解读二(简单的urlopen)

    对上面的几个对象有个基本概念之后,再来深究下代码,从一个最普通的urllib2.urlopen()开始,先来熟悉下第一个重点对象:build_opener这个函数。 大家最为熟悉的一段代码: res = urllib2.urlopen('http://python.org') 这端代码的作用就是打开http://python.org这个网站,返回一个response 当然这个opener也不是一次加载就再也不可变了,urllib2提供了install_opener这个方法,你可以在客户端调用build_opener然后用前面的那个install_opener来加载。 另外,最近一直在思考一个问题,如何把这些(我学到的东西,比如urllib2)东西能够更好的,更清晰易懂的让读者明白。 自己理解urllib2源码不难,难的是以何种方式或者说何种组织结构来写能让人更容易懂。不知道各位有没有什么好的建议或者好的书籍推荐。

    1K10发布于 2019-02-28
领券