前言 以下分析基于android14 CEC(Consumer Electronics Control)信号通过13引脚传输,作为HDMI接口的一部分。CEC总线作为控制信号被分离出来,使得在不增加数据占用宽带的情况下完成高速复杂的通信要求 这优先分析一下,是怎么和cec设备通信的,也就是收发的过程 HdmiControlService frameworks/base/se...
不同路径
不同路径1 从一个m*n网格的最左上角开始,每次只能向下或者向右移动一步,试图达到网格的最右下角,问:共有多少条不同的路? 从上的网格来看,水平方向为i,竖直方向为j,到格子(i,j)的位置的路线是由正上方(i,j-1)和左边的(i-1,j)的和 确定dp数组以及下标的定义 (0,0)是起点,(i,j)是终点,dp[i][j]从(0,0)到(i,j)有多少条...
dumpsys源码流程分析
1.源码入口 frameworks/native/cmds/dumpsys/main.cpp int main(int argc, char* const argv[]) { signal(SIGPIPE, SIG_IGN); sp<IServiceManager> sm = defaultServiceManager(); fflush(stdout); ...
01背包-滚动数组
dp[i][j]是二维数组,从逻辑上来讲确实更好理解,但是代码上可以却是有优化空间,可以把dp[i][j]二维数组优化成dp[i]一维数组->就是滚动数组 在使用二维数组的时候,递推公式: dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight(i)]+vlaue(i)) 物品编号i\背包重量j 0 ...
MessageQueue的Native方法分析
前置 Handler并没有直接调用native,而是通过MessageQueue 相关的主要native代码 frameworks/base/core/jni/android_os_MessageQueue.cpp system/core/libutils/Looper.cpp MessageQueue.java中native方法的分析 路径 frameworks/base/core/...
java基本类型的理解
前提补充 位移运算计算机中存的都是数的补码,所以位移运算都是对补码而言的 左移<< , 右补0 有符号右移>> 左补符号位,即:如果符号位是1 就左补1,如果符号位是0 就左补0 无符号右移>>> ,统一左补0 原码反码补码关系 正数下,原码=反码=补码 负数下,原码=反码除符号位不变,其余全...
完全背包
物品编号 重量w 价值v 0 1 15 1 3 20 2 4 30 背包的最大重量为4,每个物品可以装一次或者多次或者不装,问装满这个背包的...
01背包
动态规划必备5步骤! 确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 参考链接 动态规划的解题步骤 01背包 物品编号 重量w 价值v 0 1 15 ...
Handler分析
1. Handler相关类总结 Handler :用于发送和接收消息,是最外层的入口 Message:消息实体,实现了Parcelable接口,内部实现了单链表 Looper :用于轮询消息队列,一个线程只有一个Looper MessageQueue:消息队列,用于存储消息和管理消息 ThreadLocal : 提供线程本地变量的存储 在把上述的5个类都分析一遍后,...
Looper分析
1. Looper的简单介绍 /** * Class used to run a message loop for a thread. Threads by default do * not have a message loop associated with them; to create one, call * {@link #prepare} in the thread...