91无码高清视频在线播放|亚洲最大成人在线资源|日本黄色免费调教网站|亚洲春色一区二区三区|国产一级一区二区三区|成人免费 做受电影无码

歡迎訪問漢海網(wǎng),帶你進(jìn)入知識(shí)的海洋!

postman安裝配置及常用功能小結(jié)(為什么有些編程界程序員需要兩個(gè)顯示器)

方應(yīng) 分享 時(shí)間: 瀏覽:0

為什么有些編程界程序員需要兩個(gè)顯示器?

并非編程界程序員需不要兩個(gè)顯示器。而是編程就要兩個(gè)甚至連更多個(gè)顯示器。

我在美國(guó)工作啊時(shí),好象的程序員或者開發(fā)人員桌子上也是2個(gè)以上顯示器。

究其原因,要注意是方便啊,兩個(gè)顯示器現(xiàn)在象的windows和顯卡都接受,是可以避免來回切屏,方便啊監(jiān)控狀態(tài),都要兩個(gè)以上屏幕。

(1)比方說你要建議參考別人的代碼,寫自己的。這時(shí)候兩個(gè)屏幕方便啊吧?

(2)再再者,你要一邊望著詳細(xì)怎么設(shè)計(jì)的描述,一遍寫代碼,這時(shí)候兩個(gè)屏幕方便些吧?

(3)再比如說,你必須著邊又看了看程序運(yùn)行結(jié)果,一邊可以修改程序的功能,這時(shí)候兩個(gè)屏幕方便些吧?

(4)再再者,現(xiàn)在最流行的視頻會(huì)議,你在旁邊開著會(huì),不停地看著遠(yuǎn)處參考資料,的或c語(yǔ)言設(shè)計(jì)其他文檔。這全是是需要兩個(gè)屏幕。

(5)再比如說,你要跑多個(gè)虛擬店容器的環(huán)境,好是是一個(gè)虛擬機(jī)或容器環(huán)境一個(gè)顯示器吧。

劉嵩

2020.5.19

如何優(yōu)雅的設(shè)計(jì)Java異常?

異樣的類別

如果說我們所知道的,java中的十分的超類是(后文省略為Throwable),它有兩個(gè)比較好不重要的子類,(后文省略為Exception)和(后文省略為Error),其中Error由JVM虛擬機(jī)進(jìn)行管理,如我們所人們所熟知的OutOfMemoryError無比等,因此我們本文不參與Error異常,那么我們多說幾句一下Exception異樣。

Exception極其有個(gè)也很重要的子類,叫做RuntimeException。我們將RuntimeException或其他繼承自RuntimeException的子類稱做非受檢異常(unsafeException),其他繼承自Exception十分的子類稱作受檢十分(blockedException)。本文重點(diǎn)來打聽一下再看看受檢異常和非受檢異常這兩種無比。

如何中,選擇異常

從筆者的開發(fā)經(jīng)驗(yàn)來看,假如在一個(gè)應(yīng)用中,需要開發(fā)一個(gè)方法(如某個(gè)功能的service方法),這個(gè)方法假如中間很有可能會(huì)出現(xiàn)無比,這樣你需要判斷這個(gè)異樣再次出現(xiàn)之后有無動(dòng)態(tài)鏈接庫(kù)者也可以處理,但是你有無只希望全局函數(shù)者參與處理,要是調(diào)用者也可以全面處理,另外你也期望動(dòng)態(tài)鏈接庫(kù)者并且處理,那么就要一拋受檢十分,警告調(diào)用者在不使用你的方法時(shí),考慮到如果沒有甩出異常時(shí)如果沒有參與處理。

相似的,如果沒有在寫某個(gè)方法時(shí),你如果說這是個(gè)無意間異樣,理論上說,你都覺得運(yùn)行時(shí)很可能會(huì)接觸什么問題,而這些問題也許也不是必然會(huì)不可能發(fā)生的,也不是需要內(nèi)部函數(shù)者顯示的實(shí)際異常來確定業(yè)務(wù)流程能操作的,那么這時(shí)就可以不使用一個(gè)RuntimeException這樣的非受檢無比.

行了,估記我上邊說的這段話,你讀了很多遍也卻覺得晦澀了。

那么,請(qǐng)跟著一起我的思路,在慢慢地理解透一下。

什么時(shí)候才需要拋無比

簡(jiǎn)單的方法我們要打聽一下一個(gè)問題,什么時(shí)候才必須拋異常?十分的設(shè)計(jì)是方便些給開發(fā)者建議使用的,但不是亂是用,筆者是對(duì)什么時(shí)候拋異樣這個(gè)問題也問了很多朋友,能決定準(zhǔn)確答案的的確不是太多。當(dāng)然這個(gè)問題很簡(jiǎn)單的,如果你覺著某些”問題”解決不了了,這樣你就也可以丟出十分了。

