前早段時間接手乙個關於聯通簡訊閘道器的專案,此專案是同事在網上down的**上進行二次開發而成!
經過艱難的乙個月除錯,終於告一段落!給我感觸最深的2個想法就是:
1.上傳到網上或者分享給別人**務必多進行測試,盡量保證正確,對於**來說半成品與廢品差不了多少!
行百里者半於九十,有時候真正花費時間僅僅是少數幾個問題!
2.不要對別人封裝的**有敬畏之心,改動刀子的地方盡可大膽去嘗試!
下面說說專案中具體遇到一些問題吧!(因為是維護,其中關於打包/解包,socket,協議等就不多說了)
一 . 傳送方面的問題(sp—>手機)
因傳送資料是持久在資料庫中,系統啟動時啟動一線程,迴圈掃瞄資料庫,查詢記錄後進行傳送!
即:trycatch
}這結構出現2個問題
1.try在迴圈外面,一旦出現異常,執行緒就停止,所以必須將其放入迴圈裡!
2.迴圈不能用true,而應該用標誌位,在函式外可以將其置位來控制線程的執行狀態!我們採用在spring裝載類時指定init-method="start" destroy-method="dispose">
這樣在此執行緒隨類裝載而啟動,銷毀而停止!
二.多執行緒的問題
現有傳送執行緒sendtread與接收執行緒recvthread
sendtread
recvthread
在以上結構的情況有可能會在傳送程序中插入的資料,在接收方如果馬上去查可能會讀不到,因為資料持久化需要一定時間!
所以可以採用在b盡量讓執行緒sleep一會或者採用迴圈讀取直到讀到資料才往下執行!
三.長簡訊的問題(遺留問題)
其實這個問題我沒解決,最後沒辦法只能在前台將輸入簡訊內容限制在70字!
我根據這個兄弟說得進行嘗試,
這種方式是交給閘道器去處理,可以不知怎麼每次第一條簡訊前面會有亂碼!
另外嘗試過自己對簡訊內容進行拆分,後來發現中英文與字元長度問題,感覺挺複雜,因時間問題而又放棄!
四.其他問題
1.應答訊息的包頭序列號與原訊息的序列號必須是一樣的!
2.應答訊息打包時候長度不能出錯,否則閘道器收不到正確的訊息,會重發原訊息三次!
上班時間,只是憑著記憶整理了下!
開發遇到的問題
1.增加乙個新的檔案之後,重新編譯突然報錯,刪掉新增檔案又沒有問題,新增檔案沒有錯誤。resgen.exe 可能無法執行,因為命令列的長度為 28084 個字元,超過了命令的最大長度 解決辦法 1.參考文件 2.後按上面文章介紹修改配置 3.修改配置之後,重新編譯報錯 目標框架.net framew...
手機開發遇到的問題
1 setfullscreenmode true 設定全屏後 立即使用height和width 返回全屏以前的值 不是同步 暫時在moto的手機和nokia 7610上發現有這個問題 2 鍵值記錄 moto v303 v300 左右鍵21 22 索愛 k750 k700c w530 6 7 使用使用...
開發中遇到的問題
最後再一次單步除錯中發現 nsurl urlwithstring 返回的nsurl居然為nil。大概找到問題所在了,在網上查了如何解決獲取空的nsurl,大致方法如下 原因 nsurl urlwithstring 這個方法要求傳乙個字串型別的引數,引數如果有中文的話,得到的物件就是空。解決辦法 先把...