编程杂谈
放狼的爷们
阳光 儒雅 博学 勤思 死宅
展开
-
编码规范与重构思路总结
1.重复使用的代码块应该用循环,或者提炼出函数的方式,2.函数比较长的时候,应该按照功能或者对象分解,提高函数的局部利用率,还有方便阅读3.过大的类,提炼出之类和接口,提高利用率4.参数太多的情况,应当考虑使用对象,或者结构体来传递参数5.同种属性提炼的出单个类,外界说发生的变化,应该都发生在这个单个类上,类与类之间避免耦合.6.当从类提炼出子类或者类时候,关联的变量应该也跟着原创 2017-06-13 00:05:55 · 449 阅读 · 0 评论 -
Linux驱动开发需要注意的点/KO大小/内存管理
因为做了大量调试的工作,呵呵,所以对代码质量要求比较高。1.不要想不通就写代码,不要为了存粹的解决问题而加代码,不要忽视任何一种场景可能,因为躲得了一时,躲不了一波,BUG迟早会被挖出来的,到时候更加苦逼。2.内存是个很严肃的问题,不要直接调用系统函数,最好把malloc、kmalloc、kzalloc、vmalloc封装一层,入参module ID,size,name,统计好申请的内存,可以用p...原创 2018-03-01 23:44:36 · 1732 阅读 · 0 评论 -
VIM快捷操作
1. 关于Vimvim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh)1.1 Vim的几种模式正常模式:可以使用快捷键命令,或按:输入命转载 2017-12-28 00:52:02 · 174 阅读 · 0 评论 -
保证自己写的代码没有问题之自测
1.单元测试UT,主要是对接口进行调用来测试,模拟一个小的场景,用大量的UT测试用例来测试返回值是否正确,和有没有被修改。平台就是linux的用户态程序,调用UNF、IOCTL接口。因为给客户用的接口,入参,返回值,理论上是不能轻易改变的。只能增加,向下兼容。2.代码review,代码走读,请专家帮忙,这也算是一种保证自己的代码没问题的方法吧。3.MST测试,根据业务准备的各种场景,比如视原创 2017-12-24 23:23:41 · 1894 阅读 · 0 评论 -
linux驱动优化重构提高效率的心得
1.定义的结构体,元素的size比较小的放前面,size比价大的放后面,编译器会优化整个结构体占用的内存2.数组的大小最好按照4/8的倍速来定义3.程序中用移位代替除法,提高程序运行的小笼包4.需要循环,或者多次调度的函数,一定要注意,不要留下冗余,记住2/8法则,20%的代码决定了整个程序的效率5.优化程序运行效率可以从设计框架层面,算法方面,code方面来提高。6.最近内存原创 2017-11-05 22:54:18 · 748 阅读 · 0 评论 -
一些软件思想
从两个地方总结一下,一个是架构,一个是测试。 架构,要求设计好软件分层,不同的模块耦合性降到最低,毫不耦合是最理想的状态,例如把某个模块的开关宏给关掉,也可以编译过完全不影响。ffmpeg的源码就做的很好。值得学习。 其次不同的平台会有不同的方案,由于芯片架构的不同,软件实现起来会有差异,为了方便移植、减少共性开发量,差不同芯片的方案封装起来,沉淀到hal层,把共性的代码提取出原创 2017-09-03 00:22:56 · 422 阅读 · 0 评论 -
C语言宏定义方法总结
转载:http://blog.csdn.net/qustdjx/article/details/7907173补充一种超级强大的宏定义方式:这种方式的宏不会受到括号,冒号极端情况的影响,比单纯加()要强大。比如for的场景下面。强烈推荐用这种哦!do{}while(0)#define a(x) do \{ \ ... \}w转载 2017-08-23 00:15:00 · 1133 阅读 · 0 评论 -
轻松搞定面试中的二叉树题目
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关转载 2017-08-23 00:10:56 · 175 阅读 · 0 评论 -
驱动调试技术
1.printk大法。加上__FUNC__,__LINE__,简直神奇.2.objdump反编译,编译的时候加上-g,把代码信息编译进ko,利用堆栈反编译找出挂死的行号3.trace调试,大量零散的打印,打印到串口会占用CPU资源,程序执行效率降低,无法有效的复现bug的环境,申请一片内存,记下打印到内存里面,这样不会太占用CPU,复现bug后,再从内存里面读出来.4.文件log法,集原创 2017-07-13 23:37:18 · 299 阅读 · 0 评论 -
总结一下几个月驱动开发的需求
1. 产品要求裁剪KO,干掉了无用函数和变量,占内存大的数组变量改成了动态申请。感受:其实KO大了也有好处,静态申请效率高啊,KO的大小,大一点嘛,但是产品的需求。。2.产品要求出1G版本,裁剪内次哦,根据场景、业务,不需要用到的内存裁剪掉。对解码器来说,就是各种通路下面偶尔的内存,安全通路,私有通路,原生通路,还有解码帧存。以前解过很多BUG是性能不足然后通过增加帧存来解决,VP9,H265,H...原创 2018-03-04 11:26:55 · 870 阅读 · 0 评论