- 浏览: 19650 次
最新评论
文章列表
1. 极限法。比如,一个日历的翻页,直到一年的最后一个月,当出现下一年时,有个bug。
2. 页面覆盖法。 其实就是在一个页面里,把其他元素都点一下,看会不会对fix点有影响。
3. Sonar. 使用sonar,可以把CheckStyle,FindBugs, PMD结合在一起,形成最终的统计report。并且这些工具 都是可以定制规则的,可以很好的控制代码质量。
1. 在写代码前,先要对自己写的功能在大脑里实现一遍,也就是说先在在原理上跑通,这样在写代码的时候,就会围绕这个思路来写,就会比较清晰,有条理,出错的几率变小,可维护性增强。
2. 3W1H: What->How->Where->Why
先弄清楚这是什么,通常是定义,
然后是如何使用它,步骤是什么, 1,2,3,4。。。
再是看看在什么地方使用它。
最后一层就是why,对以上的3点提问, 为什么会有这个概念,什么要这样用,为什么用在这里。
在使用EWS api时遇到了很多问题,对于1.1.5, 存入exchange server的event都是UTC的timezone, 对于1.2,存入的exchange server是OS的timezone,(这很有成就感,因为这是客户端和服务器端的协议, 服务器端根据客户端传过来的信息,做固定的响应操作)这至少可以在OS级别设置一下,然后又出现了exchange server根据EWS传过来的version的不同,有不同的行为,比如如果是Exchange2007, 返回的event有40个属性,如果是Exchange2007_SP1,返回的event有47个属性,而且创建必须用Exchange ...
简化代码法
- 博客分类:
- Bug Fixing
今天出了一个很奇怪的问题就是,代码基本上什么都没有改,但是突然无法使用EWS api查询ExchangeServer上的Calendar数据。 结果整了一天(换服务器,换Tomcat,把代码rollback,等等),还是回家之后才搞定,其实原因很简单。关键是fix bug技巧。说实话,其实这个问题被出错信息误导了,"Connection not established", 我一直以为这应该是环境问题,代码是没有问题的,所以一直没有对代码来研究。后来,回到家,重新新建测试代码时才发现,当修改查询条件,没有数据返回时是ok的,但是有数据返回就出错了,这很容易想到是不是Exchan ...
有个ticket是关于time zone的,在本地测总是ok的,但是在国外客户那边总是fail,原来就是在获取time zone的方法中,在不同的环境中,取得time zone是不一样的。
比如这个time zone是中国的,
TimeZone timeZone = TimeZone.getTimeZone("Asia ...
模型的主要目的就是数据封装,在不同层之间相互传值。在Liferay中,可以在Impl中添加没有直接关系的数据,然后通过build-service,自动生成接口。
比如Company model, 本来是没有timezone这个属性的,这个属性是和用户关联的。但一般情况在,timezone在一个instance下是一样的。所以在加载Company信息的时候,timezone就可以一起加载了。所以在CompanyImpl中添加getTimezone方法,用UserLocalServiceUtil.getDefaultUser().getTimeZone()方法获取timezone.
所以对模型 ...
1. 页面显示
<%
String tabs1 = ParamUtil.getString(request, "tabs1", tabs1Default);
PortletURL tabs1URL = renderResponse.createRenderURL();
tabs1URL.setParameter("struts_action", "/calendar/view");
tabs1URL.setParameter("month", String.valueOf(selMon ...
Exchange Calendar Porject Summary
1. 项目简介
客户需要一个Showcase,也就是一个demo。项目的主要功能是将Liferay Calendar portlet 与Exchange Server进行同步,也就是说用我用outlook添加一个事件,通过同步,我可以在Liferay Calendar portlet中看到,反之亦然.
2. 项目过程中的不足
2.1 理解上的误解
听到Showcase,就认为是一个demo,可以随便做,把核心功能完成就可以了。这是不对了,这是你单方面的理解,需要和客户确认的,要做哪些功能,是需要写出 ...
不错的文章
http://www.cnblogs.com/shiyangxt/archive/2008/08/07/1263054.html
ant
- 博客分类:
- Apache Projects
Ant 运行原理,有点像自定义标签,背后都是Java类在执行功能,前面是标签,然后就是标签和类的映射。
Ant在编译时类加载路径是如何指定的?
http://blog.csdn.net/a0501bqzhxy/article/details/6074816
apache server
- 博客分类:
- Apache Projects
源代码目录
https://www.ibm.com/developerworks/mydeveloperworks/blogs/pgy/entry/httpd_e6_ba_90_e7_a0_81_e5_88_86_e6_9e_9014?lang=en
1. 什么是线程安全?
同一处代码,被多个线程执行,每个线程执行完的结果都是预期的结果,我们就说这段代码是线程安全的。反之,线程不安全。 线程安全问题的根本是全局变量的访问问题, 比如Servlet有一个属性,这个属性就要考虑线程安全问题,所以我们说,Servlet是线程不安全的。
2. 解决线程安全问题的办法。
a. 使用synchronized key word. 原理是使用锁,当一个线程执行一段代码的时候加上锁,此时如果另外一个线程想来执行这段代码,就必须等待,直到上个线程结束。
b. 使用ThreadLoale对象,将那个可能产生线程安全问题的变量存入ThreadLoacl ...