成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

什么情況下使用async await 為什么Java堅(jiān)持多線程不選擇協(xié)程?

為什么Java堅(jiān)持多線程不選擇協(xié)程?從java被發(fā)明的頭兩天起,就被定義,定義為一個(gè)多線程的網(wǎng)絡(luò)編程語(yǔ)言。Java大特點(diǎn)并不是跨平臺(tái),只是它的多線程模型(那時(shí)候的C中,并沒(méi)有我們現(xiàn)在看見(jiàn)了的threa

為什么Java堅(jiān)持多線程不選擇協(xié)程?

從java被發(fā)明的頭兩天起,就被定義,定義為一個(gè)多線程的網(wǎng)絡(luò)編程語(yǔ)言。Java大特點(diǎn)并不是跨平臺(tái),只是它的多線程模型(那時(shí)候的C中,并沒(méi)有我們現(xiàn)在看見(jiàn)了的thread,C#還還沒(méi)有不出來(lái))。畢竟近二十年的軟件行業(yè)的增長(zhǎng)比較多不知從何而來(lái)網(wǎng)絡(luò)編程,網(wǎng)絡(luò)編程最常見(jiàn)的模型應(yīng)該是client/server,也就是所謂的C/S,這種編程模型在服務(wù)器端不需要而認(rèn)可客戶端的請(qǐng)求,也就是說(shuō)要有很好的并發(fā)特性--這個(gè)特性要注意感情依賴多線程來(lái)實(shí)現(xiàn)。而java的主戰(zhàn)場(chǎng)應(yīng)該是服務(wù)器端編程。所以多進(jìn)程對(duì)java是頗為有用,不可缺的一環(huán)。

當(dāng)我們我希望引導(dǎo)出協(xié)程,我們想解決什么問(wèn)題。我想究其緣由下面幾點(diǎn):

節(jié)省資源,輕量,具體是:省掉內(nèi)存,每個(gè)線程需要未分配一段棧內(nèi)存,在內(nèi)內(nèi)核里的一些資源節(jié)省分配線程的開(kāi)銷(xiāo)(創(chuàng)建角色和全部銷(xiāo)毀線程要各做兩次syscall)浪費(fèi)大量線程快速切換給了的開(kāi)銷(xiāo)與NIO另外利用非阻塞的編程,增加系統(tǒng)的吞吐可以使用站了起來(lái)越來(lái)越舒服吧不通暢(asyncawait,跑不快是異步的,但寫(xiě)站了起來(lái)感覺(jué)上是不同步的的)我們沒(méi)分開(kāi)來(lái)講下。

先說(shuō)內(nèi)存。拿JavaWeb編程舉例子,一個(gè)tomcat上的woker線程池的大線程數(shù)就像會(huì)配置為50~500之間(目前springboot的默認(rèn)值給的200)。也就是說(shuō)相同最危險(xiǎn)的時(shí)刻是可以進(jìn)行的請(qǐng)求最少也就是這么多。如果沒(méi)有達(dá)到了比較大值,各位真接打一次斷然拒絕處理。如果我每個(gè)線程給128KB,500個(gè)線程放一起的內(nèi)存占用量大概是60MB。如果是真的有瓶頸,也許你CPU,IO,帶寬,DB的CPU等會(huì)有瓶頸,但這點(diǎn)內(nèi)存量的增幅相對(duì)于動(dòng)轍數(shù)個(gè)GB的Java運(yùn)行程序時(shí)進(jìn)程來(lái)說(shuō)隱隱的確是什么大問(wèn)題。

如何提取網(wǎng)頁(yè)中的所有鏈接?

最先,

然后打開(kāi)Visual Studio2019,如下圖所示:

第二步,

然后點(diǎn)擊文件,擴(kuò)建項(xiàng)目,你選C#項(xiàng)目、Linux的控制臺(tái)項(xiàng)目,:圖示:

第十步,

鼠標(biāo)右鍵再點(diǎn)擊解決方案、項(xiàng)目下的依懶項(xiàng),如下圖所示:

鼠標(biāo)左鍵選擇類(lèi)型管理的管理NuGet程序包,然后把會(huì)出現(xiàn)如下圖界面:

再點(diǎn)網(wǎng)頁(yè),輸入輸入AngleSharp名稱,如下圖所示:

選擇上圖第一項(xiàng),點(diǎn)擊右側(cè)的安裝按鈕,如下圖所示:

鼠標(biāo)點(diǎn)擊上圖中的確定按鈕,出現(xiàn)以上界面:

來(lái)表示早就將依懶項(xiàng)AngleSharp直接安裝到了項(xiàng)目中,如下圖所示:

。

第四步,

右鍵右擊解決方案項(xiàng)目下的Program.cs,再打開(kāi)源代碼文件Program.cs,編寫(xiě)200元以內(nèi)代碼,

usingSystem

using

usingAngleSharp

using

namespaceConsoleGetAllLink

{

classProgram

{

///ltsummarygt

///讀取數(shù)據(jù)網(wǎng)頁(yè)的所有鏈接

///lt/summarygt

staticasyncvoidReadAllLink()

{

//創(chuàng)建家族一個(gè)場(chǎng)景

varcontext(())

//以同步異步先打開(kāi)hao123網(wǎng)址首頁(yè)

vardocumentawait()

//查詢hao123網(wǎng)址首頁(yè)中所有的鏈接

varallLinks(mdstrokm.LocalNamea)

//循環(huán)輸出鏈接的名稱和網(wǎng)址

foreach(varlinkoutsideallLinks)

{

IHtmlAnchorElementilinklinkthoughIHtmlAnchorElement

Console.WriteLine(${ilink.TextContent},{})

}

}

staticvoidMain(string[]args)

{

//讀取網(wǎng)頁(yè)的所有鏈接

ReadAllLink()

if(().ToLower()q)

{

}

}

}

}

第五步,

按F5鍵調(diào)試運(yùn)行,如下圖所示:

運(yùn)行結(jié)果:

。