Tag Archives: tips

vim 指令图解

About DB2 Catalog

Catalog node/database node: catalog tcpip node <node_name> remote <hostname> server <port_number> databse: catalog database <database_name> as <database_alias> at node <node_name> Uncatalog node/database node: uncatalog node <node_name> databse: uncatalog database <database_alias>

如何在JDialog上注册全局ESC键事件

大多数用户可能会有这么一个习惯:对于富客户端弹出的Dialog,习惯使用ESC将其关闭,而不是“叉掉它”。在Swing中,弹出窗口一般继承自JDialog类,但默认没有对ESC键事件做响应,下面这段代码可以完成这个功能: private static final KeyStroke escapeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); public static final String dispatchWindowClosingActionMapKey = "com.jayxu:WINDOW_CLOSING"; // any key string you like   public static void installEscapeCloseOperation(final JDialog dialog) { // any method name you like     Action dispatchClosing = new AbstractAction() {         public void actionPerformed(ActionEvent event) {     read more »

Mac OS X 快捷键 [zz]

原文:http://support.apple.com/kb/HT1343?viewlocale=zh_CN 摘要 了解常见 Mac OS X 快捷键。快捷键是通过按下键盘上的组合键来调用 Mac OS X 功能的一种方式。 受影响的产品 Mac OS X 10.0, Mac OS X 10.3, Mac OS X 10.2, Mac OS X 10.1, Mac OS X 10.4, Mac OS X 10.6, Mac OS X 10.5 要使用快捷键或组合键,您可以同时按修饰键和字符键。例如,同时按下 Command 键(标有 符号的按键)和“c”键会将当前选中的任何内容(文本、图形等等)拷贝至夹纸板。这也称作 Command-C 组合键(或快捷键)。 许多组合键中都包含修饰键。修饰键将改变 Mac OS X 对其他按键或鼠标点按动作的解释方式。修饰键包括 Command、Control、Option、Shift、Caps Lock 和 fn read more »

怎么把Eclipse的perspective dock放到右上角?

