国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 13:54:01
字體:
來源:轉載
供稿:網友

最近在學習P2P方面的知識,所以有了分析P2P軟件源碼的沖動啊!

呵呵,其實我看 Azureus 有兩個原因,一是他是java 寫的,而eMule是C++寫的,我對C++不是很熟悉,

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

瞧瞧啦!,呵呵



Crmky  對 Azureus 的評價如下:

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

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

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

    Azureus文檔中并沒有建議開發者按什么順序去理解Azureus的構架和代碼。我個人的看法是先看util包,稍做理解后可閱讀global包,再看download包,再閱讀其余相關包。因為Azureus的結構是一個GlobalManager治理多個DownloadManager,每個DownloadManager關聯到一個DiskManager,一個PeerManager。

亮點

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

util.Average,求平均速度。

util.Debug,記錄日志時要得到是哪個類調用該類,可以拋出一個異常并捕捉該異常,得到其調用序列。

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

disk,該包實現了可以將I/O操作隊列化,可以用一個異步的方式進行,因此可以將所有I/O操作放到一個線程中。比如一個寫請求,可以添加到一個寫的隊列中,寫入完成時已一個事件通知。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹤山市| 富锦市| 海门市| 普兰县| 芷江| 南江县| 修水县| 仁化县| 嘉兴市| 海原县| 清苑县| 龙泉市| 定远县| 额尔古纳市| 上蔡县| 常宁市| 富阳市| 从江县| 井研县| 阳朔县| 根河市| 从江县| 伊宁县| 吴江市| 资兴市| 察哈| 庆安县| 阳春市| 汕尾市| 韩城市| 大埔区| 房产| 太保市| 和平区| 怀来县| 石屏县| 平阴县| 延边| 钟山县| 汝阳县| 通江县|