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