日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java开发的几个注意点

發(fā)布時(shí)間:2025/3/21 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java开发的几个注意点 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 將一些需要變動(dòng)的配置寫在屬性文件中

比如,沒(méi)有把一些需要并發(fā)執(zhí)行時(shí)使用的線程數(shù)設(shè)置成可在屬性文件中配置。那么你的程序無(wú)論在DEV環(huán)境中,還是TEST環(huán)境中,都可以順暢無(wú)阻地運(yùn)行,但是一旦部署在PROD上,把它作為多線程程序處理更大的數(shù)據(jù)集時(shí),就會(huì)拋出IOException,原因也許是線上環(huán)境并發(fā)造成也許是其他。如果線程數(shù)目可以在屬性文件中配置,那么使它成為一個(gè)單線程應(yīng)用程序就變得十分容易了。我們不再需要為了解決問(wèn)題而反復(fù)地部署和測(cè)試應(yīng)用了。這種方法也同樣適用于配置 URL、服務(wù)器和端口號(hào)等。

這里推薦使用屬性文件外化這些配置,文件格式使用properties、yaml、hocon、json都可以。下面的類實(shí)現(xiàn)了對(duì)這些格式的文件的spring注入支持,包括占位符支持。

https://github.com/superhj1987/awesome-libs/blob/master/src/main/java/me/rowkey/libs/spring/config/AwesomePropertyPlaceholderConfigurer.java

2. 測(cè)試中盡可能模擬線上環(huán)境

生產(chǎn)過(guò)程中一個(gè)典型的場(chǎng)景就是只使用1到3個(gè)帳戶進(jìn)行測(cè)試,而這個(gè)數(shù)量本應(yīng)是1000到2000個(gè)的。在做性能測(cè)試時(shí),使用的數(shù)據(jù)必須是真實(shí)并且未經(jīng)裁剪的。不貼近真實(shí)環(huán)境的性能測(cè)試,可能會(huì)帶來(lái)不可預(yù)料的性能、拓展和多線程問(wèn)題。這里也可以采取預(yù)發(fā)布環(huán)境的方式來(lái)解決部分問(wèn)題。

3. 對(duì)于所有外部調(diào)用以及內(nèi)部服務(wù)都要做容錯(cuò)處理

不管是RPC調(diào)用還是對(duì)于第三方服務(wù)的調(diào)用,都不能想當(dāng)然的認(rèn)為可用性是100%的。不允許出現(xiàn)服務(wù)調(diào)用超時(shí)和重試,將會(huì)對(duì)應(yīng)用程序的穩(wěn)定性和性能造成不利的影響。

4. 安全設(shè)計(jì)上一個(gè)系統(tǒng)要遵循最小權(quán)限原則

網(wǎng)絡(luò)服務(wù)隨處可見(jiàn),從而使得黑客可以輕易地利用它進(jìn)行拒絕服務(wù)攻擊。所以,設(shè)計(jì)系統(tǒng)時(shí),需要遵循“最小權(quán)限”原則,采用白名單等方式。

