`
文章列表

程序员如何测试

 
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

在使用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 ...

简化代码法

今天出了一个很奇怪的问题就是,代码基本上什么都没有改,但是突然无法使用EWS api查询ExchangeServer上的Calendar数据。 结果整了一天(换服务器,换Tomcat,把代码rollback,等等),还是回家之后才搞定,其实原因很简单。关键是fix bug技巧。说实话,其实这个问题被出错信息误导了,"Connection not established", 我一直以为这应该是环境问题,代码是没有问题的,所以一直没有对代码来研究。后来,回到家,重新新建测试代码时才发现,当修改查询条件,没有数据返回时是ok的,但是有数据返回就出错了,这很容易想到是不是Exchan ...

Time zone

有个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

 
Ant 运行原理,有点像自定义标签,背后都是Java类在执行功能,前面是标签,然后就是标签和类的映射。   Ant在编译时类加载路径是如何指定的?   http://blog.csdn.net/a0501bqzhxy/article/details/6074816

apache server

源代码目录   https://www.ibm.com/developerworks/mydeveloperworks/blogs/pgy/entry/httpd_e6_ba_90_e7_a0_81_e5_88_86_e6_9e_9014?lang=en

nio

这个文章不错 http://www.iteye.com/topic/834447  

线程安全

1. 什么是线程安全? 同一处代码,被多个线程执行,每个线程执行完的结果都是预期的结果,我们就说这段代码是线程安全的。反之,线程不安全。 线程安全问题的根本是全局变量的访问问题, 比如Servlet有一个属性,这个属性就要考虑线程安全问题,所以我们说,Servlet是线程不安全的。 2. 解决线程安全问题的办法。 a. 使用synchronized key word. 原理是使用锁,当一个线程执行一段代码的时候加上锁,此时如果另外一个线程想来执行这段代码,就必须等待,直到上个线程结束。 b. 使用ThreadLoale对象,将那个可能产生线程安全问题的变量存入ThreadLoacl ...
Global site tag (gtag.js) - Google Analytics