掃盲請轉戰文件完整性校驗
初識
項目需要拿到《航空航天飛行器動力學建模與仿真》中彈道仿真的算法,然後就開始對它的代碼進行學習,理論上講,過程無非是“加載輸入參數->執行算法->輸出彈道仿真結果”,所以就先找到加載輸入的部分。
幾經周折,學弟表示,找不到入參加載入口,然後我就開始一步一步幫他篩查。
代碼的入口文件加載輸入參數的代碼大概是這樣
//creating an input stream object and opening 'input.asc' file
fstream input("input.asc");
if(input.fail())
{cerr<<"*** Error: File stream 'input.asc' failed to open (check spelling) ***\n";system("pause");exit(1);}
//aqcuiring title statement and option selections
acquire_title_options(input,title,options);
//acquiring number of module
number_modules(input,num_modules);
//dynamic memory allocation of array 'module_list'
module_list=new Module[num_modules];
if(module_list==0){cerr<<"*** Error: module_list[] allocation failed *** \n";system("pause");exit(1);}
//acquiring calling order of module
order_modules(input,num_modules,module_list);
//acquiring the time stepping
acquire_timing(input,plot_step,scrn_step,int_step,com_step,traj_step);
//acquiring number of vehicle objects from 'input.asc'
number_objects(input,num_vehicles,num_missile,num_target);
習慣性上,我就認爲是第一次打開文件,直接加載參數了。
但事實上,接連的幾個部分都在驗證輸入文件的完整性問題,直到最後才加載參數。
這是我第一次注意到這件事,以前只是前後臺數據交互時可能規定數據交換格式,總覺得自動保存的文件不存在驗證完整性的需求。
再遇
還是上一個項目,給導彈做模擬,就需要模擬場景,在網上尋找三維數據未果,老師說看看Google Earth這個方面的資料,Google貌似是被牆了,遂首先嚐試了BIGEMap,包括衛星圖、高程圖、矢量路網,初步瞭解,可以做出地形圖,然後矢量路網中的建築物輪廓也可以做成建築物模型,再把衛星圖貼上去。
先有了這個思路就開始嘗試,在GlobalMapper裏做好高程圖之後,導出DEM格式,理論上是可以直接導入3DSMAX的,我一導入就提示“文件格式不正確”,,也不明白有啥問題。
機緣巧合之下,我嘗試了高程圖導出STL格式,然後用win10自帶的3D Builder打開了這個文件,有如下提示
點擊修復後,再導入3dsmax就成功了。
這裏大概也是因爲文件某些部分無效,導致無法導入吧。
當3D Builder修復了文件之後,3dsmax導入文件時的模型文件完整性驗證通過,然後成功導入。
今日
最近在空閒的時間裏自學《深度學習:21天實戰Caffe》,第六天的學習裏,介紹了MNIST原始數據文件格式,文件偏移量、值都是明確的值,比如:圖片文件,偏移量0000—值2051,標籤文件偏移量0000—值2049。每行每列有多少數據,什麼類型,可能是哪些值,都明確規定好。
在將原始數據轉換成Caffe能夠識別的LMDB格式之前,首先的一步就是驗證文件完整性,大概這是一個潛規則吧…也能避免由於文件不完整帶來的問題,可以說是一個默認規則。