.例如,你在寫一個(gè)service,其中在在寫某段代碼處,你發(fā)現(xiàn)到可能會(huì)會(huì)再產(chǎn)生問題,那就就請(qǐng)擲下十分吧,不會(huì)相信我,你此時(shí)拋出異樣將是一個(gè)最佳時(shí)機(jī)。

肯定甩出怎樣的異樣

了解完了什么時(shí)候才必須拋出異常后,我們?cè)僬J(rèn)真的思考一個(gè)問題,真有當(dāng)我們一拋異常時(shí),我們應(yīng)該是選用天然整樣的極其呢?到底是是受檢無比我還是非受檢無比呢(RuntimeException)呢?

我來舉例子那說明一下這個(gè)問題,先從受檢無比你說起,假如有這樣的一個(gè)業(yè)務(wù)邏輯,需要從某文件中讀取數(shù)據(jù)某個(gè)數(shù)據(jù),這個(gè)讀取能操作可能是而文件被刪掉等其它問題可能導(dǎo)致根本無法聲望兌換最大限度地直接出現(xiàn)讀取文件錯(cuò)誤,那你就要從redis或mysql數(shù)據(jù)庫(kù)中再去某些此數(shù)據(jù),參考追加代碼,getKey(Integer)為入口程序.

ok,看了以上代碼以后,你也許心中有一些想法,原先受檢異樣這個(gè)可以再控制義務(wù)邏輯,對(duì),沒錯(cuò),實(shí)際受檢十分真的也可以操縱業(yè)務(wù)邏輯,不過一定不要千萬(wàn)不能這樣使用,我們應(yīng)該要合理的甩出異常,而且程序本身才是流程,十分的作用并不是當(dāng)你通過不開去的時(shí)候可以找到的一個(gè)借口只不過是,它并不能不能以為完全控制程序流程的入口或出口,假如那樣可以使用的話,是在將十分的作用擴(kuò)展化,這樣將是倒致代碼復(fù)雜程度的增加,耦合性會(huì)能提高,代碼可讀性降低等問題。

這樣的話就是有不要可以使用這樣的極其嗎?其實(shí)也不是,在真有這樣的需求的時(shí)候,我們也可以那樣的話可以使用,僅僅一定不要,千萬(wàn)不能把它真充當(dāng)控制流程的工具或手段。那么也不知什么時(shí)候才要丟出這樣的極其呢?要判斷,假如調(diào)用者全局函數(shù)程序出錯(cuò)后,要先讓動(dòng)態(tài)創(chuàng)建者對(duì)這錯(cuò)誤參與處理才可以不,柯西-黎曼方程這樣的要求時(shí),我們才能判斷使用受檢異常。

接下來,我們來看看看非受檢十分呢(RuntimeException),對(duì)于RuntimeException這種無比,我們總之很多見,比如說/等,那你這種十分我們時(shí)候拋出呢?

當(dāng)我們?cè)趯懩硞€(gè)方法的時(shí)候,可能會(huì)會(huì)一面之緣遇到了某個(gè)錯(cuò)誤,我們認(rèn)為這個(gè)問題時(shí)運(yùn)行程序時(shí)很可能為發(fā)生的,而且理論上講,沒有這個(gè)問題的話,程序城就會(huì)算正常先執(zhí)行的時(shí)候,它不滿要求全局函數(shù)者你必須捕捉獵物這個(gè)十分,此時(shí)一拋RuntimeException異常。

舉個(gè)例子,當(dāng)傳來一個(gè)路徑的時(shí)候,是需要趕往一個(gè)路徑按的File對(duì)象:

上列例子是因?yàn)?,要是?dòng)態(tài)鏈接庫(kù)者調(diào)用getFiles(String)的時(shí)候如果path是空,那你就擲下空指針異樣(它是RuntimeException的子類),調(diào)用者不用顯示的并且try…catch…操作參與噬魂之手處理.這就那些要求動(dòng)態(tài)創(chuàng)建者在調(diào)用這樣的方法時(shí)先并且不驗(yàn)證,盡量減少發(fā)生RuntimeException.不勝感激:

應(yīng)該要最好選擇哪種無比

是從以上的描述和舉例子,這個(gè)可以總結(jié)出一個(gè)結(jié)論,RuntimeException異常和受檢異常之間的區(qū)別應(yīng)該是:是否是強(qiáng)制那些要求調(diào)用者可以如何處理此無比,如果噬靈鬼斬那些要求調(diào)用者需要并且處理,那就就可以使用受檢異常,不然就你選非受檢十分(RuntimeException)。好象來講,如果不是沒有特珠的要求,我們個(gè)人建議不使用RuntimeException異常。

