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