最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 開發(fā)的幾個注意點總結(jié)

 更新時間:2016年09月14日 08:59:18   作者:颯然Hang  
這篇文章主要介紹了Java開發(fā)的幾個注意點的相關(guān)資料,需要的朋友可以參考下

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都可以。下面的類實現(xiàn)了對這些格式的文件的spring注入支持,包括占位符支持。

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

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

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

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

不管是RPC調(diào)用還是對于第三方服務(wù)的調(diào)用,都不能想當(dāng)然的認(rèn)為可用性是100%的。不允許出現(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)。
詳細(xì)的設(shè)計圖:具體到代碼層面的設(shè)計,以及一些關(guān)鍵邏輯的流程。
系統(tǒng)組成文檔:說明系統(tǒng)的所有組成文件、配置文件等。
數(shù)據(jù)庫層面的dml以及ddl文檔,尤其是sql查詢語句需要經(jīng)過dba或者核心開發(fā)人員的review才能夠上線。
不僅僅對于傳統(tǒng)的開發(fā)流程,即使對于敏捷開發(fā),這些文檔也是必不可少的,否則在后續(xù)的維護、交接上會帶來很大的不便。

6. 做好系統(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ù)丟失。

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

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

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

8. 制定好項目回滾計劃

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

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

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

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

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

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

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

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

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

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

 通過此文希望能幫助開發(fā)Java 程序的朋友,謝謝大家對本站的支持!

相關(guān)文章

  • 如何配置Eclipse實現(xiàn)定制登錄界面

    如何配置Eclipse實現(xiàn)定制登錄界面

    本文介紹了如何配置Eclipse實現(xiàn)定制登錄界面,每一步的講解都很細(xì)致,感興趣的小伙伴可以閱讀一下
    2015-07-07
  • 詳解Spring Cloud Gateway 限流操作

    詳解Spring Cloud Gateway 限流操作

    這篇文章主要介紹了詳解Spring Cloud Gateway 限流操作,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • redis.clients.jedis.exceptions.JedisAskDataException異常解決

    redis.clients.jedis.exceptions.JedisAskDataException異常解決

    redis.clients.jedis.exceptions.JedisAskDataExceptio異常是在使用Jedis客戶端與Redis集群交互時遇到的一種重定向異常,本文就來介紹一下解決方法,感興趣的可以了解一下
    2024-05-05
  • Java時間輪調(diào)度算法的代碼實現(xiàn)

    Java時間輪調(diào)度算法的代碼實現(xiàn)

    時間輪是一種高效的定時調(diào)度算法,主要用于管理延時任務(wù)或周期性任務(wù),它通過一個環(huán)形數(shù)組(時間輪)和指針來實現(xiàn),將大量定時任務(wù)分?jǐn)偟焦潭ǖ臅r間槽中,極大地降低了時間復(fù)雜度和資源開銷,本文給大家介紹了Java時間輪調(diào)度算法的代碼實現(xiàn),需要的朋友可以參考下
    2025-03-03
  • jar命令的用法詳解

    jar命令的用法詳解

    這篇文章主要介紹了jar命令的用法,非常實用,需要的朋友可以參考下
    2014-08-08
  • IDEA中設(shè)置Tab健為4個空格的方法

    IDEA中設(shè)置Tab健為4個空格的方法

    這篇文章給大家介紹了代碼縮進用空格還是Tab?(IDEA中設(shè)置Tab健為4個空格)的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-03-03
  • Java中如何自定義一個類加載器

    Java中如何自定義一個類加載器

    這篇文章主要介紹了Java中如何自定義一個類加載器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java實戰(zhàn)之桌球小游戲

    java實戰(zhàn)之桌球小游戲

    這篇文章主要為大家詳細(xì)介紹了java實戰(zhàn)之桌球小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • idea 解決用骨架創(chuàng)建項目過慢的操作方式

    idea 解決用骨架創(chuàng)建項目過慢的操作方式

    這篇文章主要介紹了idea 解決用骨架創(chuàng)建項目過慢的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java中實現(xiàn)定時任務(wù)的兩種方法舉例詳解

    Java中實現(xiàn)定時任務(wù)的兩種方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于Java中實現(xiàn)定時任務(wù)的兩種方法,文中總結(jié)了各種實現(xiàn)方式的優(yōu)缺點,并給出了推薦的使用場景,通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12

最新評論

安徽省| 昭平县| 高青县| 鸡泽县| 赣榆县| 涞源县| 上林县| 成都市| 班戈县| 宁化县| 临漳县| 海原县| 南通市| 富民县| 邯郸市| 桐乡市| 铜陵市| 西华县| 武清区| 大埔县| 富川| 南岸区| 肥西县| 个旧市| 富川| 隆德县| 静安区| 龙岩市| 罗定市| 横山县| 闵行区| 庆城县| 彝良县| 开江县| 伊宁市| 昆明市| 宜昌市| 渝北区| 寿阳县| 湾仔区| 富裕县|