Java Web技术经验总结(七)

  1. apache-commons-collections升级
    apache-commons项目群的地址在:link。最近开发时发现,原来的apache-commons-colllections依赖库不能用了,然后去官网查了下,发现近期apache-commons-collections进行了迁移。如下所示:

    Java Web技术经验总结(七)_第1张图片
    apache-commons项目迁移

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


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

  1. 在HashMap中,如何使用可变对象作为key?
    参考:Java 用自定义类型作为HashMap的键
  2. 在JavaWeb开发中,你需要掌握的MySQL知识,可以参考:MySQL总结这篇文章。
  3. insertOrUpdate语句,通过Insert...values() on duplicate key update ....语句实现,这里有两点需要注意:
  • 影响行数:insert 1、update 2、和当前row的值完全相同则为0;
  • select LAST_INSERT_ID() 返回值:在insert ... on duplicate key update...语句中,insert返回刚刚插入的记录的ID;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 }'

本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。


Java Web技术经验总结(七)_第2张图片
javaadu

你可能感兴趣的:(Java Web技术经验总结(七))