摘要: 作者:niumd Blog:http://ari.iteye.com 转载请注明出处,谢谢 开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务。之初,曾有个小小的疑问为何不采用开源的apache、Nginx软件负载,F5设备动辄几十万,价格昂贵?自己一个比较幼稚的问题,后续明白:F5是操作于IOS网络模型的传输层,Nginx、apache是基于http反向代理方式,位于ISO模型的第七层应用层。直白些就是TCP UDP 和http协议的区别,Nginx不能为基于TCP协议的应用提供负载均 阅读全文
posted @ 2012-07-24 09:26 blogs_lw 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务。之初,曾有个小小的疑问为何不采用开源的apache、Nginx软件负载,F5设备动辄几十万,价格昂贵?自己一个比较幼稚的问题,后续明白:F5是操作于IOS网络模型的传输层,Nginx、apache是基于http反向代理方式,位于ISO模型的第七层应用层。直白些就是TCP UDP 和http协议的区别,Nginx不能为基于TCP协议的应用提供负载均衡。了解了二者之间的区别于应用场景,对Nginx产生浓厚的兴趣,阅读张宴的<实战Ngi 阅读全文
posted @ 2012-07-23 20:45 blogs_lw 阅读(6334) 评论(0) 推荐(0) 编辑
摘要: Interceptor(拦截器)将Action共用的行为独立出来,在Action执行前后运行。这也就是我们所说的AOP(Aspect Oriented Programming,面向切面编程),它是分散关注的编程方法,它将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一旦行为发生变化,不必修改很多类,只要修改这个行为就可以。Interceptor将很多功能从我们的Action中独立出来,大量减少了我们Action的代码,独立出来的行为具有很好的重用性。XWork、WebWork的许多功能都是有Interceptor实现,可以在配置文件中组装Action用到的Interce 阅读全文
posted @ 2012-07-13 12:29 blogs_lw 阅读(1363) 评论(1) 推荐(0) 编辑
摘要: 1 package eff; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.InvocationTargetException; 5 6 /** 7 * 8 * @author lw 9 * 10 */ 11 public class SingleSimpleTest { 12 public static void main(String[] args) { 13 try { 14 testSi... 阅读全文
posted @ 2012-07-12 13:39 blogs_lw 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 1 package eff; 2 3 /** 4 * 如果类的构造器或者静态工厂中具有多个参数,设计这种类时, 5 * Builder模式就是不错的选择,特别是大多数参数都是课选的时候。 6 * 相对于javaBean较为安全,适用于多个可选参数的对象创建。 7 * 8 * @author lw 9 * 10 */11 public class NutritionFacts {12 // required13 private final int servingSize;14 private final int servings;15 // o... 阅读全文
posted @ 2012-07-12 12:06 blogs_lw 阅读(192) 评论(0) 推荐(0) 编辑
摘要: freemarker数字格式化 freemarker在解析数据格式的时候,自动默认将数字按3为分割(1,000),这个问题给操作带来一定的额外处理复杂度,解决方法有如下几种: 1、在模板中直接加.toString()转化数字为字符串,如:${languageList.id.toString()}; 2、在freemarker配置文件freemarker.properties加number_format=#或者number_format=0; 3、在模板中直接加<#setting number_format="#">或者<#setting number_fo 阅读全文
posted @ 2012-07-04 15:39 blogs_lw 阅读(6246) 评论(0) 推荐(1) 编辑
摘要: 1 struts.xml源码: 2 <?xml version="1.0" encoding="UTF-8"?> 3 <!DOCTYPE struts PUBLIC 4 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 5 "http://struts.apache.org/dtds/struts-2.0.dtd"> 6 <struts> 7 <!-- struts2委托spring管理 -- 阅读全文
posted @ 2012-06-29 09:25 blogs_lw 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 对于oracle进行简单树查询(递归查询) DEPTID PAREDEPTID NAME NUMBER NUMBER CHAR (40 Byte) 部门id 父部门id(所属部门id) 部门名称 通过子节点向根节点追朔. Sql代码 select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 通过根节点遍历子节点. Sq... 阅读全文
posted @ 2012-06-28 11:19 blogs_lw 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 开发一个真实的 OSGi 应用程序我们不能只停留在 hello world 的层面,虽然那曾经对我们很重要 ,但是现实需要我们能够使用 OSGi 写出激动人心的应用程序,它能够被客户接受,被架构师认可,被程序员肯定。好的,那我们开始吧。下面将会着重介绍一些现实的应用程序可能需要的一些 OSGi 应用场景。发布和使用服务由于 OSGi 框架能够方便的隐藏实现类,所以对外提供接口是很自然的事情,OSGi 框架提供了服务的注册和查询功能。好的,那么我们实际操作一下,就在 Hello world 工程的基础上进行。我们需要进行下列的步骤:定义一个服务接口,并且 export 出去供其它 bundle 阅读全文
posted @ 2012-06-26 10:19 blogs_lw 阅读(7631) 评论(4) 推荐(0) 编辑
摘要: 重要的理论知识好的,刚才我们已经从头到尾开发了一个基于 Equinox 框架的 Hello world 应用程序。我们发现似乎并不是很困难,很多工作 Eclipse 已经帮我们做好了,例如 Activator 代码框架和 MANIFEST.MF 文件,我们也学会了如何控制 OSGi 的控制台和编写 MANIFEST.MF 文件,但是,您真的明白它们是如何运行的么?下面我们将重点介绍一些 OSGi 运行必备的基础知识。什么是 bundle?我们已经看到,编写一个很普通的 Hello world 应用,必须首先创建一个 plug-in 工程,然后编辑其 Activator 类的start方法,实际 阅读全文
posted @ 2012-06-26 10:17 blogs_lw 阅读(308) 评论(0) 推荐(0) 编辑