java初学者只要掌握了以下十大原则,可以让你的技术飙升
1. 將一些需要變動的配置寫在屬性文件中
比如,沒有把一些需要并發(fā)執(zhí)行時使用的線程數(shù)設(shè)置成可在屬性文件中配置。那么你的程序無論在DEV環(huán)境中,還是TEST環(huán)境中,都可以順暢無阻地運行,但是一旦部署在PROD上,把它作為多線程程序處理更大的數(shù)據(jù)集時,就會拋出IOException,原因也許是線上環(huán)境并發(fā)造成也許是其他。
如果線程數(shù)目可以在屬性文件中配置,那么使它成為一個單線程應(yīng)用程序就變得十分容易了。我們不再需要為了解決問題而反復(fù)地部署和測試應(yīng)用了。這種方法也同樣適用于配置URL、服務(wù)器和端口號等。
這里推薦使用屬性文件外化這些配置,文件格式使用properties、yaml、hocon、json都可以。
2. 測試中盡可能模擬線上環(huán)境
生產(chǎn)過程中一個典型的場景就是只使用1到3個帳戶進行測試,而這個數(shù)量本應(yīng)是1000到2000個的。
在做性能測試時,使用的數(shù)據(jù)必須是真實并且未經(jīng)裁剪的。不貼近真實環(huán)境的性能測試,可能會帶來不可預(yù)料的性能、拓展和多線程問題。
3. 對于所有外部調(diào)用以及內(nèi)部服務(wù)都要做容錯處理
不管是RPC調(diào)用還是對于第三方服務(wù)的調(diào)用,都不能想當然的認為可用性是百分之百的。
不允許出現(xiàn)服務(wù)調(diào)用超時和重試,將會對應(yīng)用程序的穩(wěn)定性和性能造成不利地影響。
4. 需要提供以下文檔
編寫單元測試文檔并使其擁有良好的代碼覆蓋率。
高層次的設(shè)計圖:描述了所有的組件,交互和結(jié)構(gòu)。
詳細的設(shè)計圖:具體到代碼層面的設(shè)計
系統(tǒng)map(類似于site map):說明系統(tǒng)的所有組成文件、配置文件等。
5. 做好系統(tǒng)關(guān)鍵功能的監(jiān)控、錯誤恢復(fù)、備份等
對于系統(tǒng)一些至關(guān)重要的功能模塊要做好對其的監(jiān)控,防止其影響系統(tǒng)的運行,造成不可估算的損失。
另外,如果可以,監(jiān)控到故障后去去試圖恢復(fù),恢復(fù)失敗再發(fā)送告警。對于一些很重要的數(shù)據(jù)文件,還要做到冗余備份,防止發(fā)生一些突然故障造成數(shù)據(jù)丟失。
6. 數(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'列。
7. 制定好項目回滾計劃
新的功能上線時,如果發(fā)生故障,沒有一份回滾計劃,那么可能會手忙腳亂。有一個良好的回顧及計劃,可以讓你能夠有條不紊的執(zhí)行相關(guān)操作,將系統(tǒng)恢復(fù)到一個可運行的狀態(tài)。
8. 項目上線前要做好量化分析
對于項目中用到的內(nèi)存、數(shù)據(jù)庫、文件、緩存等,要做好量化分析。預(yù)估出未來一段時間的空間占用,給運維分配機器時一個參考。防止,由于數(shù)據(jù)量增長過快,導致存儲不夠。
9. 選擇合適的工具/技術(shù)
很多情況下,開發(fā)者會在生產(chǎn)系統(tǒng)中使用一門想要學習的語言或某種工具。通常這不是很好的選擇。比如,為已經(jīng)實際上是關(guān)系型的數(shù)據(jù)使用NoSQL數(shù)據(jù)庫。不管是語言還是工具,都有其適用的場景。
10. 在一些關(guān)鍵技術(shù)領(lǐng)域具有充足的知識儲備。
設(shè)計模式、JVM調(diào)優(yōu)、多線程"并發(fā)問題"、事務(wù)問題,包括分布式事務(wù)、性能問題,包括GC、計算等、緩存等等。
了讓學習變得輕松、高效,今天給大家免費分享一套Java入門教學資源。幫助大家在成為Java架構(gòu)師的道路上披荊斬棘。需要資料的歡迎加入學習交流群:9285,05736
總結(jié)
以上是生活随笔為你收集整理的java初学者只要掌握了以下十大原则,可以让你的技术飙升的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 取得数组下标_《零基础C++入门教程》—
- 下一篇: 包包的结构制图_15种常见领型的结构制图