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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

净资产的结构

發(fā)布時(shí)間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 净资产的结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Netty的包裝結(jié)構(gòu)很棒。

每個(gè)程序員都應(yīng)該研究它。 每個(gè)系統(tǒng)都應(yīng)該模仿它; 每個(gè)項(xiàng)目經(jīng)理都應(yīng)將其打印出來,拍在墻上,然后對(duì)開發(fā)人員說:“那樣。”

Netty是一個(gè)“……用于快速開發(fā)可維護(hù)的高性能協(xié)議服務(wù)器和客戶端的異步事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架”,但是在這里并不重要,因?yàn)槲覀儧]有對(duì)其行為進(jìn)行分析。 相反,請(qǐng)看圖1。

圖1:Netty的包裝結(jié)構(gòu)歷時(shí)7年。

圖1展示了Netty不斷發(fā)展的軟件包結(jié)構(gòu)的spoiklin圖(圓圈是包;直線是頁面下的依賴關(guān)系;曲線是頁面上的依賴關(guān)系),如果您不能立即看到它的結(jié)構(gòu)如何,是,然后瀏覽Junit , Struts或Ant 。

“情人眼中的優(yōu)良結(jié)構(gòu)”也不是唯一的情況。 結(jié)構(gòu)性混亂可以客觀地衡量程序的結(jié)構(gòu)性:結(jié)構(gòu)性混亂程度越低,結(jié)構(gòu)越好。 Netty的疾病遠(yuǎn)低于其他疾病,請(qǐng)參見表1。

程序 包裝結(jié)構(gòu)紊亂
螞蟻 81%
朱尼特 76%
Struts 74%
Lucene 73%
FitNesse 61%
彈簧 35%
凈額 26%

表1:本系列中所有程序的結(jié)構(gòu)紊亂。

圖2進(jìn)一步顯示了這種最終的結(jié)構(gòu)異常并非偶然。 Netty在整個(gè)七年的生命周期中一直處于低水平。

圖2:通過11個(gè)發(fā)布發(fā)布的Netty的結(jié)構(gòu)混亂(與其他發(fā)布者進(jìn)行比較)。

那么:為什么這個(gè)包結(jié)構(gòu)這么好?

給定如圖1所示的圖,我們可以提出兩個(gè)快速問題來大致評(píng)估所描述結(jié)構(gòu)的優(yōu)點(diǎn)。

在商業(yè)軟件開發(fā)中,“良好的結(jié)構(gòu)”僅表示“便宜的更新”。 此外,有證據(jù) 表明 ,每個(gè)了解漣漪效應(yīng)的程序員都知道什么:X依賴的事物越多,漣漪效應(yīng)的影響就越大,因此X的成本就越高。

因此,選擇一個(gè)嚴(yán)重依賴其他程序包的問題(A)我們是否可以輕松地確定依賴程序包,以及(B)這些依賴程序包的整體子集有多小?

結(jié)構(gòu)不良的程序會(huì)掩蓋這些依賴關(guān)系,仔細(xì)檢查通常會(huì)發(fā)現(xiàn)幾乎整個(gè)系統(tǒng)都存在依賴關(guān)系。 但是,結(jié)構(gòu)合理的程序顯然會(huì)提供依賴的程序包,而且數(shù)量很少。

讓我們先問一個(gè)結(jié)構(gòu)不好的程序的兩個(gè)問題。

圖3顯示了Jenkins的噩夢(mèng)般的90%結(jié)構(gòu)混亂,然后顯示了來自五個(gè)軟件包(工具提示)中最依賴其他軟件包的突出的傳遞依賴。

圖3:詹金斯,哦,詹金斯。

顯然,在Jenkins中跟蹤依賴關(guān)系是一個(gè)挑戰(zhàn),許多軟件包依賴于系統(tǒng)其余部分的75%以上。

圖4重復(fù)了該實(shí)驗(yàn),但是顯示了五個(gè)Netty軟件包的傳遞依賴關(guān)系,這五個(gè)軟件包最依賴其他軟件包: epoll,spdy,websocketx,http和nio 。

圖4:以藍(lán)色突出顯示Netty中最差的傳遞依賴項(xiàng)。

與詹金斯形成鮮明對(duì)比的是,我們可以看到Netty軟件包所依賴的數(shù)量以及數(shù)量。 Netty有55個(gè)軟件包,但其他任何人所依賴的最大軟件包只有12個(gè),僅占系統(tǒng)的22%。

Netty的包裝結(jié)構(gòu)是否完美? 當(dāng)然不是。 特別是內(nèi)部和并發(fā)之間的循環(huán)依賴關(guān)系在該核心內(nèi)部/并發(fā)/通道/緩沖區(qū)/使用程序包群集中創(chuàng)建了令人遺憾的強(qiáng)耦合。

從表面上看,Netty的類結(jié)構(gòu)確實(shí)不好。 Netty的設(shè)計(jì)師在建造班級(jí)時(shí)顯然放棄了一些出色的結(jié)構(gòu)原理。 丟人現(xiàn)眼。

但是看看那個(gè)包裝的結(jié)構(gòu)……哇。

最后,沒有分析Netty的關(guān)鍵版本,而是提出了自己的架構(gòu)觀察。 Netty的架構(gòu)師似乎已經(jīng)決定了一個(gè)相當(dāng)出色的部署策略。 下載Netty既可以得到一個(gè)多合一的jar文件,也可以得到13個(gè)jar文件,其中包含系統(tǒng)的各個(gè)部分。 大概您可以加載所有Netty或僅加載所需的部分。

一個(gè)jar文件,即“公共” jar,包含內(nèi)部/并行/通道/緩沖區(qū)/ util程序包集群,而其他文件則包含“ codec”,“ tcnactive”,“ transport”等,提示后者jar是普通jar的客戶,但不是彼此的客戶,因此彼此之間沒有依賴關(guān)系。 因此,在他們的部署中,Netty的設(shè)計(jì)師可能已經(jīng)將子系統(tǒng)的分離和封裝包含在內(nèi),從而導(dǎo)致了這種行業(yè)領(lǐng)先的封裝結(jié)構(gòu)。

剩下的唯一問題是:為什么沒有更多的項(xiàng)目跟隨Netty的領(lǐng)導(dǎo)? 為什么詹金斯有90%的結(jié)構(gòu)異常? Jenkins的設(shè)計(jì)者為什么不適當(dāng)?shù)貏澐炙麄兊南到y(tǒng)以減少包裝間的耦合? 為什么軟件開發(fā)領(lǐng)域如此愿意接受這些不良結(jié)構(gòu)所產(chǎn)生的成本?

我們不是比這個(gè)更好嗎?

摘要

如果每年獲得當(dāng)今使用的最佳Java程序包結(jié)構(gòu)獎(jiǎng),Netty將會(huì)連續(xù)七年獲得該獎(jiǎng)項(xiàng)。

翻譯自: https://www.javacodegeeks.com/2017/01/the-structure-of-netty.html

總結(jié)

以上是生活随笔為你收集整理的净资产的结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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