Eclipse很强大,osgi很灵活,PDE扩展性很强,但是,PDE实在太huge了,加上各种各样的plugin提供的extension point,以及仅仅org.eclipse.ui提供的workbench,workbenchwindow,menumanager,coolbarmanager,toolbarmanager……文档、javadoc就够你受的。今天在修一个issue,很简单,我们实现了一个standalone的基于PDE的界面,可不知道为什么,perspective dock默认出现在了左边(图一),而用户希望出现在常见的右边(图二) 看上去很简单,但是搞了半天没有搞定,上网google,找到了这篇和这篇,结论很简单,要想把dock放到右边,得调用IWorkbenchWindowConfigurer.setShowCoolBar(true);;要拿到IWorkbenchWindowConfigurer的对象,得继承IApplication,然后继承WorkbenchAdvisor,然后继承WorkbenchWindowAdvisor,最后覆盖WorkbenchWindowAdvisor.preWindowOpen()……反正就是得搞出三个类,覆盖三个方法……虽然看着麻烦点,但是能搞定的。然而,对于非standalone的PDE应用,你是不可能继承IApplication的,因为程序入口由Eclipse接管,而不是IApplication……于是上面这些research都是白做…… 于是开始看源代码,然后静态分析上面各个方法的调用关系,最后找到了这么一个方法:WorkbenchWindow.setPerspectiveBarLocation(IWorkbenchPreferenceConstants.TOP_RIGHT);,于是把着个方法放到Activator的子类里,比如这样: public class CompActivator extends AbstractUIPlugin {       @Override     public void start(BundleContext context) throws Exception {         super.start(context);           …           // put perspective dock to top-right         ((WorkbenchWindow) this.getWorkbench().getActiveWorkbenchWindow())       read more »

有关Character.isLetter()和Character.isLetterOrDigit()

在项目中有时候可能需要判断输入的是否全是英文或数字,如果你不善于使用正则,JDK中提供了Character类对字符进行操作,其中的 isLetter和isLetterOrDigit方法貌似可以做到这一点。但是如果你试下下面的代码,你会失望的: System.out.println(Character.isLetter(’中’)); System.out.println(Character.isLetter(‘中’)); 很不幸地,Java天生提供了对unicode的支持,因此在她眼里中文也是“letter”,所以上面打印出的是true……。替代方案是,使用Apache Commons子项目中的lang库,CharUtils的isAsciiAlpha和isAsciiAlphanumberic可以帮助你只对英文字母进行判断 多说一句,commons项目是个大宝库,其中提供了大量对JDK的增强API,lang库就是对java.lang的增强,比如使用反射生成toString的ToStringBuilder,使用反射生成hashCode的HashCodeBuilder,使用反射生成equals的EqualsBuilder等等,大家可以慢慢自己发掘~

如何在Hibernate中让SQLServer使用nvarchar代替varchar

有关SQLServer中varchar和nvarchar的区别可以直接去google。一般在中文系统中应该使用nvarchar作为字符串的对应类型,但是Hibernate中的默认实现SQLServerDialect使用了varchar。以下方法可以简单地转为使用nvarchar: 自己写一个dialect,继承SQLServerDialect,在构造器中将原先varchar类型的注册声明覆盖: registerColumnType(Types.VARCHAR, "nvarchar($l)"); registerColumnType(Types.VARCHAR, “nvarchar($l)”); 千万注意,“$”后面的是字段长度的占位符,是“l(ength)”,而不是数字“1”(因为看hibernate的doc时没分清“l”和“1”,浪费了我一上午去找原因) 然后在hibernate的配置文件中将hibernate.dialect的值设为你的dialect实现类就OK了

有关使用asadmin启动Glassfish的问题

这个问题是在我们之前的一个项目中发现的,在这里与大家分享 一般在命令行下启动glassfish(3.0.x)有两种方法: 先进入asadmin模式:${glassfish_home}/bin/asadmin。然后使用start-domain 直接执行:${glassfish_home}/bin/asadmin start-domain domain1 对于第一种做法,会有一个很严重的问题:当使用ssh连接至远程主机,进入asadmin并执行start-domain后,如果没有在asadmin模式下执行exit退出(并显示“Command multimode executed successfully.”)而直接关闭ssh进程(直接kill、关闭console窗口或logout),会导致glassfish服务器终止(即使start-domain已成功),此问题已被稳定重现 因此,在这里提出建议:尽量使用第二种方法启动glassfish服务器;若使用第一种方法启动,请确保退出ssh进程前在asadmin下执行exit命令 针对glassfish版本:3.0.0及3.0.1

误区!double类型做加减法不会有误差?

如果你跟我一样以为Java的double类型只有在作乘除法时才会出现误差,那试一下在Java里执行一下下面的代码: public static void  main(String[] args) {     System.out.println(44.42 + 710.79 + 44.42 +  88.85); } public static void main(String[] args) { System.out.println(44.42 + 710.79 + 44.42 + 88.85); } 执行前先猜一下结果,是会输出888.48么?还是……? 建议:对于和钱有关的计算,不论加减乘除,统一使用 BigDecimal! 然而不多久之后同事告诉我另一个BigDecimal的问题,试一下下面的代码: System.out.println(new BigDecimal(0.99).setScale(2, RoundingMode.DOWN).toString()); System.out.println(new BigDecimal(0.99).setScale(2, RoundingMode.DOWN).toString()); 结果是令人发指的0.98! 看了一下 BigDecimal(double)的源码,其中使用位操作分别提取了0.99浮点值的整数部分和纯小数部分,或者说是2的正数次幂和负数次幂部分。而这样提取出来的值纯小数部分本身就是近似的,与直接使用double类型没有本质区别,这是浮点表示法决定的,再经过2位截取后就产生了误差 而当使用BigDecimal(String)的构造器时得到的是精确值,因为该构造器将数字使用科学计数法表示,即 0.99表示为99*10^-2,这样做运算时先对齐至相同的整数位再进行计算 因此,对上面的补充是:如果要获取最精确的结果,请使用BD+字符串类型的构造器

Spring之经验教训(一)

在现在的项目中我们使用了spring + hibernate + struts的架构,在享受aop, orm, ioc, di带来的种种便利的同时,我们亦遇到了很多莫名其妙或者说刻骨铭心的教训,今天先整理两点,日后继续补充 经验一:时刻牢记,spring、hibernate对对象 进行了动态代理,尽量不要试图在动态代理后的对象上进行反射,尤其是field! 不管是hibernate的orm还是spring的声明式事务管理,都对原来的pojo、dao进行了动态代理。虽然s、h“号称”动态代理做得天衣无缝且无色无味,但是,那只是在“绝大多数情况下”,如果想对动态代理后的对象进行反射,麻烦便来了,代码片段: public static void setCreditInfoStatus(CreditInfo info, CreditType type, CreditValidateStatus status) {     …       Field[] fields = CreditInfo.class.getDeclaredFields();       for (Field f : fields) {         if (f.isAnnotationPresent(Credit.class) && f.getAnnotation(Credit.class).value() == type) {         read more »

无觅相关文章插件,快速提升流量