<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>zhangyang</title>
    <description>在有梦的天空里我努力的飞翔，，，站在巨人的肩膀上，我相信离成功不远。。。</description>
    <link>http://zhangyang.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>Struts2.0</title>
        <author>zhangyang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhangyang.javaeye.com">zhangyang</a>&nbsp;
                    链接：<a href="http://zhangyang.javaeye.com/blog/174572" style="color:red;">http://zhangyang.javaeye.com/blog/174572</a>&nbsp;
          发表时间: 2008年03月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Struts2.0所有的配置被整合在一个Filter里面，该Filter位于org.apache.struts2.dispatcher.FilterDispatcher，因此，在web.xml中应该这样声明：<br />&lt;filter><br />       &lt;filter-name>struts&lt;/filter-name><br />       &lt;filter-class><br />           org.apache.struts2.dispatcher.FilterDispatcher<br />       &lt;/filter-class><br />    &lt;/filter><br />    <br />    &lt;filter-mapping><br />       &lt;filter-name>struts&lt;/filter-name><br />       &lt;url-pattern>/*&lt;/url-pattern><br />&lt;/filter-mapping><br />但是，该Filter一个问题，就是从页面传到后台的中文经过这个过滤器后会变成乱码，为了解决这个问题，需要重写这个过滤器，最简单的方法是写一个类继承FilterDispatcher，在src目录下创建com.filter包，在包中建立NewFilterDispatcher类，继承FilterDispatcher，代码如下：<br />package com.filter;<br /> <br />import java.io.IOException;<br /> <br />import javax.servlet.FilterChain;<br />import javax.servlet.FilterConfig;<br />import javax.servlet.ServletException;<br />import javax.servlet.ServletRequest;<br />import javax.servlet.ServletResponse;<br />import org.apache.struts2.dispatcher.FilterDispatcher;<br /> <br />public class NewFilterDispatcher extends FilterDispatcher {<br />     private static String encoding = "GB2312";<br /> <br />        public void init(FilterConfig filterConfig) throws ServletException {<br />            super.init(filterConfig);<br />            String encodingParam = filterConfig.getInitParameter("encoding");<br />            if (encodingParam != null && encodingParam.trim().length() != 0) {<br />                encoding = encodingParam;<br />            }<br />        }<br /> <br />        public void doFilter(ServletRequest request, ServletResponse response,<br />                FilterChain chain) throws IOException, ServletException {<br />            request.setCharacterEncoding(encoding);<br />            super.doFilter(request, response, chain);<br />        }<br /> <br />    <br />}<br />这时web.xml中相应的地方就改为：<br />&lt;filter><br />       &lt;filter-name>struts&lt;/filter-name><br />       &lt;filter-class><br />           com.filter.NewFilterDispatcher<br />       &lt;/filter-class><br />        &lt;init-param><br />            &lt;param-name>encoding&lt;/param-name><br />            &lt;param-value>GB2312&lt;/param-value><br />        &lt;/init-param><br />    &lt;/filter><br />    <br />    &lt;filter-mapping><br />       &lt;filter-name>struts&lt;/filter-name><br />       &lt;url-pattern>/*&lt;/url-pattern><br />    &lt;/filter-mapping><br />说明：<br />(1)该类是FilterDispatcher类的子类。<br />(2)该类有个成员变量，名为encoding，默认是“GB2312”。<br />(3)注意在web.xml中，&lt;filter>标签里多了&lt;init-param>标签，顾名思义，它的作用是初始化一个参数，里面定义了参数名和参数值。因此，在子类中，需要重写init方法，其中：<br />String encodingParam = filterConfig.getInitParameter("encoding");<br />   就是从web.xml中读出了参数名为encoding的值，然后赋给子类中的encoding成员。<br />(4)重写dofilter方法，加上：<br /> request.setCharacterEncoding(encoding);<br />然后再调用父类的dofilter方法，这样就完成了编码的转换。<br />(5)如果需要使用其它编码（如“UTF-8”等），只要改变&lt;param-value>中的值即可。<br />这样就把struts2.0加入到工程中了。<br />除了在web.xml中配置以外，struts2.0还有几个自己的配置文件，其中最重要的两个是struts.properties和struts.xml，都要放到src目录下。
          <br/>
          <span style="color:red;">
            <a href="http://zhangyang.javaeye.com/blog/174572#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 21 Mar 2008 17:22:22 +0800</pubDate>
        <link>http://zhangyang.javaeye.com/blog/174572</link>
        <guid>http://zhangyang.javaeye.com/blog/174572</guid>
      </item>
          <item>
        <title>D语言</title>
        <author>zhangyang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhangyang.javaeye.com">zhangyang</a>&nbsp;
                    链接：<a href="http://zhangyang.javaeye.com/blog/174238" style="color:red;">http://zhangyang.javaeye.com/blog/174238</a>&nbsp;
          发表时间: 2008年03月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天听了一个朋友说有D语言的存在，，我很是好奇，所以就到网上查了一下。。。<br />    D 语言既有 C 语言的强大威力，又有 Python 和 Ruby 的开发效率。它是一种集垃圾回收、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置单元测试、Mixin 风格多继承、类 Java 包管理机制、内置同步机制、内建基本运行时信息的系统级编程语言。<br />    这个还有代研究。。。呵呵！！！！有没有人讲两句啊？？？？？
          <br/>
          <span style="color:red;">
            <a href="http://zhangyang.javaeye.com/blog/174238#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 20 Mar 2008 17:44:05 +0800</pubDate>
        <link>http://zhangyang.javaeye.com/blog/174238</link>
        <guid>http://zhangyang.javaeye.com/blog/174238</guid>
      </item>
          <item>
        <title>WEB 服务器的集群</title>
        <author>zhangyang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhangyang.javaeye.com">zhangyang</a>&nbsp;
                    链接：<a href="http://zhangyang.javaeye.com/blog/169911" style="color:red;">http://zhangyang.javaeye.com/blog/169911</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>集群(Cluster)</strong><br />    所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统，它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送，实现分布式计算机。<br /><strong>负载均衡(Load Balance)</strong>　　<br />    网络的负载均衡是一种动态均衡技术，通过一些工具实时地分析数据包，掌握网络中的数据流量状况，把任务合理均衡地分配出去。这种技术基于现有网络结构，提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法，加强了网络数据处理能力，提高了网络的灵活性和可用性。<br />特点<br />　（1）高可靠性（HA）。利用集群管理软件，当主服务器故障时，备份服务器能够自动接管主服务器的工作，并及时切换过去，以实现对用户的不间断服务。<br />  （2）高性能计算（HP）。即充分利用集群中的每一台计算机的资源，实现复杂运算的并行处理，通常用于科学计算领域，比如基因分析、化学分析等。<br />  （3）负载平衡。即把负载压力根据某种算法合理分配到集群中的每一台计算机上，以减轻主服务器的压力，降低对主服务器的硬件和软件要求。<br />LVS系统结构与特点<br />1. Linux Virtual Server：简称LVS。是由中国一个Linux程序员章文嵩博士发起和领导的，基于Linux系统的服务器集群解决方案，其实现目标是创建一个具有良好的扩展性、高可靠性、高性能和高可用性的体系。许多商业的集群产品，比如RedHat的Piranha、 Turbo Linux公司的Turbo Cluster等，都是基于LVS的核心代码的。<br />2. 体系结构：使用LVS架设的服务器集群系统从体系结构上看是透明的，最终用户只感觉到一个虚拟服务器。物理服务器之间可以通过高速的 LAN或分布在各地的WAN相连。最前端是负载均衡器，它负责将各种服务请求分发给后面的物理服务器，让整个集群表现得像一个服务于同一IP地址的虚拟服务器。<br />3. LVS的三种模式工作原理和优缺点：　Linux Virtual Server主要是在负载均衡器上实现的，负载均衡器是一台加了 LVS Patch的2．2．x版内核的Linux系统。LVS Patch可以通过重新编译内核的方法加入内核，也可以当作一个动态的模块插入现在的内核中。<br />负载均衡器可以运行在以下三种模式下：<br />（1）Virtual Server via NAT（VS-NAT）：用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址，它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身，当外界包送到转换器时，它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址，能对内部进行伪装；缺点是效率低，因为返回给请求方的流量经过转换器。<br />（2）Virtual Server via IP Tunneling （VS-TUN）：用IP隧道技术实现虚拟服务器。这种方式是在集群的节点不在同一个网段时可用的转发机制，是将IP包封装在其他网络流量中的方法。为了安全的考虑，应该使用隧道技术中的VPN，也可使用租用专线。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等．<br />（3）Virtual Server via Direct Routing（VS-DR）：用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法，控制管理的计算机接收到请求包时直接送到参与集群的节点。优点是返回给客户的流量不经过控制主机，速度快开销少。<br />　　以四台服务器为例实现负载均衡：<br />　　安装配置LVS<br />　　1. 安装前准备：<br />　　（1）首先说明，LVS并不要求集群中的服务器规格划一，相反，可以根据服务器的不同配置和负载状况，调整负载分配策略，充分利用集群环境中的每一台服务器。如下表：<br />　　Srv Eth0 Eth0：0 Eth1 Eth1：0<br /><br />　　vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254<br /><br />　　vsbak 10.0.0.3 192.168.10.102<br /><br />　　real1 192.168.10.100<br /><br />　　real2 192.168.10.101<br /><br />　　其中，10.0.0.2是允许用户访问的IP。<br />　　（2）这4台服务器中，vs1作为虚拟服务器（即负载平衡服务器），负责将用户的访问请求转发到集群内部的real1，real2，然后由real1，real2分别处理。 Client为客户端测试机器，可以为任意操作系统。<br />　　（3）所有OS为redhat6.2，其中vs1 和vsbak 的核心是2.2.19， 而且patch过ipvs的包， 所有real server的Subnet mask 都是24位， vs1和vsbak 的10.0.0. 网段是24 位。<br />　　2.理解LVS中的相关术语<br />　　（1） ipvsadm ：ipvsadm是LVS的一个用户界面。在负载均衡器上编译、安装ipvsadm。<br />　　（2） 调度算法： LVS的负载均衡器有以下几种调度规则：Round-robin，简称rr；weighted Round-robin，简称wrr；每个新的连接被轮流指派到每个物理服务器。Least-connected，简称lc；weighted Least-connected，简称wlc，每个新的连接被分配到负担最小的服务器。<br />　　（3） Persistent client connection，简称pcc，（持续的客户端连接，内核2.2.10版以后才支持）。所有来自同一个IP的客户端将一直连接到同一个物理服务器。超时时间被设置为360秒。Pcc是为https和cookie服务设置的。在这处调度规则下，第一次连接后，所有以后来自相同客户端的连接（包括来自其它端口）将会发送到相同的物理服务器。但这也会带来一个问题，因为大约有25％的Internet 可能具有相同的IP地址。<br />　　（4） Persistent port connection调度算法：在内核2．2．12版以后，pcc功能已从一个调度算法（你可以选择不同的调度算法：rr、wrr、lc、wlc、pcc）演变成为了一个开关选项（你可以让rr、 wrr、lc、wlc具备pcc的属性）。在设置时，如果你没有选择调度算法时，ipvsadm将默认为wlc算法。 在Persistent port connection(ppc)算法下，连接的指派是基于端口的，例如，来自相同终端的80端口与443端口的请求，将被分配到不同的物理服务器上。不幸的是，如果你需要在的网站上采用cookies时将出问题，因为http是使用80端口，然而cookies需要使用443端口，这种方法下，很可能会出现cookies不正常的情况。<br />　（5）Load Node Feature of Linux Director：让Load balancer 也可以处理users 请求。<br />  （6）IPVS connection synchronization。<br />　（7）ARP Problem of LVS/TUN and LVS/DR：这个问题只在LVS/DR，LVS/TUN 时存在。
          <br/>
          <span style="color:red;">
            <a href="http://zhangyang.javaeye.com/blog/169911#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 17:12:44 +0800</pubDate>
        <link>http://zhangyang.javaeye.com/blog/169911</link>
        <guid>http://zhangyang.javaeye.com/blog/169911</guid>
      </item>
          <item>
        <title>组长的问题</title>
        <author>zhangyang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhangyang.javaeye.com">zhangyang</a>&nbsp;
                    链接：<a href="http://zhangyang.javaeye.com/blog/166900" style="color:red;">http://zhangyang.javaeye.com/blog/166900</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天组长问我：“你知道数据库集群吗”？我听了，马上回答，不知道。然后他走了。。中午吃饭的时间我到网上查查看。。但是还是没什么收获。。组长来了，看到我在查，就说：“我说的不是这个，是服务器的”，今天这两就话我都莫名其妙。。。有谁知道，希望高手可以指点一下。。。。
          <br/>
          <span style="color:red;">
            <a href="http://zhangyang.javaeye.com/blog/166900#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 13:15:57 +0800</pubDate>
        <link>http://zhangyang.javaeye.com/blog/166900</link>
        <guid>http://zhangyang.javaeye.com/blog/166900</guid>
      </item>
          <item>
        <title>interface 里面有这样的方法？？？？</title>
        <author>zhangyang</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhangyang.javaeye.com">zhangyang</a>&nbsp;
                    链接：<a href="http://zhangyang.javaeye.com/blog/165359" style="color:red;">http://zhangyang.javaeye.com/blog/165359</a>&nbsp;
          发表时间: 2008年02月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          public interface MediaService {<br />         List&lt;Media> getNewUpMediaList(int... type);<br />}<br /><br /><br />原来是1。5的新特性。。。就可以传多个int类型的参数。。相当于int[] type <br />这个我今天看到了才知道。。。。。
          <br/>
          <span style="color:red;">
            <a href="http://zhangyang.javaeye.com/blog/165359#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/70' target='_blank'><span style="color:red;font-weight:bold;">第二届网络工程师侠客行大会5月24日杭州举行</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 27 Feb 2008 10:51:33 +0800</pubDate>
        <link>http://zhangyang.javaeye.com/blog/165359</link>
        <guid>http://zhangyang.javaeye.com/blog/165359</guid>
      </item>
      </channel>
</rss>