Month: October 2011

Maven的散乱笔记

1.maven definition   a. a build tool (like ANT)   b. a dependency management system   c. plugin   d. environment-specific configuration   e. reports 2.Conventions over configuration,比如“目录”就有一系列默认值:    a.source code is assumed to be in ${basedir}/src/main/java    b.resources are assumed to be in ${basedir}/src/main/resources    c.Tests are assumed to be in ${basedir}/src/test    d.compile …

Maven的散乱笔记 Read More »

《软件架构设计》读书笔记 – 1.定义和其它一些基本概念

《软件架构设计》温昱著 1.软件架构的定义有两点主要内容:   a.架构是component及component之间的交互,如“此系统可分为三层”,“WEB层采用了MVC“模式    b.架构是一些重要方面所作出的决策的集合,如“这样设计是为了实现可扩展性” 2."好的架构必须使关注点分离”,这是三个维度的事情:    a.通过职责来划分系统,比如分层(用到设计模式、架构模式)    b.在不同粒度上划分成类、模块、子系统(组件技术, SOA技术)    c.分离出通用部分和特定应用部分(所以才有了框架)

为什么用一个浏览器登录了,再打开一个另一种类型的浏览器时却看到自己没登录?

为什么用一个浏览器登录了,再打开一个另一种类型的浏览器时却看到自己没登录? 既然session-id保存在cookie里,那么一个浏览器存了的cookie,另一种浏览器也可以拿的到啊;一旦拿到了,就可以在服务端找到对应的session了,不是吗? 其实答案很简单:不同的浏览器的cookie存取目录不同!

Think out of box: 不要让空间先后决定时间先后

有一种思维定势: A写在B前面,A就应该先执行。 有时可以逆其道而行之,这样可以获得较好的效率(比如CPU的指令重排技术),或者实现强大功能的同时维持黑盒意义上的简单性(比如sitemesh里title的设置)

如何让框架既适用于大多数情况又适应少数情况 — 局部优先原则

如何让框架既适用大多数情况和少数情况 ? 比如大部分页面的布局都是default.jsp, 如何让某些特定页面使用自己的布局,但又不会绕开框架? 一个普适的设计原则就是“局部优先原则(我自己取的名字,不正规)”: 框架在查找布局时先查找与当前页面最接近的布局jsp,找不到再按一种规则查找上一层,直到找到default.jsp 从框架设计者的角度来看,装载布局的逻辑没有根本性变化,只不过定位布局jsp文件时采用了新的规则 从框架使用者的角度看,他们现在可以用局部的东西“覆盖”全局的东西

重温:Servlet生命周期

这篇不错: [url] http://book.51cto.com/art/200808/84955.htm[/url] 关于Servlet的线程安全问题:答案是 — 默认情况下一个Servlet只有一个实例,因此要servlet类时要谨慎注意多线程问题;或者让你的servlet类实现SingleThreadModel,这样的话每个请求都会产生一个Servlet类例 

log4j NDC: 日志里的MVC

用NDC可以实现:   1. 程序里不直接调用log语句log具体的内容,而是把可能需要log的关键值放到线程的context中 (程序=Controller, 关键值=M)   2. log4j的配置文件再通过EL选取要log的关键值 (View) NDC = Nested Diagnostic Context 还有一个类似的,叫MDC

神奇的代码覆盖检视工具:Emma

凭借Emma,你可以看到:当你的java webapp被访问一段时间后,哪些代码被执行到了,哪些没有。 这可以帮助你判断你的测试覆盖率是否足够高,也可以在生产环境上帮你找出热区代码(它的额外开销不算大,因此不用担心它影响系统性能) 它的原理是:"instrument your classes prior to deployment".改变后的字节码会生成coverage文件,然后可以用Emma分析这些文件,得出html格式的报表。