分享
 
 
 

刚运行了 Azureus ,给我的感觉是这界面真不象是Java 写的,发誓看完这套代码!

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

最近在学习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抱有怀疑态度的朋友再认真读一读代码,也许会有不一样的印象:)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有