关于JBuilder和Eclipse的一点感触

Posted by 猪头小队长 | 程序设计 | Saturday 29 May 2004 22:09

不知道因为什么的蛊惑,好久没有打开JBuilder了,取而代之的是 Eclipse。哪天一觉醒来,发现 Eclipse又出了一个新版本,而且已经是推出有些日子了,于是赶紧down回来装一下,似乎如果不用新版本的就显得老土起来,不可否认的是他真的越来越漂亮了。

因为最近在看以前写的一个project,那时候使用JBuider写的,最近一直用Eclipse来打开他来查看,不禁感叹eclipse的职能,因为JBuider的project有JBuilder的文件放置方式,它是和 Eclipse默认的方式是不同的,但是他却能很好的打开,并把各种 lib弄得井井有条,虽然Eclipse的启动速度真是不敢恭维。

刚才不知为什么,忽然想用JBuilder玩一会儿,于是用JBuilder打开这个项目,第一印象是: JBuider的布局好亲切好简单啊,尤其是那个金属风格的主题,让我有种久违的感觉,整个窗口被分成简单的三块,给主体工作区域留出了尽量多的空间。

而 Eclipse的界面似乎越来越复杂了,眼前的方框被分成了好几个小方格。虽然这些可以订制,这些以前都没有感觉到什么,从刚才开始,心中开始有一点不爽。

接下来,用JBuider工作了一会儿,我用的是9版本, Eclipse用的是M9版本,从速度上说,我觉得JBuider比Eclipse块好多,而这些是我原来所没有意识到的。我不知道别人的机器的效果是什么样的,至少在我的机器是如此。也许是我的机器年龄有点大了吧。

呵呵,写得有点像一个新软件的试用体验,但却是对一个被冷落的一个曾经挚爱的IDE 的一点歉疚,JBuilder,我想大部分程序员还是会继续支持你的。加油!同时希望 Eclipse变得更加漂亮的同时能改进一下软件的运行速度。

[@more@]

简单工厂(Simple Factory)模式

Posted by 猪头小队长 | 程序设计 | Friday 28 May 2004 20:56
//以下是摘编《Java设计模式》的第3章
一个简单工厂模式根据所提供的数据返回某个类的一个实例,此类可能是多个可能的类中的一个。通常它返回的类具有公共的父类和共同的方法,但每个类执行的任务各不相同,并且针对不同类型的数据进行了优
化。

上面的话可能不是很好懂,没关系,看完下面的例子再翻过来看,也许就好懂了一些。

例:有一个姓名登记表,要求用户输入姓名,用户可能的输入方式有两种:一种是:“名 姓”,另一种是“姓,名”。这样我们可以通过判断字符串中间是否有逗号来判断姓和名的顺序。

那么写一个类来处理名和姓的分离。
public class Namer{
protected String last; //姓
protected String first; //名
public String getFirst(){ //返回姓
return first;
}
public String getLast(){ //返回名
return last;
}
}

针对上面的两种不同情况,分别写两个类:
第一个类:采用空格分隔
public class FirstFirst extends Namer {
//当采用空格分隔姓名时
//由姓中抽取出名
public FirstFirst(String s) {
int i = s.lastIndexOf(" "); //查找分隔空格
if (i>0) {
first = s.substring(0, i).trim();
last =s.substring(i+1).trim();
} else {
first = ""; // 如果不存在空格
last = s; // 则全部存为姓
}
}
}
第二个类:采用逗号分隔
public class LastFirst extends Namer {
//当采用逗号分隔姓名时
//由姓中抽取出名
public LastFirst( String s) {
int i = s.indexOf(","); //查找分隔逗号
if (i > 0) {
last = s.substring( 0, i).trim();
first = s.substring( i + 1).trim();
}
else {
last = s; // 如果不存在逗号
first = ""; // 则全部存为姓
}
}
}

接下来就一个工厂类:
Public class NameFactory {
//根据是否存在逗号
//由工厂决定返回哪一个类。
public static Namer getNamer( String entry) {
int i = entry.indexOf(","); // 逗号决定姓名顺序
if (i > 0)
return new LastFirst( entry );
else
return new FirstFirst( entry );
}
}

