他说的一定对吗?-- 请保持独立思考的习惯
实际工作中,我们经常会向其他同事咨询一些技术问题。但是,他给出的答案一定是正确的吗? 近期项目组遇到这么个问题,Android平台上软件解码RTSP实时视频流CPU占用率较高,打算切换到硬件解码。但是在调用硬件解码接口的时候返回失败,原因是视频流的分辨率信息未知,结果又自动切换回了软解。 那么,基于RTSP传输的视频流,一般可以从哪里获取分辨率信息呢? RTSP报文中的SDP,一...
实际工作中,我们经常会向其他同事咨询一些技术问题。但是,他给出的答案一定是正确的吗? 近期项目组遇到这么个问题,Android平台上软件解码RTSP实时视频流CPU占用率较高,打算切换到硬件解码。但是在调用硬件解码接口的时候返回失败,原因是视频流的分辨率信息未知,结果又自动切换回了软解。 那么,基于RTSP传输的视频流,一般可以从哪里获取分辨率信息呢? RTSP报文中的SDP,一...
需求 适配方法 方法一:通过va_list传递变参 方法二:宏重定义 方法三:函数指针 性能分析 其他 参考资料 嵌入式开发中经常需要跨平台移植,但是不同平台的系统函数通常不一样,如果能封装一个平台适配层,将底层系统差异和上层业务代码隔离,移植起来将事半功倍。 需求 系统层次结构如下所示: 平台适配...
一、 TCP连接建立过程 1. 三次握手 2. 同时打开 3. 自连接 二、 TCP连接断开过程 1. 四次挥手 2. 同时关闭连接 三、 常见问题 1. 为什么要三次握手建立连接 2. 为什么要四次挥手断开连接 3. 为什么TIME...
一、 背景 二、 backtrace 1. 栈帧 2. 编译优化 3. 通过追踪栈变化回溯函数 4. 程序实现 三、 栈保护 四、 参考资料 本文主要介绍在arm平台回溯函数调用栈(backtrace)的方法。 一、 背景 嵌入式设备开发过程中,难免会遇到各种死机问题。这类问题的定位一直是开发人员的噩...
一、预备知识 二、实验环境 三、malloc 3.1 没有malloc就没有堆 3.2 malloc(x) 四、strace, brk 和 sbrk 4.1 多次malloc 4.2 自行实现malloc 五、丢失的16字节 5.1 从源码找答案(RTFSC)#...
一、预备知识 二、实验环境 三、栈 四、堆 五、可执行程序的位置 六、命令行参数和环境变量 6.1 数组变量argv和env是相邻的吗? 6.2 第一个命令行参数紧挨着数组变量env吗? 七、栈真的是向下生长吗? 八、/proc 九、下节预告 十、继续阅读 十一、原文链接 这是虚拟内存系列文章的第三篇。...
一、预备知识 二、实验环境 三、剖析一个简单的Python脚本 1. Python中的字节对象(bytes object) 1.1 字节和字符串(bytes vs str) 1.2 一切都是对象 2. 执行read_write_heap.py脚本 ...
一、实验环境 二、预备知识 三、虚拟内存 四、剖析一个简单的C程序 strdup 进程的虚拟内存空间多大 proc文件系统 mem文件 maps文件 pid 五、替换进程的字符串 /proc探究 ...
本文简要介绍左移导致的溢出问题。 实际项目中需要计算SD卡中某个目录的大小,并判断该目录所占空间是否超过SD卡总容量的一半。 测试过程中经常发现误报,该目录所占空间远小于SD卡容量一半的时候,就上报占用空间过半的事件。 排查发现原来是计算的时候移位导致了溢出。问题代码如下: unsigned int total_space_in_mb; unsigned long long used_s...
不怕不知道,就怕不知道自己不知道。 设备A(发送方)和设备B(接收方)通过串口通讯,如下图所示,使用COBS进行编解码主要是为了报文分割(解决粘包半包问题)。 开发和测试期间,A和B之间通信均正常。等到A设备批量生产的时候,极个别A设备和B无法正常通信。 第一反应是A和B的COBS编解码库(A和B由不同公司开发)会不会有问题,比如发送方编码错误或者接收方解码错误。于是把A编码后的报...