場(chǎng)景可以介紹和技術(shù)選型架構(gòu)描述

正如我們所知,悠久的傳統(tǒng)的項(xiàng)目是以MVC框架為基礎(chǔ)接受的新的,本文要注意從在用restful風(fēng)格接口的設(shè)計(jì)來親身體驗(yàn)下異常處理的優(yōu)雅。

我們把關(guān)注點(diǎn)放在restful的api層(和web中的controller層類似于)和service層,做研究幫一下忙在service中要如何甩出異樣,然后api層如何能通過捕捉獵物并且轉(zhuǎn)變異常。

建議使用的技術(shù)是:spring-boot,jpa(hibernate),mysql,假如對(duì)這些技術(shù)并非太熟悉,讀者不需要自行閱讀理解相關(guān)材料。

業(yè)務(wù)場(chǎng)景描述

選擇一個(gè)比較比較簡(jiǎn)單的業(yè)務(wù)場(chǎng)景,以電商中的收貨地址管理為例,用戶在移動(dòng)端接受購(gòu)買商品時(shí),不需要通過收貨地址管理,在項(xiàng)目中,提供給一些給移動(dòng)端并且訪問的api接口,如:直接添加收貨地址,刪除掉收貨地址,改收貨地址,默認(rèn)收貨地址設(shè)置,收貨地址列表查詢,單個(gè)確認(rèn)發(fā)貨地址查詢等接口。

統(tǒng)合約束條件

可以了,這個(gè)是設(shè)置里好的一個(gè)很都差不多的業(yè)務(wù)場(chǎng)景,當(dāng)然了,不論什么樣的api操作,其中都真包含一些規(guī)則:

先添加收貨地址:入?yún)?

用戶id

收貨地址實(shí)體信息

約束:

用戶id肯定不能為空,且此用戶倒是是存在的

收貨地址的用處字段肯定不能為空

如果用戶還沒有收貨地址,當(dāng)此收貨地址創(chuàng)建時(shí)設(shè)置成默認(rèn)收貨地址—

徹底刪除收貨地址:入?yún)?

用戶id

收貨地址id

管理和約束:

用戶id沒法為空,且此用戶確實(shí)是修真者的存在的

收貨地址不能為空,且此收貨地址確實(shí)是存在地的

確認(rèn)此收貨地址有無是用戶的收貨地址

可以確定此收貨地址是否是為默認(rèn)收貨地址,如果是設(shè)置為收貨地址,那么又不能并且徹底刪除

你要改收貨地址:入?yún)?

用戶id

收貨地址id

強(qiáng)制力:

用戶id肯定不能為空,且此用戶的確是存在的

收貨地址肯定不能為空,且此收貨地址的確是存在的

確定此收貨地址是否是用戶的收貨地址

系統(tǒng)默認(rèn)地址設(shè)置:入?yún)?

用戶id

收貨地址id

約束力:

用戶id又不能為空,且此用戶的確是未知的

收貨地址又不能為空,且此收貨地址倒是是存在地的

推測(cè)此收貨地址是否是用戶的收貨地址

收貨地址列表可以查詢:入?yún)?

用戶id

管理和約束:

用戶id肯定不能為空,且此用戶確實(shí)是是未知的

單個(gè)收到貨地址查詢:入?yún)?

用戶id

收貨地址id

加以約束:

用戶id不能不能為空,且此用戶確實(shí)是必然的

收貨地址又不能為空,且此收貨地址確實(shí)是未知的

確定此收貨地址是否是是用戶的收貨地址

加以約束判斷和技術(shù)選型

對(duì)此上述列個(gè)的約束條件和功能列表,我你選擇幾個(gè)比較是是的異常處理場(chǎng)景并且分析:再添加收貨地址,刪出收貨地址,獲取收貨地址列表。

這樣應(yīng)該是有哪些必要的知識(shí)儲(chǔ)備呢,讓我們看看收貨地址這個(gè)功能:

添加收貨地址中必須對(duì)用戶id和收貨地址實(shí)體信息就行校驗(yàn),那你對(duì)于非空的判斷,我們要如何接受工具的選擇呢?悠久的傳統(tǒng)的判斷::

上邊的例子,要是只可以確定uid為空不過,假如再去可以確定address這個(gè)實(shí)體中的某些必要的話屬性是否是為空,在字段很多的情況下,這所謂是災(zāi)難性的。

那我們應(yīng)該怎么接受這些入?yún)⒌呐袛嗄兀o大家可以介紹兩個(gè)知識(shí)點(diǎn):

Guava中的Preconditions類基于了很多入?yún)⒎椒ǖ呐袛?/p>

