`
文章列表
集成层模式:   数据访问对象:Data Access Object。提炼和封装对持久化存储介质的访问。DAO封装了数据源的实现细节,总是面向API调用者提供统一的接口。DAO应当被实现为无状态的对象,这样就可以成为轻量的对象,不需要考虑线程、同步、缓存等问题,而把这些问题下沉到数据层去完成。 以我参与的项目的缓存的使用举例,模型DAO并不做任何的缓存行为,数据库使用自身的缓存能力,并且在必要时冗余字段,这是基于数据粒度的基础缓存;到了调用DAO的业务层面,比如Service层,才进行业务模型粒度的缓存,比如缓存某些用户对象等;而DAO层实现了基础DAO的约束,继承了Spring给DAO封 ...
业务对象:利用对象模型把业务数据和业务逻辑分离开来。业务对象在最前端(客户端)和最后端(数据资源)都会进行业务数据形式的转化。业务对象的实现通常有两种方式:POJO + JDO 或者 Entity Bean + BMP/CMP。业务对象包含业务逻辑和业务状态。 J2EE系统中面向过程向面向对象转变有时甚至仅仅区别于最初的一念之差。没有什么是绝对的事情,如果业务非常简单,客户端通过浅浅的显示层,直接访问持久层、甚至数据资源存储中业务数据,整个过程中,其结构都是依据客户端所需数据的获取过程来完成的,是典型的面向过程的实现方式,没有什么不合理;但一旦情况复杂了,你也许希望在系统中设定一些核心的业务模 ...
业务层模式:   业务代表:Business Delegate。封装对业务服务的访问,隐藏服务层具体实现细节,主要为降低客户端和服务层之间的耦合。除了隐藏服务细节、处理服务异常等基础功能以外,还可以做服务的缓存。业务代表是客户端的直接客户,起到客户端业务抽象层的作用,而业务代表的另一头,常常连接着会话门面。 比较常用的情况就是在某种远程连接和业务处理的基础上,使用业务代表把这些细节统统包装起来,给内部提供的模型也好API也好,都是和外部接口相异的。比如一个系统中对于展现的内容数据的同步,以及订购、使用等业务流程,都由SOAP消息载体来协助完成,那么封装起SOAP消息这种底层行为的PCMP模 ...
函数式编程已经有比较长的历史了,如今的动态语言,很大程度上也受到了函数式编程(反过来名叫命令式编程)的启发。 在函数式编程语言中,当你写了一个函数,接受一些参数,那么当你调用这个函数时,影响函数调用的 ...
复合视图:Composite View。使用由多个原子化的子视图构成的复合视图。特点是组合是可以动态的,而页面布局又可以整体控制,和页面内容互相独立。 有这么几个常见的例子:Portlet就是一个复合视图结合的最好例子,主题可以 ...
我看的资料和这幅图有一些出入。 资料要去这里找:http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html   表现层模式:   拦截过滤器:Intercepting Filter。正如图中的“Apply zero or more”和Servlet规范所述一样,应当具备一个链 ...
第1章:导论。 模式能够: 利用一个经过验证可行的解决方案; 提供一套通用词汇; 约束解决方案的空间。   第2章:表现层设计考虑和不佳实践。 客户端验证:基于表单的验证、基于抽象类型的验证。 曾经在JSP中滥用过的助手类,通过助手类在页面和业务逻辑之间传递数据,有点类似于如今Struts中的Action作为传值模型时的情况。 表现层不佳实践: 多个视图中都包含控制代码; 表现层数据结构暴露给业务层或者业务领域对象,比如:暴露HTTPServletRequest; 重复提交表单; 敏感资源暴露给客户端直接访问,有个原则,敏感的东西不能放在WEB-INF之外; 胖控制器 ...
项目中遇到了一个潜在的问题,大致就是说,在一个流程的两个或某几个环节中,需要短暂地存储一部分对象(如果不存储,就需要在这几个环节中多次调用同一个外部接口,这被认为是不够合理的实现)。 而这部分对象的存储: (1)如果用request,太小,毕竟一次提交以后就丢失了,如果需要往后传递,可能需要借助一些页面参数传值等丑陋或是不易控制的方法; (2)如果用session,太大,我不需要在整个用户会话生命周期内使用,而且如果同个用户并行地操作两个流程,期间会互相影响到。   其实在Rails/Grails里面就已经包含了一个机制,它将对象短暂地放置在session中,request-respo ...
这则教程是使用Ant的JavaScript和XSLT的汇总,阅读对象适合于中高级的WEB界面开发者。简述之,见笑了。 这则教程来自于Ant使用的邮件列表和手册,社区和论坛提供了更多的和更新的资讯,如果有一些涉及到不公开和版权的问题,请联系作者修改内容。 本文档中所有的邮件地址都做了反网络爬虫处理,替换at为@就是真正的邮件地址。 警告:不对本文的正确性、及时性以及由本文造成的损失负责。本文版权属于开源社区,可以自由拷贝、修改、转帖,请对自己复制和转发等行为负全责。 最新文档参见:http://www.sitepen.com/ant/javascript.html.   啥是Ant? ...
本人也稍微用了一些脚本语言了,可是在同事的反馈给我的印象中,脚本语言似乎从未得到正名,似乎总是寒酸和小打小闹的代名词。我在做一个门户网站,身边有一些公司和某一些开发人员,总是对于页面上的技能很轻视,殊 ...
Change Log见此: http://tomcat.apache.org/tomcat-7.0-doc/changelog.html 看看都有什么新Feature(最显著的三个特征是Servlet 3.0,内存检测泄露和增强的安全特性):1. 使用随机数去防止跨站脚本攻击;2. 改变了安全认证中的jessionid的机制,防止session攻击;3. 内存泄露的侦测和防止;4. 在war文件外使用别名去存储静态内容;5. 对Servlet 3.0,JSP 2.2和JSP-EL 2。2的支持;6. 更容易将Tomcat内嵌到应用去中去,比如JBoss;7. 异步日志记录。 详细分解: 1 ...
提到Raphaël,就得先说说SVG,可缩放矢量图形(Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG由W3C制定,是一个开放标准。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。   SVG图形格式优点: 1. 图像文件可读,易于修改和编辑 2. 与现有技术可以互动融合。例如,SVG技术本身的动态部分(包括时序控制和动画)就是基于SMIL标准。另外,SVG文件还可嵌入JavaScript(严格的说应该是ECMAScript)脚本来控制SV ...
模式编程(programming to the patterns) JS的通用库最基本的目的是给你解决浏览器兼容性差异,Prototype和JQuery是做得最好的两个库。 JQuery对Dom的DSL化封装,还有对method chain的大量使用,几乎让你感觉在声明行为,所以它让非常多的对啰嗦的Dom编程厌烦的前端程序员迅速“上瘾”。但是,我们知道DSL化的JQuery还不够,因为它很好的解决了可读,但是并不一定容易维护(尤其是过度使用method chaning)。 其实Javascript的各种Widget库(如ExtJS、Dojo和YUI的widget库)都做到更好的复用。缺点是 ...
一年一度的JSConf大会又召开,这是2010的官网 http://jsconf.us/2010: 真是够简陋的。 其中的Sliders请看这里:http://devthought.com/2010/05/03/jsconf-2010-slides Chris Williams 和 Iterative Designs 创立了JSConf,这是JavaScript开发者的第一个专业会议。这应该是在2009年 http://jsconf.us/2009: 09年其实还有Mix09、Velocity09、YUIConf2009等会议引人耳目,希望哪天我也可以去看一看 :) 来看看JC ...
JSConf2010的重要议题之一:node.js。 不要觉得服务器端JavaScript是个新概念。其实老早就有了,从九六年Netscape普及JavaScript的时候,服务器端和客户端都是考虑到了的,只不过只有客户端健壮发展起来了,服务端的故事直到现在才被慢慢提起。 看看有什么优势: 最大的优势,不过是统一了服务端和客户端的开发语言,真正可以看到客户端服务端一起开发和一统天下的格局,兴许对开发人员的要求能降低?可以真正看到服务端的代码到了客户端一样重用。不仅仅是数据模型,也保证了一些业务逻辑可以同样地被执行。 JavaScript引擎的发展,Chrome似乎是目前最好的了: ...
Global site tag (gtag.js) - Google Analytics