当前位置:首页 » 服务器技术
开发技术指南» 文章正文
    引言: 背景知识 在我的经验中,大多数 Java 开发人员都需要解析某种文本。
 

 

 ·api文件产生器-javadoc.exe    »显示摘要«
    摘要:javadoc api文件产生器 javadoc程序读取一个java类文件并自动创建一组html文件,这些html 文件描述了java类文件的类、变量、成员函数,所有java类库的apihtml 文件都可以由此程序创建。javadoc把软件包名或源文件列表当做一个变量。 javadoc依靠以@打头的备注标记来创建html文件,下面就是标注的列表,它们被javadoc用于在html 文件中创建......
 ·扫描整个网段的多线程程序    »显示摘要«
    摘要:扫描500个ip10秒钟左右, 一个ip等待0.3秒用java写的过程编程,供参考:package steeven;import java.sql.*;import java.io.*;import java.util.*;import java.text.*;import javax.servlet.http.*;public class ip extends common implements......


构建用于正则表达式的抽象 Java API
上一页   ...

数据访问对象(data access object,dao)模式隐藏了如何访问数据库(或 ldap 服务器.xml 文件等)的细节与复杂性,因为它提供了访问抽象持久存储层的方法,而您则不需要在客户机代码中处理数据库问题(数据实际存储在哪里).这不是四人组(gang of four,gof)模式,而是 sun 的 j2ee 最佳实践的一部分. 【程序编程相关:中怡数宽暨广深两地 新品发布会议

【推荐阅读:ST加强对华投资 欲取代德仪成为中国市场

【扩展信息:传中国网通拟在下月以3.5亿元出售亚洲网

在假想的开发团队示例中,他们正在寻找这样的层:

抽象所有正则表达式实现背后的概念.团队就可以着重学习与理解这些概念.他们所学的可以应用到任何实现或版本.

支持新的库且没有副作用.基于插件体系结构,动态选择执行 regexp 模式的实际库,并且适配器不会被耦合.新库仅会引入对新适配器的需要.

提供比较不同可选方案的方法.一个简单的基准实用程序就可以显示有趣的性能测量结果.如果对每个实现都执行这样的实用程序,团队就会获得有价值的信息并能选择最好的可选方案.

听起来不错,但……

任何去耦方法都至少有一个缺点:如果客户机代码仅需要一个实现所提供的特定功能,怎么办?您不能使用任何其它实现,因此您最终将代码与该实现耦合.也许将来会在这方面有所改善,但您现在却束手无策.

这样的示例并不象您想的那样少.在 regexp 领域中,一些编译器选项仅被某些实现支持.如果您的客户机代码需要这种特定的功能,那么这个一般层是不够的 ? 至少从迄今对它描述来看是不够的.

附加层是否应支持每个实现的所有非公共功能,并且如果选择了不支持该实现的附加层则抛出异常?那可以是一种解决方案,但它并不支持仅定义公共抽象概念这一最初目标.

有一个 gof 模式非常适合这种情形:职责链(chain of responsibility).它在设计中引入了另一种间接方法.用这种方法,客户机代码向能处理其所发消息的实体列表发送消息或命令.列表项被组织成链,因此消息可按顺序被处理并且在到达链尾之前被用掉.

在这种情况中,可以通过特殊类型的消息对仅被某些实现支持的特定功能建模.由链中的每一项根据其是否了解这些功能来决定是否将该消息传给下一项.

定义一个公共 api

这里讲述的 api 名为 regexpplugin.已将它设计成遵循刚刚讨论的方法,并且它在 regexp 库与使用该库的代码之间支持去耦.

regexpplugin

在以下示例中,我将总结一下使用具体实现(jakarta oro)与使用 regexpplugin api 之间的差别.

我从一个非常简单的 regexp 开始:假定您必须要解析的文本只是人名.您接收的格式是象 john a. smith 这样的内容,而您只想获取名字(john).但您不知道单词由什么分隔,是空格.换行符.制表符还是这些字符的组合.能处理这样的输入格式的 regexp 只是 .*s*(.*?)s+.*.我将一步一步地说明如何使用该 regexp 来抽取信息.

第一部分是点号与星号字符 .*,它们在这里表示任意数量的空格与 (.*?) 组之前的任何字符.
...   下一页
 ·创建java中的线程池    »显示摘要«
    摘要:线程是java的一大特性,它可以是给定的指令序列、给定的方法中定义的变量或者一些共享数据(类一级的变量)。在java中每个线程有自己的堆栈和程序计数器(pc),其中堆栈是用来跟踪线程的上下文(上下文是当线程执行到某处时,当前的局部变量的值),而程序计数器则用来跟踪当前线程正在执行的指令。 在通常情况下,一个线程不能访问另外一个线程的堆栈变量,而且这个线程必须处于如下状态之一: 1.排队状态(rea......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE