發(fā)布時間:2022-03-09 15:56:07來源:轉(zhuǎn)載
Java開發(fā)過程中需要注意的一些技巧。在Java工程師平常的開發(fā)過程中,由于業(yè)務(wù)的不同,可能關(guān)注的點有很多不一樣的地方,但是在基礎(chǔ)層面還是有一些共性的。此文概括了在Java開發(fā)、測試、部署、工程化方面一些需要注意的地方,供大家參考。
Java開發(fā)需要注意的一些技巧
1. 將一些需要變動的配置寫在屬性文件中
比如,沒有把一些需要并發(fā)執(zhí)行時使用的線程數(shù)設(shè)置成可在屬性文件中配置。那么你的程序無論在DEV環(huán)境中,還是TEST環(huán)境中,都可以順暢無阻地運 行,但是一旦部署在PROD上,把它作為多線程程序處理更大的數(shù)據(jù)集時,就會拋出IOException,原因也許是線上環(huán)境并發(fā)造成也許是其他。如果線 程數(shù)目可以在屬性文件中配置,那么使它成為一個單線程應(yīng)用程序就變得十分容易了。我們不再需要為了解決問題而反復地部署和測試應(yīng)用了。這種方法也同樣適用 于配置 URL、服務(wù)器和端口號等。
這里推薦使用屬性文件外化這些配置,文件格式使用properties、yaml、hocon、json都可以。下面的類實現(xiàn)了對這些格式的文件的spring注入支持,包括占位符支持。
2. 測試中盡可能模擬線上環(huán)境
生產(chǎn)過程中一個典型的場景就是只使用1到3個帳戶進行測試,而這個數(shù)量本應(yīng)是1000到2000個的。在做性能測試時,使用的數(shù)據(jù)必須是真實并且未經(jīng)裁剪的。不貼近真實環(huán)境的性能測試,可能會帶來不可預料的性能、拓展和多線程問題。
3. 對于所有外部調(diào)用以及內(nèi)部服務(wù)都要做容錯處理
不管是RPC調(diào)用還是對于第三方服務(wù)的調(diào)用,都不能想當然的認為可用性是的。不允許出現(xiàn)服務(wù)調(diào)用超時和重試,將會對應(yīng)用程序的穩(wěn)定性和性能造成不利地影響。
4. 安全設(shè)計上一個系統(tǒng)要遵循較小權(quán)限原則
網(wǎng)絡(luò)服務(wù)隨處可見,從而使得黑客可以輕易地利用它進行拒絕服務(wù)攻擊。所以,設(shè)計系統(tǒng)時,需要遵循“較小權(quán)限”原則,采用白名單等方式。
5. 需要提供以下文檔
編寫單元測試文檔并使其擁有良好的代碼覆蓋率。
高層次的設(shè)計圖:描述了所有的組件,交互和結(jié)構(gòu)。
詳細的設(shè)計圖:具體到代碼層面的設(shè)計
系統(tǒng)map(類似于site map):說明系統(tǒng)的所有組成文件、配置文件等。
6. 做好系統(tǒng)關(guān)鍵功能的監(jiān)控、錯誤恢復、備份等
對于系統(tǒng)一些至關(guān)重要的功能模塊要做好對其的監(jiān)控,防止其影響系統(tǒng)的運行,造成不可估算的損失。另外,如果可以,監(jiān)控到故障后去去試圖恢復,恢復失敗再發(fā)送告警。對于一些很重要的數(shù)據(jù)文件,還要做到冗余備份,防止發(fā)生一些突然故障造成數(shù)據(jù)丟失。
7. 數(shù)據(jù)庫設(shè)計時設(shè)計一些便于追蹤歷史、整理的列
比如created_time、update_time可以說明記錄的創(chuàng)建和更新時間。;created_by、updated_by可以說明記錄是由誰創(chuàng)建和更新的。
此外,刪除記錄有時候并非真正刪除,這時需要設(shè)計表示此記錄狀態(tài)的列,
如可以取‘Y’或‘N’的‘deleted’列
或是可以取‘Active’或‘Inactive’的 ‘status’列。
8. 制定好項目回滾計劃
新的功能上線時,如果發(fā)生故障,沒有一份回滾計劃,那么可能會手忙腳亂。有一個良好的回顧及計劃,可以讓你能夠有條不紊的執(zhí)行相關(guān)操作,將系統(tǒng)恢復到一個可運行的狀態(tài)。
9. 項目上線前要做好量化分析
對于項目中用到的內(nèi)存、數(shù)據(jù)庫、文件、緩存等,要做好量化分析。預估出未來一段時間的空間占用,給運維分配機器時一個參考。防止,由于數(shù)據(jù)量增長過快,導致存儲不夠。
10. 制定好系統(tǒng)的部署計劃。
系統(tǒng)部署的平臺是一個至關(guān)重要的部分。對于平臺的描述,不能僅限于一臺服務(wù)器、兩個數(shù)據(jù)庫這個層面,至少需要包括
操作系統(tǒng)的特定版本,JVM等。
有多少內(nèi)存(包括物理內(nèi)存,JVM堆內(nèi)存,JVM棧內(nèi)存和JVM代的空間)。
CPU(內(nèi)核數(shù))。
負載均衡器,需要的節(jié)點數(shù)、節(jié)點類型,比如是Active-Standby型還是Active-Active型。
文件系統(tǒng)要求,例如,你的應(yīng)用程序可能會收集生成的日志并將其保存很長的周期,之后才進行歸檔。這樣的話,你就需要有足夠的硬盤空間。
雅思 托福 GRE SSAT SAT GMAT ACT 個人提升英語 英語四六級 多鄰國英語測試 詞庫 IB 英語口語 商務(wù)英語 公共英語 考研英語 青少兒英語 成人英語 A-Level 學生英語 初高中英語 OSSD AP課程 AEAS個性化定制課程 一級建造師 二級建造師 消防工程師 消防設(shè)施操作員 BIM 造價工程師 環(huán)評師 監(jiān)理工程師 咨詢工程師 安全工程師 建筑八大員 公路水運檢測 通信工程 裝配式工程師 注冊電氣工程師 二級注冊建筑師 一級注冊建筑師 智慧消防工程師 智慧建造工程師 全過程工程咨詢師 EPC 碳排放管理師 ACCA CFA 注冊會計師 會計證 初中級經(jīng)濟師 初級會計師 中級會計師 基金從業(yè) 證券從業(yè) 稅務(wù)師 薪稅師 企業(yè)合規(guī)師 會計就業(yè)實操 期貨從業(yè) FRM CMA CQF 教師資格 人力資源管理 導游考試 心理咨詢師 健康管理師 社會工作師 普通話 育嬰員 物流師 家庭教育指導師 專利代理師 教師招聘 兒童專注力 兒童情緒管理 法律職業(yè)資格 少兒編程 書法培訓 國畫 茶藝 樂器音樂 舞蹈 棋類 機器人編程 戲曲培訓 信奧賽C++ 少兒小主播 口才培訓 籃球培訓 商務(wù)辦公 影視后期 剪輯包裝 游戲設(shè)計 游戲程序 UI設(shè)計 室內(nèi)設(shè)計 photoshop CAD制圖 視覺設(shè)計 商業(yè)空間設(shè)計 平面設(shè)計