标签为 ‘开发经验’
移动办公或多重网关的网络环境下,经常需要切换网络配置,为了图方便写了一组切换IP的脚本。 具体用法是在命令行执行“ConfigNet.bat IP1"切换到网络环境1,……,执行"ConfigNet.bat IPn”切换到网络环境N. 注: 如果多重网络环境不是同时运作,可以考虑使用windows系统网络的特性,为网络设置多重网络地址, 操作系统可根据还环境自行切换. 1. 建立网络环境1下的shell文件,IP1.sh 其中,文件中的**IP1需要替换为对应于网络环境1下的各IP地址。IP1.sh的内容如下: #IP1.sh # Interface configuration pushd interface reset all popd # Interface IP Configuration pushd interface ip set address name = "本地连接" source = static addr = yourIP1 mask = yourMaskIP1 set address name = "本地连接" gateway = yourGateWayIP1 [...]
看到一个网友提问:如何在java中调用Dll,他写的程序出了一些问题。他的问题如下: 我用VC做了一个Image.dll,请问: 我用java调用 public class kk { static { System.loadLibrary("Image"); } public kk() { } private native void OnBtnOpenFile(char [] ll); public void text() { String kk="d:\1.bmp"; char[] mm=kk.toCharArray(); OnBtnOpenFile(mm); } public static void main(String[] argo ) { [...]
在基于Java的软件系统的构建过程中,开发人员经常会遇到词法解析、语法解析等问题,比如:在报表系统的中一般需要支持单元格计算公式(类似于Excel的公式),在某些系统的数据转换过程要实现自定义的转换规则脚本。面对这一类问题,我们最终需要的是一个针对问题域的词法及语法解析器,通常的实现方式不外乎有以下几种: 1. 自己实现全部过程 当所涉及语法非常简单(一般只有一两句原语)时,可以选择该方式。 优点:最直接,自然而然的选择;如果开发人员理论基础扎实的话不需要额外的学习负担。 缺点:要求有一定的理论基础;不利于扩充、或设计良好利于扩充但随着未来需求的改变及新语法的不断增加使扩充的开发成本不可控;测试成本增加;因未经过应用检验而存在风险; 2. 使用第三方的脚本引擎 当所涉及的语法及其复杂(需要支持比较复杂的脚本,甚至需要实现一种新的程序设计语言时,类似于Brio Query中提供的自定义脚本功能)时,可以选择该方式。目前,在互联网上有很多第三方脚本引擎(如:针对应用有:Netscape Script Engine、JavaRhino、BeanShell、IBM BSF、Tcl-Java等,针对Delphi应用有:Innerfuse Pascal Script 3,对微软体系有Microsoft Script Engine。这些引擎的具体情况不在这里讨论)可以选择,只需要少量的编程工作这些脚本引擎大多都可以内嵌到宿主应用程序中,为宿主应用程序提供脚本支持功能。 优点:开发工作量少;部分引擎已经得到广泛应用的验证;具有复杂的脚本支持能力,可以提供类似于程序设计语言的处理能力。 缺点:脚本的语法由使用的引擎决定,往往比较复杂,对于处理简单问题的场合显得过于累赘;系统中需要引入第三方的类库/控件;要求最终用户学习引擎所规定的脚本语法;某些引擎在访问应用系统的运行时对象时能力有限。 3. 使用语法解析器生成器 使用过Unix的同志一般会知道在Unix中有Yacc/Lex,C语言的编译器生成器。在Java中,也有相应的工具。此方法使用JFlex/Java_Cup生成语法解析源码。本人使用这种方法成功的实现了类似Excel那样的公式,支持多种运算及函数,可以维护上下文,可以在表达式中引用系统的对象体系,可以执行动作,并且可以任意扩展而不需要修改解析源码。 关于JFlex与Java_Cup的文档你需要自己到下面的链接中仔细看看。其中关键的部分是需要定义你的语法及词法分析文件,类似于BNF表达式。 主要步骤如下(为了方便,这里仅仅以四则运算为例,这个例子也是编译器构造工具的通用例子,满世界都采用它。): 当然首先你必须下在JFlex与Java_cup,并解压到特定目录,假定二者的目录分别是${JFlex_home}、${Java_Cup_home}。 3.1定义JFlex词法分析文件calc.flex /* This example comes from a short article series in the Linux Gazette by Richard A. Sevenich and Christopher Lopes, titled "Compiler Construction Tools". The [...]











