在自己编程过程中遇到的一些问题
Posted zczzsh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在自己编程过程中遇到的一些问题相关的知识,希望对你有一定的参考价值。
虽然说需要描述自己在整个编程生活中遇到的一些问题和从中学到了什么,但是可能自己之前太过遥远的东西也记不太清了,就说说最近自己遇到的几个印象深刻的问题吧。
第一个印象深刻的问题是关于计算机系统课程中,需要利用三重循环测试电脑性能的一个project。要求其实很简单,就是利用三重循环对一个三维数组进行求和运算,计算程序所运行的时间,通过时间分析程序性能。要求的数组大小从10*10*10到10000*10000*10000。从这里我想应该就可以看出一些问题了,我们的电脑一般是64位的,64位中int型占4个字节,此时如果数组大小为10000*10000*10000,则需要的内存是104乘以104乘以104最后乘以4,即约为4000GB,明显个人电脑不可能有这么大的内存,即使1000*1000*1000大小的也是需要4GB的内存的。就是通过这个例子,我们不能仅仅局限于普通的三重循环,当时因为太过于自信,没有考虑到这些问题,导致自己的电脑死机进而重装系统。这是印象比较深的一个问题。
其实这个问题主要考察的是我们对于程序的局部性原理的理解。这个题目最后我想出的解决方法就是分块,分块之后明显在高速缓存中的命中率会显著提升,并且内存也是符合要求不会超出。这个问题其实在软件设计中也有可能会遇到,算是给自己提个醒。
第二个印象比较深的问题就是,在无线网络的课程中,需要自己设计一个可视化的wifi扫描软件。个人利用QT实现了可视化的wifi扫描,但是我觉得还撑不上软件。在这个过程中让我印象深刻的就是,在最后程序运行的时候,一出现可视化界面程序就会卡死,运行不了。当时我的设计是让扫描程序的无限循环,来持续的更新信息,而导致卡死的问题仅仅只是因为我没有加上一句sleep。这个问题也让我明白,有些时候你运行代码没有问题,但是你换一种方式之后可能它就连运行都运行不了了。如果软件也是这么设计的话那肯定是不行的。
之后如果还遇到什么问题的话我希望也能随时的进行记录和总结。
以上是关于在自己编程过程中遇到的一些问题的主要内容,如果未能解决你的问题,请参考以下文章