|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。
比来在进修P2P方面的常识,以是有了剖析P2P软件源码的感动啊!
呵呵,实在我看Azureus有两个缘故原由,一是他是Java写的,而eMule是C++写的,我对C++不是很熟习,
怕了解上没有Azureus了解下去的快,二是看crmky的Blog上有对Azureus的剖析,他说不错,恩,那就
瞧瞧啦!,呵呵
Crmky对Azureus的评价以下:
读Azureus源码
由于要构架公司的P2P框架,以是想先浏览已有的JavaP2P软件代码,看看有甚么可自创的地方。头一个值得自创的就是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下载对应个中一个DownloadManagerglobal,全局办理,办理一切的BT下载,即办理一切DownloadManagerhtml,HTML下载和剖析,仿佛次要用于判别软件是不是必要更新internat,国际化处置ipchecker,反省IP,仿佛次要用于判别NAT的内部IP地点ipfilter,IP过滤,用于黑名单logging,日记处置peer,节点办理,BT下载是从多个节点下载security,平安办理,用SSL加密来包管平安性stats,统计办理,将统计信息纪录进磁盘torrent,Torrent文件剖析torrentdownloader,Torrent种子文件下载,表现在界面上为文件-->翻开-->URL,从收集间接下载到硬盘上tracker,与BTTracker通讯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抱有嫌疑立场的伴侣再仔细读一读代码,大概会有纷歧样的印象:)
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的 |
|