海这边

在安静处听你微弱的声音
 
 

常用链接

  • 我的随笔
  • 我的文章
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(4)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • Eclipse Rcp(2) (rss)
  • EJB (rss)
  • Java(7) (rss)
  • JSF(1) (rss)
  • Reg Expression(1) (rss)
  • web页面(3) (rss)
  • Work Flow(1) (rss)
  • 心情日记(4) (rss)
  • 操作系统(8) (rss)

随笔档案

  • 2011年3月 (1)
  • 2010年6月 (1)
  • 2010年3月 (1)
  • 2010年1月 (1)
  • 2009年9月 (2)
  • 2009年8月 (3)
  • 2009年5月 (2)
  • 2009年4月 (3)
  • 2009年2月 (6)
  • 2009年1月 (3)
  • 2008年12月 (2)
  • 2008年9月 (1)
  • 2008年5月 (1)
  • 2008年3月 (1)
  • 2008年1月 (1)
  • 2007年12月 (1)
  • 2007年11月 (4)
  • 2007年10月 (5)
  • 2007年9月 (1)
  • 2007年8月 (1)
  • 2007年7月 (2)
  • 2007年5月 (1)
  • 2007年4月 (1)
  • 2007年3月 (6)
  • 2007年2月 (2)
  • 2006年11月 (3)

文章档案

  • 2006年11月 (1)
  • 2006年10月 (7)
  • 2006年9月 (1)

最新随笔

  • 1. 通过Javascript代码触发事件
  • 2. linux下 mysql 备份代码
  • 3. 为Apache增加重定向功能rewrite
  • 4. Hibernate Annotation Mapping of ManyToMany
  • 5. html element
  • 6. 解决 Spring +Hibernate+DWR中出现“No converter found for 'org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer'”
  • 7. 解决 birt report 中 "Invalid javascript expression. dataSetRow["name"]"
  • 8. 用JSTL访问MAP类型
  • 9. Hibernate 延迟加载时, 用instanceof判断被延迟加载对象的类型
  • 10. 你用Spring的packagesToScan了吗?
  • 11. linux 远程自动备份MySQL数据
  • 12. Eclipse 中 将Java Project 转换为Dynamic Web Project
  • 13. 同窗的早逝
  • 14. 解决 Fiddler 在IE8中不识别 localhost 的问题
  • 15. 美好的清晨
  • 16. Java抓图软件
  • 17. JBPM 3.3+jboss 4.2.3+mysql 5 安装回忆录
  • 18. 程序界面草图设计工具Balsamiq Mockups 试用体验
  • 19. Eclipse RCP 切换到另一个视图的代码
  • 20. 感谢死亡
  • 21. 制作8G启动U盘-方法2 利用 UltroISO
  • 22. 制作8G启动U盘- 方法1 利用 DiskGenius
  • 23. 普普通通的大年初一2009
  • 24. 更新TableViewer选中行的内容
  • 25. remove empty elements from a xml string using RegExpress
  • 26. VirtualBox的网络配置与使用中的一些问题
  • 27. ubuntu8 jdk
  • 28. 又见春天
  • 29. 2008祝愿
  • 30. 解决 Qt (>= Qt 3.3 and < 4.0)
  • 31. 悲伤的一天
  • 32. Linux 学习点滴 之一 --------组与用户
  • 33. Junit越来越爽了
  • 34. 在WEB页面上创建一个彩色下拉列表框
  • 35. IceFaces 安装 auctionMonitor 示例
  • 36. Solaris 中升级jdk和简单步骤
  • 37. To Convert String to Date using JavaScript
  • 38. 使用For遍历Map
  • 39. Service Command in Linux
  • 40. 北京--看不见的城市

搜索

  •  

最新评论

  • 1. re: 你用Spring的packagesToScan了吗?
  • 评论内容较长,点击标题查看
  • --zhang0xin
  • 2. re: 你用Spring的packagesToScan了吗?
  • 把这个包com.pplus.model.*,加到context:component-scan 里去,就可以了
  • --roman
  • 3. re: Eclipse 中 将Java Project 转换为Dynamic Web Project
  • 评论内容较长,点击标题查看
  • --最代码
  • 4. re: 解决 Fiddler 在IE8中不识别 localhost 的问题[未登录]
  • 评论内容较长,点击标题查看
  • --啊啊
  • 5. re: 解决 birt report 中 "Invalid javascript expression. dataSetRow["name"]"
  • 我也遇到这个问题,可是项目中如你所说的冲突的jar包啊
  • --birt

阅读排行榜

  • 1. 你用Spring的packagesToScan了吗?(13690)
  • 2. Eclipse 中 将Java Project 转换为Dynamic Web Project(7489)
  • 3. 程序界面草图设计工具Balsamiq Mockups 试用体验(5533)
  • 4. 解决 Fiddler 在IE8中不识别 localhost 的问题(4025)
  • 5. 解决 Spring +Hibernate+DWR中出现“No converter found for 'org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer'”(3844)

评论排行榜

  • 1. 程序界面草图设计工具Balsamiq Mockups 试用体验(14)
  • 2. Eclipse 中 将Java Project 转换为Dynamic Web Project(7)
  • 3. 你用Spring的packagesToScan了吗?(6)
  • 4. 解决 Spring +Hibernate+DWR中出现“No converter found for 'org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer'”(4)
  • 5. Junit越来越爽了(4)

Powered by: 博客园
模板提供:沪江博客
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2006年10月24日

通过Javascript代码触发事件
不是我的原创,从网上看到的。http://snipplr.com/view/8471/manually-trigger-element-event-via-code/
<a href="#" onclick="alert('onclick executed');" id="testLink">some link</a>
 
<script type="text/javascript">
<!--
function fireEvent(element, eventName) {
    evt 
= document.getElementById(element)[eventName];
 
    
if (typeof(evt) == "function") {
        document.getElementById(element)[eventName]();
    } 
else {}
}
 
 
fireEvent(
"testLink", "onclick");
-->
</script>

posted @ 2011-03-10 08:36 与你同飞 阅读(474) | 评论 (0) | 编辑 收藏
 
linux下 mysql 备份代码
#! /bin/sh
filename=`date +%Y-%m-%d_%H%M%S`
mysqldump -utest -ptest -h 192.168.1.8 cn2 | gzip>/MySQL_Backup/cn2_$filename.gz

mysqldump -utest -ptest -h 192.168.1.8 transportation | gzip>/MySQL_Backup/trans_$filename.gz
mysqldump -uroot -proot1234 -h 192.168.1.13 canride | gzip>/MySQL_Backup/canride_$filename.gz
posted @ 2010-06-17 13:28 与你同飞 阅读(280) | 评论 (0) | 编辑 收藏
 
为Apache增加重定向功能rewrite
     摘要: 应用程序完成后将它安装在一组JBoss群集里面,群集包括两台JBoss服务器和一台Apache服务器(IP地址是192.168.1.109)。两台jboss服务器是隐藏的,用户只能访问Apache,然后由Apache为其分配一台Jboss服务器。整个系统已经能够工作,但是还存在一个问题,就是Apache只认完整的url,即http://192.168.1.109/trans/login.jsp,若只输入http: //192.168.1.109/trans或http://192.168.1.109,Apache无法完成重定向功能。最后通过配置Apache消除了这个遗憾。将整个过程回忆出来记录如下。  阅读全文
posted @ 2010-03-23 11:05 与你同飞 阅读(2032) | 评论 (0) | 编辑 收藏
 
Hibernate Annotation Mapping of ManyToMany
     摘要: 维护多对多关系时,两边的对象常常会同时新建,但在删除时只删除一方和中间表,保留另一方的数据  阅读全文
posted @ 2010-01-12 12:14 与你同飞 阅读(852) | 评论 (0) | 编辑 收藏
 
html element
<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>
posted @ 2009-09-16 12:57 与你同飞 阅读(319) | 评论 (0) | 编辑 收藏
 
解决 Spring +Hibernate+DWR中出现“No converter found for 'org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer'”
     摘要:   阅读全文
posted @ 2009-09-01 09:49 与你同飞 阅读(3844) | 评论 (4) | 编辑 收藏
 
解决 birt report 中 "Invalid javascript expression. dataSetRow["name"]"
     摘要: 查了许久,没有找到解决方法,最后是这样解决的。。。  阅读全文
posted @ 2009-08-26 16:33 与你同飞 阅读(2955) | 评论 (2) | 编辑 收藏
 
用JSTL访问MAP类型
没有废话,直接上代码。
1 <c:forEach var="entry" items="${ResultMap}">
2     <c:out value="${entry.key}"/> 
3     <c:forEach var="eo" items='${entry.value}'>
4         ${eo.name.value}
5     </c:forEach>
6 </c:forEach>


posted @ 2009-08-24 13:39 与你同飞 阅读(736) | 评论 (1) | 编辑 收藏
 
Hibernate 延迟加载时, 用instanceof判断被延迟加载对象的类型
     摘要:   阅读全文
