美文网首页C语言&嵌入式
开发技术 编程的进阶

开发技术 编程的进阶

作者: jkCodic | 来源:发表于2019-02-22 09:30 被阅读0次

    内存泄露与检测方法
    6068极有可能是内存泄露造成的软件奔溃
    测试方案:检测是否有累积泄露或是否有溢出
    1.malloc与free配对使用 函数
    2.new与delete C++内置操作符 QT中使用new很少使用delete原因:由父类来管理子类对象的回收
    new的使用方法 http://blog.csdn.net/sparkliang/article/details/3650324

    linux的内存泄露,可以使用valgrind工具进行动态运行检测 VLD也是内存检测工具
    https://www.ibm.com/developerworks/cn/linux/l-cn-memleak/
    溢出排查及解决办法:http://blog.csdn.net/xiangbole/article/details/78683340

    泄露与溢出的区别与危害
    操作符与函数 https://www.cnblogs.com/wuchanming/p/4440872.html
    https://www.cnblogs.com/xin688/p/7684920.html

    如何设计良好的函数 https://www.cnblogs.com/suijing/p/how_to_design_method.html
    一致性:同组输入,同组输出
    无副作用:不会改变函数以外的变量(不要扩大职责)

    使函数显得純.第一步就是尽可能避免全局变量,我们分析一个函数,就只分析这个函数的全部代码(有效范围)就好,如果引入了全局变量,我们分析的时候,关注范围也难免会被强制扩大到全局,同理,能声明为静态函数的,就应该避免声明为成员函数,因为成员函数可以访问对象的实例,而该对象在调用成员函数的时候,是个什么状态,有无初始化,函数是否会修改实例(引用类型)的参数,如果我们要对这个函数做重构,就难免会束手束脚

    增量开发
    1.每次增加一小段代码,测试通过后加入另外一段代码
    2.TDD的套路就是通过编写功能代码,使测试用例通过(即代表功能代码没问题)

    冗余代码检测
    simian http://blog.chinaunix.net/uid-20361370-id-1962802.html
    http://blog.csdn.net/Love667767/article/details/53558382
    usage:java -jar simian-2.6.0.jar -ignoreVariableNames+ -threshold=3 D:\Share\jihua6068\src20180126\scenes\scene_ext**.cpp>>duplicates3.txt

    对于GUI待测系统,功能测试只观察特定输入所导致的数据变化;一旦功能测试或最终用户发现bug->写单元测试(暴露这个问题)

    Linux下的C++程序崩溃时打印崩溃信息 https://blog.csdn.net/hccloud/article/details/51548274
    http://blog.sina.com.cn/s/blog_4aebc38c0102v509.html

    首先考虑可维护,延伸性,事后优化

    2.22 五步定位性能瓶颈
    1、着手在测试前:理清数据流向,数据流程分解
      通过绘制数据流向图,以便清晰的列出所有可能出现瓶颈的位置,避免在分析过程中遗漏可能的瓶颈点。
      系统架构分解——水池模型
      要查找瓶颈,首先要对系统的架构有详细的了解,清楚知道所有可能成为瓶颈的位置。只有这样才能在遇到问题是合理的设计测试用例,对流程的各个步骤进行逐一排查。
      举个例子,家里厨房的水池下水堵了,我们要找原因,首先得知道水池的下水道都有哪些部分:

    2、http://www.51testing.com/html/03/n-3649003.html

    如何设计良好的类
    http://blog.csdn.net/u013249965/article/details/51779634
    http://blog.csdn.net/krenyelang/article/details/6832072
    https://wenku.baidu.com/view/d7faf362001ca300a6c30c22590102020740f282.html

    业务逻辑

    快速上手代码主流程及主要的流程调整(例如血透机的治疗流程)

    代码错误

    浮点数的处理,变量的生命周期,类型转换,调试每个变量的取值,逻辑判断的全面性,

    流程控制与程序逻辑

    1.switch参数只能是int/char不能为实型(float等)
    2.float与"零值"比较if语句:if(x<0.000001&&x>-0.000001)

    面试感悟

    指针与二维数组
    1.掌握常用的算法(查找 排序)等工具类(字符串处理);2.语言不是重点,掌握一门自己熟练的(嵌入式C 面向对象不熟的话不要说C++,最好能掌握一门脚本语言python等);3.面试对话时抱着谦虚求知合作共赢的态度;4.项目找个中等难度的(自己完全能hold住再上点但不要离得太多)

    音视频开发 图像处理,语音识别 算法做到什么程度 游戏服务器 目标的达成程度如何评价
    精通:不但知道下步要做什么而且很轻易的完成;熟悉是知道要做 但是不一定会

    7.5 开始每天看C/C++基础知识 算法和数据结构 遇到需要看项目的公司时才提前看看项目
    资料准备:打印一份硬件知识A4资料 打印一份常错题集 笔记本有关编程的全部复习做笔记
    一定搞明白的选择排序和冒泡排序 static与const区别
    1.C语言基础 目标:刷两套推荐题超过80分 看一个中型项目的源码清楚到没条语句的功能和作用
    1.1 字符串处理函数 常用的头 函数 实现算法
    1.2 switch条件的类型为整型(或隐式可转换为整型),不能为float/double
    1.3 条件编译 #ifndef #define #endif可对编译进行控制,增加代码可裁剪性,最主要的作用是防止头文件被重复定义
    1.4 const与static作用与区别 const全局变量储存在静态数据库,局部变量在堆栈。?其实,由于计算机没有通用数据寄存器,则函数的参数、局部变量和返回值只能保存在堆栈中。提示:局部变量太大可能导致栈溢出,所以建议把较大数组放在main函数外,防止产生栈溢出1.5 %x输出16进制数 双目运算符与优先级
    static修饰的变量总存在内存静态区,所以运行这个函数结束,这个静态变量的值也不会被销毁,函数下次使用的时候仍然能使用这个值(这些关键字设计到编程的功底,适当代码测验)

    相关文章

      网友评论

        本文标题:开发技术 编程的进阶

        本文链接:https://www.haomeiwen.com/subject/vywccxtx.html