audio_coding 1. 主要接口      AudioCodingModuleImpl::RegisterReceiveCodec 初始化Codec      AudioCodingModuleImpl::IncomingPacket 收包      AudioCodingModuleImpl::PlayoutData10Ms neteq处理,并解码,返回原始数据      AudioCodingModuleImpl::Add10MsData 存储数据      AudioCodingM…
一.概要介绍WebRTC的音频处理流程,见下图: webRTC将音频会话抽象为一个通道Channel,譬如A与B进行音频通话,则A需要建立一个Channel与B进行音频数据传输.上图中有三个Channel,每个Channel包含编解码和RTP/RTCP发送功能. 以一个Channel而言,应用程序中将包含三个活动线程,录音线程,音频接收线程和播放线程. 1)录音线程:负责麦克风音频的采集,见图中红色路径,采集到音频后,缓存到一定长度,进行音频处理,主要包括EC,AGC和NS等.然后送到Chann…
前面在介绍Android系统的开机画面时提到,Android设备的显示屏被抽象为一个帧缓冲区,而Android系统中的SurfaceFlinger服务就是通过向这个帧缓冲区写入内容来绘制应用程序的用户界面的.Android系统在硬件抽象层中提供了一个Gralloc模块,封装了对帧缓冲区的所有访问操作.本文将详细分析Gralloc模块的实现,为后续分析SurfaceFlinger服务的实现打下基础. 在前面Android系统的开机画面显示过程分析一文中提到,Linux内核在启动的过程中会创建一个类…
0.简介 整个 Abp 框架由各个模块组成,基本上可以看做一个程序集一个模块,不排除一个程序集有多个模块的可能性.可以看看他官方的这些扩展库: 可以看到每个项目文件下面都会有一个 xxxModule 的文件,这里就是存放的模块文件,一个模块拥有四个生命周期,分别为 PreInitialize()(预加载).Initialize()(初始化).PostInitialize(初始化完成).Shutdown()(销毁),前三个根据我们上一篇文章的代码可以看到,他是先执行预加载方法,然后执行初始化,最后…
本文为博主原创,转载请注明出处:http://blog.csdn.net/zrf1335348191/article/details/50995466 蓝牙相关代码已在另两篇文章中介绍,有须要的能够查看 Android4.42-Settings源代码分析之蓝牙模块Bluetooth(上) Android4.42-Setting源代码分析之蓝牙模块Bluetooth(下) ONE,SWITCH蓝牙开关 switch从创建到动作状态监听步骤例如以下 创建switch实例 Switch actionB…
原文地址:http://jerryshao.me/architecture/2013/04/21/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B-scheduler%E6%A8%A1%E5%9D%97/ Background Spark在资源管理和调度方式上采用了类似于Hadoop YARN的方式,最上层是资源调度器,它负责分配资源和调度注册到Spark中的所有应用,Spark选用Mesos或是YARN等作为其资源调度框架.在每一个应用内部,…
原文地址:http://jerryshao.me/architecture/2013/04/30/Spark%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E4%B9%8B-deploy%E6%A8%A1%E5%9D%97/ Background 在前文Spark源码分析之-scheduler模块中提到了Spark在资源管理和调度上采用了Hadoop YARN的方式:外层的资源管理器和应用内的任务调度器:并且分析了Spark应用内的任务调度模块.本文就Spark的外层资…
ADB源码分析(一)——ADB模块简述 1.Adb 源码路径(system/core/adb). 2.要想很快的了解一个模块的基本情况,最直接的就是查看该模块的Android.mk文件,下面就来看看adb模块的Android.mk文件: …… ifeq ($(HOST_OS),linux) //用HOST_OS这个宏来兼容不同的操作系统的adb可执行程序(windows.Linux……) USB_SRCS := usb_linux.c EXTRA_SRCS := get_my_path_linu…
转自:http://blog.chinaunix.net/uid-27717694-id-3966290.html 一.概述模块是作为ELF对象文件存放在文件系统中的,并通过执行insmod程序链接到内核中.对于每个模块,系统都要分配一个包含以下数据结构的内存区.一个module对象,表示模块名的一个以null结束的字符串,实现模块功能的代码.在2.6内核以前,insmod模块过程主要是通过modutils中的insmod加载,大量工作都是在用户空间完成.但在2.6内核以后,系统使用busybo…
原文链接:http://jerryshao.me/architecture/2013/10/08/spark-storage-module-analysis/ Background 前段时间琐事颇多,一直没有时间整理自己的博客,Spark源码分析写到一半也搁置了.之前介绍了deploy和scheduler两大模块,这次介绍Spark中的另一大模块 - storage模块. 在写Spark程序的时候我们常常和RDD ( Resilient Distributed Dataset ) 打交道,通过R…
使用react全家桶制作博客后台管理系统   前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(React.React-router-dom.redux.styled-components)开发的一套博客后台管理系统,用于前端小站的管理,主要功能包括游客浏览.文章管理.类别管理.评论通知.推荐设置和用户管理 [访问地址] 域名:https://admin.xiaohuoch…
接着上一篇Android4.42-Settings源代码分析之蓝牙模块Bluetooth(上) 继续蓝牙模块源代码的研究 THREE.蓝牙模块功能实现 switch的分析以及本机蓝牙重命名和可见性的分析见上一篇,接下来进行第三章第三部分的介绍:关于蓝牙远程设备列表的载入. 假设没有看过,建议看看上一篇关第一章蓝牙的布局,有助于理解 3>,设备列表的载入 由于这部分代码非常多.所以在介绍时先说一下思路.程序首先通过底层的BluetoothAdapter的getBondedDevices()方法获取…
elasticsearch源码分析之search模块(server端) 继续接着上一篇的来说啊,当client端将search的请求发送到某一个node之后,剩下的事情就是server端来处理了,具体包括哪些步骤呢? 过程 一.首先我们来看看接收地方其实就是在org.elasticsearch.action.search.TransportSearchAction中,收到请求之后会判断请求的index的shard是否只有一个,如果是一个的话,那么会强制将请求的type设置为QUERY_AND_F…
elasticsearch源码分析之search模块(client端) 注意,我这里所说的都是通过rest api来做的搜索,所以对于接收到请求的节点,我姑且将之称之为client端,其主要的功能我们可以简单地概括为将的数据请求发送到node,然后在对返回的结果做处理并返回给调用方,话虽如此,但是过程并非那么简单. 请求初始化 1.api的注册,上一篇已经提到了,所以的api都是通过Guice框架注册进来的,在注册的时候会在controller上将不同的url绑定到不同的handler中: co…
继上一篇Android系统源代码剖析(一)---Settings 接着来介绍一下设置中某个模块的源代码.本文依然是基于Android4.42源代码进行分析,分析一下蓝牙模块的实现.建议大致看一下关于Settings的剖析. ZERO,蓝牙模块的fragment及其配置 1>,首先由Settings_headers.xml文件能够知道,蓝牙相应的fragment为BluetoothSettings.java,相应的id,icon.title,不再赘述,可自行查看xml文件就可以 <!-- Blu…
jQuery返回的对象本质上是一个JavaScript对象,而入口模块则可以保存对应的节点的引用,然后供其它模块操作 我们创建jQuery对象时可以给jQuery传递各种不同的选择器,如下: false ;返回一个空jQuery对象 DOM节点 ;返回包含该DOM元素引用的jQuery对象. body ;字符串'body',返回包含body元素引用的jQuery对象 单独标签 ;调用document.createElement创建标签对应的DOM元素 较复杂的html代码 ;调用jQuery.b…
Mybatis源码分析-解析器模块 原创-转载请说明出处 1. 解析器模块的作用 对XPath进行封装,为mybatis-config.xml配置文件以及映射文件提供支持 为处理动态 SQL 语句中的占位符提供支持 2. 解析器模块parsing包 3. 解析器模块parsing包 GenericTokenParser package-info.java ParsingException PropertyParser TokenHandler XNode XPathParser mybati-c…
socketserver模块使用与源码分析 前言 在前面的学习中我们其实已经可以通过socket模块来建立我们的服务端,并且还介绍了关于TCP协议的粘包问题.但是还有一个非常大的问题就是我们所编写的Server端是不支持并发性服务的,在我们之前的代码中只能加入一个通信循环来进行排队式的单窗口一对一服务.那么这一篇文章将主要介绍如何使用socketserver模块来建立具有并发性的Server端. 基于TCP协议的socketserver服务端 我们先看它的一段代码,对照代码来看功能. #!/us…
前端模块化 关注前端技术发展的各位亲们,肯定对模块化开发这个名词不陌生.随着前端工程越来越复杂,代码越来越多,模块化成了必不可免的趋势. 各种标准 由于javascript本身并没有制定相关标准(当然es6已经有了import和export),所以在模块化方面诞生了各种不同的规范.主要有AMD规范(随requirejs诞生而普及),CMD规范(随seajs的出现而普及),commonjs(主要用于node,并不适合前端).至于以上几种规范的异同,无耻的我在这里就不多费口水了,请还不了解的亲们自行…
手机自动化测试:Appium源码分析之跟踪代码分析九   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478. // set up distributed logging before everything else var npmlog = global._global_npmlog = require('npmlog'); // npmlog is used only fo…
手机自动化测试:Appium源码分析之跟踪代码分析八   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478. lib/server/helpers.js模块, 研究之前,我们不防猜测一下这个模块的作用,然后在研究完成时在总结里面重新定义一下这个模块的作用.我猜测这个模块的作用就是提供了一些独立的方法,作为一些工具方法供其他模块使用 加载其他模块 var _ = require…
手机自动化测试:Appium源码分析之跟踪代码分析七   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自动化测试的课程,讲解appuim的实际应用,培训全程用商业项目, 大家可以加qq群进行交流:195983133. 该模块中定义了36种不同的状态,以及状态的解释信息,还有一个模块方法,这个模块相对简单 36种状态 1个json字符串定义了36个元素,每一元素代表了一个状态,每一个状态有一个名称,然后…
手机自动化测试:Appium源码分析之跟踪代码分析六   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自动化测试的课程,讲解appuim的实际应用,培训全程用商业项目, 大家可以加qq群进行交流:195983133 加载模块 var logger = require('./logger.js').get('appium') , status = require('./status.js') , _ =…
在Yii中,当请求一个Url的时候,首先在application中获取request信息,然后由request通过urlManager解析出route,再在Module中根据route来创建controller并处理request.如:http://www.yiifans.com/index.php?r=site/login.会使用SiteController里面的actionLogin动作来处理这个请求. Yii中总共有三种控制器类 base\Controller.php        这个是…
一.os模块 os模块是与操作系统交互的一个接口. import os # 和文件和文件夹的操作有关 os.makedirs('dirname1/dirname2') # 可生成多层递归目录 os.removedirs('dirname1') # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') # 生成单级目录:相当于shell中mkdir dirname os.rmdir('dirname') # 删除单级空目录,若目录不为空则无法…
前言 这篇文章主要介绍了Python subprocess模块功能与常见用法,结合实例形式详细分析了subprocess模块功能.常用函数相关使用技巧. 参考 1. Python subprocess模块功能与常见用法实例详解: 完…
CVE-2017-11882分析总结 注: 这篇随笔记录了CVE-2017-11882漏洞分析的整个过程,并介绍了相关调试软件的使用 漏洞信息 CVE-2017-11882属于缓冲区溢出类型漏洞,产生漏洞原因于EQNEDT32.EXE(微软office自带公式编辑器)进程在读入包含MathType的ole数据时,在拷贝公式字体名称(Font Name数据)时没有对名称长度进行校验,导致缓冲区溢出.通过覆盖函数的返回地址,可执行任意代码. 漏洞复现 1. 环境配置 操作系统:Window 7 专业…
一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台.如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'. 2.os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径. 3.os.listdir() 返回指定目录下的所有文件和目录名. >>> os.listdir(os.getc…
seajs实现了JavaScript 的 模块开发及按模块加载.用来解决繁琐的js命名冲突,文件依赖等问题,其主要目的是令JavaScript开发模块化并可以轻松愉悦进行加载. 官方文档:http://seajs.org/docs/#docs 首先看看seajs是怎么进行模块开发的.使用seajs基本上只有一个函数"define" fn.define = function(id, deps, factory) { //code of function- } 使用define函数来进行定…
模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: 自定义模块 内置模块 第三方开源模块 自定义模块 1.定义模块 2.导入模块 Python之所以应用越来越广泛,在一定程度上也…