jsr303的validation規(guī)范(目前基于比較好全的是hibernate實(shí)現(xiàn)程序的hibernate-validator)

如果不是使用了這兩種推薦一下技術(shù),那么入?yún)⒌呐袛鄷?huì)變得更加簡(jiǎn)單的太多了。幫我推薦大家多使用這些成熟的技術(shù)和jar工具包,他是可以下降很多不必要的工作量。我們只必須把重心扔到業(yè)務(wù)邏輯上。而應(yīng)該不會(huì)畢竟這些入?yún)⒌呐袛鄵?dān)誤更多的時(shí)間。

要如何優(yōu)雅的設(shè)計(jì)什么java異常domain可以介紹

據(jù)項(xiàng)目場(chǎng)景來看,是需要兩個(gè)domain模型,一個(gè)是用戶實(shí)體,一個(gè)是地址實(shí)體.

Addressdomain如下:

Userdomaacross::

行啦,上邊是一個(gè)模型關(guān)系,用戶-收貨地址的關(guān)系是1-n的關(guān)系。上邊的@Data是建議使用了一個(gè)就是lombok的工具,它自動(dòng)導(dǎo)入了Setter和Getter等方法,用起來十分方便,感興趣的東西讀者這個(gè)可以自身清楚一下。

dao能介紹

數(shù)據(jù)連接層,我們不使用了spring-data-jpa這個(gè)框架,它要求我們只不需要不能繼承框架需要提供的接口,因此通過約定對(duì)方法并且起名,就是可以能完成我們打算的數(shù)據(jù)庫(kù)操作。

用戶數(shù)據(jù)庫(kù)操作::

收貨地址操作追加:

如果說讀者所見到的,我們的DAO只需要繼承JpaRepository,它就巳經(jīng)幫我們能完成了基本都的CURD等你的操作,如果沒有想清楚更多關(guān)與spring-data的這個(gè)項(xiàng)目,請(qǐng)做個(gè)參考再看看spring的官方文檔,它比不方案我們對(duì)異常的研究。

Service十分設(shè)計(jì)

ok,又一次到了我們的重點(diǎn)了,我們要結(jié)束service一些的部分操作:直接添加收貨地址,刪除收貨地址,查看收貨地址列表.

簡(jiǎn)單的方法看我的service接口定義:

我們來參與看看實(shí)現(xiàn)程序:

再添加收貨地址

首先再來去看看之前收拾好的約束條件:

入?yún)?

用戶id

收貨地址實(shí)體信息

約束:

用戶id肯定不能為空,且此用戶倒是是未知的

收貨地址的沒必要字段不能不能為空

假如用戶還沒有收貨地址,當(dāng)此收貨地址創(chuàng)建角色時(shí)系統(tǒng)設(shè)置成默認(rèn)收貨地址

先看以下代碼實(shí)現(xiàn)方法:

其中,巳經(jīng)結(jié)束了上列所詳細(xì)解釋的三點(diǎn)約束條件,當(dāng)三點(diǎn)約束條件都滿足時(shí),才可以不并且正常業(yè)務(wù)邏輯,不然的話將丟出極其(一般在此處見意丟出運(yùn)行時(shí)極其-RuntimeException)。

介紹以上以上我所要用的技術(shù):

1、(T t)這個(gè)是可以使用Guava中的進(jìn)行確認(rèn)的,只不過service中會(huì)用到的驗(yàn)正較容易,所以我我建議你將Preconfitions改動(dòng)態(tài)和靜態(tài)導(dǎo)入的

不過Guava的github中的那就證明也建議我們那樣的話可以使用。

2、(validator,address)這個(gè)建議使用了hibernate實(shí)現(xiàn)程序的jsr303規(guī)范來做的,不需要傳遍一個(gè)validator和一個(gè)需要不驗(yàn)證的實(shí)體,那么validator是怎么獲取的呢,萬(wàn)分感謝:

他將查看一個(gè)Validator對(duì)象,然后我們?cè)趕ervice中并且吸納便可以不不使用了:

那就BeanValidators這個(gè)類是該如何基于的?不過實(shí)現(xiàn)很簡(jiǎn)單的,如果去推測(cè)jsr303的標(biāo)出注解就就ok啦了。

這樣的話jsr303的注解寫在哪里了呢?肯定是寫在address實(shí)體類中了:

本站部分文章來自網(wǎng)絡(luò)或用戶投稿。涉及到的言論觀點(diǎn)不代表本站立場(chǎng)。閱讀前請(qǐng)查看【免責(zé)聲明】發(fā)布者:方應(yīng),如若本篇文章侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。本文鏈接:http://www.gdyuanyu.cn/tougao/74637.html

221381