摘要:
对代码审查研究有一段时间,觉得代码审查并不是一个一触而就的工作,对于一个适应了快速开发而缺少代码审查的团队来说,突然让他们花时间去审查别人的代码,我想很多人都会存在抵制情绪,也不知该如何下手,这样无疑会增加人力开销,同时也不会取得太理想的效果。所以在我看来,代码审查需要建立在一个书写代码规范的基础之上。 对于每一个成熟的开发团队来说,一定会有自己的代码规范,如果大家都按照规范的书写,那无疑会使代码很规范,大大减少维护成本和再次开发成本。但是实际当中是,很多人会忽视这些规范,缺少注释,按照各自喜欢的风格写代码,最后的结果可想而知。经常在想,我们再抱怨前人写的代码乱糟糟的时候,会不会不久的某... 阅读全文
摘要:
使用JDK创建代理有一个限制,即他只能为接口创建代理实例,这一点我们可以从Proxy的接口newProxyInstance(ClassLoader loader,Class[] interfaces,InvocationHandler h)的方法签名中就看得很清楚:第二个参数interfaces就是需要代理实例实现的接口列表。对于没有通过接口定义业务方法的类,如何动态创建代理实例呢?JDK的代理技术显然已经黔驴技穷,CGLib作为一个替代者,填补了这个空缺。 CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,并顺势织入横切逻辑。... 阅读全文
摘要:
一、Spring in Action (转自:http://blog.163.com/zhang-_-jie/blog/static/16178437820105821120822/) FreeMarker比Velocity复杂一点点,但这只是它比Velocity的功能强大一点点的结果。FreeMarker提供了对一些常用任务的内置支持,比如日期和数字的格式化,以及去除空白字符。在Velocity中,这些特性只有通过附加工具才能实现。1、配置FreeMarkerConfigurer<bean id="freeMarkerConfigurer" class=" 阅读全文
摘要:
java.util.Locale的主要用途是什么?java.util.Locale主要在软件的本地化时使用。它本身没有什么功能,更多的是作为一个参数辅助其他方法完成输出的本地化。 import java.util.Locale; public class LocaleOne { public static void main(String[] args) { Locale myLocale = Locale.getDefault(); System.out.println(myLocale.getCountry()); ... 阅读全文
摘要:
这里对freemarker的代码进行了修改,效果:1,请求.do的URL时直接生成对应的.htm文件,并将请求转发到该htm文件2,自由控制某个页面是否需要静态化原理:对org.springframework.web.servlet.view.freemarker.FreeMarkerView类进行扩展第一步:在web.xml中将*.do请求交给SpringMVCXML code<servlet> <servlet-name>demo</servlet-name> <servlet-class>org.springframework.web.se 阅读全文
摘要:
HIBERNATE - 符合Java习惯的关系数据库持久化HIBERNATE - 符合Java习惯的关系数据库持久化Hibernate参考文档3.1.2目录前言1. 翻译说明2. 版权声明1. Hibernate入门 1.1. 前言 1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射Person类 1.3.2. 单向Set-based的关联 1.3.3. 使 阅读全文
摘要:
(出处: http://blog.csdn.net/xdgOfloadrunner/article/details/4131604)HQL查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。完整的HQL语句形势如下: Select/update/delete…… from ….. 阅读全文
摘要:
(出处: http://blog.csdn.net/qiulongtianshi/article/details/7776694)引言前面我们详细介绍了Spring MVC(轻松上手SpringMVC),那我们是否应该反问自己我们常用的轻量级WEB框架Struts1,Struts2和Spring MVC有什么区别?我们什么时候用?各个框架之间有什么好处?我想大家都想研究一下这个问题吧,那就下面由我拉开PK大幕:第一项:各个框架简介第二项:重点框架PK一:Struts1.x第一:配置导入struts1.x的jar包到web-inf/lib下面在web-inf目录下新建struts-config. 阅读全文
摘要:
JDK动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。其中InvocationHandler动态创建一个符合某一接口的实例,生成目标类的代理对象。首先写一个接口ForumService.java及其实现类ForumServiceImpl.java ,主要包括二个方法,删除主题removeTopic 和 删除removeForum。代码如下:public class ForumServiceImpl implements ForumService { @SuppressWarnings("static-access&qu 阅读全文
摘要:
在项目中,如果需要一次性插入或更新多条记录,当然可以简单地通过多次调用update()方法完成任务,但这不是最好的实现方案。更好的选择是使用JDBCTemplate批量数据更改的方法。一般情况下,后者拥有更好的性能,因为更新的数据将被批量发送到数据库中,它减少了对数据库访问的次数。JDBC有2个批量数据操作的方法: public int[] batchUpdate(String[] sql) 多条SQL语句组成一个数组,注意此处的sql语句不能带参数,该方法以批量方式执行这些SQL语句。Spring在内部使用JDBC提供的批量更新API完成操作,如果底层的JDBC Driver不支持批... 阅读全文