2010年07月04日

/**
* Cobol to java Convertion FrameWork test Programe
* @version $Revision: 1.0 2009/11/14
* @author nec gaoyu
*
* 変更履歴
* NO   日付      担当者         対応種類          対応内容
* 01  2009/11/14     高 禹                仕様変更         IR-AA-T2-0052
*/

Tags: .
2010年03月10日

// 本功能就是从一个特定文件里一行一行读取内容,然后写入另外一个特定文件里面。
// 如果该特定文件里的某行中包含字符333,则不将此行写入另外一个文件中(相当于删除带333的行)

package jp.co.nec.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class FileAcessTest {

public static void main(String[] args) {

String dataLine;
String filePath = “C:\\”;
String fromFileName = “abc.txt”;
String toFileName = “abc1.txt”;
String fromFile = filePath + fromFileName;
String toFile = filePath + toFileName;

try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fromFile)));
BufferedWriter dos = new BufferedWriter(new FileWriter(toFile));
while ((dataLine = br.readLine()) != null ) {
System.out.println(dataLine);

while (!dataLine.contains(“333″)) {
dos.write(dataLine + “\r\n”);
break;
}
}
br.close();
dos.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
}
}

Tags: .
2010年03月08日

定义:
【状态模式】——允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

要点:
状态模式允许一个对象基于内部状态而拥有不同的行为。
和程序状态机(PSM)不同,状态模式用类代表状态。
Context会将行为委托给当前状态对象。
通过将每个状态封装进一个类,我们把以后需要做的任何改变局部化了。
状态模式和策略模式有相同的类图,但是他们的意图不同。
策略模式通常会用行为或算法来配置Context类。
状态模式允许Context随着状态的改变而改变行为。
状态转换可以由State类或Context类控制。
使用状态模式通常会导致设计中类的数据大量增加。
状态类可以被多个Context实例共享。

Tags: ,,.
2010年03月05日

面向对象原则:
类应该只有一个改变的理由。

定义:
【迭代器模式】——提供一种方法顺序的访问以下聚合对象中的各个元素,而又不暴露其内部的表示。
【组合模式(Composite Pattern)】允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。

要点:
迭代器允许访问聚合的元素,而不需要暴露它的内部结构。
迭代器将遍历聚合的工作封装进一个对象中。
当使用迭代器的时候,我们以来聚合提供遍历。
迭代器提供了一个通用的接口,让我们便利聚合的项,当我们编码使用聚合的项时,就可以使用多态机制。
我们应该努力让一个类只分配一个责任。
组合模式提供一个结构,可同时包容个别对象和组合对象。
组合结构内的任意对象称为组件,组件可以是组合,也可以是叶节点。
在实现组合模式时,有许多设计上的折衷。你要根据需要平衡透明性和安全性。

Tags: ,,.

面向对象原则:
好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你。

定义:
【模板方法模式】——在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

要点:
“模板方法”定义了算法的步骤,把这些步骤的实现延迟到子类。
模板方法模式为我们提供了一种代码复用的重要技巧。
模板方法的抽象类可以定义具体方法,抽象方法和钩子。
抽象方法由子类实现。
钩子是一种方法,他在抽象类中不做事,或者只做默认的事情,子类可以选择要不要去覆盖它。
为了防止子类改变模板方法中的算法,可以将模板方法声明为final。
好莱坞原则告诉我们,将决策权放在高层模块中,一边决定如何以及何时调用低层模块。
你将在真实世界代码中看到模板方法模式的许多变体,不要期待他们全都是一眼就可以被你认出的。
策略模式和模板方法模式都封装算法,一个用组合,一个用继承。
工厂方法是模板方法的一种特殊版本。

Tags: ,,.
2010年03月03日

面向对象原则:
最少知识原则:只和你的密友谈话。

定义:
【适配器模式】——将一个类的接口,转换成客户期望另一个接口。适配器让原本不兼容的类可以合作无间。
【外观模式】——提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

要点:
当需要使用一个现有的类而其接口并不符合你的需要时,就是用适配器。
当需要简化并同意一个很大的接口或者一群复杂的接口时,使用外观。
适配器改变接口以符合客户的期望。
外观将客户从一个复杂的子系统中解耦。
实现一个外观,需要将子系统组合进外观中,然后将工作委托给子系统执行。
适配器模式有两种形式:对象适配器和类适配器。类适配器需要用到多重继承。
你可以为一个子系统实现一个以上的外观。
适配器将一个对象包装起来以改变其接口;装饰者将对一个对象包装起来以增加新的行为和责任;而外观将一群对象“包装”起来以简化其接口。

Tags: ,,.
2010年02月09日

餐厅是命令模式的模型。

定义:
【命令模式】——命令模式将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

要点:
命令模式将发出请求的对象和执行请求的对象解耦。
调用者通过调用命令对象的execute()发出请求,这会使得接收者的动作被调用。
调用者可以接受命令当作参数,甚至在运行时动态地进行。
命令可以执行撤销,做法是实现一个undo()方法来回到execute()被执行前的状态。
宏命令是命令的一种简单的延伸,允许调用多个命令。宏方法也可以支持撤销。
实际操作时,很常见使用“聪明”命令对象,也就是直接实现了请求,而不是将工作委托给接收者。
命令也可以用来实现日志和事物系统。

Tags: ,,.

定义:
【单件模式】——确保一个类只有一个实例,并提供一个全局访问点。

要点:
单件模式确保一个类最多只能有一个实例。
单件模式也提供访问这个实例的全局点。
在Java中实现单件模式需要私有的构造器,一个静态方法和一个静态变量。
确定在性能和资源上的限制,然后小心地选择适当的方案来实现单件,以解决多线程的问题(我们必须认定所有的程序都是多线程的)。
如果不采用第五版的Java2,双重检查加锁实现会失效。
小心,你如果使用多个类加载器,可能导致单件失效而产生多个实例。
如果使用JVM1.2或之前的版本,你必须建立单件注册表,一面垃圾收集器将单件回收。

Tags: ,,.
2010年02月08日

JAR里面设定MAIN。然后用下面的命令:

java -jar name.jar
可以执行JAR。

____________________________________

JVM的几个参数:

1,$ java -verbose:gc <クラス名>
可以查看JAVA运行时是否发生了垃圾回收。
「GC」 : Scavenge GC
「Full GC」 : Full GC

2,-Xms<> -Xmx<>
可以指定JVM的堆栈大小。、
-Xms512m : 堆栈最小为512M。
Xmx512m : 堆栈最大为512M。

Tags: .

private static final String ZERO_PADDING_PROP_FILE = “JSMI_QueryZeroPadding”;

protected String formatForQuery(TrBigDecimal inData, String key) {
try {
ResourceBundle prop = ResourceBundle.getBundle(ZERO_PADDING_PROP_FILE);
if (“0″.equals(prop.getString(key))) {
return String.valueOf(inData.getValue());
} else {
return inData.appendSpaces();
}
} catch (MissingResourceException e) {
return inData.appendSpaces();
}
}

如上所示:使用ResourceBundle.getBundle读取配置文件后进行逻辑处理。JSMI_QueryZeroPadding为放置在同名文件包下的文件名。后缀为properties。

Tags: .