qxidc项目/crtsurfdata程序 杀青总结
遇到問題 與 解決辦法
1. 關(guān)于文件類打開操作函數(shù)不自動創(chuàng)建不存在的父目錄問題
1. crtsurfdata.cpp中,有用到CFile類的成員函數(shù)Open**這里出現(xiàn)了一個問題**,如果所打開的文件的父目錄不存在,它不會自動創(chuàng)建父目錄,而是返回false但在程序里,當(dāng)我刪除ftp目錄時,我打開data/ftp/crtsurfdata目錄時日志:FIle.Open(/home/houlc/qxidc/data/ftp/surfdata/SURF_ZH_20200722230447_3461)失敗!就是因?yàn)闆]有了父目錄,2. **這里有兩解決辦法**1:在項目的程序代碼里,打開如果 失敗,則創(chuàng)建父目錄(調(diào)用MKDIR函數(shù)實(shí)現(xiàn))2:在庫函數(shù)的Cfile::Open的代碼中,把fopen用FOPEN(這里有調(diào)用MKDIR)替換3. **我的思考**:1>>這里我想來想去,覺得應(yīng)該用第一種方法,盡管我下意識就想用第二種方法,但是考慮到,庫函數(shù)不能把項目中所有的需求都考慮的太自動化而不靈活了,如果采用第二種解決辦法,那我以后遇到項目,Open到不存在的目錄時,不想創(chuàng)建它,就想要他的false返回值 怎么辦?2>>所以,就調(diào)用MKDIR在項目程序里面,當(dāng)CFile::Open返回false時,就MKDIR它就好----*雖然后來發(fā)現(xiàn)吳哥用的第一種方法吧,,,*不過我還是覺得我的解決辦法好,多寫一行MKDIR也沒費(fèi)什么功夫-----**又才發(fā)現(xiàn)打開日志的問價CLogFIle::Open也是自動創(chuàng)建父目錄**。。。。無語。。。不過這可能和需求有關(guān),因?yàn)檫@是你要寫日志,一定是要有指定目錄存在的,如果父目錄不存在,那就創(chuàng)建它,這個寫日志的操作是"情景要求明確的","然而File::Open的項目情景并不清晰"所以我覺得不能把FOPEN(打開,打不開就創(chuàng)建)直接寫進(jìn)Open里面,這樣如果不需要自動創(chuàng)建,就直接調(diào)用File::Open,如果需要自動創(chuàng)建,則在項目程序代碼中加一行if false ,MKDIR就好,并沒有費(fèi)多大功夫2. 如何解決xshell連接成功但無法輸入命令
一般都是你在輸入命令時,按了Ctrl+s鎖定命令行Ctrl+q即可解鎖命令行3. Linux系統(tǒng)里如何徹底清空中斷屏幕
命令:reset4. Linux命令行上執(zhí)行操作,不退回命令行的解決辦法
使用 1>test.log來重定向操作的輸出如python GetDeviceData.py 1>websocket_success.log 2>websocket_error.log &5. 執(zhí)行程序中, 如果 忽略所有信號,無法退出程序的問題
// 關(guān)閉全部的信號和輸入輸出void CloseIOAndSignal(){int ii=0;for (ii=0;ii<100;ii++){signal(ii,SIG_IGN); close(ii);}}那么Ctrl+z被忽略,最后程序如果是死循環(huán),會很難退出,用Ctrl+c也不行,常規(guī)殺程序也解決不了,最后用kill -9 進(jìn)程編號 命令解決的6. 關(guān)于常駐內(nèi)存與任務(wù)調(diào)度的設(shè)計
這個程序60s才很快的運(yùn)行一次,不需要他常駐內(nèi)存,浪費(fèi)資源7. 任務(wù)調(diào)度crontab
***一、Crontab -e 編輯調(diào)度文件***布置任務(wù):*/1 * * * * /home/houlc/qxidc/bin/crtsurfdata【格式:前五個是時間設(shè)定段,第六段是要執(zhí)行的命令段】【Min hour day month week command】在以上各個字段中,還可以使用以下的特殊字符:1)星號(*):代表所有可能的該時間的值,2)逗號(,):可以用逗號隔開的值指定一個列表范圍3)中杠(-):可以用證書之間的中杠表示一個整數(shù)的范圍:2-6:2,3,4,5,6,4)正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩個小時執(zhí)行一次。同時,正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示沒十分鐘執(zhí)行一次***二、crontab服務(wù)***1)service cron start // 啟動服務(wù)2)service cron stop // 關(guān)閉服務(wù)2.5)service cron restart //重啟服務(wù)3)service cron reload // 重新載入配置4)service cron status // 查看服務(wù)狀態(tài)***三、查看服務(wù)是否已經(jīng)運(yùn)行***ps -ax | grep cron ```cpp ***四、crontab 命令選項***1》 -u 指定一個用戶2》 -l 列出某個用戶的任務(wù)計劃3》 -r 刪除某個用戶的任務(wù)4》 -e 編輯某個用戶的任務(wù)***五、新增任務(wù)調(diào)度***1-在命令行輸入:crontab -e,然后添加相應(yīng)的任務(wù),wq存盤退出2-直接編輯/etc/crontab 文件,即 vi /etc/crontab,添加相應(yīng)的任務(wù)***六、查看任務(wù)調(diào)度***1=1 crontab -l //列出當(dāng)前所有的調(diào)度任務(wù)2=2 crontab -l -u -jp //列出用戶jp的所有調(diào)度任務(wù)7. 解決“您在”/,/,/,中有新郵件"問題
1》查看文件 mail2》刪除文件 cat /dev/null > /var/spool/mail/houlc3》禁止系統(tǒng)啟動郵件檢查Echo "unset MAILCHECK" >> /etc/profile這樣就不會再有郵件提示了 在這里插入代碼片mail-問題解決辦法
程序?qū)崿F(xiàn)的效果
1.通過crontab任務(wù)調(diào)度,每分鐘調(diào)用一次/home/houlc/qxidc/bin/crtsurfdata /home/houlc/qxidc/ini/inicode.ini /home/houlc/qxidc/data/ftp/surfdata /home/houlc/qxidc/log/crtsurfdata.log
2.程序自動從原始數(shù)據(jù)存放的文件夾中提取數(shù)據(jù),并生成目標(biāo)類型的數(shù)據(jù)結(jié)構(gòu),存入相應(yīng)的容器,最后寫生成的數(shù)據(jù)文件,存放到指定的數(shù)據(jù)文件目錄中。
3、程序?qū)⒊绦蜻\(yùn)行的情況寫入日志(標(biāo)有時間和事件),日志盡可能詳細(xì)
4、程序最開始忽略了所有的信號,又單獨(dú)設(shè)置了Ctrl+c和kill 退出的中斷,確保需要程序推出的時候,程序可以優(yōu)雅的退出
收獲,反思與下一步計劃
收獲
反思
4. 學(xué)習(xí)如翻山,走過這座山,方知還有那座山,
學(xué)完基礎(chǔ),我以為自己再進(jìn)一步就可以實(shí)際開發(fā)了,
結(jié)果現(xiàn)在,做了一個項目里的一個小程序,才發(fā)現(xiàn)要走的路還很長
5. 我的之前學(xué)的很多的基礎(chǔ)知識的理解都還很淺薄,實(shí)際開發(fā)毫無經(jīng)驗(yàn),
如果應(yīng)對稍微復(fù)雜一點(diǎn)的開發(fā)場景我絕對束手無策,
6. 另外,就眼前要學(xué)習(xí)做的qxidc項目來說,我也才走了一小步
后邊還有很多比較復(fù)雜的程序,
7. 涉及到的知識:
ftp協(xié)議,ftp采集模塊的開發(fā),其他通信協(xié)議,oracle環(huán)境搭建,oracle的表操作,oracle的事物,shell和環(huán)境變量,c語言操作數(shù)據(jù)庫,測試數(shù)據(jù)處理和入庫,工程的組織,oracle的虛表、日期和序列,工程的優(yōu)化,oracle函數(shù)、索引和視圖,數(shù)據(jù)結(jié)構(gòu)設(shè)計,數(shù)據(jù)的處理,更強(qiáng)大 的sql,計算的問題探討,數(shù)據(jù)交換子系統(tǒng),oracle數(shù)據(jù)庫的管理,系統(tǒng)的高可用性,mysql數(shù)據(jù)庫,PostgreSQL數(shù)據(jù)庫,數(shù)據(jù)庫兼容技巧,數(shù)據(jù)挖掘子系統(tǒng),htt協(xié)議,非結(jié)構(gòu)化數(shù)據(jù)的存儲,數(shù)據(jù)管理子系統(tǒng),監(jiān)控和警告子系統(tǒng),文件傳輸系統(tǒng),app軟件服務(wù)端。。。
總結(jié)
以上是生活随笔為你收集整理的qxidc项目/crtsurfdata程序 杀青总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 忽略所有信号导致的程序Ctrl+c和Ct
- 下一篇: 映射递归循环-约瑟夫环问题递归解法的一点