5. 需要提供以下文檔

  • 編寫單元測(cè)試文檔并使其擁有良好的代碼覆蓋率。
  • 高層次的設(shè)計(jì)圖:描述了所有的組件,交互和結(jié)構(gòu)。
  • 詳細(xì)的設(shè)計(jì)圖:具體到代碼層面的設(shè)計(jì),以及一些關(guān)鍵邏輯的流程。
  • 系統(tǒng)組成文檔:說(shuō)明系統(tǒng)的所有組成文件、配置文件等。
  • 數(shù)據(jù)庫(kù)層面的dml以及ddl文檔,尤其是sql查詢語(yǔ)句需要經(jīng)過(guò)dba或者核心開(kāi)發(fā)人員的review才能夠上線。
  • 不僅僅對(duì)于傳統(tǒng)的開(kāi)發(fā)流程,即使對(duì)于敏捷開(kāi)發(fā),這些文檔也是必不可少的,否則在后續(xù)的維護(hù)、交接上會(huì)帶來(lái)很大的不便。

    6. 做好系統(tǒng)關(guān)鍵功能的監(jiān)控、錯(cuò)誤恢復(fù)、備份等

    對(duì)于系統(tǒng)一些至關(guān)重要的功能模塊要做好對(duì)其的監(jiān)控,防止其影響系統(tǒng)的運(yùn)行,造成不可估算的損失。另外,如果可以,監(jiān)控到故障后去去試圖恢復(fù),恢復(fù)失敗再發(fā)送告警。對(duì)于一些很重要的數(shù)據(jù)文件,還要做到冗余備份,防止發(fā)生一些突然故障造成數(shù)據(jù)丟失。

    7. 數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)設(shè)計(jì)一些便于追蹤歷史、整理的列

    比如create_time、update_time可以說(shuō)明記錄的創(chuàng)建和更新時(shí)間。create_by、update_by可以說(shuō)明記錄是由誰(shuí)創(chuàng)建和更新的。

    此外,刪除記錄有時(shí)候并非真正刪除,這時(shí)需要設(shè)計(jì)表示此記錄狀態(tài)的列,如可以取‘Active’或‘Inactive’的 ‘status’列。

    8. 制定好項(xiàng)目回滾計(jì)劃

    新的功能上線時(shí),如果發(fā)生故障,沒(méi)有一份回滾計(jì)劃,那么可能會(huì)手忙腳亂而造成線上服務(wù)一段時(shí)間不可用。有一個(gè)良好的回滾計(jì)劃,可以讓你能夠有條不紊的執(zhí)行相關(guān)操作,在可控時(shí)間內(nèi)將系統(tǒng)恢復(fù)到一個(gè)可運(yùn)行的狀態(tài)。

    9. 項(xiàng)目上線前要做好量化分析

    對(duì)于項(xiàng)目中用到的內(nèi)存、數(shù)據(jù)庫(kù)、文件、緩存等,要做好量化分析。預(yù)估出未來(lái)一段時(shí)間的空間占用,給運(yùn)維分配機(jī)器時(shí)一個(gè)參考。防止,由于數(shù)據(jù)量增長(zhǎng)過(guò)快,導(dǎo)致存儲(chǔ)不夠。這一點(diǎn)是非常重要的,不然很容易造成線上服務(wù)不可用。

    10. 制定好系統(tǒng)的部署計(jì)劃。

    系統(tǒng)部署的平臺(tái)是一個(gè)至關(guān)重要的部分。對(duì)于部署平臺(tái)的描述,不能僅限于一臺(tái)服務(wù)器、兩個(gè)數(shù)據(jù)庫(kù)這個(gè)層面,至少需要包括

    • 操作系統(tǒng)的特定版本,JVM等。
    • 有多少內(nèi)存(包括物理內(nèi)存,JVM堆內(nèi)存,JVM棧內(nèi)存和JVM永久代的空間)。
    • CPU(內(nèi)核數(shù))。
    • 負(fù)載均衡器,需要的節(jié)點(diǎn)數(shù)、節(jié)點(diǎn)類型,比如是Active-Standby型還是Active-Active型。
    • 文件系統(tǒng)要求,例如,你的應(yīng)用程序可能會(huì)收集生成的日志并將其保存很長(zhǎng)的周期,之后才進(jìn)行歸檔。這樣的話,你就需要有足夠的硬盤空間。

    11. 選擇最合適的工具/技術(shù)

    很多情況下,開(kāi)發(fā)者會(huì)在生產(chǎn)系統(tǒng)中使用一門想要學(xué)習(xí)的語(yǔ)言或某種工具。通常這不是最好的選擇。比如,為已經(jīng)實(shí)際上是關(guān)系型的數(shù)據(jù)使用NoSQL數(shù)據(jù)庫(kù)。不管是語(yǔ)言還是工具,都有其適用的場(chǎng)景。不能求新,也不能以“自我”為標(biāo)準(zhǔn)。

    12. 在一些關(guān)鍵技術(shù)領(lǐng)域具有充足的知識(shí)儲(chǔ)備。

    • 設(shè)計(jì)模式
    • JVM調(diào)優(yōu)
    • 多線程“并發(fā)問(wèn)題”
    • 事務(wù)問(wèn)題,包括分布式事務(wù)
    • 性能問(wèn)題,包括GC、計(jì)算等
    • 緩存

    Ps:此文部分內(nèi)容來(lái)自網(wǎng)上資料。

    原文出處:?后端技術(shù)雜談

    from:?http://www.importnew.com/21453.html

    總結(jié)

    以上是生活随笔為你收集整理的Java开发的几个注意点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。