任何情況下不能吞異常,一般使用logger,哪怕只能用e.print... 也是有補(bǔ)救措施的,而吞掉便無(wú)從知曉。
* 配置多資源時(shí),各種公用的內(nèi)容沒(méi)有提取,導(dǎo)致修改時(shí)非常麻煩,推薦使用include方式
* 子資源要能使用父資源的指標(biāo)值,也就是父子要有繼承關(guān)系
* 國(guó)際化時(shí)不應(yīng)該再另起一個(gè)模型,這樣會(huì)使同一修改改動(dòng)很多文件
* 任何會(huì)導(dǎo)致特殊字符危險(xiǎn)的方案不能用,比如
  - 在解析命令時(shí)會(huì)解析參數(shù) /o ,后來(lái)有一個(gè)目錄叫"/opt/home" ,導(dǎo)致解析不成功,非常隱蔽而且危險(xiǎn)
* 打日志時(shí)要盡量的全,哪怕是trace,調(diào)試時(shí)很方便。不需要的可以不配置,需要時(shí)不必再次修改代碼。
* cc 的文件名長(zhǎng)度有限制,非常不便
* 做配置時(shí),某個(gè)對(duì)象的屬性集中一處配置,哪怕是include,不可分散至引用處重復(fù)配置,比如現(xiàn)在原型的資源類(lèi)型的 disporder
* log4j 要做動(dòng)態(tài)加載
* 打日志要規(guī)范,利用解析,使用多l(xiāng)ogger輸出
* 隊(duì)列要集中管理,分配
* 線(xiàn)程要集中管理,分配。無(wú)論是線(xiàn)程池還是獨(dú)立線(xiàn)程的創(chuàng)建。
* 模塊化工作的敵人是建一個(gè)模塊的工程時(shí)很麻煩,所以要從架構(gòu)設(shè)計(jì)時(shí)解決這個(gè)問(wèn)題,因?yàn)檫@個(gè)而導(dǎo)致今后結(jié)構(gòu)不清晰,很不值得
* 大數(shù)據(jù)量的刪除操作很慢,約幾個(gè)小時(shí)的時(shí)間。所以需要在批量插入的時(shí)候判斷是否需要?jiǎng)h除部分?jǐn)?shù)據(jù)
* 用URL返回本地文件路徑時(shí),注意URLDecode.decode(path,"UTF-8"); 來(lái)轉(zhuǎn)換特殊編碼
* 真實(shí)環(huán)境的壓力測(cè)試(尤其是異常測(cè)試)很重要,未經(jīng)此測(cè)試不要出售,會(huì)帶來(lái)很大的維護(hù)壓力
* socket 連接重試一定要有間歇,不然會(huì)把服務(wù)器搞宕
* 用到線(xiàn)程時(shí),線(xiàn)程要繼承一處,并作統(tǒng)一創(chuàng)建和管理,以便于在內(nèi)部設(shè)置路標(biāo)。并且在線(xiàn)程內(nèi)要及時(shí)寫(xiě)入路標(biāo)。設(shè)置路標(biāo)時(shí),參數(shù)以map形式添加,讀取時(shí)再格式化成字符串。
* 對(duì)于多線(xiàn)程程序,線(xiàn)程池分配時(shí),分配策略要可配置以調(diào)節(jié)性能
* 2008-6-13 06:34下午 今天開(kāi)發(fā)時(shí),A改過(guò)的東西 我們B不知道,他在本地修改因?yàn)榘姹疽呀?jīng)凍結(jié),導(dǎo)致嚴(yán)重問(wèn)題復(fù)現(xiàn)。今后采用為某個(gè)現(xiàn)場(chǎng)環(huán)境建立一個(gè)hotfix版,在這個(gè)版本上記錄更改歷史
* 給現(xiàn)場(chǎng)安裝不知該分配多大內(nèi)存時(shí),要有一個(gè)自動(dòng)修正功能,設(shè)置內(nèi)存在一個(gè)范圍內(nèi)遞增。捕獲oom 異常,讓監(jiān)控線(xiàn)程關(guān)閉系統(tǒng)并修改內(nèi)存配置重啟。但是前提是要保證數(shù)據(jù)的完整性受損是可接受,或者有解決方案的。
* 當(dāng)一個(gè)小組成員分頭支持現(xiàn)場(chǎng)問(wèn)題時(shí),每個(gè)人解決問(wèn)題后要全體知悉,便于積累經(jīng)驗(yàn)和對(duì)外表達(dá)一致
* Joel曾經(jīng)說(shuō)過(guò):不要先去完成界面,因?yàn)樵诤芏嘤脩?hù)看來(lái),完成了界面,就等于功能也快完成了。而要讓功能和界面的開(kāi)發(fā)保持同步最好。
* 開(kāi)發(fā)軟件不能只顧自己開(kāi)發(fā)時(shí)方便,還要考慮到運(yùn)行維護(hù)時(shí)是否方便
* 模塊依賴(lài)api時(shí),此模塊要把自己需要的api整理為一套adapter去適配,便于整理出對(duì)api方法的依賴(lài),另外在api強(qiáng)行變動(dòng)時(shí),其他應(yīng)用也有應(yīng)急辦法
* 留下足夠的程序內(nèi)部信息的監(jiān)控入口,生產(chǎn)環(huán)境是不讓動(dòng)的,xstream
* OOM, StackOverflow, JMX高負(fù)載后停止服務(wù)
* 系統(tǒng)中用到的環(huán)境變量名要集中使用常量管理
* io 遠(yuǎn)程調(diào)用傳輸過(guò)程中,盡量合并攜帶參數(shù) ,減小傳輸量。不要使用zip。
* 線(xiàn)程要提供一個(gè)暫停的方法,以便調(diào)試
* 使用需要持久華的緩存,注意與持久化及時(shí)同步問(wèn)題
* 作小于判斷時(shí),注意-0 是等于0 的,應(yīng)該用<=來(lái)判斷。
* windows 2003系統(tǒng)中當(dāng)開(kāi)著服務(wù)控制臺(tái)啟動(dòng)DaemonServer后不關(guān)閉mmc控制臺(tái),向控制臺(tái)輸內(nèi)容會(huì)導(dǎo)致阻塞。要自定義文件流,使他們保存至文件。
* 持續(xù)進(jìn)數(shù)據(jù)的隊(duì)列 要對(duì)處理慢的情況有考慮,否則會(huì)oom
* 同步數(shù)據(jù)需要在一個(gè)事務(wù)內(nèi)完成寫(xiě)入,否則會(huì)導(dǎo)致界面的壞體驗(yàn)
* 使用具體類(lèi)來(lái)代替type類(lèi)型區(qū)分,可以幫助在有性能問(wèn)題時(shí)快速定位,只是有可能增加些代碼量,值得