麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

剛運(yùn)行了 Azureus ,給我的感覺是這界面真不象是Java 寫的,發(fā)誓看完這套代碼!

2019-11-18 13:54:01
字體:
供稿:網(wǎng)友

最近在學(xué)習(xí)P2P方面的知識(shí),所以有了分析P2P軟件源碼的沖動(dòng)啊!

呵呵,其實(shí)我看 Azureus 有兩個(gè)原因,一是他是java 寫的,而eMule是C++寫的,我對(duì)C++不是很熟悉,

怕理解上沒有 Azureus 理解上來的快, 二是看crmky 的Blog 上有對(duì) Azureus 的分析,他說不錯(cuò),恩,那就

瞧瞧啦!,呵呵



Crmky  對(duì) Azureus 的評(píng)價(jià)如下:

讀Azureus源碼
因?yàn)橐獦?gòu)架公司的P2P框架,所以想先閱讀已有的Java P2P軟件代碼,看看有什么可借鑒之處。頭一個(gè)值得借鑒的就是Azureus了,非常成功的BT下載軟件,而且我們要實(shí)現(xiàn)的功能和BT也差不了多少,可以說就是BT流媒體版:)。

在看Azureus代碼過程中還有一些趣事,一些朋友跟我說不要看Azureus代碼了,說寫的很差的;我們頭也說Azureus中interface太多,他不喜歡……不過我看了部分后發(fā)現(xiàn),Azureus代碼寫的蠻好的。interface也不多,倒是實(shí)現(xiàn)寫的太緊密了,一個(gè)實(shí)現(xiàn)洋洋灑灑的千幾行代碼,要是沒有interface的定義,我估計(jì)會(huì)看暈掉。并不是說Azureus代碼中沒有問題,但是我相信和我說Azureus代碼寫的差的那位朋友沒有仔細(xì)看過它的代碼,總之開卷有益,我是從它的代碼中學(xué)到了不少:)

我主要看的是org.gudy.azureus2.core3包,plugin包和ui包我都忽略掉了,并且主要研究其構(gòu)架,實(shí)現(xiàn)并未細(xì)看。org.gudy.azureus2.core3的下一級(jí)包的作用分列如下:
category,分類治理,體現(xiàn)在界面上顯示為右上角的一排按鈕,可以按照不同類別將BT種子分類 config,配置治理,運(yùn)行時(shí)維護(hù)內(nèi)存中所有配置信息,并能持久化 disk,磁盤治理,可以進(jìn)行異步或同步I/O請(qǐng)求 download,下載治理,每個(gè)BT下載對(duì)應(yīng)其中一個(gè)DownloadManager global,全局治理,治理所有的BT下載,即治理所有DownloadManager Html,HTML下載和分析,似乎主要用于判定軟件是否需要更新 internat,國(guó)際化處理 ipchecker,檢查IP,似乎主要用于判定NAT的外部IP地址 ipfilter,IP過濾,用于黑名單 logging,日志處理 peer,節(jié)點(diǎn)治理,BT下載是從多個(gè)節(jié)點(diǎn)下載 security,安全治理,用SSL加密來保證安全性 stats,統(tǒng)計(jì)治理,將統(tǒng)計(jì)信息記錄入磁盤 torrent,Torrent文件解析 torrentdownloader,Torrent種子文件下載,體現(xiàn)在界面上為文件-->打開-->URL,從網(wǎng)絡(luò)直接下載到硬盤上 tracker,與BT Tracker通信 util,工具類 xml,XML處理相關(guān)工具類
建議閱讀順序

    Azureus文檔中并沒有建議開發(fā)者按什么順序去理解Azureus的構(gòu)架和代碼。我個(gè)人的看法是先看util包,稍做理解后可閱讀global包,再看download包,再閱讀其余相關(guān)包。因?yàn)锳zureus的結(jié)構(gòu)是一個(gè)GlobalManager治理多個(gè)DownloadManager,每個(gè)DownloadManager關(guān)聯(lián)到一個(gè)DiskManager,一個(gè)PeerManager。

亮點(diǎn)

util.SystemTime,用獨(dú)立線程讀取系統(tǒng)時(shí)間,并判定系統(tǒng)時(shí)間是否進(jìn)行回調(diào)過,進(jìn)行記錄。不過只是在日志中記錄該變化而已,并未做出處理。可以考慮擴(kuò)展該類,保證從程序啟動(dòng)以來系統(tǒng)時(shí)間都是往前增加。(否則在平均速度計(jì)算等方面,由于時(shí)間回調(diào)可能導(dǎo)致一些異常發(fā)生)

util.Average,求平均速度。

util.Debug,記錄日志時(shí)要得到是哪個(gè)類調(diào)用該類,可以拋出一個(gè)異常并捕捉該異常,得到其調(diào)用序列。

util.DirectByteBufferPool,運(yùn)行時(shí)捕捉OutOfMemoryError,做一些內(nèi)存清理工作,比如移除一些緩存,假如再不行,則拋出異常;初始化時(shí)將Map中所有Key/Value放置好(Value是一個(gè)集合),這樣運(yùn)行時(shí)該Map為只讀狀態(tài),可以不用同步訪問。(改變的只是Map中Value集合而已)

disk,該包實(shí)現(xiàn)了可以將I/O操作隊(duì)列化,可以用一個(gè)異步的方式進(jìn)行,因此可以將所有I/O操作放到一個(gè)線程中。比如一個(gè)寫請(qǐng)求,可以添加到一個(gè)寫的隊(duì)列中,寫入完成時(shí)已一個(gè)事件通知。

Azureus是一個(gè)考慮非常細(xì)致的程序,連SystemTime這個(gè)類都出來了,讓我不得不佩服它設(shè)想的周到;某些我看不太懂的地方,我愿意相信是我的水平不夠,沒能夠理解作者的設(shè)計(jì)意圖。Azureus是一個(gè)寫的很不錯(cuò)的程序,希望對(duì)Azureus抱有懷疑態(tài)度的朋友再認(rèn)真讀一讀代碼,也許會(huì)有不一樣的印象:)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 91精品国产99久久久久久红楼 | 污黄视频在线观看 | 国产成人自拍av | 国产精品久久久久久久久粉嫩 | 日韩美女电影 | 免费一级a毛片在线播放视 日日草夜夜操 | 国产人成免费爽爽爽视频 | 91看片成人| 欧美日韩在线视频一区 | 大学生a级毛片免费视频 | 国产在线精品一区二区夜色 | 一级黄色片武则天 | 一色屋任你操 | 国产精品成人免费一区久久羞羞 | 双性帝王调教跪撅打屁股 | 欧美一区在线观看视频 | 久久爽久久爽久久av东京爽 | 亚洲免费看片网站 | 国产精品999在线观看 | 日韩av电影免费在线观看 | 美女扒开腿让男生桶爽网站 | 黄色片免费在线播放 | 一级国产电影 | 少妇一级淫片免费看 | 国产一区二区三区四 | 圆产精品久久久久久久久久久 | 777zyz色资源站在线观看 | 精品国产一区二区三区四 | 午夜国产在线观看 | 毛片在线播放视频 | 少妇一级淫片免费放4p | 久久国产夫妻视频 | 久久男人天堂 | 久久伊人国产精品 | 日本免费不卡一区二区 | asian裸体佳人pics | 91经典视频 | a级黄色片视频 | 欧美精品一区二区三区在线播放 | 草莓福利视频在线观看 | 51国产偷自视频区视频小蝌蚪 |