摘要:现在可能已在使用 javabean,但还不了解它。如果有支持 java 的浏览器,那么,在桌面上使用 javabean 就没有限制。使用的 web 页面可以将 bean 作为小应用程序的一部分。您很快就会和作为浏览器可视部分的 javabean 交互,然后,那些 javabean 将与服务器上的 ejb 接口。这种能力也可以扩展到因特网和内部网。javabean 和 server bean(通常称为 enterprise javabean (ejb))有一......
摘要:1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如: thisisaclassname thisismethodorfieldname 若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。 java包(package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名......
Java 库的建立方法及其实例任何一种面向对象语言都有它的库。任何一种面向对象的语言也都离不开库的支持。用我们熟悉的 面向对象语言为例子,c++有stl,java有api函数,具体到开发工具,visual c++提供了mfc, borland c++提供了owl。也有很多第三方提供的库。我们在开发应用程序的时候,也发觉我们也 许需要某些特定的库来完成特定的功能。那么,如何编写自己的库呢? 【相关文章:
关于B/S中代码分离的个人观点】 【扩展阅读:
在Struts框架下使用时间类型】利用java的面向对象特性,如封装,继承,与一些设计模式,我们可以用标准的方法来建立自己的 库。需要明白的一点:在你需要完成某个功能的时候,不要用专有的、特定的方法去编写代码,而 要全盘考虑,用通用的方法来完成,这样,在积累了一定数量的库以后,你就能重用这些库来完成 新的功能,而不用每回都重头编写代码。这也是面向对象语言提供给我们的好处。也可以用j2ee的 规范为例子,j2ee提供了一个cbt(component based transaction),所有的组件都尊崇j2ee规范,在 cbt中运行,这样,编写开发并且重用标准的通用的组件库,可以缩短开发周期节约成本,并且可 以在任何符合j2ee规范的应用程序服务器(application server)中运行,并且可以继承,扩展已 有的组件库完成新的任务或者适应新的变化。 【扩展信息:
Simple Network Manag】 在本文中,我将先讨论如何建立自己的库,需要根据哪些标准,然后给出一个简单的例子。在第二 部分中,我将通过一个功能比较完善的库来做进一步的讨论。 什么是库?库是一个可以重用的组件,它采用通用的设计,完成通用的任务,可以节约开发者的时 间,缩短开发周期节约开发成本。一个设计完善的库,并不只是为了完成某一个特定的任务,而是 可以完成各种不同的任务。设计一个库是困难的。写一个算法并不难,但是设计库的时候需要一种 比较好的结构,它能够被用在各种需要的环境下,完成各种不同的任务,但是还不能影响使用它的 程序代码结构。 为什么要重用代码?重头开发一个新的软件,工作量是非常巨大的,不论你用什么工具什么语言。 而代码重用能够节约大部分时间,而把时间花在新的功能的开发上。从一定的意义上来说,写一个 新的软件是利用了现有的代码,重新拼装以实现新的功能。从另外一个角度上来讲,即使你没有打 算把你写的代码变成一个通用的库并分发给其他人使用,从设计的角度来讲,采用一种全盘的通用 的设计方法也能让你对所要完成的任务有更好的理解,并且优化你的设计过程,从而优化你的代码 结构。 采用开发库并且让别人来使用它的方式,能够帮助你在使用它的时候发现它的设计上的缺陷或者代 码中的错误,并帮助你改正它。比方说,你写了一个库让别人来使用,你不得不考虑通用的设计, 因为你并不能预见别人将在什么环境下使用与使用的目的。在其他人使用你的库的过程中,可能会 遇到一些问题,有的可能是你的文档写得不够清楚明白,有的也可能是你程序上的错误,也有可能 是使用者觉得在结构上使用起来不方便或者不正确。那么你可以继续作一些修改工作,在保持结构 与接口不变化的情况下,做一些调整。 在设计库的时候,你需要以一个使用者的眼光来看问题,考虑如何设计与实现它。你需要明白, 1、需要解决的问题是什么?需要达到一个什么目的? 2、使用者关心的问题是什么?使用者需要得到一个什么结果? 3、使用者不需要关心的问题是什么?什么细节是可以对使用者隐藏的? 下面,我们用一个简单的例子来说明如何设计与实现一个有用处的库。 设计一个网络服务程序,我们需要考虑几点: 1、监听一个端口 2、接受连接 3、读取或者写入连接的流 4、处理输入的数据,并且返回一个结果 对于我们将要实现的库来说,需要完成的是前三点,而最后一点我们留给使用者去实现,这也是使 用者需要完成与关心的地方。 库的主要类叫做server, 测试的类叫做echoserver. echoserver实现了一个简单的服务,从客户端读 取数据,并且返回同样的数据。 设计原则一:封装 一个好的库必须是一个紧凑的关系紧密的整体,而不是一个分散的关系松散的对象的集合。 package是java提供的一种类库的封装机制。一个package是一个java类文件的集合,存放在同一个目 录中。package有专有的名字空间。 专有的名字空间的一个好处是,你不用担心名称的冲突。因为,如果你的类的名称与别人的类的名 称冲突,但是他们不在同一个package中,利用这一点可以避免名字的冲突。 每一个package都有一个字符串来代表,比如java.lang, 或者javax.swing.plaf.basic.实际上每一个类的 全名都是由package的名字加上类的名字来代表的,这样就避免了名字的冲突,比 如,java.lang.object或者javax.swing.plaf.basic.basicmenubarui. 注意,有一个特殊的package叫做default package。如果你不声明你的类属于任何一个package,那么 它就被假定属于default package. 每一个package的名字都对应一个目录。比如,java.lang.object 存放在java/lang/object.java中,每一 个.对应一个/. default package存放的目录是当前目录。 声明一个package. // server.java package mylib; public class server implements runnable { // ... 如果有import语句,必须放在package语句的后面。 当然你也可以引入别的package. 例如: import mylib.server; // ... server server = new server( portnum ); java允许你决定package中的哪些类对外部是可见的。public类可以被包外的代码使用,而private类 则不行。 比如,让server类能被外部的代码使用: // server.java package mylib; import java.io.*; import java.net.*; public class server implements runnable { 如果你不想让类被外部的代码使用,可以用缺省的属性,去掉public. 例如: // reporter.java package mylib; class reporter implements runnable { 设计原则二:继承 在我们的例子中,server是主要的类。如果你看这个类的代码,就能看到,它本身其实什么也不 做。主循环用来监听连接。当连接建立以后,它把处理连接的任务交给一个叫做handleconnection() 的函数。 // subclass must supply an implementation abstract public void handleconnection( socket s ); 因为没有实现这一函数,所以这个类被声明为abstract,使用者必须实现这个函数。 // this is called by the server class when a connection // comes in. "in" and "out" come from the incoming socket // connection public void handleconnection( socket socket ) { try { inputstream in = socket.getinputstream(); outputstream out = socket.getoutputstream(); // just copy the input to the output while (true) out.write( in.read() ); } catch( ioexception ie ) { system.out.println( ie ); } } 可以说,这一继承的过程叫做定制。因为在server类中,并没有定义该函数的动作,而是把这个定 义的过程留给使用者,让他们来完成所需要的特定的功能。 另外一个定制函数:cleanup(). 在设计类的时候,往往你能考虑到使用者需要的功能,例如上面的handleconnection().但是,也需要 考虑另外一种定制,例如在这里,在server退出后台运行方式的时候,调用了这个cleanup()函数, 在server类中的实现为空,什么都不做,这把机会留给使用者,使用者可以用这个函数来做一些清 除工作,这种函数也可以称之为"钩子"。 设计原则三:调试 没有人能够做到写出一个绝对完美的程序,没有任何的错误。所以,调试是不可缺少的。有时候, 使用者可能会遇到一个问题,从而需要知道在库的代码中发生了什么问题。这个错误可能是库代码 的问题,也可能是使用者的代码在库代码中引起的问题。 如果你提供了库的源代码,使用者可以用debugger来调试错误。但是,你不能完全依赖于调试器。 在库代码中加入打印调试信息的语句,是一个好习惯。它可以帮助使用者明白,什么地方发生了错 误。 下面的例子说明了这一技术。使用者的代码使用server.setdebugstream(),指定一个printstream对 象。然后,调试信息就被输出到这个流中。 // set this to a print stream if you want debug info // sent to it; otherwise, leave it null static private printstream debugstream; ...
下一页 摘要:最常用的网络命令精萃 作者:佚名 一,ping 它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的dos命令,它所利用的原理是这样的:网络上的机器都有唯一确定的ip地址,我们给目标ip地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在dos窗口中键入......