關于Java開發需要注意的十二點流程

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

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



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


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



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


不管是RPC調用還是對于第三方服務的調用,都不能想當然的認為可用性是100%的。不允許出現服務調用超時和重試,將會對應用程序的穩定性和性能造成不利的影響。如果你想學習Java可以來這個群,首先是二二零,中間是一四二,最后是九零六,里面可以學習和交流,也有學習資料可以下載。



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


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



5.需要提供以下文檔


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

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

  3. 詳細的設計圖:具體到代碼層面的設計,以及一些關鍵邏輯的流程。?

  4. 系統組成文檔:說明系統的所有組成文件、配置文件等。?

  5. 數據庫層面的dml以及ddl文檔,尤其是sql查詢語句需要經過dba或者核心開發人員的review才能夠上線。?

不僅僅對于傳統的開發流程,即使對于敏捷開發,這些文檔也是必不可少的,否則在后續的維護、交接上會帶來很大的不便。



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


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



7.數據庫設計時設計一些便于追蹤歷史、整理的列


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

此外,刪除記錄有時候并非真正刪除,這時需要設計表示此記錄狀態的列,如可以取‘Active’或‘Inactive’的 ‘status’列。



8.制定好項目回滾計劃


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



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


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



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


系統部署的平臺是一個至關重要的部分。對于部署平臺的描述,不能僅限于一臺服務器、兩個數據庫這個層面,至少需要包括:

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

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

  • CPU(內核數)。?

  • 負載均衡器,需要的節點數、節點類型,比如是Active-Standby型還是Active-Active型。?

  • 文件系統要求,例如,你的應用程序可能會收集生成的日志并將其保存很長的周期,之后才進行歸檔。這樣的話,你就需要有足夠的硬盤空間。



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


很多情況下,開發者會在生產系統中使用一門想要學習的語言或某種工具。通常這不是最好的選擇。比如,為已經實際上是關系型的數據使用NoSQL數據庫。不管是語言還是工具,都有其適用的場景。不能求新,也不能以“自我”為標準。



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


設計模式?
JVM調優?
多線程“并發問題”?
事務問題,包括分布式事務?
性能問題,包括GC、計算等?
緩存



0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281239.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281239.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity經典游戲教程之:雪人兄弟