这样,只要调用NameFactory.getNamer(String entry),就可以得到一个适合的Namer来处理。如果以后要增加一个以全角的空格或者其它符号分隔的Namer,只要多写一个Class和修改一下NameFactory就可以了。

琢磨完这个例子,返回顶部,看看那个综述是否明白了一些呢?

~oh,原来抄书也这么累哦,明白一件事情和说明白一件事情的差别太大
了!:(

//摘自《Java与模式》

简单工厂模式的优缺点

在简单工厂模式中,一个工厂类处于对产品类实例化的中心位置上,它知道每一个产品,它决定哪一个产品类应当被实例化。这个模式的优点是允许客户端相对独立于产品创建的过程,并且在系统引入新产品的时候无需修改客户端,也就是说,它在某种程度上支持“开-闭”原则。

这个模式的缺点是对“开-闭”原则的支持不够,因为如果有新的产品加入到系统中去,就需要修改工厂类,将必要的逻辑加入到工厂类中。

[@more@]

mysql数据库管理

Posted by 猪头小队长 | 程序设计 | Thursday 27 May 2004 15:19
备份数据库:
mysqldump -u root -p database_name > database_bak_file.sql
导入数据库:
mysql -u root -p database_name < database_bak_file.sql

[@more@]

让eclipseM8正确显示中文

Posted by 猪头小队长 | 程序设计 | Wednesday 26 May 2004 22:25
我现在用的是的eclipseM8,在编辑的时候一遇到中文就变成了小方框。在eclipse以前和以后的版本没有这个问题。
一般来说,中文显示的问题有两种,如果是乱码,也就是乱七八糟的东西,那么就是编码问题;如果是方框,那么就是字体问题,也就是用非中文的字体来显示中文。
在ecilpse中的解决办法是:window->preferences->workbench->colors and fonts->category:uncategorized->java editor text font->change,改为一个中文字体(例如宋体)就可以了,同样也可以把java editor text font下面的text font的字体也改了,这样在编译struts中的资源文件的时候就不用切换到另外一个text editor了,不过负作用代码换了字体看起来没有那么舒服了,因为原来的Courier New字体看着已经非常习惯了。:(,哈哈,用M9就ok了

[@more@]

用ant的native2ascii来自动转换application.resource

Posted by 猪头小队长 | 程序设计 | Wednesday 26 May 2004 21:31

在用eclipse编写struts程序的时候,对存在中文字符资源文件的处理需要native2ascii一下才可以正确显示,可以稍微修改build.xml来自动画完成这个工作。
把"用eclipse构建一个struts开发环境(不用插件) "里的第6步提到的那个build.xml修改一下,添加一条语句(蓝色部分):
<target name="resources">
<native2ascii src="src/java/resources_src" includes="*.properties" dest="src/java/resources" />
<copy todir="classes" includeEmptyDirs="no">
<fileset dir="src/java">
<patternset>
<include name="**/*.conf" />
<include name="**/*.properties" />
<include name="**/*.xml" />
</patternset>
</fileset>
</copy>
</target>

这样,每次修改资源文件后,运行一下这个build.xml,资源文件就被更新了,AppServer不用重起即可生效(不知道哪个Server可以不重起就可以激活struts-config.xml的改动)。

这里,因为src和dest属性要求名字不一样,没有办法,又新建了一个文件夹resources_src,然后把资源文件放到此文件夹下,经过native2ascii之后,转化过的文件被放到resources里面,这样我们只要编辑resources_src里面的东西就OK了。不知道有没有其他的好办法,:)

[@more@]

struts应用中html的Form,Struts的Action、Form三者是如何对应上的?

Posted by 猪头小队长 | 程序设计 | Wednesday 26 May 2004 17:13
通过jsp(html)中的form的action属性对应到struts-config.xml中的action-mappings,再根据那个action-mappings的name属性对应到form-beans中的action,下图中的颜色代表对应关系
(jsp中)
<form method="post" action="/example.do">

(struts-config.xml中)
<action name="exampleActionForm" path="/example" type="com.hdpan.action.ExampleAction">
<form-bean name="exampleActionForm" type="com.hdpan.form.ExampleActionForm">

[@more@]

用eclipse构建一个struts开发环境(不用插件)

Posted by 猪头小队长 | 程序设计 | Tuesday 25 May 2004 20:23

EclipseM9出来以后,赶紧down了一个尝鲜,然而eazystruts0.7RC1不知道为什么在eclipse上运行不起来,不得已,手工搭建一个非插件的struts的开发环境。

  1. 得到jakarta-struts-1.1.zip,解压缩后,在jakarta-struts-1.1webapps目录中得到struts-blank.war
  2. 任意位置新建文件夹pro1,这个文件夹将作为eclipse的project的目录和tomcat的app发布目录,我新建了一个目录E:Workstrutspro2
  3. 解压缩1中得到的struts-blank.war,放到2中新建的文件夹中,例如我的情况:
    E:Workstrutspro2>dir
    Volume in drive E is WARE
    Volume Serial Number is 6868-F06C
    Directory of E:Workstrutspro2
    2004-05-25 16:26 <DIR> .
    2004-05-25 16:26 <DIR> ..
    2003-06-29 21:46 276 index.jsp
    2004-05-25 16:26 <DIR> META-INF
    2004-05-25 16:15 <DIR> pages
    2004-05-25 16:15 <DIR> WEB-INF
    1 File(s) 276 bytes
    5 Dir(s) 41,909,317,632 bytes free
    E:Workstrutspro2>
  4. 删除META-INF目录
  5. 启动eclipse,新建一个project,把location定为在2中新建的目录。
    将source定位在pro2/WEB-INF/src
    将default output folder定位在/pro2/WEB-INF/classes
  6. eclipse中切换到package explorder视图,展开/WEB-INF/src文件夹,在/WEB-INF/src/build.xml上点右键,然后选择run ant…,弹出框点run。这样资源文件就得到更新
  7. 在tomcat的server.xml中加一条:
    <Context path="/pro2" reloadable="true" docBase="E:Workstrutspro2"/>
  8. start tomcat。
  9. 通过浏览器http://localhost:8080/pro2/看效果

注:如果使用eclipse的tomcat的plugins"Sysdeo Eclipse Tomcat Launcher Plugin",来启动tomcat的话,则servlet不能forward,观察console,他少了几条初始化的信息。不知道为什么。

[@more@]

再见,工大

Posted by 猪头小队长 | 简单生活 | Tuesday 25 May 2004 09:25

(2001年03月26日)

大一的生活仿佛还在昨天
可是明天就要说:工大,再见
又有谁知道这一次惨淡离别的朋友
还会不会再次相见

回头看看昏黄路灯下的心爱姑娘的泪眼
想着曾经千遍万遍无悔的誓言
再说最后最后一遍的爱你
因为明天我们将天各一边

寝室的卧谈会开始结束的更晚
所谈的内容一直是明天的明天的明天
楼道内传来不断的长嘘短叹
几个兄弟正在哪里感慨昨天 从前

朋友们常常聚在校门口的酒馆
每个人都絮絮的谈着自己的过去自己的明天
过去的一幕幕依然粒粒眼前
杯中的酒 眼中的泪 凝成了心中的永远

背上兄弟们帮着整理的行囊
一一的说声珍重 再见
忽然感觉一切都那么的让人留恋
可是这所有的一切都不会再重演

用力的一挥手,闭上双眼
用力的一转头,泪涌眼前
别了,我亲爱的朋友
别了 工大,工大 再见!

[@more@]

精彩言论摘抄

Posted by 猪头小队长 | 简单生活 | Saturday 22 May 2004 22:28
在时间就是金钱的今天,写一个十全十美的程序往往是不可能的,更多的时候只是努力去创造合格的产品,这对于专业人士来说不能不是一种遗憾。
–序言,Grady Booch,Rational软件公司首席科学家

[@more@]