香草的天空::Vanilla Sky

 
 

常用链接

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

留言簿(2)

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

随笔分类

  • J2EE (rss)
  • Java/J2EE的奇怪问题(1) (rss)
  • Perl (rss)
  • 安装/编译/配置 (rss)
  • 灌水区 (rss)
  • 读Java源代码 (rss)

随笔档案

  • 2008年2月 (7)

文章档案

  • 2008年2月 (2)

搜索

  •  

最新评论

  • 1. re: 也被税务局找上了
  • 找你干啥?找你一起发财?
  • --魔域私服
  • 2. re: 如何在代码中检查出有字符串相加的情况?
  • 评论内容较长,点击标题查看
  • --香草的天空
  • 3. re: 如何在代码中检查出有字符串相加的情况?
  • StringBuffer大多时候不如+可读性高,尤其当只有两三个字符串拼接时,写成StringBuffer性能不会有多大提升,而可读性下降,非常不值得。
  • --鼠标
  • 4. re: 如何在代码中检查出有字符串相加的情况?
  • 思路不错……
  • --uwxy
  • 5. re: 如何在代码中检查出有字符串相加的情况?
  • 评论内容较长,点击标题查看
  • --pover

阅读排行榜

  • 1. 动态载入jdbc 驱动Jar。J2SE4-J2SE5专用(383)
  • 2. 读Hibernate3.2代码,(一)Configuration(322)
  • 3. MalformInputException,fontmanager.dll错(245)
  • 4. SVN Source Host(204)
  • 5. 原来在Sametime里点击下照片素会放大滴,小白了(201)

评论排行榜

  • 1. 也被税务局找上了(1)
  • 2. SVN Source Host(0)
  • 3. 读Hibernate3.2代码,(一)Configuration(0)
  • 4. 随便聊聊(0)
  • 5. 原来在Sametime里点击下照片素会放大滴,小白了(0)

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

置顶随笔

[置顶]SVN Source Host
svn checkout http://allenofchina-db.googlecode.com/svn/trunk/ allenofchina-db-read-only



HP:http://heyesh.hp.infoseek.co.jp/
posted @ 2008-02-19 09:17 香草的天空 阅读(204) | 评论 (0) | 编辑 收藏
 

2008年2月29日

MalformInputException,fontmanager.dll错
如果是报在ByteToCharGB18030的话,
删除奇怪的中文字体(最好把非windows自带的东亚字体都删掉)
posted @ 2008-02-29 10:58 香草的天空 阅读(245) | 评论 (0) | 编辑 收藏
 

2008年2月23日

也被税务局找上了
其实税务局那群人肯定一年超过12万的,他们不申报却来找我?
没天理

posted @ 2008-02-23 15:36 香草的天空 阅读(182) | 评论 (1) | 编辑 收藏
 

2008年2月19日

SVN Source Host
svn checkout http://allenofchina-db.googlecode.com/svn/trunk/ allenofchina-db-read-only



HP:http://heyesh.hp.infoseek.co.jp/
posted @ 2008-02-19 09:17 香草的天空 阅读(204) | 评论 (0) | 编辑 收藏
 

2008年2月18日

读Hibernate3.2代码,(一)Configuration
OpenSource的东西有点好处就是有问题随时可以看代码解决。
但是读代码也有诀窍,就是尽可能的抓住和你有关的那部分,不要在一大堆代码里浪费时间。

第一个挑出org.hibernate.cfg.Configuration。因为这个东西用得最多。

例如addXXXX方法最后都调用到add方法,一下子就可以跳过N多段代码直接看add方法

    protected void add(org.dom4j.Document doc) throws MappingException {
        HbmBinder.bindRoot( doc, createMappings(), CollectionHelper.EMPTY_MAP );
    }


bindRoot方法稍微看了一下,一看到是解析xml的,就可以跳过不看。其实猜也能猜到是解析hbm.xml的。

有意思的是".hbm.xml"在里面是固定写死的,连个constant 变量都没有做,看来作者以后是不打算改了

且看addDirectory方法
    /**
     * Read all mapping documents from a directory tree.
     * <p/>
     * Assumes that any file named <tt>*.hbm.xml</tt> is a mapping document.
     *
     * 
@param dir The directory
     * 
@return this (for method chaining purposes)
     * 
@throws MappingException Indicates problems reading the jar file or
     * processing the contained mapping documents.
     
*/
    