posted @ 2009-08-21 07:02 与你同飞 阅读(628) | 评论 (0) | 编辑 收藏
 
你用Spring的packagesToScan了吗?
     摘要: 不知算不算是Spring 2.5.6的一个bug,packagesToScan不能按正常思维配置。。。  阅读全文
posted @ 2009-05-06 15:25 与你同飞 阅读(13690) | 评论 (6) | 编辑 收藏
 
linux 远程自动备份MySQL数据
     摘要: 一台机器上装有Red Hat 4,用它可以每天定时备份另一台MySQL Server上的数据。。。  阅读全文
posted @ 2009-05-01 15:30 与你同飞 阅读(1600) | 评论 (2) | 编辑 收藏
 
Eclipse 中 将Java Project 转换为Dynamic Web Project
     摘要: 经常遇到这个需求,写下来。  阅读全文
posted @ 2009-04-27 16:34 与你同飞 阅读(7489) | 评论 (7) | 编辑 收藏
 
同窗的早逝
     摘要: 我初次看到夏同学的时候觉得她象中学生,她个子单薄瘦小,眼睛大大的很有神,脸蛋圆圆红红的,很质朴,和我们班上的那些厉害角色不同,所以没有特别注意她。在第一年,她也似乎淹没在人群中了。第二年有一个学期的第一名居然是这位不起眼的夏同学,从此我们就对她刮目相看了。接着她在国家四级英语考试中拿了满分,这下全班轰动,99分可能还不那么难...  阅读全文
posted @ 2009-04-22 20:33 与你同飞 阅读(427) | 评论 (2) | 编辑 收藏
 
解决 Fiddler 在IE8中不识别 localhost 的问题
     摘要: 在127.0.0.1后面一定要那个句点,非常重要。  阅读全文
posted @ 2009-04-16 14:05 与你同飞 阅读(4025) | 评论 (3) | 编辑 收藏
 
美好的清晨
今晨上班的时候,车子沿着安大略湖行在湖滨高速上,昨夜刚下过雪,都融化了,路面被冲刷得干干净净,树林中的积雪薄了许多。阳光比冬天的时候温暖了很多。远处浩淼的湖水与天相连,碧蓝的微波荡漾。我把车窗打开,让晨风吹进来,不再凛冽,而是妩媚又新鲜,满是春天的气息。车里顠荡着动人的《这一生最美好的祝福》,我的心随着音符跳跃,一起赞美大自然的创造者,那位永生的真神!
posted @ 2009-02-26 09:04 与你同飞 阅读(256) | 评论 (0) | 编辑 收藏
 
Java抓图软件
     摘要: 以下代码不是本人所写,乃是从网上搜到,记录下来供以后参考。 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->  1 package remotescreen;   ...  阅读全文
posted @ 2009-02-13 12:42 与你同飞 阅读(468) | 评论 (0) | 编辑 收藏
 
JBPM 3.3+jboss 4.2.3+mysql 5 安装回忆录
     摘要: My God, Jboss jbpm3.3.1默认安装完成后竟然不能运行,还要改N多的配置!  阅读全文
posted @ 2009-02-09 12:56 与你同飞 阅读(3323) | 评论 (1) | 编辑 收藏
 
程序界面草图设计工具Balsamiq Mockups 试用体验
     摘要: 前天"张氏兄弟“推荐了一套手工绘图工具(点此阅读原贴),今天试用了一下,感觉这正是我需要的...  阅读全文
posted @ 2009-02-06 11:42 与你同飞 阅读(5533) | 评论 (14) | 编辑 收藏
 
Eclipse RCP 切换到另一个视图的代码
     摘要: Eclipse RCP 开发中最常用到的切换视图代码  阅读全文
posted @ 2009-02-03 16:45 与你同飞 阅读(1744) | 评论 (0) | 编辑 收藏
 
感谢死亡
     摘要: 在今年春晚上,小沈阳与赵本山的小品有几名令人回味的话。“闭上眼,再睁开,是一天。闭上眼,不睁开,是一辈子”,里面透出来一丝淡淡的无奈。

是啊,人的一生何其短暂,无论科学如何发展,死亡是人类永远不能战胜的敌人...
  阅读全文
posted @ 2009-01-31 13:49 与你同飞 阅读(478) | 评论 (3) | 编辑 收藏
 
制作8G启动U盘-方法2 利用 UltroISO
     摘要: 今天又试了一下用UltraISO制作启动深山红叶U盘,成功  阅读全文
posted @ 2009-01-30 08:40 与你同飞 阅读(1617) | 评论 (0) | 编辑 收藏
 
制作8G启动U盘- 方法1 利用 DiskGenius
     摘要: 制作一张安装在U盘上可启动的WINXP盘,可以为电脑维护带来很多意想不到的方便。制作大容量U盘-2G以上的方法还不常见,我试成功了制作8G启动闪盘,愿与大家一起分享...  阅读全文
posted @ 2009-01-29 15:06 与你同飞 阅读(2586) | 评论 (3) | 编辑 收藏
 
普普通通的大年初一2009
     摘要: 阳光对这个严寒的城市特别珍贵。。。  阅读全文
posted @ 2009-01-26 23:03 与你同飞 阅读(308) | 评论 (0) | 编辑 收藏
 
更新TableViewer选中行的内容
           /* mobileListViewer: TableViewer的名称
            * Mobile: TableViewer中每行的数据类型
             */

               int selectedIndex=mobileListViewer.getTable().getSelectionIndex();
                if (selectedIndex<0) {
                    MessageDialog.openError(null, "Error", "Please select a mobile uncleared");
                    return;
                }
           /*取得选中行的内容 */
            Mobile selectedMobile= (Mobile) mobileListViewer.getElementAt(selectedIndex);
             
          /* 对selectedMobile   做点处理*/

            /* 更新界面上的TableViewer
            mobileListViewer.update(selectedMobile, null);
  
           。。。
posted @ 2008-12-09 23:01 与你同飞 阅读(783) | 评论 (0) | 编辑 收藏
 
remove empty elements from a xml string using RegExpress
/**
     * Remove all elements with empty value except in exceptionElement
     * @param xml
     * @return
     */
     private String removeAllEmptyElements(String xml) {
            String[] exceptionElement={"AddressHistoryInformation"};
            String result=xml;
            String regExp="<(\\w+)></\\1>|<(\\w+)/>";
            Pattern pattern=Pattern.compile(regExp);
            Matcher matcher=pattern.matcher(result);
            String elementName;
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                elementName=matcher.group(1)!=null?matcher.group(1):matcher.group(2);
                if (!isExceptionElement(elementName, exceptionElement)) {
                    matcher.appendReplacement(sb, "");
                }
            }
            matcher.appendTail(sb);
           
            return sb.toString();
        }
     
     /**
      * returns true if an elementName is in the exception array
      * @param elementName
      * @param exceptionArray
      * @return
      */
     private boolean isExceptionElement(String elementName, String[]exceptionArray) {
         for (String exceptionStr:exceptionArray) {
             if (elementName.equalsIgnoreCase(exceptionStr)) {
                 return true;
             }
         }
         return false;
     }
posted @ 2008-12-04 09:53 与你同飞 阅读(1122) | 评论 (0) | 编辑 收藏
 
VirtualBox的网络配置与使用中的一些问题
本文转自http://hi.baidu.com/jiyeqian/blog/item/17d52ff95837ee5c252df29a.html



2008-06-02 19:41
一、Ubuntu中配置网桥使virtualbox虚拟机联网的简单方法(当然也可以不使用桥接而使用其它方法)
0.简单的总结
第一步:安装bridge-utils、uml-utilities包
第二步:将运行虚拟机的用户添加到uml-net组
第三步:在/etc/network/interfaces中添加配置
auto tap0
iface tap0 inet manual
    up ifconfig $IFACE 0.0.0.0 up
    down ifconfig $IFACE down
    tunctl_user hotking

auto br0
iface br0 inet static
    address 192.168.1.144
    netmask 255.255.255.0
    gateway 192.168.1.1
       bridge_ports all eth0 tap0
第四步:sudo /etc/init.d/networking restart
第五步、第六步参考下文
注:更可靠的方法是直接参考VirtualBox的使用手册
1.较详细的说明
第一步,安装必备的工具(若已安装可跳过):
(1)安装uml-utilities,该工具包含建立虚拟网络设备(所谓的“TAP interfaces”)的工具:
sudo apt-get install uml-utilities
(2)安装桥接工具bridge-utils:
sudo apt-get install bridge-utils
第二步,为了使你的虚拟机能够访问网络接口,你必须将运行虚拟主机的用户的用户名(通常是你的ubuntu登录用户名)添加到uml-net用户组。命令行的运行方法是(请用你的用户名替换其中的“vboxuser”):
sudo gpasswd -a vboxuser uml-net(默认情况下已经加入,可不执行该命令)
你也可以通过gnome面板上的“系统—系统管理—用户和组”来添加,方法从略。
请注意:为了使改动生效,请重新启动你的电脑(一定要重启计算机,也可以在所有步骤完成之后重启计算机)。
第三步,向你的ubuntu操作系统描述你要添加的虚拟网络设备:
sudo gedit /etc/network/interfaces
在打开的文件后面添加下面的内容(请用你的用户名替换其中的“vboxuser”),保存好:
auto tap0
iface tap0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
tunctl_user vboxuser

