自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

To be or not to be, it's a question

To strive, to seek, to find, and not to yield

  • 博客(86)
  • 资源 (3)

原创 Android -- AdapterService之蓝牙启动过程分析

Android -- AdapterService启动过程分析前面介绍BluetoothManagerService启动过程enable BT的部分提到,处理ENABLE msg的最终调用主要是call到AdapterService注册IBluetoothCallback回调监听蓝牙使能状态、以及AdapterService::enable()接口开启...

2020-02-22 23:50:39 683

原创 Android -- Airplane Mode对Bluetooth启动的影响

Android -- Airplane Mode对Bluetooth启动的影响在Android/IOS系统的手机上,在某些场景下可能会用到Airplane模式;开启这个功能后,它会关闭Wifi/BT功能等无线功能。这里记录下在Android系统上,飞行模式是如何影响开关蓝牙的。在Android手机等设备上,点击状态栏上的飞行模式按钮时,会作用到Sy...

2020-01-18 23:23:00 181

原创 Android -- Bluetooth framework启动过程简析

Android -- Bluetooth framework启动过程简析 蓝牙是Android设备中非常常见的一个feature,设备厂家可以用BT来做RC、连接音箱、设备本身做Sink等常见功能。如果一些设备不需要BT功能,Android也可以通过配置来disable此模块,方便厂家为自己的设备做客制化。APP操作设备的蓝牙功能,一...

2020-01-14 23:40:40 519 2

原创 Git——Git基本概念进阶介绍(四)

Git——Git基本概念进阶介绍(四)我们在上一篇文章中已经介绍了Git的一个典型应用,但我们忽略了其中的某些问题与Git的内部机制。下面就在介绍一些Git实现中的基本概念,它主要来自于《Git版本控制管理》第四章节。意料之中的,掌握典型使用总是比掌握设计原理简单的多~~~1.版本库Git版本库(repository)只是一个简单的数据库,其中包含所有用来维护与管理项目的修订版本...

2018-08-19 15:21:44 187

原创 Git——常用基本操作(三)

Git——常用基本操作获取仓库Git有两种方式可以获取Git仓库(repository):1.在本地现有目录或项目下将文件加入到Git中;2.从服务器上克隆一个已存在的Git仓库。1.如果你想将一个本地目录或项目使用Git进行管理,需要在该根目录下使用如下命令:git init这条命令会生成一个名为.git的子目录;它包含了我们初始化的Git仓库中所有的必须文件,这些文...

2018-08-11 17:12:41 225

原创 Git——使用初次配置(二)

Git——初配置Git安装成功之后,我们还需要做一些配置,才能使用Git。这些配置只需要配置一次,程序升级时会保留配置信息;当然,我们也可以随时修改这些配置。Git自带了一个Git config工具来帮助我们对Git进行配置。安装完Git之后,我们首先要做的第一件事是配置我们的用户名称和邮件地址。这很重要,因为Git的每一次提交都会使用这些信息,并会写入到你每一次的提价中(不可更改)。...

2018-08-05 17:56:07 535

原创 Git —— Git基础介绍(一)

Git —— Git基础介绍由于工作变动,新公司使用了Git做的代码、项目版本控制(之前是SVN)。在平时自己的学习过程中,虽然也常常使用Git,但总是局限于一些简单的提交操作,对Git本身的一些设计原理、和其他常用的高级特性了解的不多,从而经常导致自己对Git有很多误解和误操作。最近在https://git-scm.com/book/zh/v2查看了一些有关Git的资料,打算较为系统的...

2018-08-04 22:14:51 161

原创 Algorithm——红黑树(十五)

Algorithm——红黑树《算法导论》介绍了红黑树这种重要的数据结构。红黑树是一颗二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色(RED or BLACK)。通过对任何一条从根到叶子节点的简单路径上各个节点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是近似平衡的。根据《导论》中的介绍,红黑树中的节点对象相比之前二叉搜索树中的节点对象多了一个表示颜色属性的color...

2018-06-12 22:47:03 178