public Configuration addDirectory(File dir) throws MappingException {
        File[] files 
= dir.listFiles();
        
for ( int i = 0; i < files.length ; i++ ) {
            
if ( files[i].isDirectory() ) {
                addDirectory( files[i] );
            }
            
else if ( files[i].getName().endsWith( ".hbm.xml" ) ) {
                addFile( files[i] );
            }
        }
        
return this;
    }

这段代码告诉我们什么?告诉我们".hbm.xml"素区分大小写的。。。。.HBM.XML这样的后缀名作者不打算接受。。。

posted @ 2008-02-18 23:37 香草的天空 阅读(322) | 评论 (0) | 编辑 收藏
 

2008年2月15日

随便聊聊
很多人都写代码,很多人都想写优雅的代码。
但是我觉得其实太过吹毛求疵了,大部分人都是因为OOP这样说,所以我就要这样写。

其实几年j2ee做下来,大框架搭好以后,里面的具体实现要求并不高。我觉得好的代码就两个要求,一正确二简洁。

做到这两条其实很不容易。正确就要求你代码里不留可能会出bug的地方。写分支的时候是否考虑全面?有没有漏掉?是否够强壮,有没有让别人攻击的漏洞。
很多网站一出错就把stacktrace打在网页上(yes,.net就素),这种都很容易让人攻击。还有SQL Injection,这种都素要出大乱子的事。

二是简洁,正确的代码一般都是简洁的,这是我的认为。起变量名也好,写if/else也好,我看下来100个人有100种写法。
别笑,有哪个公司里的coder对同一个东西,比如权限,比如用户名,起的变量名都是一样的?
说到底现在软件业就是工业化,大规模开发。两台同一型号的电视机拆开来里面是一模一样的,但是打开两个相同功能的代码里面都是千奇百怪的。

总之来说其实测试的要求要高于代码,而且隐藏在深处的bug往往是测试出来bug的几倍。可是这里很少讨论怎样挖空心思测bug阿,可惜。

这只是说代码。最基本的。
posted @ 2008-02-15 20:29 香草的天空 阅读(174) | 评论 (0) | 编辑 收藏
 

2008年2月14日

原来在Sametime里点击下照片素会放大滴,小白了
额滴神呀,Sametime居然还有这功能捏
posted @ 2008-02-14 14:10 香草的天空 阅读(201) | 评论 (0) | 编辑 收藏
 

2008年2月12日

动态载入jdbc 驱动Jar。J2SE4-J2SE5专用
有的时候jdbc驱动它不是放在classpath里的,而是要你写程序动态载入的。
J2SE6有API给你修改classpath,但是4-5版本里就只有用URLClassLoader载入。
问题是,URLClassLoader载入的类,在SystemClassLoader里还是找不到。
举个例子就是

   
URLClassLoader classLoader = new URLClassLoader(new URL[]{file.toURI().toURL()});

classLoader.loadClass(driverClass); 
// OK

Class.forName(driverClass);  
// NG

Class.forName(driverClass,
true,classLoader);// OK

只有用Class.forName(String,boolean,ClassLoader)这样指定ClassLoader才能找的到这个类。
但是有些Pool,比如C3P0,他没有考虑到这一点,还是用SystemClassLoader去load,每次都报找不到驱动,搞得我很痛苦。

先想了一个walkaround,就是自己写一个DataSource。这里我写点大意代码。

URLClassLoader classLoader = new URLClassLoader(new URL[]{file.toURI().toURL()});

Class clazz 
= classLoader.loadClass(driverClass); // OK

Driver driver 
= (Driver)clazz.newInstance();

// 

private class URLDataSource implements DataSource {



 
/* (non-Javadoc)
         * @see javax.sql.DataSource#getConnection(java.lang.String, java.lang.String)
         
*/
        
public Connection getConnection(String username, String password) throws SQLException {
            
// TODO Auto-generated method stub
            Properties props = new Properties();
            props.setProperty(
"user", username);
            props.setProperty(
"password", password);
            
return driver.connect(jdbcurl, props);
        }


}
这样就可以取到一个自己的DataSource,可以先把其他的代码进行下去,以后可以再回到这里慢慢完善。

posted @ 2008-02-12 12:16 香草的天空 阅读(383) | 评论 (0) | 编辑 收藏
 
仅列出标题