當前位置:
首頁 > 知識 > 聊聊JAVA開發中的幾個注意點

聊聊JAVA開發中的幾個注意點

在Java工程師平常的開發過程中,由於業務的不同,可能關注的點有很多不一樣的地方,但是在基礎層面還是有一些共性的。今天天軟小編為大家帶來一片文章,此文概括了在Java開發、測試、部署、工程化方面一些需要注意的地方,供大家參考。

1.將一些需要變動的配置寫在屬性文件中

比如,沒有把批處理使用的線程數設置成可在屬性文件中配置。你的批處理程序無論在DEV環境中,還是TEST環境中,都可以順暢無阻地運行,但是一旦部署在PROD上,把它作為多線程程序處理更大的數據集時,就會拋出IOException,原因也許是線上環境並發造成也許是其他。如果線程數目可以在屬性文件中配置,那麼使它成為一個單線程應用程序就變得十分容易了。我們不再需要為了解決問題而反覆地部署和測試應用了。這種方法也同樣適用於配置 URL、伺服器和埠號等。當然這裡推薦使用屬性文件外化這些配置。

2.測試中儘可能模擬線上環境

比如,生產過程中一個典型的場景就是只使用1到3個賬戶進行測試,而這個數量本應是1000到2000個的。在做性能測試時,使用的數據必須是真實並且未經裁剪的。不貼近真實環境的性能測試,可能會帶來不可預料的性能、拓展和多線程問題。

3.對於所有外部調用以及內部服務都要做容錯處理

不管是RPC調用還是對於第三方服務的調用,都不能想當然的認為可用性是100%的.不允許出現服務調用超時和重試,將會對應用程序的穩定性和性能造成不利地影響。

4.安全設計上一個系統要遵循最小許可權原則

網路服務隨處可見,從而使得黑客可以輕易地利用它進行拒絕服務攻擊。所以,設計系統時,需要遵循「最小許可權」原則,採用白名單等方式。

5.需要提供以下文檔

編寫單元測試文檔並使其擁有良好的代碼覆蓋率。

高層次的設計圖:描述了所有的組件,交互和結構。

詳細的設計圖:具體到代碼層面的設計

系統map(類似於site map):說明系統的所有組成文件、配置文件等

6.做好系統關鍵功能的監控、錯誤恢復、備份等

對於系統一些至關重要的功能模塊要做好對其的監控,防止其影響系統的運行,造成不可估算的損失。另外,如果可以,監控到故障後去去試圖恢復,恢復失敗再發送告警。對於一些很重要的數據文件,還要做到冗餘備份,防止發生一些突然故障造成數據丟失。

7.資料庫設計時設計一些便於追蹤歷史、整理的列

比如created_time、update_time可以說明記錄的創建和更新時間。;created_by、updated_by可以說明記錄是由誰創建和更新的。

此外,刪除記錄有時候並非真正刪除,這時需要設計表示此記錄狀態的列,如可以取『Y』或『N』的『deleted』列或是可以取『Active』或『Inactive』的『record_status』列。

8.制定好項目回滾計劃

新的功能上線時,如果發生故障,沒有一份回滾計劃,那麼可能會手忙腳亂。有一個良好的回顧及計劃,可以讓你能夠有條不紊的執行相關操作,將系統恢復到一個可運行的狀態。

9.項目上線前要做好量化分析

對於項目中用到的內存、資料庫、文件、緩存等,要做好量化分析。預估出未來一段時間的空間佔用,給運維分配機器時一個參考。防止,由於數據量增長過快,導致存儲不夠。

10.制定好系統的部署計劃。

系統部署的平台是一個至關重要的部分。對於平台的描述,不能僅限於一台伺服器、兩個資料庫這個層面,至少需要包括

·操作系統的特定版本,JVM等。

·有多少內存(包括物理內存,JVM堆內存,JVM棧內存和JVM永久代的空間)。

·CPU(內核數)。

·負載均衡器,需要的節點數、節點類型,比如是active/active型還是active/passive型,以及聚類要求。

·文件系統要求,例如,你的應用程序可能會收集生成的報告並將其保存一年,之後才進行歸檔。這樣的話,你就需要有足夠的硬碟空間。有些應用程序要求產生數據提取文件,並將它們暫時儲存以供其他系統進程或數據倉庫系統用來做多維分析報告。還有些數據文件是基於安全文件傳輸協議的,它們或來自內部系統,或來自外部系統,並且在歸檔前需要被保存12到36個月。

11.選擇最合適的工具/技術

很多情況下,開發者會在生產系統中使用一門想要學習的語言或某種工具。通常這不是最好的選擇。比如,為已經實際上是關係型的數據使用NoSQL資料庫。不管是語言還是工具,都有其適用的場景。類似「PHP」是最好的語言這種,只能表示呵呵。

12.在一些關鍵技術領域具有充足的知識儲備。

設計模式

JVM調優

多線程「並發問題」

事務問題,包括分散式事務

性能問題,包括GC、計算等

緩存

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java學習吧 的精彩文章:

哈哈 編程語言撕X大會 你頂誰?
分享關於程序員的幾點小樂趣
說說給程序猿做老婆的幾點總結
【知識點】JAVA繼承總結
2017年IT行業最賺錢的5個職位

TAG:java學習吧 |

您可能感興趣

VR看房APP開發
GDC:VR遊戲開發熱情下滑 Vive仍最受VR開發者喜愛
BBC開發首個AR APP
中國開發者基於谷歌AR開發了三個App,能購物能打遊戲
VR+智能家居APP開發
CAPCOM第四開發部,三個男人的浪漫故事
《LEFT ALIVE》順利開發中 等下次公開情報會讓大家驚訝
腦洞大開發!你對MIUI 10有哪些期待更新的?
HTC VIVE舉辦世界VR大會分論壇 發布6DoF開發者套件
谷歌將登台遊戲開發者大會GDC,或將發布新AR-VR開發工具
如何快速開發一個APP
開發一個APP的報價多少才合理?
VR街景APP開發公司
GDC遊戲開發者大會 谷歌或將發布新AR/VR工具
用於AI開發的最佳5個開源框架
UofA教授為坐在輪椅上的人們開發了一個App
Mock API是如何在開發中發光發熱的?
細數9大基於EOS開發值得期待的DAPP項目!
IBM開發的AI可以和人類「吵架」了
盤點遊戲中的那些隱藏的彩蛋 開發《GTA》的R星竟是個暴躁老哥!