JAVA网页编程之刚运转了 Azureus ,给我的感到是这界面...
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并驾齐驱的 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 是一种使用者不需花费很多时间学习的语言 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种将安全性(Security)列为第一优先考虑的语言
页:
[1]