auto br0
iface br0 inet dhcp
bridge_ports all tap0
上面第一部分的大概意思是将虚拟网络接口命名为“tap0”,指定该接口IP配置方法为手动,并指定使用该接口的用户。第二部分的大概意思是建立一个名叫 “br0”的桥,该桥的IP配置方法为通过DHCP配置,主机中的所有网络接口,也包括tap0这个虚拟网络接口,都将建立在这个桥之上。
第四步,激活刚才建立的虚拟网络接口和网络桥:
sudo /sbin/ifup tap0
sudo /sbin/ifup br0
这个步骤只需要做一次,下次主机重新启动时,这个接口和桥将自动激活。
第五步,启动virtualbox,在主界面上选中要使用刚才建立的虚拟网络接口tap0的虚拟机,点“设置”,在弹出的窗口中选“网络”,选中其中一块 网卡(通常为“网络适配器 0”),选中“启用网络适配器”,“连接到”后面选“Host Interface”,选中“接入网线”,然后在“主机网络界面名称”中填入刚才建立的虚拟网络接口的名字“tap0”,确定。
第六步,配置主机和虚拟机的网络。这步太简单了,两者你想怎么配置怎么配置。无论是主机,还是虚拟机,都是既可以手工指定静态IP,也可以从DHCP动态获取IP地址(当然,主机和虚拟机应该在同一个网段)。不过前提是要你的网管放行才行!
2.其它方法(www.linuxsir.org/bbs/showthread.php)
二、使用中遇到的一些问题
1.
Problem:
Unknown error creating VM (VERR_HOSTIF_INIT_FAILED).
VBox status code: -3100 (VERR_HOSTIF_INIT_FAILED).
Solution:
while trying to start your VirtualBox on Ubuntu, then it's probably because the user by which VirtualBox is running does not have read/write permissions on /dev/net/tun. To solve the problem run this commands:
sudo chgrp vboxusers /dev/net/tun
sudo chmod 660 /dev/net/tun
then add the user that is going to use VirtualBox to the vboxusers group.
2.提示需要安装virtualbox-ose-modules-*
参考:forums.virtualbox.org/viewtopic.php     forum.ubuntu-nl.org/message/263051
解决方法:
(1)安装virtualbox-ose-modules-*
(2)如果virtualbox-ose-modules-*版本和当前系统内核版本不一致,则需要运行:sudo insmod /lib/modules/2.6.24-17-generic/misc/vboxdrv.ko(我的系统内核是 2.6.24-18,virtualbox-ose-modules-*是2.6.24-17)
(3)vboxdrv相关的命令:
/etc/init.d/vboxdrv setup
/etc/init.d/vboxdrv stop
/etc/init.d/vboxdrv restart
3.host和guest机不能同时发声的问题:驱动用alsa,两个系统可以同时发声。
posted @ 2008-09-06 13:48 与你同飞 阅读(633) | 评论 (0) | 编辑 收藏
 
ubuntu8 jdk
original: http://hi.baidu.com/venhow/blog/item/1a29a9180b0aed0235fa4157.html

安装JAVA环境支持


打开终端,执行以下命令,或使用Adept/新立得软件管理器,在其中分别搜索"sun-java6-jre"和"sun-java6-jdk"并标记安装。
Copy code
sudo apt-get install sun-java6-jre

如果空间富裕,建议安装一个JDK。
Copy code
sudo apt-get install sun-java6-jdk

提示:安装过程中需要你回答是否同意使用协议(终端中红蓝色的提示界面),此时按tab键至OK,再按回车即可正常安装。

设置当前默认的java解释器:
Copy code
sudo update-alternatives --config java

执行后会出现类似如下的画面:

