Java Web架构设计收藏

Java Web技术经验总结(七)

2016-06-30  本文已影响1786人  程序熊大
  1. apache-commons-collections升级
    apache-commons项目群的地址在:link。最近开发时发现,原来的apache-commons-colllections依赖库不能用了,然后去官网查了下,发现近期apache-commons-collections进行了迁移。如下所示:

    apache-commons项目迁移
  2. MyBatis中,#和$符号的区别?SQL的参数读取要用#,表示占位符;给出如下SQL语句:

<select id="getByKpInPaging" resultMap="calllogNumberOutgoingBeanResultMap">
    SELECT
      DISTINCT a.number, a.outgoing_count, b.name, b.icon
    FROM
         a_detail a outer join b_detail b
    WHERE
      calllog.kp=#{kp}   AND  contact.kp=#{kp}     AND      contact.number=calllog.number
   LIMIT #{start}, #{pageSize}
</select>

如果我在获取kp参数的时候使用#符号,则执行过程中,参数会以占位符的形式出现,并按照参数的类型赋值。当表中该参数有索引的时候,只有类型对才能用到索引。例如,这里的kp在表中有索引,那么只有用#{}传入参数才可用到索引。如果用$符号,则MyBatis会做明文替换,传递给MySQL的SQL语句也没有指定正确的数据类型,就用不到kp的索引。

  1. 在HashMap中,如何使用可变对象作为key?
    参考:Java 用自定义类型作为HashMap的键
  2. 在JavaWeb开发中,你需要掌握的MySQL知识,可以参考:MySQL总结这篇文章。
  3. insertOrUpdate语句,通过Insert...values() on duplicate key update ....语句实现,这里有两点需要注意:
  1. 通过正则表达式匹配正确的IP4地址,参考link正则表达式如下:
^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
  1. 在Spring MVC项目中,可能需要添加业务监控日志,我们这里用到Spring AOP功能。在Controller中添加AOP,可能会出现拦截方法不生效的情况,这种情况可以参考SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式);另外,也可以利用filter、mvc interceptor或者method intercetpor实现,对于需要统计方法的运行时间,使用method interceptor最合适,参考使用方法拦截器MethodInterceptor和AOP统一处理log

  2. 开发过程中的代码质量规范,利用google check style规范,在intelij idea中也有对应的check-style插件可供使用。

  3. 在开发的过程中,有时会对某个项目的代码行数感兴趣,对于git管理的代码库,可以使用如下命令统计:

git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s removed lines: %s total lines: %s\n", add, subs, loc }'
上一篇下一篇

猜你喜欢

热点阅读