编程学习之道

来源:互联网 发布:新闻表数据库设计 编辑:程序博客网 时间:2024/06/04 17:57

1.   勤于实践

学习别人的代码,在理解代码思路的前提下自己敲出代码。

2.  要事为先

任何事情都追求完美才继续向后进行,是一种性能缺陷。如果钻研的东西和近期产能目标无关的话,要舍得放手。当把我了技术的脉络之后再去进行细节的研究,是正途。

3. 项目驱动

学习编程最有效率的方式,就是把自己投入到一个项目组中,连滚带爬地做下一两个项目来。一个项目就是一根绳子,把大片分散的知识点串联到一起,形成一个整体。

4. 问题解决之道

(1) 仔细观察错误现象,并在其中得到某种启示

曾经在一个多串口数据通信软件中遇到一个问题:软件经常会在某一不确定时刻崩溃,观察发现软件崩溃时某一变量的值变为一个随机数。明明没有代码修改该变量的值,为什么它的值还是变化了呢?通过内存监视,发现某段保存串口实时通讯数据的代码中数据越界了,也就是拷贝的数据超过了给定变量的容量,这样就发生了未知内存的覆盖,最终导致了未知的行为。实际上观察到某一变量的值变为一个随机数,就应该意识到该变量所在内存被覆盖了,再结合调用堆栈和内存监视等手段就很容易定位错误。

上述项目中还发现了一个GDI泄露的问题:随着软件运行,任务管理器中监视的GDI数目不断增加,最终软件崩溃。通过观察发现,软件总是在运行90分钟左右崩溃,进而发现GDI数目两个两个地呈规律性递增。遍历整个软件的显示页面,恰巧有一个模块中有两个指示灯资源,对该资源相关代码进行检查发现果然存在GDI资源释放问题。90分钟、两个两个地,这些规律性的现象最终成了解决问题的重要线索。

(2)仔细思考问题会出现在哪些环节,将问题定位在某个具体环节

将与问题相关的整个执行流程按顺序分为几个阶段,分析每个流程引发该问题的可能性,然后依次对每个阶段的运行结果进行评估,最终定位到出错的节点。关于阶段的划分,系统比较复杂时可以借助“折半查找”的思想,快速定位问题。

在无人机数据链路系统中,地面飞控主机与机载飞控主机要进行数据交换,需要经过很多环节,一种简单的结构是:地面飞控软件---地面测控终端---地面天线---机载天线---机载测控终端---机载飞控软件。如果发现机载飞行控制软件不能接收数据或接收到异常数据,可以针对性检测机载飞控主机输入、机载测控终端输出、机载测控终端输入、机载天线输出、机载天线输入、地面天线输出、地面天线输入、地面测控终端输出、地面测控终端输入和地面飞控主机输出,直到定位到出产生问题的数据传输环节。

(3) 善用搜索和BBS求助

要相信,自己所遇到的问题大部分是别人碰到过的问题,有的作者解决问题后在博客等平台公布了自己的解决方案,有的作者自己没解决而在BBS中进行提问最终得到了网友的热情帮助,利用搜索引擎很容易找到该问题的解决方案或相关经验。如果实在搜不到解决方法,也可以自己在BBS发帖求助,等待高人来解答。
0 0
原创粉丝点击