Copy code
There are 2 alternatives which provide `java'.

Selection Alternative
-----------------------------------------------
1 /usr/bin/gij-wrapper-4.1
*+ 2 /usr/lib/jvm/java-6-sun/jre/bin/java

Press enter to keep the default[*], or type selection number:


输入 有包含 "sun" 的行的前面的数字。如上面显示,则输入2,然后回车确定。
注:如果你是新安装的8.04版本的ubuntu,那么会出现类似"系统只有一个java,不需要设置"的英文提示消息。

配置JAVA环境变量:
Copy code
sudo gedit /etc/environment

在其中添加如下两行:
Copy code
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib#中间是以英文的冒号隔开,记得windows中是以英文的分号做为分隔的
JAVA_HOME=/usr/lib/jvm/java-6-sun


然后:
Copy code
sudo gedit /etc/jvm

将文件中的
Copy code
/usr/lib/jvm/java-6-sun

这一行填入到配置块的顶部

安装浏览器的JAVA Plugin(可选):
Copy code
sudo apt-get install sun-java6-plugin


安装tmocat6.X
其实你想用哪个版本都可以,到Tomcat主页http://tomcat.apache.org/选择你要使用的版本,然后再下载以.tar.gz结尾的文件就可以了,解压后就可以直接使用了。
现在最新版本为tomcat6.0.16,地址为:http://apache.mirror.phpchina.com/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.tar.gz
在终端中进入解压后的bin目录下,./startup.sh启动tomcat,./shutdown.sh关闭tomcat。
当看到类似以下输出时,你已经成功启动tomcat了:
Copy code
lym@lym-laptop:~/System/ubuntu/software/apache-tomcat-6.0.14/bin$ ./startup.sh
Using CATALINA_BASE: /home/lym/System/ubuntu/software/apache-tomcat-6.0.14
Using CATALINA_HOME: /home/lym/System/ubuntu/software/apache-tomcat-6.0.14
Using CATALINA_TMPDIR: /home/lym/System/ubuntu/software/apache-tomcat-6.0.14/temp
Using JRE_HOME: /usr/lib/jvm/java-6-sun

前提是你已经按照前面安装JAVA环境的步骤配置了环境变量。
现在就可以访问http://localhost:8080来检测tomcat是否成功启动了。
注:tomcat 默认端口是8080,端口号可以在config目录的server.xml中进行更改,但要注意,在Linux中1000以内的端口号必须需要root权 限,使用时要加sudo命令,1000以外的OK,所以想要在类似eclipse的IDE中用tomcat的话还是设置在1000以外为宜。

安装eclipse
eclipse的主页:http://www.eclipse.org/
下载eclipse标准版,地址:http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.3.2-200802211800/eclipse-SDK-3.3.2-linux-gtk.tar.gz
也是解压后直接运行。

安装MyEclipse插件
MyEclipse 相对于eclipse来说,集成了很多进行javaee开发需要的功能,相对于eclipse来说,MyEclipse还是很方便的,现在企业用的也比较 多,不过MyEclipse是一个商业软件,只能免费试用30天,30天之后必须提交订阅码才能继续使用。授权费用为标准版是 32美元,专业版是53美元。如果你有兴趣并且也愿意为此掏钱,那么请购买授权,否则想要继续使用,请自行处理,反正我是绝对不会干出告诉你说让你到Google上搜索序列号这种事的。

首先下载MyEclipse:
官方网址:http://www.myeclipseide.com
下载地址:http://www.myeclipseide.com/module-htmlpages-display-pid-4.html
需要选择与Eclipse 3.3相匹配的MyEclipse 6.0 GA这个版本,点击后再选择下载Linux版的plug-in,当然,想下All in one也没有啊!

下载完MyEclipse之后,得到的是一个.bin的文件,打开终端,使用cd命令进入MyEclipse安装文件所在目录,输入命令:
$sudo sh MyEclipse_6_0_1GA_E3_3_1_Installer.bin
随后就会启动一个GUI的安装程序。
单击“Next“按钮继续,选择“I accept...“:
在 这里选择Eclipse所在目录,单击“Choose“按钮来选择,接下来选择MyEclipse的安装位置,接下来选择Link Folder,可以保持默认选择继续,接下来就可以安装了,单击“Install“按钮,安装好后进入eclipse目录直接双击执行eclipse即可 自动识别出MyEclipse,好了,现在你就可以在MyEclipse里面编写你的JavaEE程序了。
posted @ 2008-05-10 14:24 与你同飞 阅读(359) | 评论 (0) | 编辑 收藏
 
又见春天
     摘要: 春天是这片荒原之地的希望。等待了漫漫6个月的冰天雪地后,终于过了3月21日,官方春季开始的第一天,春天像个腼腆的孩子躲躲闪闪地近了...  阅读全文
posted @ 2008-03-29 15:04 与你同飞 阅读(382) | 评论 (2) | 编辑 收藏
 
2008祝愿
     摘要: 每天所经过的路是多伦多最美的地区,一半车程在沿湖高速上,安大略湖相当于60个洞庭湖,无边无际,霞光洒在上面,一半是湖水,一半是火焰...  阅读全文
posted @ 2008-01-11 23:17 与你同飞 阅读(310) | 评论 (1) | 编辑 收藏
 
解决 Qt (>= Qt 3.3 and < 4.0)
     摘要: 今天在Fedora 8 中安装一个UML软件,做 configure的时候总是提示:

checking for Qt... configure: error: Qt (>= Qt 3.3 and < 4.0) (library qt-mt) not found. Please check your installation!

最后下载了一个 qt-devel rpm包解决  阅读全文
posted @ 2007-12-03 09:21 与你同飞 阅读(1825) | 评论 (1) | 编辑 收藏
 
悲伤的一天
     摘要: 多年来,不知走过多少美丽的地方,不知告别了多少相爱的朋友,
千帆过尽,谁是谁等待的归航?
不回头...  阅读全文
posted @ 2007-11-23 10:47 与你同飞 阅读(383) | 评论 (2) | 编辑 收藏
 
Linux 学习点滴 之一 --------组与用户
     摘要: 命令:groups 可以查看一个用户在哪些组里面
例: groups jeffy
显示:IT, Marketing...

更改一个用户所在的组: 编辑 /etc/group文件,这个文件是组与用户的映射文件  阅读全文
posted @ 2007-11-14 11:31 与你同飞 阅读(314) | 评论 (0) | 编辑 收藏
 
Junit越来越爽了
     摘要: JUnit是我们JAVA人员最常用的工具之一,我在几年前就开始用它了,帮我发现了不少问题,好感谢它啊。今天突然发现JUnit的用法特别简化了,几种重要变化:
1. 任何一个Class都可以做为TestCase, 不需要象以前那样创建一个继承自TestCase的类;
2. 测试方法不需要以test开头,任何一个方法返回类型是void的都可以拿来测试,只需要用@Test来标注一下。  阅读全文
posted @ 2007-11-01 16:54 与你同飞 阅读(1525) | 评论 (4) | 编辑 收藏
 
在WEB页面上创建一个彩色下拉列表框
     摘要: 原来<option>也是可以用<style>来修饰的,在WEB页面中加上这样的语句:


这么简单,为什么没有想到呢?  阅读全文
posted @ 2007-11-01 10:16 与你同飞 阅读(1077) | 评论 (1) | 编辑 收藏
 
IceFaces 安装 auctionMonitor 示例
IceFaces是个好东东,那可是24人年的工作量啊
早就有心学习,现在终于down了一个下来。
对auctionMonitor示例非常感兴趣,在自己的一个项目中正好需要类似的一个模块。
本以为安装非常容易,新建一个web项目,把样例中web文件夹下的东东copy到Eclipse项目中的WebRoot下,把src中的类copy到web项目中src中,再把原先config文件夹中的web.sunri.icefaces.ce.xml改名为web.xml并copy到web项目中WEB-INF中,最后原先lib中所有的jar文件copy到WEB-INF/lib中。上述步骤是非常标准的一个程序,闭着眼睛都可以做完。
启动tomcat很顺利,没成想预想的页面没有出现,反而出现了错误:
ava.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem;
at org.apache.jasper.compiler.JDTCompiler$2.acceptResult(JDTCompiler.java:329)

.....
猜想可能是lib文件夹中的jar文件太多,造成了冲突。删除所有的jar类库,然后一个一个再往里加,终于成功。最后所需要jar类库列表:
 backport-util-concurrent.jar
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-discovery.jar
commons-fileupload.jar
commons-logging.jar
icefaces-comps.jar
icefaces-facelets.jar
icefaces.jar
jsf-api-1.2.jar
jsf-impl-1.2.jar
jstl.jar
just-ice.jar
krysalis-jCharts-1.0.0-alpha-1.jar
xercesImpl.jar
xml-apis.jar

Too many nurses kill the baby! 小鬼多了不干活,只保留这些类就可以了。

posted @ 2007-10-29 16:15 与你同飞 阅读(1736) | 评论 (0) | 编辑 收藏
 
Solaris 中升级jdk和简单步骤
旧版本是JDK1.5, 本来是好好的,今天一上班,经理就告诉我说Java系统显示时间慢了一个小时。这才想到北美夏令时间改了,原先是10月份的最后一个周日结束,现在改为11月份的第一个周日结束(安省已经立法),Java笨笨的,不知有汉,何论魏晋。
登上sun的网站,人家已经提供了一个时区升级程序,下载下来运行成功,重启jboss后时间恢复正常。
工作本已经结束,后来想到何不利用这段时间把jdk由5升为6呢?毕竟停机升级的机会很难得。从sun下载下新的jdk6,将其权限改为可运行,运行后已将jdk6安装到一个文件夹中。但当试运行 java -version时仍旧提示是 jdk 5.0。
认为应该修改一下系统环境变量,让java_home指向新的文件夹,但我Solaris知识只是三脚猫的把式,就会那几句命令。于是天南地北地google,终于搞定:
          1. 发现java命令存在于 /usr/java文件夹中,这只是一个文件夹指针,指向真正的java文件夹。先用 unlink /usr/java去掉指向.
           2. 用命令 link /usr/jdk/instances/jdk1.6.0_02  /usr/java 将java指向新的java文件夹
      再运行 java -version 后,终于见到可爱的" 1.6“提示了

非常简单,还是记下来供相同需要的朋友参考。


posted @ 2007-10-29 11:15 与你同飞 阅读(1550) | 评论 (0) | 编辑 收藏
 
To Convert String to Date using JavaScript
var   s   =   "2005-12-15   09:41:30";   
var   d   =   new   Date(Date.parse(s.replace(/-/g,   "/")));
posted @ 2007-10-16 10:13 与你同飞 阅读(2379) | 评论 (0) | 编辑 收藏
 
使用For遍历Map
Map<Integer, String> map=new HashMap<Integer, String>();
for (Map.Entry<String,Integer> entry:map.entrySet()) {
     System.out.println("Key:"+entry.getKey());
     System.out.println("Value:"+entry.getValue());
}

posted @ 2007-10-10 10:43 与你同飞 阅读(2759) | 评论 (1) | 编辑 收藏
 
Service Command in Linux
Service JbossCN restart
The description is in  /etc/rc.d/init.d

posted @ 2007-10-09 08:59 与你同飞 阅读(319) | 评论 (0) | 编辑 收藏
 
北京--看不见的城市
看不见的城市

·吴 声·

班机延误,再延误……到
北京机场已是凌晨,从出发到现在已经超过24小时,有一点疲倦,一点兴奋,和一点落寞,一如每次踏上这片土地的感觉。

机场高速莫名其妙地被关闭,堵塞在狭窄的机场辅路,前面的车辆横七竖八地塞满了路面。路左,路右,路肩,顺行或者逆行……所有人心安理得地漠视一切交通规则。

心中问着,这难道是我的家吗?那个春天有杨柳摇风,冬天有飞雪吹窗的家吗?

很多年以前,马可波罗在游记中这样描述元朝的大都——也就是今天的北京:

城中的全部设计都以直线为主,所以各条街道都沿一条直线,直达城墙根。一个人若登上城门,向街上望去,就可以看见对面城墙的城门。在城里的大道两旁有各 色各样的商店和铺子。全城建屋所占的土地也都是四方形的,并且彼此在一条直线上,每块地都有充分的空间来建造美丽的住宅、庭院和花园。城区的布局就如上所 述,像一块棋盘那样。整个设计的精巧与美丽,非语言所能形容。

而这时,看看车窗外面,即使在夜晚仍然尘烟飞扬,远处的景物迷离不清。在这茫茫凡尘之下,马可波罗眼中那座美丽而布局规整的元朝都城,如今,已经是一座在现代化的纷繁掩映之下,看不见的城市。

在北京两周,走走看看,几乎一切都变了。建筑变了,道路变了,剩下没有变的只有地名而已。走在街上,茫然地看着那些像野草般长出来的高楼大厦,我总是在问,这是北京吗?

交通难得有畅通的时候,二环路几乎永远都堵车,路面上车流滚滚;路面之下则是奔行着的地铁。在路上路下穿梭的人流中,有没有一个人?哪怕只有一瞬间,在脑海中匆匆闪过,二环路所在的地方曾经是那座美丽都城的古老城墙?有个人曾扑倒在即将拆除的城墙前痛哭失声:“人们啊!五十年后你们要后悔!”谁还记得他呢?那个叫梁思成的人。

今天的中国,历史似乎不再是财富,而是负担,深恐甩之不及。龙应台曾说:“人本是散落的珠子,随地乱滚,文化就是那根柔弱又强韧的细丝,将珠子串起来成 为社会。”历史正是文化的一部分,穿起一座城,一个社会。当人们提起一座城市的名字,你会想起什么?每个人都不同吧!但是不管你想起什么,一定都是那些最 值得你留恋的,而更重要的是在别处无法看见或者体会到的景物。比如纽约曼哈顿密集的摩天大楼,巴黎夜色中闪烁的艾菲尔铁塔……而这些景物之后便是一座城市 无法替代的历史。

提起北京,一定有人会想到胡同和四合院。虽然从小在大院里长大,没住过胡同;但是看到辛笛多年前的一首旧诗《丁香、灯和夜》,还是感触良多。

今夜第一次
我惊见灯下
我的树高且大了
花的天气里夜的白色
映照中一个裙带的柔和
今夜第一次
我试着由廊下探首窗间
绿窗有无声息
独自为主人
描一个轻鸽的梦吗

你能闻到诗中的香气吗?丁香花的香气?那一夜,夜凉如水,诗人在北京的一所四合院里写下的诗句。此情此景,如今,不知要去哪里寻找?

北京的旧城改造几乎就是一个字——“拆”,不论好坏地拆拆拆。破烂的大杂院拆,一些有文物保护价值的四合院照样拆。百分之七十五胡同都拆掉了,而拔地而 起的是那些毫无特色的水泥盒子,玻璃盒子。北京城已经完全失去了原来特有的历史风貌,看上去可以是任何一座中国城市,为什么还称这座城北京呢?这里根本不 再是北京!

历史需要载体,一条巷子,一个院落便是载体,如果墙会说话,它们会给你讲这里的故事,某一天,某个人,也许惊天动地,也许只是平凡小事。一点一滴的大事小情写下了一座城市的历史。

人们常说生命脆弱,原来历史也是如此脆弱。几辆推土机就可以把这几百年历史轻易地铲平。

华新民,一个职业胡同保卫者。看到她的一篇文章和照片:心在滴血——悼念孟端胡同45号院。那么美丽的一座王府宅院,在一夜之间被推土机铲平,变作一地 的瓦砾。如果今天去那里,连残破的瓦砾都找不到了,只有现代化的大厦,哪里还有胡同的影子?!那院子里风一吹就泻满一地的丁香花,长成海的竹林,碎石甬 道,还有昔日几代王爷缓缓关住朱红大门的声音……都没了……

明代的北京曾经是世界第一大都会,不要说美国,整个欧洲也没有一座城市可以和当时的北京媲美。再看今天欧洲,旧城保护不知道要比中国做得好多少。

记得有个在西班牙读书女孩子,有一天她很高兴,因为她搬进了萨拉曼卡有名的市长广场,一座有二百五十年历史的建筑。她喜欢在晚上九点的时候带着相机跑到 楼下,因为她知道那是萨拉曼卡最美的一刻,夜灯缓缓亮起,天空还透着湛蓝……一年以后,她离开了,但是那里留下了她很多回忆。

也许将来的某一天,她会回到那里,还是在晚上九点,华灯初上时候,站在热闹的人群里看着那个透出灯光的小窗口,那个她曾经住过的房间,所有的回忆就在那一瞬间全部回到眼前……

你能想像吗?她再回到那里时,一切都面目全非,看到的是一座冰冷的现代化大厦,她会怎样的黯然神伤……

西班牙那座二百五十年历史的市长广场今天仍然是萨拉曼卡市的中心,酒吧、餐厅、商店,以及热闹的人群。这样的例子在欧洲数不胜数,很多几百年的建筑仍然在使用中;为什么我们的许多历史建筑却难逃被拆除的厄运?

看到过一张胡同被拆毁时的照片,一个背影默然地站在残砖碎瓦之间。他是谁呢?也许是个老住户吧?他在想什么呢?我无从知道。可是我知道对很多老住户来说,他们没有选择,愿意不愿意都要搬走;或者是成为钉子户,即使如此,也是一颗早晚被拔掉的钉子。

很多老住户从小在这里长大,他们童年时的快乐,少年时的张狂,以及所有幸福与忧伤的回忆,也和这些砖瓦一样被碾得粉碎。而那些离家多年的游子更是可怜,回来连家的痕迹都找不到了。一座城市的历史就这样慢慢地消失毁灭。

常听到的一句成语:物是人非;我们不知是幸运还不不幸,经历着这样一个向前迅跑的年代,和这样一个向前迅跑的城市,常常是人还在,物已非。

邻居家的阿姨听说我回来,还是象以前那样热情地请我去家里吃饺子。站在她家窗前,原来在这里是可以看见西山的;可现在,许多杂七杂八毫无特点的建筑挡住了视线,即使没有这些建筑,如此浑浊的空气也看不出多远。燕京八景之一的“西山晴雪”似乎已经是个远古的传说了。

“来吃饭啦!”阿姨还是那样一边忙里忙外一边喊着我,叔叔还是一样的健谈,说着天南海北无数的传奇故事。有一瞬间,我突然想起很多年前的一个春节,也是 在他们家的饭桌上,幼小的我第一次吃大葱沾酱,那股辛辣的味道至今还记忆犹新,还记得一屋子人看着我痛苦的表情大笑的情景……他们就这样看着我一点点长 大,而今天我又看着他们老迈……

好在,这些人与人之间的牵系还在,没有被毁掉。

而人真的都没变吗?

和几个很多年没见过面的老同学一起喝茶,慢慢地淡些旧事新闻;不知怎的?却突然慌腔走板,因为没有女士在场,几个人津津乐道起在各地猎艳的经历。令我惊 奇的是,每个人几乎都是经验丰富,谈论着各种女人的不同,中国的,外国的。我则好像来自另一个星球,惭愧得无地自容,不知道原来还有这么多“乐趣”。竟然 至今仍然相信世上所有女子中,最美丽的只有一个!

他们都曾是和我一样的人啊!毕业于同一所大学,一起走过那些青春躁动的年代,都曾经一样相信世界上有一种东西叫做爱情……

当年我离开北京的时候,并没有想要永远离开;我想,有一天会回来的,这里仍然是我的家,有我的童年和青春。而我又回到这里的时候,却看见这城正在飞快地离我而去,头也不回……

别人对我说:老了吧?你!跟不上时代!

我说:不是老,我只是看不见,那座叫北京的城市……
posted @ 2007-09-07 15:28 与你同飞 阅读(474) | 评论 (3) | 编辑 收藏
 
how to make DWRUtil.addRows not output html source code?
If i want to put a inputbox into a row in the function of  DWRUtil.addRows, I use the code below:
    DWRUtil.addRows(id, ["<input type='text' />" ]);
 When we browse the result in a browser, we can see the source code of "<input type='text'/>" instead of the inputbox. how to resolve it ?

OK. We use "DWRUtil.setEscapeHtml(false);" before we invoke DWRUtil.addRows();

posted @ 2007-08-23 16:12 与你同飞 阅读(288) | 评论 (0) | 编辑 收藏
 
你们把我也和谐了吧
     摘要: 只因为跟过洪水的贴子,济南一位网友就被逮捕了,反应之迅速让我知道他们还是有战斗力的。

当人们被困在地下商城的时候不见这样的迅速,该打开水闸的时候不见这样的迅速,该公布真相的时候不见这样的迅速,该向公民道歉的时候不见这样的迅速。  阅读全文
posted @ 2007-07-26 09:25 与你同飞 阅读(280) | 评论 (0) | 编辑 收藏
 
Control Services in Solaris
     摘要: For example, I will control JBoss service.
1. svcadm restart application/Jboss
2. svcadm clear application/Jboss
3. svcadm enable application/Jboss
4. svcadm disable application/Jboss  阅读全文
posted @ 2007-07-09 16:32 与你同飞 阅读(201) | 评论 (0) | 编辑 收藏
 
Add "Windows Command" to the Right_Click Event of Windows
1.Regedit
2. Create a structure like this:
      HKEY_CLASS_ROOT
             |
             |----Folder
                     |
                     |-----shell
                               |
                               |------windows command (newly created)
                                              |
                                              |----command  (default, REG_SZ, cmd/K cd/d %L)
posted @ 2007-05-19 08:43 与你同飞 阅读(202) | 评论 (0) | 编辑 收藏
 
vnc server 设置 (转贴)

由于客户需要充分利用花了N多money购买的服务器,而服务器上运行的是Linux AS,客户又不太会使用文本模式,因此只好采用配置X-server的方式来给每一个用户一个图形终端了,这多亏了X-windows设计的先进性呀。
为了简单,我就使用了Linux自带的vnc-server。
代码::
#uname -a
Linux server1.linux 2.4.21-4.ELsmp #1 SMP
#rpm -q vnc-server
vnc-server-4.0-0.beta4.1.1

你可以使用特定的帐号来运行你的vncserver命令。这样可以做到同时有多个用户登录图形终端。同时一个图形终端编号只能有一个用户登录。
代码::
#useradd demo
#passwd -d demo
#su demo
$vncserver
passwd: //如果这个帐号是第一次运行vncserver,则会要求你输入连接的密码。
verify:
New 'server1.linux:4 (demo)' desktop is server1.linux:4
Starting applications specified in /home/demo/.vnc/xstartup
Log file is /home/demo/.vnc/server1.linux:4.log

上面这段话表示起动了一个图形终端,编号为4,要记住这个编号,等下登录时需要提供这个编号。
如果你要停止这个进程,使用
代码::
$vncserver -kill :4

就可以了,后面的数字表示图形终端编号。
ok,这样,x-server已经起动了。
我们来测试一下。
找另外一台机器,如果是Linux的系统,那就比较方便,直接使用下面的命令
代码::
#vncviewer xx.xx.xx.xx:4 ;连接方式是ip地址:编号,这里的编号是4.

会弹出一个对话框,要求你输入密码,如果密码正确,这是就会出现图形终端了。
如果是windows的机器,那就下载一个vnc的软件吧。我用的是winVNC。
连接方式是一样的。
不过大家也看到了,虽然图形界面是看到了,但是好丑呀!的确,因为默认的图形终端采用xterm+twm,桌面上什么都没有。如果能使用默认的GNOME或者KDE或者FVWM等X-manager该有多好?
没有问题,接下来的配置就是解决这个问题。
每当一个帐号运行一次vncserver后,就会在家目录下创建.vnc目录。
里面有一个可执行脚本xstartup。看看里面的内容就知道了,默认起动的是twm。
那么我们就修改这个文件吧,去掉里面的所有内容,写入下面一行
代码::
gnome-session

这样就指定起动gnome。
也可以写入
代码::
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

表示起动默认的图形管理器。
保存退出,然后重新起动vncserver。
代码::
$vncserver -kill :4
$vncserver

然后到客户端去连接X-server,看是不是变得漂亮些啦。
可能你又会问了,如果我有1000个用户呢,是不是每一个用户都需要去修改这个文件呀,那多麻烦呀。
那我们就找到根源吧,看到底xstartup是谁创建的。
找到/usr/bin/vncserver,他是一个perl脚本程序。
打开看看
转到43行,你就会看到
$defaultXStartup变量的定义了,看到了吧。
这下你知道怎么改了吧。
把他变成这个样子:
代码::
$defaultXStartup
 = ("#!/bin/shnn".
 "# Uncomment the following two lines for normal desktop:n".
 "unset SESSION_MANAGERn".
 "exec /etc/X11/xinit/xinitrcnn".
 "#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourcesn".
 "#xsetroot -solid greyn".
 "#vncconfig -iconic &n".
 "#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &n".
 "#twm &n");

实际上就是去掉最前面的两行注释,注释掉下面的几行。保存退出。
你再创建一个帐号,运行vncserver看看。
是不是默认的图形终端就修改了呢?
我的任务完成了。
需要去面试了。
大家试试吧。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=624227

posted @ 2007-04-02 10:19 与你同飞 阅读(1308) | 评论 (0) | 编辑 收藏
 
Hibernate Cache in AppFuse
In a module of my application, a complex query is very slow. It needs about 5 seconds because the application gets data from nearly 10 tables. Most of the 10 tables are not updated often. Therefor I decided to use cache for the 10 tables.
Software: Spring+hibernate
ehcache is the default cache for hibernate. So I choosen it.

Step1.  Modify ehcache.xml in /webroot/web-inf/classes. the content is below:
            
           <ehcache>
                <diskStore path="java.io.tmpdir" />
                <defaultCache maxElementsInMemory="10000" eternal="false"
                    overflowToDisk="true" timeToIdleSeconds="120" timeToLiveSeconds="120"
                    diskPersistent="false" diskExpiryThreadIntervalSeconds="120" />
            </ehcache>


Step2. Configure applicationContext-hibernate.xml in the spring framework.
             .....
            <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">       
                 .....
                     <prop key="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>
                    <prop key="hibernate.cache.use_query_cache">true</prop>
                    <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>

                 ...
            </bean>

Step3. Configure the hibernate mapping file(ie. *.hbm.xml), add a new attribute:
            <cache usage="read-only"/>

Step 4. Change the dao. Before it retireves data, it will be asked to use cache, for example:
                   getHibernateTemplate().setCacheQueries(true);
               or
                   query.setCacheable(true)

Now, everything looks very good. It only need less than 1 second to get all the data. Much faster than before.

          
posted @ 2007-03-27 11:34 与你同飞 阅读(339) | 评论 (0) | 编辑 收藏
 
Why mysql is so slow?
1. There are many configuration files for mysql. There name looks like my-huge.cnf, my-medium.cnf.... Select the best one for our system and copy it as /etc/my.cnf. 

2. open /etc/my.cnf(gedit, or vi).  Goto the "mysqld" section, and add a new line:
     skip-name-resolve    #Do not resolve hostnames.

3. restart mysql.


posted @ 2007-03-23 10:59 与你同飞 阅读(190) | 评论 (0) | 编辑 收藏
 
JBoss 4.0.2集群指南 (zt)
I tested it, and it works very good.


JBoss 4.0.2集群指南

bromon原创 请尊重版权

    本文主要讲解JBoss cluster的基本知识以及简单的配置方法,其间涉及了一些jboss的补充知识。

一、材料准备:

1、    JBoss 4.0.2    

JBoss各个版本之间差异比较大,即使同为jboss 4.x的版本,内部组件的版本也不一致,所以请尽量使用同一版本的server。目前已经证明可以配置cluster的版本多为jboss 3.2.6和jboss 4.0.2。

2、    Apache 2.0.54

3、    Apache mod_jk-1-2-13-apache-2-0-54

二、安装:

1、    jboss4.0.2与apache 2.0.54的安装请自行搞定。假设jboss的安装目录为%jboss%,apache安装目录为%apache%。

2、    mod_jk的安装。

从apache.org获得文件mod_jk-1-2-13-apache-2-0-54.so,将该文件拷贝到%apache%\ modules。

三、jboss cluster入门

    Jboss 支持如下类型的cluster:EJB、web、JNDI、JMS,我们主要了解web cluster。
Web cluster实际上可以划分为两个话题:负载均衡 (load balance) 和状态同步。它们是互相独立的,单独配置。

负载均衡的概念比较简单,重要的是负载均衡的粒度。可以选择针对每个request的均衡,或者是针对每个用户的均衡。选择不同的粒度,需要不同的状态同步方式。

1、基于request的负载均衡

    该种方式下,负载均衡器 (load balancer)会根据各个node的状况,把每个http request进行分发。使用这样的均衡策略,就必须在多个node之间复制用户的session,实时保持整个cluster的用户状态同步,这种操作 被称为session复制(session replication)。Jboss的实现原理是使用拦截器(interceptor),根据用户的同步策略拦截request,做同步处理后再交给 server产生响应。

    该方法的优点是客户不会被绑定都具体的node,只要还有一个node存活,用户状态都不会丢失,cluster都能够继续工作。缺点是node之间通信频繁,响应速度有影响,多并发、高频操作的情况下性能下降比较厉害。

2、    基于用户的负载均衡

该 种方式下,当用户发出第一个request后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的jvm路由,以后该用户的所有request都会 被绑定这个jvm路由,用户只会与该server发生交互,这种策略被称为粘性session(session sticky)。

该方法的优点是响应速度快,多个节点之间无须通信。缺点也很明显,某个node死掉以后,它负责的所有用户都会丢失session。

四、实战

1、负载均衡

    Jboss的负载均衡目前有两种方案,一是使用apache的mod_jk,二是使用jboss自带的负载均衡模块。下面分别讲解这两种配置。

mod_jk的配置

1、    请确认%apache%\modules下已经有mod_jk-1-2-13-apache-2-0-54.so文件。
2、    修改%apache%\conf\httpd.conf    在文件末尾添加:    Include conf/mod_jk2.conf
3、    在%apache%\conf下新建文件    mod_jk2.conf        文件内容如下:

# Load mod_jk module. Specify the filename
# of the mod_jk lib you’ve downloaded and
# installed in the previous section
LoadModule jk_module modules/mod_jk-1-2-13-apache-2-0-54.so
# Where to find workers.properties
JkWorkersFile conf/workers2.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer

其中JkMount /* loadbalancer的意思是,把所有的请求都发给loadbalancer处理。可以通过修改url来控制发送某些request。
4、在%apache%\conf下新建文件    workers2.properties        其内容为:

worker.list=loadbalancer,server1,server2

# Define the first node...
worker.server1.port=8009
worker.server1.host=172.16.0.116
worker.server1.type=ajp13
worker.server1.lbfactor=1
worker.server1.local_worker=1
worker.server1.cachesize=10

# Define the first node...
worker.server2.port=8009
worker.server2.host=172.16.32.88
worker.server2.type=ajp13
worker.server2.lbfactor=1
worker.server2.local_worker=1
worker.server2.cachesize=10

# Now we define the load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=server1,server2
worker.loadbalancer.sticky_session=1

其 中对于node的命名规则是worker.节点名.xxxx。所以上述文件定义了两个节点:server1和server2。8009端口是jboss默 认的ajp端口,另外需要注意的是worker.server2.lbfactor参数,它是节点的负载加权,它的值越大,获得负载的机会就越大。可以根 据node的硬件性能进行调整。worker.loadbalancer.sticky_session参数是指定是否使用粘性session。

所有需要负载均衡的节点,都必须在worker.loadbalancer.balanced_workers参数中列举出来。

请记住所有node的名称和它对应着哪台机器,后面的配置中会使用。

尝试启动apache:%apache\bin\apache.exe,正常情况下没有任何提示。如果你使用的jk是2.0的,那么配置文件的写法完全不同,由于mod_jk2已经停止开发,所以apache并没有提供任何讲解,对于配置文件的编写也没有任何指导。

Jboss自带均衡器的配置

    将文件夹%jboss%\docs\examples\varia\loadbalancer\loadbalancer.sar拷贝到%jboss% \server\all\deploy下,并且修改loadbalancer.sar\loadbalancer.sar\META-INF\jboss -service.xml,在<host>标签中类出所有节点,在<sticky-session>标签中指定是否使用粘性 session。配置完成。

    该均衡器的缺点是负载能力相对不高,配置参数太少,比如无法指定不同节点的负载加权,所以后面都以mod_jk为例,不再讲解jboss自带的负载均衡器的内容。
 

    负载均衡的配置基本完成,启动jboss,其中过程中会列出DefaultPatition中所有的节点:
run.bat  -c all



任何节点的关闭与启动都会在cluster中广播,比如加如一个新节点后,其他节点会得到以下提示:
 


2、session sticky配置

    apache应该会以粘性session的方式分发请求。部署一个应用测试一下,你会发现粘性session没有起作用。因为我们还没有给jboss配 置jvm路由( jvmRoute),apache就无法知道究竟哪些session是属于哪个节点的。我们继续往下:

    修改server1机器上的jboss的配置文件:%jboss%\server\all\deploy\jbossweb-tomcat55.sar\ META-INF\ jboss-service.xml

    在110行有:<attribute name="UseJK">false</attribute>,将它改为true。值得注意的是在这行标签上面有一段注释,要求你在server.xml中必须有:
Engine name="jboss.web" jmvRoute="Node1" defaultHost="localhost"

    请注意这里有一个气死人不偿命的小bug,jboss的官方文档把 jvmRoute写成了jmvRoute,就是v和m两个字母的颠倒让我郁闷了三天,翻遍了jboss.com和theserverside.com。都是直接拷贝的错,吐血吐到脱水啊。

    下面需要修改server1上的%jboss%\server\all\deploy\jbossweb-tomcat55.sar\ server.xml,在32行左右有:

<Engine name="jboss.web" defaultHost="localhost">

给它增加一个jvmRoute属性:

<Engine jvmRoute="server1" name="jboss.web" defaultHost="localhost">

请注意,jvmRoute的值必须和mod_jk中的节点名字正确对应,否则无法正确路由。Cluster中的所有节点都应该做相应的配置。

Jboss的配置完成了,下面需要在你的web应用中修改配置文件,让它支持集群。

在WEB-INF\web.xml中加入属性:    <distributable/>

Ok,基于用户的cluster完成了,每个用户会绑定都某个节点上进行交互。这种绑定是如何完成的呢?原来apache把客户分发到节点后,该节点会在用户的session id后面加上此节点的路由名称,变成这个样子:

Efdfxxd98daja87daj76da2dka**,server1

    有了这个标志,就能分辨该session属于哪个节点。

3、session replication配置

    下面要做的是基于request的cluster,也就让各个节点之间互相复制session状态。有两种复制模式,同步与异步。使用同步的方式, jboss会把session复制的操作和对request的响应放到一个应用事务(application transaction),session复制完成后才去处理request。异步复制则发送session复制的消息后马上处理request, session复制则会稍有延迟。但是在多框架的web页面中,这样的集群方式会有问题。由于frame在同一时间发出多个request,会造成一些混 乱,这也是采用基于用户的集群方式的原因之一。

    JBoss 4.0.2中采用了Jboss cache来实现session复制,实际上就是一个分布式缓存,由于session id中包含了jvm route,所以能够分辨session属于哪个节点。Session的更新类似于hibernate中的乐观锁,有了更新之后就让session的版本 号增加,其他节点通过对比版本号来决定是否同步session状态。

    配置session replication首先需要编辑
%jboss% server\all\deploy\jbossweb-tomcat55.sar\META-INF\ jboss-service.xml,88行左右有:
<attribute name="SnapshotMode">instant</attribute>
这 就是刚才提到的复制模式,instant为立即复制,如果设为interval 那么系统会在延迟一段时间再进行复制,时间长度在<attribute name="SnapshotInterval">2000</attribute>中指定,单位是毫秒。

单独配置这一个地方还不够,在%jboss% server\all\deploy\ tc5-cluster-service.xml中有:

<attribute name="CacheMode">REPL_ASYNC</attribute>

这里才真正决定复制是同步的还是异步的,可以指定为REPL_ASYNC(异步)或者REPL_SYNC(同步)。

在 这个文件下面一点,还有一个config标签,里面指定了各个节点在进行session复制的时候如何通信,有udp和tcp两种可选,如果使用udp方 式,那么应该将udp的lookback属性指定为true,因为windows上有一个叫做media sense的东西会影响udp multicast。注意如果你不了解multi address的ip规则,请不要随便修改mcast_addr的值。如果采用tcp方式的话,应该指定bind_addr的值为本机ip,并且在 TCPPING标签的initial_hosts属性中列出所有节点,格式是”机器名[端口号]”,比如在我们的例子中,就应该这样配置tcp(以其中一 个节点为例):

<config>
<TCP bind_addr="172.16.0.116" start_port="7810" loopback="true"/>
<TCPPING initial_hosts="172.16.0.116[7810],172.16.32.88[7810]" port_range="3" timeout="3500"
num_initial_members="3" up_thread="true" down_thread="true"/>
<MERGE2 min_interval="5000" max_interval="10000"/>
<FD shun="true" timeout="2500" max_tries="5" up_thread="true" down_thread="true" />
<VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false" />
    <pbcast.NAKACK down_thread="true" up_thread="true" gc_lag="100"
         retransmit_timeout="3000"/>
    <pbcast.STABLE desired_avg_gossip="20000" down_thread="false" up_thread="false" />
    <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="false"
print_local_addr="true" down_thread="true" up_thread="true"/>
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>
</config>

    JBoss的clustering版主建议尽量使用udp。不过在Sobey内部,建议使用tcp方式,经测试可能有不明物体在影响udp通信,导致Timeout异常。

    在%jboss%\ server\all\deploy\ cluster-service.xml中也有关于udp和tcp的配置信息,在4.0以前版本的jboss中,会以这个文件为主配置,4.0以后都以 tc5-cluster-service.xml为主配置。

    Jboss的配置完成了,最后需要在web应用中增加配置信息,控制session复制的粒度。在WEB-INF\    jboss-web.xml中增加以下内容:

<replication-config>
    <replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>
    <replication-granularity>SESSION</replication-granularity>
  </replication-config>

其中replication-trigger是指定哪些操作引发session的版本更新,它的取值有:

SET_AND_GET        
SET_AND_NON_PRIMITIVE_GET
SET

replication-granularity是复制粒度,可以取session或attribute。如果取为attribute有可能导致复制失败,这是目前版本的jboss cache的一个bug,等待修正。

部署项目,测试,如果配置没有问题,可以在%jboss%\0server\all\log\server.log中发现类似于这样的信息:

DEBUG [org.jboss.web.tomcat.tc5.session.JBossCacheManager] check to see if needs to store and replicate session with id Im9-qpuaXppMS+xXwE3M+Q**.server1

DEBUG [org.jboss.web.tomcat.tc5.session.ClusteredSession] processSessionRepl(): session is dirty. Will increment version from: 20 and replicate.

    Session replication配置的成功率比较低,情况也很复杂,请仔细操作。

五、分布式热部署(distributable hot deploy)

    在一个节点很多的cluster中,如果部署应用的时候必须把程序文件拷贝到每个机器上的话,那实在太愚蠢了,幸好通过all启动的jboss自动支持 分布式热部署。把支持cluster的应用(通常需要打包成war文件),放到%jboss%\server\all\farm下,那么处于同一 cluster中的其他节点会自动下载并且部署,jboss把这个称为Farm deploy。如下图:



End 2005-7-11 Released by bromon

作者Blog: http://blog.csdn.net/bromon/
posted @ 2007-03-21 13:40 与你同飞 阅读(335) | 评论 (1) | 编辑 收藏
 
Setup dual monitors in Fedora 6

Hardware: ATI Radeon x1300, ViewSonic LCD monitors(In fact, It can be any LCD);

Software: Fedora 6

The most important is to update ATI Driver for Fedora. Fedora 6 supports ATI Radeon x1300 by default. But it does not support two monitors(or the two monitors look like a mirror of each other).

  1. Install ATI driver for fedora(logon as root)

rpm -Uhv http://rpm.livna.org/livna-release-6.rpm
yum install kmod-fglrx xorg-x11-drv-fglrx
yum update kmod-fglrx xorg-x11-drv-fglrx

fglrx? Yes. It is for ATI Radeon.

  1. Make a copy of /etc/X11/xorg.conf, such as cp /etc/X11/xorg.conf.save, in case of any exception.

  2. Open a terminal:

# export PATH=/opt/ati/bin:$PATH

/opt/ati/bin/aticonfig --initial --input=/etc/X11/xorg.conf

aticonfig --initial=dual-head --screen-layout=right

aticonfig --dtop=horizontal --overlay-on=1

aticonfig --resolution=0,2048x768,1024x768

  1. edit /etc/X11/xorg.conf. In my case its content is below.


# Xorg configuration created by system-config-display


Section "ServerLayout"

Identifier "single head configuration"

Screen 0 "aticonfig-Screen[0]" 0 0

InputDevice "Keyboard0" "CoreKeyboard"

EndSection


Section "Files"

EndSection


Section "Module"

EndSection


Section "InputDevice"

Identifier "Keyboard0"

Driver "kbd"

Option "XkbModel" "pc105"

Option "XkbLayout" "us"

EndSection


Section "Monitor"

Identifier "aticonfig-Monitor[0]"

Option "VendorName" "ATI Proprietary Driver"

Option "ModelName" "Generic Autodetecting Monitor"

Option "DPMS" "true"

EndSection


Section "Monitor"

Identifier "aticonfig-Monitor[1]"

Option "VendorName" "ATI Proprietary Driver"

Option "ModelName" "Generic Autodetecting Monitor"

Option "DPMS" "true"

EndSection


Section "Device"

Identifier "aticonfig-Device[0]"

Driver "fglrx"

Option "DesktopSetup" "horizontal"

Option "OverlayOnCRTC2" "1"

EndSection


Section "Device"

Identifier "aticonfig-Device[1]"

Driver "fglrx"

EndSection


Section "Screen"

Identifier "aticonfig-Screen[0]"

Device "aticonfig-Device[0]"

Monitor "aticonfig-Monitor[0]"

DefaultDepth 24

SubSection "Display"

Viewport 0 0

Depth 24

Modes "2560x1024" "1280x1024"

EndSubSection

EndSection


Section "Screen"

Identifier "aticonfig-Screen[1]"

Device "aticonfig-Device[1]"

Monitor "aticonfig-Monitor[1]"

DefaultDepth 24

Option "Xinerama" "on"

Option "Clone" "off"

SubSection "Display"

Viewport 0 0

Depth 24

Modes "1280x1024"

EndSubSection

EndSection


  1. In a termainl, input “init 3” to close the X window and turn to the Text Mode.

  2. IN the Text Mode, logon as root. Input “init 5” to restart X window. As we can see, It works!

  3. If any exception occurs and Fedora can not start, please restore /etc/X11/xorg.conf with the backup copy.

posted @ 2007-03-20 10:51 与你同飞 阅读(586) | 评论 (0) | 编辑 收藏
 
Fix Oracle

The folder of Oracle locates at /usr/local/oracle/product/10.1.0/db_1

  1. Check if the environment ORACLE_HOME exists.

ORACLE_HOME=/usr/local/oracle/product/10.1.0/db_1

ORACLE_SID=TEST

  1. Open /usr/local/oracle/product/10.1.0/db_1/bin/dbstart

ORACLE_HOME_LISTNER=/usr/local/oracle/product/10.1.0/db_1

  1. CD  /usr/local/oracle/product/10.1.0/db_1/bin
  2. Start Oracle Listener

./lsnrctl start

The configuration file of the Listener locates at /usr/local/oracle/product/10.1.0/db_1/network/admin/listener.ora

  1. Start Oracle

./dbstart

  1. Make sure the content of /etc/oratab looks like the below:

            orcl:/usr/local/oracle/product/10.1.0/db_1:Y

posted @ 2007-03-15 13:28 与你同飞 阅读(196) | 评论 (0) | 编辑 收藏
 
dojo 动态增加widget(from http://www.agiletao.com/read.php?tid=555)
dojo 动态增加widget

CODE:
var dropdownDatePicker = dojo.widget.createWidget("DropdownDatePicker", {
           inputId: "redPicker",
                                width: "160px",
                                displayFormat="dd/MM/yyyy"
           
       });

var dateDiv = document.creatElement("div");
dateDiv.appendChild(dropdownDatePicker .domNode);
[Copy to clipboard]


这样就可以了。

其他拼装HTML的方式都是不可行的。要不widget都不能出来,要不event不能执行。
posted @ 2007-03-05 08:38 与你同飞 阅读(293) | 评论 (0) | 编辑 收藏
 
use SQL directly in Hibernate
please do as the below.

String hql="SELECT p.driverid, p.framestart, p.frameend, p.timestart, p.timeend" +
                    " FROM  TcnrDriverPreference p, TcnrDriver d WHERE (p.driverid=d.driverid) and (d.yardid=:yardid) and " +
                    "(p.timestart<=:timestart) and (p.timeend>=:timeend) ";
        Query query=getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql);
        query.setInteger("yardid", yardid);
        query.setTime("timestart", tcnrShift.getTimestart());
        query.setTime("timeend", tcnrShift.getTimeend());
        List<TcnrDriverPreference> list=query.list();
        List<TcnrDriverPreference> tcnrDriverPreferenceList=new ArrayList<TcnrDriverPreference>();
        for(Iterator iterator=list.iterator();iterator.hasNext();) {
            Object[] row=(Object[])iterator.next();
            TcnrDriverPreference tcnrDriverPreference=new TcnrDriverPreference();
            tcnrDriverPreference.setDriverid((Integer)row[0]);
            tcnrDriverPreference.setFramestart((Integer)row[1]);
            tcnrDriverPreference.setFrameend((Integer)row[2]);
            tcnrDriverPreference.setTimestart((Time)row[3]);
            tcnrDriverPreference.setTimeend((Time)row[4]);
           
            tcnrDriverPreferenceList.add(tcnrDriverPreference);
        }

posted @ 2007-02-27 13:36 与你同飞 阅读(227) | 评论 (0) | 编辑 收藏
 
How to config JBoss to use log4j and jdk1.5

To resolve the first problem
1. open "{jboss_home}\server\default\deploy\jbossweb-tomcat55.sar\META-INF\jboss-service.xml".
2.  <attribute name="Java2ClassLoadingCompliance">true</attribute>
      <attribute name="UseJBossWebLoader">
true</attribute>

To resolve the second problem
1. open "{jboss_home}\server\default\deploy\jbossweb-tomcat55.sar\conf\web.xml".
2. locate at "<servlet>" entry, try to find "<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>"
3. Add  2 init-params as following:
            <init-param>
               <param-name>compilerSourceVM</param-name>
               <param-value>
1.5</param-value>
            </init-param>

            <init-param>
               <param-name>compilerTargetVM</param-name>
               <param-value>1.5</param-value>
            </init-param>   

4. If we want to use Log4j.properties in our own application, modify "{jboss_home}\server\default\conf\jboss_service.xml":
    <mbean code="org.jboss.logging.Log4jService" name="jboss.system:type=Log4jService,service=Logging">
         <attribute name=
"ConfigurationURL">resource:log4j.xml</attribute>
         <attribute name=
"CatchSystemOut">false</attribute>
         <attribute name=
"Log4jQuietMode">true</attribute>
    </mbean>
posted @ 2007-02-23 17:25 与你同飞 阅读(588) | 评论 (1) | 编辑 收藏
 
Remote Debugging In Eclipse

   Most of the Java application servers, such as JBoss, Websphere, weblog, follow a rule of JPDA (Java Platform Debugger Architecture). The JPDA make it possible to have a remote debugger from the app server. The only two things we have to do are below:

     1. Enable remote debugging function of our application server; 
     2. Config parameters of remote debugging in Eclipse. 

  Here is an example of  JBoss following the above steps:

    1.  Enable remote debugging function of our application server; 
         Open ${JBoss_Home}\bin\run.bat(or run.sh for linux). Fortunately, we can find a line "rem JPDA options. Uncomment and modify as appropriate to enable remote debugging." .  So what we should do is to Uncomment the next line instead of doing anything else. After finishing it, we start the server and we can see the server is waiting for the remoting connection, prompting: Listening for transport dt_soctet at address:8787.

  2.Config parameters of remote debugging in Eclipse.

    Config Debug . Add a Remote Java Application, which is our application. Behold, the connection port must be same as it is in run.bat. The default value should be 8787. At last click "Debug" button.

 Now, we can debug the server.

PS. In order to make the debugger work properly,  The class files published must have the same version with our java source files.

posted @ 2006-11-03 16:22 与你同飞 阅读(334) | 评论 (0) | 编辑 收藏
 
Testing in Spring Project (1)-DAO Test
     摘要: This article shows how to have a dao test in the spring framework. Although it is easy, I hope it is a bit of useful for any spring beginner. Enjoy it.  阅读全文
posted @ 2006-11-03 09:57 与你同飞 阅读(1093) | 评论 (0) | 编辑 收藏
 
Reg Expression for a IP Address
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
posted @ 2006-11-02 13:20 与你同飞 阅读(203) | 评论 (0) | 编辑 收藏