版權聲明: 本文原創發布于博客園"優夢創客"的博客空間(網址:http://www.cnblogs.com/raymondking123/)以及微信公眾號"優夢創客"(微信號:unitymaker)您可以自由轉載&#x…

使用webpack搭建個性化項目

安裝主包 yarn add webpack webpack-cli webpack-dev-server -D根據項目實際需求安裝loaders,webpack-loaders列表 根據項目實際需求安裝插件, webpack-plugins列表 常用包列表 包名說明webpackwebpack主程序,配置列表webpack-cliwebpack…

.NET周報【11月第1期 2022-11-07】

國內文章開源安全賦能 - .NET Conf China 2022https://mp.weixin.qq.com/s/_tYpfPeQgyEGsnR4vVLzHg.NET Conf China 2022 是面向開發人員的社區峰會,延續 .NET Conf 2022 的活動,慶祝 .NET 7 的發布和回顧過去一年來 .NET 在中國的發展成果,它…

React - 狀態提升

從入門的角度來聊一下React 的狀態提升。我們先來看一下React官網是怎么介紹這一概念的:使用 react 經常會遇到幾個組件需要共用狀態數據的情況。這種情況下,我們最好將這部分共享的狀態提升至他們最近的父組件當中進行管理。很簡單的一句介紹&#xff0…

saltstack(三) --- salt-httpapi

以下操作均在master上操作 1. 安裝api netapi modules(httpapi)有三種,分別是rest_cherrypy、rest_tornado、rest_wsig,接下來要講的是rest_cherrypydoc:https://docs.saltstack.com/en/latest/ref/netapi/all/salt.ne…

c++實現二叉搜索樹

自己實現了一下二叉搜索樹的數據結構。記錄一下&#xff1a; #include <iostream>using namespace std;struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int value) { valvalue; leftNULL; rightNULL; } };class SearchTree{public:SearchTree();~Sear…

一款自用的翻譯小工具,開源了

一款自用的翻譯小工具&#xff0c;開源了TranslationTool作者&#xff1a;WPFDevelopersOrg - 唐宋元明清|驚鏵原文鏈接&#xff1a;https://github.com/Kybs0/TranslationTool此項目使用WPF MVVM開發。框架使用大于等于.NET461。Visual Studio 2019。最初是支持以下&#xff1…

JS使用按位異或方式加密字符串

按位異或加密字符串&#xff0c;字符串加解密都是該函數 缺陷是加密密鑰使用的字符最好不要出現需要加密的字符串中的字符&#xff0c;一旦出現原字符與加密字符一樣額情況&#xff0c;異或結果為0&#xff0c;導致不能還原字符串&#xff0c;可以考慮更改算法避免這種情況 im…

SCSS 實用知識匯總

1、變量聲明 $nav-color: #F90; nav {//$width 變量的作用域僅限于{}內$width: 100px;width: $width;color: $nav-color; }.a {//報錯&#xff0c;$width未定義width: $width; } 2、父選擇器& scss代碼&#xff1a; article a {color: blue;&:hover { color: red } } 編…

【ELK集群+MQ】通用部署方案以及快速實現MQ發布訂閱服務功能

前言&#xff1a;大概一年多前寫過一個部署ELK系列的博客文章&#xff0c;前不久剛好在部署一個ELK的解決方案&#xff0c;我順便就把一些基礎的部分拎出來&#xff0c;再整合成一期文章。大概內容包括&#xff1a;搭建ELK集群&#xff0c;以及寫一個簡單的MQ服務。如果需要看一…

python容錯

#try: except: else: #為什么叫容錯呢&#xff0c;先說說錯誤&#xff0c;這里說的錯誤并不是因為馬虎或者什么原因在腳本中留下的bug&#xff0c;這個不能容掉&#xff0c;所謂容掉就是略過這個錯誤&#xff0c;要在測試時候發現并修正&#xff0c;需要容錯的錯誤是在腳本執行…

git stash參數介紹

git stash 用于暫存工作區未提交的內容&#xff0c;便于在同時開發多個分支需要切換時保存當前分支進度。 list 語法 git stash list [<options>] &#xff0c;與git log功能類似&#xff0c;列出儲藏列表&#xff0c;options 參數可以參考git log的參數 show 語法 git …

多語言報表的改動方法

在定義上傳RTF模板的時候&#xff0c;會有一個是否可翻譯的選項&#xff0c;選擇之后。就能夠上傳xlf文件作為翻譯內容。 對于已經存在的多語言類型報表&#xff0c;稍作改動之后再上傳&#xff0c;可能會出現下面現象&#xff1a; 進程出現了“未完畢”的提示 想要改動非常eas…

自定義Cell的流程

1、.h文件 // // 文 件 名:CHBackupGateWayCell.h // // 版權所有:Copyright © 2018 lelight. All rights reserved. // 創 建 者:lelight // 創建日期:2018/12/19. // 文檔說明: // 修 改 人: // 修改日期: //#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGINclass…

JS實時監聽DOM元素變化 - MutationObserver

使用 MutationObserver API實時監聽DOM元素變化 創建 MutationObserver 實列&#xff0c;接受一個用于監聽到DOM元素變化的回調函數 const handleListenChange (mutationsList, observer) > {console.log(mutationsList, observer) } const mutationObserver new Mutati…

LightOJ - 1027 A Dangerous Maze —— 期望

題目鏈接&#xff1a;https://vjudge.net/problem/LightOJ-1027 1027 - A Dangerous MazePDF (English)StatisticsForumTime Limit: 2 second(s)Memory Limit: 32 MBYou are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The p…

MASA MAUI Plugin (六)集成個推,實現本地消息推送[Android] 篇

背景MAUI的出現&#xff0c;賦予了廣大.Net開發者開發多平臺應用的能力&#xff0c;MAUI 是Xamarin.Forms演變而來&#xff0c;但是相比Xamarin性能更好&#xff0c;可擴展性更強&#xff0c;結構更簡單。但是MAUI對于平臺相關的實現并不完整。所以MASA團隊開展了一個實驗性項目…

第八天

配置文件 Vi /etc/fstab /dev/vg01/lv01 /dir01 ext4 defaults mount -a 掃描 使用交換空間 1.創建分區 2.mkswap /dev/sda創建交換分區 3.swapon /dev/sda啟用交換分區 Linux系統啟動過程 1、引導程序 BIOS自檢 &#xff08;硬件自檢&#xff09; 2、G…

iOS 通知中心(NSNotificationCenter)

NSNotificationCenter 在這里第一步和第二步的順序可以互換&#xff0c;一般樓主我喜歡先在需要發送消息的頁面發送消息&#xff0c;然后再在需要監聽的頁面注冊監聽。要注意的是不管是通知中心還是KVO都需要在頁面銷毀之前移除監聽。 注冊觀察者/*** 觀察者注冊消息通知*…

vue-router和react-router嵌套路由layout配置方案的區別

最近在學習react&#xff0c;在路由這一塊有點看不懂&#xff0c;第一感覺是靈活性很大&#xff0c;想怎么來就怎么來&#xff0c;但問題也來了&#xff0c;稍微復雜一點就GG了&#xff0c;不如vue的傻瓜式配置來的方便。 先說一下vue的路由配置方式&#xff0c;目錄結構如下&…