Java

extremeTable比displayTag好用

跟displayTag相比,有下列优点:   1.提供表内搜索功能,不需要手工开发搜索程序   2.排序时是整表排序,而不是像displayTag那样只能页内排序  

不要直接重用DB Connection

Connection每次用时最好重新建一下,用完之后销毁 否则,很容易导致死锁 除非你用了数据库连接池(连接池保证睡眠中的Connection是“干净”的)

树型表结构的查询优化

    一个对象在业务逻辑上是一棵树,那它在数据库里就是由若干个表通过外键关联组成的树。 如何从数据库中取出这棵树?     比较优雅的做法是采用先序遍历的办法:先从树根表读出树根,在JAVA世界变成树根Bean,然后用同样的办法读出它的子树,再把子树BEAN设置为树根的属性。   这种做法优雅是优雅,但是速度慢,因为查一次,就要跟数据库服务器连一次,就要增加一次数据库IO。这是不行的。即使用了数据库连接池,开销还是很大    为了减少网络开销,应该先将数据从数据库中一次性取出,然后拿到JAVA世界中进行拆解。这样速度可以明显改善,代价是编程麻烦。 在数据库端要写一个存储过程,先读出树根记录到一个临时表,然后再将子树表逐个与该临时表连接,查出子树记录放入子树临时表,然后再将“孙”树表。。。,最后返回各个临时表的记录集。  在JAVA程序这边,还要用原始的JDBC语句一步一步地处理这种多重结果集,然后又一个一个地拆解

文件传输过程中的读写锁问题

1.从FTP下载文件未完时    目标文件可读    目标文件不可写 2.WINOWS本地拷贝文件未完时    目标文件的内容不可读("另一个程序正在使用此文件,进程无法访问。"),但是文件的最后修改时间可读    目标文件不可写 3.用FileInputStream和FileOutputStream在Windows本地拷贝时    目标文件可读    目标文件不可写 4.用Runtime.exec("cp.bat"),其中cp.bat=copy xx yy     目标文件不可读    目标文件不可写

优化AppFuse 1.9.3 SpringMVC IBatis:去除Bug

       我在使用 AppFuse_1.9.3_SpringMVC_IBatis 时发现了一些Bug,现在我把这些bug给出来,并提供个人的解决办法。不过,有的BUG我在处理时只记录了解决办法,却没有记录问题,不好意思……     Bug1: 不记得了……    解决办法:UserDaoiBatis.java文件中有句话        List userRoles = getSqlMapClientTemplate().queryForList("getUserRoles", user.getUsername());        其中的getUsername()应改为 getId()       或者直接去掉这句话,因为它没有任何作用     Bug2:在后台为某用户分配多个角色,结果该用户只获得了所选角色中的第一个     解决办法:在UserDaoiBatis.java文件中找到        if (userRoles.isEmpty()) {                      getSqlMapClientTemplate().update("addUserRole", newRole);                  }        然后去掉这个 if条件    Bug3:admin menu按权限显示时出莫名奇妙的问题     解决办法:将struts-menu版本升级到 2.4.3,并将cssHorizontalMenu.vm 和 cssVerticalMenu.vm替换为 appFuse2.0中的版本。      Bug4:不记得了……        解决办法:UserFormController中的             return new ModelAndView(new …

优化AppFuse 1.9.3 SpringMVC IBatis:去除Bug Read More »