拥有经验分享标签的文章

视频一方是recvonly时Freeswitch不转包问题记录

​问题:非代理模式下,视频媒体主叫如果是recvonly,主叫收不到被叫发过来的视频包!发送方的payload type和协商的不一致,freeswitch过滤了; freeswitch接收到一方的包,解码完后,并没有转发给对方;freeswitch代码逻辑还是相当复杂的,一个函数通常都是上千行的代码,所以跟踪分析问题并不是那么容易,最好是gdb结合log打印跟踪分析问题;
阅读全文

态度:坚持你坚持的,相信你所相信的,知行合一

细节,还是细节对细节的挑剔怎么都不为过,有时候表现出来的不屑,或者轻率,会有一种人浮于事的不稳重;周围同事的高要求,或者说挑剔,对你来说,是一件好事,是一种促进,也是一种能力的提升;高要求,或者被你说成是挑剔的要求,理由很充分,并且是合理的要求,你没法拒绝;比方函数名的拼写错误,decrypt与decreypt,archive  与archieve,担心其他人跟你继续犯错:);英文标
阅读全文

property_set/property_get源码解析

昨天和同事花了近半天才梳理出来一个rc文件中set_prop的流程,足见android底层服务设计之复杂!
阅读全文

读书笔记|Linux内核设计与实现

这本书还是蛮基础性的对Linux内核的设计原理进行了说明,也有具体实现部分的介绍,结合源码能很好的理解Linux内核;在翻了一遍之后,带着如下几个疑问,整理了下:1、内核是什么时候加载运行的;2、应用程序、内核和硬件的关系;3、进程管理、内存管理和进程地址空间;内核是什么时候加载运行的?bootloader复制压缩内核到内存空间;内核自解压;运行内核;init/main.c中的start_kern
阅读全文

为什么领导不推荐使用新的框架或者新的平台?

为什么领导不推荐使用新的框架或者新的平台这两天切换到新的平台,学习起来确实感觉不那么容易,主要是经验越多,对旧有平台的依赖性就越大,切换起来,代价也越大!但我们都有一个好的习惯,就是不轻易放弃,对手上负责的事情,都能做到尽职尽责,一方面也不给他人落下口实!所以我们尽管心有怨言,但每天依旧是在新平台上学习、了解和使用新平台的API做些小的demo,每天了解一点点,渐渐的,也就适应了新平台的框架,AP
阅读全文

给应用添加Selinux配置的完整记录

公司人力吃紧,特别缺少C开发的同学,只能是我是一块砖,哪里需要哪里搬!记录一次Android系统完整的配置开启启动应用,并配置Selinux权限的过程!Selinux的概念甚多,理解起来还是很费劲的!并且需要有Linux内核的基础知识,总归来说是打通任督二脉的一件事,多多学习总是没有坏处的!
阅读全文

亲密关系如何保持

早上醒得早,思考这些年的一些体会,比方最亲密的人之间,是否存在边界?他/她在说不的时候,你是否还在任性,肆意妄为,直到你感受到对方生气,甚至发怒,然后哑然无趣的收场,或者对方说你不懂他/她;反倒是在陌生人,同学,同事,或者闺蜜好友之间,我们总是收起那份恣意妄为的任性,识图不要打破对方的边界,保护自己和理解他人的空间,虽不到相敬如宾,但又没那么客套,这种关系能拿捏得恰如其分;在最亲密的人面前,其实我
阅读全文

音视频类应用开发这些年的一点感受

推出的音视频服务的产品,其可用性、易用性和用户体验如何,对于复杂网络场景下的处理如何,这是相当考验技术的一个行业,投入的资源和技术积累的程度,核心算法的设计、开发能力,都是尤其重要的,所以通过互联网开源项目堆出的产品,只能处在demo环节,离真正的产品化还有好远好远的距离;通信网络技术:TCP和UDP的选择;搞不定丢包就选TCP,比方POC语音对讲相对小数据量的应用,就适合选用TCP;比方实时性要
阅读全文

结合多种系统api来理解堆栈的概念

数据结构中栈具有后进先出的特点,我们提到堆和栈空间的时候,指的是数据在内存中的概念,对栈空间,基本的认知包括:1、栈空间通常用来存放临时变量、参数,寄存器等数据;2、栈空间不能被多个函数共享,只能使用堆内存进行不同函数间的数据共享;3、栈空间有限,所以编码规范中通常定义函数的形参建议不超过6个,多了建议使用数据结构;      临时变量也不能想创建多少就创建多少,特别
阅读全文

从KMIP编解码库libkmip的代码学到的编解码代码框架

所谓的编码,就是将数据结构的结构体对象编码为指定协议标准的二进制流,而所谓解码,则是将二进制流解析出对应的结构体对象;比方RTP Payload一直都长的一样,所以一个数据结构就能定义了;如果需要同一套协议,承载不同结构的payload的情况,KMIP的实现提供了一套通用的代码框架,值得参考和学习;
阅读全文