原创 Algorithm——二叉搜索树(十四)

Algorithm——二叉搜索树《算法导论》介绍了二叉搜索树的基本实现。二叉搜索树是一种常见的数据结构,它的定义是:“二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二...

2018-05-27 22:22:49 203

原创 Algorithm——简单数据结构之队列和链表(十三)

Algorithm——简单数据结构之队列和链表队列是一种先进先出策略,而链表中的各元素按线性顺序排列。数组的线性顺序是由数组的下标决定的,但链表的顺序是由各个对象里的指针决定的。队列有入队和出队操作,链表则有插入、删除、查询表中节点的操作。队列和双向链表的一种简单Java实现代码如下:/** * * 队列是一种先进先出策略,有入队和出队操作 * * 通过数组实现的简单队列 * *...

2018-05-13 22:34:11 147

原创 Algorithm——简单数据结构之栈(十二)

Algorithm——简单数据结构之栈栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。由此可知,栈实现的是一种后进先出的策略...

2018-05-10 22:27:11 113

原创 Algorithm——一般数组元素选择问题(十一)

Algorithm——一般数组元素选择问题《算法导论》中引出了一个一般性的数组元素选择问题:即在一个元素各异的数组A中,选择其中第i小的元素(即如果i=1,则表明选择最小的那个元素)。该算法的伪代码如下,它使用了之前介绍快速排序中的随机子数组划分方法:RANDOMIZED-SELECT(A, p, r, i) if p == r return A [p]

2018-05-02 22:42:31 176

原创 Algorithm——快速排序(十)

Algorithm——快速排序对于包含n个数的输入数组来说,快速排序是一种最坏情况实际复杂度为O(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间复杂度是O(nlgn)。(原址排序:在排序算法中,如果输入数组中仅有常数个元素需要在排序过程中存储在数组之外,则称排序算法是原址的)与归并排序一样

2018-05-01 22:09:12 159

原创 Algorithm——优先队列(九)

Algorithm——优先队列堆除了可以实现前面所述的堆排序算法,还可以用来实现优先队列。优先队列是一种用来维护一组元素构成的集合S的数据结构,其中每一个元素都有一个相关的值,称为“关键字”。一个最大优先队列支持以下操作:INSERT(S, x):把元素x插入集合S中MAXIMUM(S):返回S中具有最大关键字的元素EXTRACT-MAX(S):去掉并返回S中具有最大关键字的元

2018-05-01 11:43:16 154

原创 Algorithm——堆排序算法(八)

Algorithm——堆排序算法在分析堆排序之前,我们先来回顾一些基本概念:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。而完全二叉树:叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树(即叶子结点都是从左到右依次排布...

2018-05-01 09:33:31 152

原创 Algorithm ——数组打乱算法(七)

Algorithm ——数组打乱算法   Fisher–Yates shuffle 算法是一个非常高效又公平的随机排序算法,它的时间复杂度为O(n)。它的实现伪代码大致是:n = A.length;for i = 1 to n swap A[i] with A[RANDOM(i, n)]在进行第i次迭代时,元素A[i]时从元素A[i]到A[n]中随机选取的。第i

2018-04-25 22:44:18 548

原创 Algorithm —— 矩阵乘法的Strassen算法(六)

Algorithm —— 矩阵乘法的Strassen算法根据矩阵的乘法知识,两个NxN的矩阵A和B相乘的结果矩阵C的暴力算法是: /** * 一般的暴力矩阵乘法运算;矩阵A和B都是NxN的方阵 * * @param A * 参加运算的矩阵之一A * @param B * 参加运算的矩阵之一B * @return

2018-04-24 22:43:52 756

原创 Algorithm —— 最大子数组求解(五)

Algorithm —— 最大子数组求解《算法导论》中引出了一个求某个数组的和最大子数组问题:在原数组A中,求一个子数组a,它的各元素值的和是A的各个子数组中最大的;且子数组a的各元素下标值要连续。要注意的是,如果要求某个数组的最大子数组,则此数组中的值必须要包含负值;否则,求最大子数组是没有意义的,因为此时,整个数组的和肯定是最大的,就不必再求了。我们使用分治策略来解决该问题。假定我们要寻找数组...

2018-04-15 22:11:29 109

原创 Algorithm —— 归并排序(四)

Algorithm —— 归并排序在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序、归并排序)、傅立叶变换(快速傅立叶变换)。另一方面,理解及设计分治法算法

2018-04-15 16:50:51 223

原创 Algorithm —— 冒泡排序(三)

Algorithm -- 冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。冒泡排序算法的运作如下:(从后往前)1、比较相邻...

2018-04-15 13:57:28 220

原创 Algorithm ——选择排序(二)

Algorithm ——选择排序        选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。选择排序Jav

2018-04-07 21:10:34 91

原创 Algorithm —— 插入排序(一)

Algorithm —— 插入排序        有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要

2018-04-07 21:03:59 93

翻译 Android -- Android.mk简介

Android -- Android.mk简介主要来源:Secrets of Android.mk (翻译+整理)Android.mk简介这篇文档描述了用于向Android NDK解释你的C/C++源文件的Android.mk构建文件的语法。为了理解接下来的内容,我们假设你已经阅读了解释它们角色和使用场景的文档。编写Android.mk文件是用来向编译系

2017-12-10 16:22:46 940

原创 Android -- 系统start Service流程简要分析

Android -- 系统启动Service流程简要分析Service是Android系统四大组件之一,它主要被用来在后台处理一些耗时操作,也会被设计成对Client提供业务的服务模块。Activity组件主要用来和用户进行交互,Service组件则可以在后台处理用户触发的一些请求操作,然后直接在Activity中展现请求结果。Activity和Service组件结合使用,能让我们

2017-10-03 09:27:04 851 1

原创 Android -- Activity启动过程中的上下文环境初始化分析

Android -- Activity启动过程中的上下文环境初始化分析前面简要分析了 AMS启动Activity及应用进程创建的流程,在Activity启动过程中,系统还需要为它准备上下文环境,即“Context”。本次分析,我们就着重分析这部分。由前面介绍AMS启动Activity中的内容可知,AMS启动Activity时,最终回调用到ActivityThread::

2017-10-01 14:32:07 975

原创 Android -- ActivityManagerService为应用创建进程流程简析

Android -- ActivityManagerService为应用创建进程流程简析之前分析了Activity的启动过程,得知当系统发现当前Activity的宿主进程还不存在时,则会想先去为它创建一个进程,然后再去启动该Activity。这篇博文主要就介绍AMS为应用创建进程的过程,用来填充上一篇文章中不足的部分。AMS在发现要启动的Activity所要处于的进程不

2017-09-26 22:04:14 387

原创 Android -- Activity启动流程分析

Android -- Launcher中启动应用Activity的流程分析Activity是Apk向用户提供交互界面的接口,它应该是我们平时最常见、最常用的组件了。在Android系统中,Activity以任务栈的形式管理,这部分内容可以参考之前的Activity任务栈部分。本文我们侧重分析Activity启动的流程,来了解Activity启动过程中,系统到底做了哪些处理。

2017-09-18 22:35:11 8265 7

转载 Android -- 进程和线程

Android -- 进程和线程PS:来源 - 进程和线程当某个应用组件启动且该应用没有运行其他任何组件时,Android 系统会使用单个执行线程为应用启动新的 Linux 进程。默认情况下,同一应用的所有组件在相同的进程和线程(称为“主”线程)中运行。 如果某个应用组件启动且该应用已存在进程(因为存在该应用的其他组件),则该组件会在此进程内启动并使用相同的执行线程。

2017-07-30 16:29:11 379

转载 Android -- Android 接口定义语言 (AIDL)

Android -- Android 接口定义语言 (AIDL)PS:来源 - AIDLAIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原

2017-07-30 16:07:32 278

转载 Android -- 绑定服务

Android -- 绑定服务绑定服务绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。 绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。本文向您介绍如何创建绑定服务,包括如何绑定到来自其他应用组件的服务。基础知识绑定服

2017-07-30 15:36:56 296

转载 Android -- Service基础简介

Android -- Service基础简介PS:来源 ServiceService 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提

2017-07-29 23:26:10 282

转载 Android -- Activity之任务栈

Android -- Activity之任务栈PS:来源 - 任务栈应用通常包含多个 Activity。每个 Activity 均应围绕用户可以执行的特定操作设计,并且能够启动其他 Activity。 例如,电子邮件应用可能有一个 Activity 显示新邮件的列表。用户选择某邮件时,会打开一个新 Activity 以查看该邮件。一个 Activity 甚至可以

2017-07-29 18:24:41 3561 4

转载 Android -- Activity组件基础

Android -- Activity组件基础PS:来源 - ActivityActivity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。一个应用通常由多个彼此松散联系的 Activi

2017-07-29 17:12:33 285

转载 Android -- Intent 和 Intent 过滤器

Android -- Intent 和 Intent 过滤器Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity:Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),您可以启动新的 Activ

2017-07-27 22:47:32 288

转载 Android -- 应用基础知识

Android -- 应用基础知识Android 应用采用 Java 编程语言编写。Android SDK 工具将您的代码 — 连同任何数据和资源文件 — 编译到一个 APK:Android 软件包,即带有 .apk 后缀的存档文件中。一个 APK 文件包含 Android 应用的所有内容,它是基于 Android 系统的设备用来安装应用的文件。安装到设备后,每个 An

2017-07-27 21:40:26 336

翻译 Android -- Service官方文档简译

Android -- Service官方文档简译Service是一个应用程序组件,它既可以代表应用程序处理当无需和用户交互时的长耗时操作,也能为其他应用程序提供接口支持。每一个Service类都必须在包的Androidmanifest.xml中存在对应的声明。我们可以通过Context.startService()/Context.bindService()启动一个

2017-07-22 21:46:49 240

翻译 Android -- Activity官方文档简译

Android -- Activity官方文档简译Activitypublic class ActivityextendsContextThemeWrapper implements LayoutInflater.Factory2, Window.Callback, KeyEvent.Callback, View.OnCreateCont

2017-07-22 10:23:12 1163

原创 VLC -- 使用VLC串流播放视频

VLC -- VLC串流播放视频方式打开VLC后,在"媒体"菜单选择"流"选项,并添加一个即将要串流的视频文件:然后点击串流按钮,进入如下页面:该页面显示了一些基本信息,继续进行下一步:在此页面,我们可以设置需要的串流协议,并设置要串流到的目的地址:在文件下拉菜单中,可以选择诸如HTTP/RTSP/UDP等支持的协议;点解"添加"项,可以设置此时...

2017-07-17 22:56:42 23167 1

原创 Kotlin -- Kotlin初探

Kotlin -- Kotlin初探最近Kotlin从之前的默默无闻,到现在着实火了一把。跟着潮流,也从中文站上下了一份文档来看了一下。之后感觉现在Kotlin系统性的学习资料还比较缺乏,就照着那份指导文档,大致看了下Kotlin的语法等基础内容。现把该过程中的一些示例代码记录下来,供后续有机会再深入学习时回顾。示例代码:package xzm.kotlin.main...

2017-07-12 22:50:37 722

原创 Android -- PackageManagerService APK安装流程简要分析

Android -- PackageManagerService APK安装流程简要分析在Android系统下,我们一般会使用"adb install -r"命令来安装应用;此时应用会被安装到/data/app/下。这篇文章,我们就从adb命令入手,简要分析PackageManagerService安装apk的中间处理过程。在android中,adbd以后台进程运行。当我们

2017-07-01 18:04:42 4965 2

Binder分析图示源文件

Binder分析图示

2016-12-31

WifiStateMachine、WifiController状态图文件

WifiStateMachine、WifiController状态图文件

2016-12-05

Vold解析类图资源

CommandListener类图关系 NetlinkHandler类图关系 Vold框架图

2016-12-05

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除