??xml version="1.0" encoding="utf-8" standalone="yes"?>美州a亚洲一视本频v色道,在线国产三级,国产91色在线|亚洲http://www.aygfsteel.com/wkkyo/zh-cnSat, 21 Jun 2025 02:37:43 GMTSat, 21 Jun 2025 02:37:43 GMT60Flex中Array和ArrayCollection排序http://www.aygfsteel.com/wkkyo/archive/2013/03/17/396554.htmlwkkyowkkyoSun, 17 Mar 2013 04:19:00 GMThttp://www.aygfsteel.com/wkkyo/archive/2013/03/17/396554.htmlhttp://www.aygfsteel.com/wkkyo/comments/396554.htmlhttp://www.aygfsteel.com/wkkyo/archive/2013/03/17/396554.html#Feedback0http://www.aygfsteel.com/wkkyo/comments/commentRss/396554.htmlhttp://www.aygfsteel.com/wkkyo/services/trackbacks/396554.html
protected function applicationCompleteHandler(event:FlexEvent):void
{
    var array:Array = [];
    array.push(new Vga("a",10));
    array.push(new Vga("c",2));
    array.push(new Vga("f",1.3));
    array.push(new Vga("d",1.1));
    array.push(new Vga("e",16));
    array.push(new Vga("b",0));
    trace(array.toString());
    //output:   [a,10],[c,2],[f,1.3],[d,1.1],[e,16],[b,0]
    var defaultSort:Array = array.sort();//默认排序
    trace(defaultSort.toString());
    //output:   [a,10],[b,0],[c,2],[d,1.1],[e,16],[f,1.3]
    var sortFunArray:Array = array.sort(sortFun);//使用自定义方法排?/span>
    trace(sortFunArray.toString());
    //output:   [b,0],[d,1.1],[f,1.3],[c,2],[a,10],[e,16]
}

/**自定义排序方?/span>*/            
public function sortFun(a:Vga,b:Vga):int{
    if(a.price < b.price){
    return -1; //a在前,b在后
    }else if(a.price == b.price){
    return 0; //ab位置不变
    }else{
    return 1; //b在前,a在后
    }
}



/**排序VO对象*/
public class Vga
{
    public var name:String;
    public var price:Number;
    
    public function Vga(name:String,price:Number)
    {
    this.name = name;
    this.price = price;
    }
        
    public function toString():String{
    return "["+this.name+","+this.price+"]";
    }
}


ArrayCollection排序
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.collections.SortField;
            import mx.collections.Sort;
            import mx.collections.ArrayCollection;
            private var acSort:ArrayCollection=
            new ArrayCollection([{id:0,userName:"zhangSan",age:21},
                                {id:2,userName:"liSi",age:24},
                                {id:1,userName:"wangWu",age:31}]);
            
            
            private function sortAc():ArrayCollection{
                var sort:Sort=new Sort();
                //按照ID升序排序
                sort.fields=[new SortField("id")];
                
                //按照userName降序排序
                sort.fields=[new SortField("userName",true,true)];
                
                //先按ID升序,再按userName降序
                sort.fields[new SortField("id"),new SortField("userName",true,true)];
                acSort.sort=sort;
                acSort.refresh();//更新
                return acSort;
            }
            
            /*
            其实看看API׃目了?br />            SortField () 构造函?nbsp;

            public function SortField(name:String = null, 
                        caseInsensitive:Boolean = false, 
                        descending:Boolean = false, 
                        numeric:Object = null)
                                    
            参数  
            name:String (default = null) — 此字D는来进行比较的属性的名称。如果该对象为简单类型,则传?nbsp;null?nbsp;
            caseInsensitive:Boolean (default = false) — 在对字符串进行排序时Q指C比较运符是否忽略值的大小写?br />            descending:Boolean (default = false) — 指示比较q算W是否按降序排列目?nbsp; 
                 
            numeric:Object (default = null) — 指示比较q算W是否按~号而不按字母顺序比较排序项目?nbsp;
            
*/            
        ]]>
    </mx:Script>
</mx:Application>


wkkyo 2013-03-17 12:19 发表评论
]]>
openfire客户端文件传输学习笔讎ͼ一Q?/title><link>http://www.aygfsteel.com/wkkyo/archive/2012/02/13/369827.html</link><dc:creator>wkkyo</dc:creator><author>wkkyo</author><pubDate>Sun, 12 Feb 2012 16:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/wkkyo/archive/2012/02/13/369827.html</guid><wfw:comment>http://www.aygfsteel.com/wkkyo/comments/369827.html</wfw:comment><comments>http://www.aygfsteel.com/wkkyo/archive/2012/02/13/369827.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wkkyo/comments/commentRss/369827.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wkkyo/services/trackbacks/369827.html</trackback:ping><description><![CDATA[<p>目中需要用到openfire的文件传输,但是客户端用flexQ官Ҏ供的xiff包中q没有封装文件传输的功能Q没办法Q研I了几天Q在google和官方smock源码的帮助下l于实现了xiff下的文g传输Q在q里做个ȝ?/p> <p>openfire服务器是Zxmpp协议的,XMPP支持两种文g传输协议,SOCKS5 Bytestreams?In-Band BytestreamsQSOCKS5是直接发送二q制,而IBB是将文g转成base64码进行然后用message的Ş式进行传输,我这里仅实现了SOCKS5的文件代理传输?br />SOCKS5文g传输需要用C个协议,XEP-0065和XEP-0096<br />XEP-0096定义文g传输协议Q提供了一个模块化框架使能交换被传输文件的信息以及参数的协商,也就是在传输文g之前协商要传输的文件信息?br />XEP-0065定义SOCKS5传输标准协议,提供用于在Q意两个XMPP用户之间建立字节ƈq行文g传输?br />Ҏ我的理解Q文件传输的q程分ؓ协商Q徏立socks5q接Q二q制传输q三个阶D?br />协商的过E最复杂Q然后是建立q接Q传输就比较单,下面一个一个来?br />协商包括初始斏V目标方、代理方Q初始方是发送文件方Q目标方x件接收方Q代理方是socks5代理服务器,</p> <p>协商q程是三方互相发送xml来交换信息的q程Q通俗点就是三个h沟通一下传什么文件和怎么传文件?br />首先遵@XMP-0096协议Q初始方l目标方发送包含文件信息的xml</p><pre class="xml" name="code"><div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">to</span><span style="color: #0000ff">="android@192.168.1.113/Spark 2.6.3"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="set"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="iq_13"</span><span style="color: #ff0000"> from</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">si </span><span style="color: #ff0000">profile</span><span style="color: #0000ff">="http://jabber.org/protocol/si/profile/file-transfer"</span><span style="color: #ff0000"> mime-type</span><span style="color: #0000ff">="text/plain"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="82B0C697-C1DE-93F9-103E-481C8E7A3BD8"</span><span style="color: #ff0000"> xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/si"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">feature </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/feature-neg"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff"><</span><span style="color: #800000">x </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="jabber:x:data"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="form"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                </span><span style="color: #0000ff"><</span><span style="color: #800000">field </span><span style="color: #ff0000">var</span><span style="color: #0000ff">="stream-method"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="list-single"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                    </span><span style="color: #0000ff"><</span><span style="color: #800000">option</span><span style="color: #0000ff">><</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000">http://jabber.org/protocol/bytestreams</span><span style="color: #0000ff"></</span><span style="color: #800000">value</span><span style="color: #0000ff">></</span><span style="color: #800000">option</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                    </span><span style="color: #0000ff"><</span><span style="color: #800000">option</span><span style="color: #0000ff">><</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000">http://jabber.org/protocol/ibb</span><span style="color: #0000ff"></</span><span style="color: #800000">value</span><span style="color: #0000ff">></</span><span style="color: #800000">option</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                </span><span style="color: #0000ff"></</span><span style="color: #800000">field</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff"></</span><span style="color: #800000">x</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"></</span><span style="color: #800000">feature</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">file </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/si/profile/file-transfer"</span><span style="color: #ff0000"> name</span><span style="color: #0000ff">="img0545.png"</span><span style="color: #ff0000"> size</span><span style="color: #0000ff">="152443"</span><span style="color: #0000ff">><</span><span style="color: #800000">desc</span><span style="color: #0000ff">></span><span style="color: #000000">send</span><span style="color: #0000ff"></</span><span style="color: #800000">desc</span><span style="color: #0000ff">></</span><span style="color: #800000">file</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">si</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span></div></pre> <p> <br />目标Ҏ收到信息后发送回执,表示同意接收文g</p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">id</span><span style="color: #0000ff">="iq_13"</span><span style="color: #ff0000"> to</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #ff0000"> from</span><span style="color: #0000ff">="android@192.168.1.113/Spark 2.6.3"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="result"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">si </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/si"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">feature </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/feature-neg"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />            </span><span style="color: #0000ff"><</span><span style="color: #800000">x </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="jabber:x:data"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="submit"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                </span><span style="color: #0000ff"><</span><span style="color: #800000">field </span><span style="color: #ff0000">var</span><span style="color: #0000ff">="stream-method"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                     </span><span style="color: #0000ff"><</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000">http://jabber.org/protocol/bytestreams</span><span style="color: #0000ff"></</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                     </span><span style="color: #0000ff"><</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000">http://jabber.org/protocol/ibb</span><span style="color: #0000ff"></</span><span style="color: #800000">value</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />                </span><span style="color: #0000ff"></</span><span style="color: #800000">field</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />             </span><span style="color: #0000ff"></</span><span style="color: #800000">x</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"></</span><span style="color: #800000">feature</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />     </span><span style="color: #0000ff"></</span><span style="color: #800000">si</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p> </p> <p>q时q入XEP-0065协议阶段<br />初始方给服务器发送信息,h提供代理服务?/p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">id</span><span style="color: #0000ff">="iq_15"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="get"</span><span style="color: #0000ff">><</span><span style="color: #800000">query </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/disco#items"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p><br />服务器回复信息,告知可用的代?/p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">type</span><span style="color: #0000ff">="result"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="iq_15"</span><span style="color: #ff0000"> to</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">query </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/disco#items"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">item </span><span style="color: #ff0000">jid</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #ff0000"> name</span><span style="color: #0000ff">="Socks 5 Bytestreams Proxy"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">item </span><span style="color: #ff0000">jid</span><span style="color: #0000ff">="pubsub.192.168.1.113"</span><span style="color: #ff0000"> name</span><span style="color: #0000ff">="Publish-Subscribe service"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">item </span><span style="color: #ff0000">jid</span><span style="color: #0000ff">="conference.192.168.1.113"</span><span style="color: #ff0000"> name</span><span style="color: #0000ff">="公共戉K"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">item </span><span style="color: #ff0000">jid</span><span style="color: #0000ff">="search.192.168.1.113"</span><span style="color: #ff0000"> name</span><span style="color: #0000ff">="User Search"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">query</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p> <br />q里选择name=“Socks 5 Bytestreams Proxy”的代理,初始方给q个代理发送信息获取代理连接信?/p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">id</span><span style="color: #0000ff">="iq_17"</span><span style="color: #ff0000"> to</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="get"</span><span style="color: #0000ff">><</span><span style="color: #800000">query </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/bytestreams"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span></div> <p>代理方回复信息,告知初始方代理的jid、IP、端口等信息</p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">type</span><span style="color: #0000ff">="result"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="iq_17"</span><span style="color: #ff0000"> from</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #ff0000"> to</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">query </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/bytestreams"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">streamhost </span><span style="color: #ff0000">jid</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #ff0000"> host</span><span style="color: #0000ff">="192.168.1.113"</span><span style="color: #ff0000"> port</span><span style="color: #0000ff">="7777"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">query</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p> <br />初始ҎC理信息后代理的信息发送给目标?/p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">to</span><span style="color: #0000ff">="android@192.168.1.113/Spark 2.6.3"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="set"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="iq_19"</span><span style="color: #ff0000"> from</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">query </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/bytestreams"</span><span style="color: #ff0000"> mode</span><span style="color: #0000ff">="tcp"</span><span style="color: #ff0000"> sid</span><span style="color: #0000ff">="82B0C697-C1DE-93F9-103E-481C8E7A3BD8"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">streamhost </span><span style="color: #ff0000">port</span><span style="color: #0000ff">="7777"</span><span style="color: #ff0000"> host</span><span style="color: #0000ff">="192.168.1.113"</span><span style="color: #ff0000"> jid</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #ff0000"> </span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">query</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p> </p> <p>然后p入连接阶D,也就是初始方和目标方分别和代理徏立socks5q接的过E。(关于SOCKS5协议q接Q我之后会补充)?br />目标ҎC理信息后和代理徏立socketq接(使用SOCKS5协议q接)Q连接成功后通知初始方用的代理jid</p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">id</span><span style="color: #0000ff">="iq_19"</span><span style="color: #ff0000"> to</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="result"</span><span style="color: #ff0000"> from</span><span style="color: #0000ff">="android@192.168.1.113/Spark 2.6.3"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"><</span><span style="color: #800000">query </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/bytestreams"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />        </span><span style="color: #0000ff"><</span><span style="color: #800000">streamhost-used </span><span style="color: #ff0000">jid</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" />    </span><span style="color: #0000ff"></</span><span style="color: #800000">query</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p> <br />初始方开始与代理建立socketq接(也用SOCKS5协议)Q连接成功后l代理发送请求,要求ȀzL件流</p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">to</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #ff0000"> type</span><span style="color: #0000ff">="set"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="iq_21"</span><span style="color: #ff0000"> from</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"><</span><span style="color: #800000">query </span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://jabber.org/protocol/bytestreams"</span><span style="color: #ff0000"> sid</span><span style="color: #0000ff">="82B0C697-C1DE-93F9-103E-481C8E7A3BD8"</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"><</span><span style="color: #800000">activate</span><span style="color: #0000ff">></span><span style="color: #000000">android@192.168.1.113/Spark 2.6.3</span><span style="color: #0000ff"></</span><span style="color: #800000">activate</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">query</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff"></</span><span style="color: #800000">iq</span><span style="color: #0000ff">></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p> <br />代理回复ȀzL功信?/p> <p> </p> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff"><</span><span style="color: #800000">iq </span><span style="color: #ff0000">type</span><span style="color: #0000ff">="result"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="iq_21"</span><span style="color: #ff0000"> from</span><span style="color: #0000ff">="proxy.192.168.1.113"</span><span style="color: #ff0000"> to</span><span style="color: #0000ff">="iphone@192.168.1.113/xiff"</span><span style="color: #0000ff">/></span><span style="color: #000000"><br /><img align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" alt="" /></span></div> <p>初始Ҏ到回复信息后p入二q制传输阶D,q时可以开始发送二q制了</p> <p>{初始方流发送完毕后把socket关闭传输就完成了文件的传输?/p> <p> </p> <p><font style="font-family: " color="#ff0000">注意Qtype为result的回复信息用的id一定要和请求的信息id一栗?/font></p> <p> </p><img src ="http://www.aygfsteel.com/wkkyo/aggbug/369827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wkkyo/" target="_blank">wkkyo</a> 2012-02-13 00:55 <a href="http://www.aygfsteel.com/wkkyo/archive/2012/02/13/369827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决struts2qo器冲H的单方?/title><link>http://www.aygfsteel.com/wkkyo/archive/2010/10/15/335219.html</link><dc:creator>wkkyo</dc:creator><author>wkkyo</author><pubDate>Fri, 15 Oct 2010 03:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/wkkyo/archive/2010/10/15/335219.html</guid><wfw:comment>http://www.aygfsteel.com/wkkyo/comments/335219.html</wfw:comment><comments>http://www.aygfsteel.com/wkkyo/archive/2010/10/15/335219.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wkkyo/comments/commentRss/335219.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wkkyo/services/trackbacks/335219.html</trackback:ping><description><![CDATA[<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">struts2使用<span style="font-family: Arial, sans-serif, Helvetica, Tahoma; line-height: 18px; ">FilterDispatcherq行urlqoQ默认是所有的url都过滤,但是目中有些url是不想用struts2q行qo的,|上搜了不少Ҏ</span></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "> </p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">1.修改web.xml文g?/p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><filter-mapping>   </p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">    <filter-name><span id="wmqeeuq" class="hilite1" style="background-color: #ffff00; ">struts2</filter-name>   </span></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">    <url-pattern>*.action</url-pattern>   </p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "></filter-mapping></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">只让qo器对加有.action后缀的\径有效,如果需要拦?jspQ加?.jspp了?/p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">但是q样如果有无后缀名的urlQ如/demo/Q就不能qo?/p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "> </p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">2.修改struts2核心jar中的default.properties文g</p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">把struts.action.extension=action,,</p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">改ؓstruts.action.extension=action,do,jsp,</p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">但我改了之后发现Ҏ没效果,不知Z</p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "> </p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><span style="color: #0000ff; ">3.</span><span style="font-family: Arial, Helvetica, sans-serif; line-height: 20px; "><span style="color: #0000ff; ">自定义一?/span></span><span style="font-family: Arial, Helvetica, sans-serif; line-height: 20px; "><span style="color: #0000ff; ">l承StrutsPrepareAndExecuteFilter</span></span><span style="font-family: Arial, Helvetica, sans-serif; line-height: 20px; "><span style="color: #0000ff; ">的过滤器Q将配置换成自己自定义的qo器。(推荐此法Q?/span></span></p> <p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><span style="font-family: Arial, Helvetica, sans-serif; line-height: 20px; "><span style="color: #0000ff; "> </span></span></p> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> ExtendStrutsFilter </span><span style="color: #0000FF; ">extends</span><span style="color: #000000; "> StrutsPrepareAndExecuteFilter {<br />     <br />     @Override<br />     </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> doFilter(ServletRequest req, ServletResponse res,FilterChain chain) </span><span style="color: #0000FF; ">throws</span><span style="color: #000000; "> IOException, ServletException {<br />         HttpServletRequest request </span><span style="color: #000000; ">=</span><span style="color: #000000; "> (HttpServletRequest) req;<br />         </span><span style="color: #008000; ">//</span><span style="color: #008000; ">不过滤的url,可以不断d,如fck可用/fckeditor/editor/filemanager/connectors/fileupload,下面的是flex</span><span style="color: #008000; "><br /> </span><span style="color: #000000; ">        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/fpms/messagebroker/amf</span><span style="color: #000000; ">"</span><span style="color: #000000; ">.equals(request.getRequestURI())) {<br />             </span><span style="color: #008000; ">//</span><span style="color: #008000; ">System.out.println("使用自定义的qo?);</span><span style="color: #008000; "><br /> </span><span style="color: #000000; ">            chain.doFilter(req, res);<br />         }</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{<br />             </span><span style="color: #008000; ">//</span><span style="color: #008000; ">System.out.println("使用默认的过滤器");</span><span style="color: #008000; "><br /> </span><span style="color: #000000; ">            </span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">.doFilter(req, res, chain);<br />         }<br />     }<br /> }</span></div> <p><span style="color: #0000ff; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">修改web.xml</span></p> <p><span style="color: #0000ff; font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "> </span></p> <div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #008000; "><!--</span><span style="color: #008000; "> sturts2qo?nbsp;</span><span style="color: #008000; ">--></span><span style="color: #000000; "><br />     </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />         </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">></span><span style="color: #000000; ">struts2</span><span style="color: #0000FF; "></</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />                 </span><span style="color: #008000; "><!--</span><span style="color: #008000; "> 改ؓ自己的过滤器 </span><span style="color: #008000; ">--></span><span style="color: #000000; "><br />         </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />             com.filter.ExtendStrutsFilter<br />         </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />     </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />     </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />         </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">></span><span style="color: #000000; ">struts2</span><span style="color: #0000FF; "></</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />         </span><span style="color: #0000FF; "><</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">></span><span style="color: #000000; ">/*</span><span style="color: #0000FF; "></</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">></span><span style="color: #000000; "><br />     </span><span style="color: #0000FF; "></</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">></span></div> <p><span style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; ">q种Ҏ试验成功</span></p> <img src ="http://www.aygfsteel.com/wkkyo/aggbug/335219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wkkyo/" target="_blank">wkkyo</a> 2010-10-15 11:54 <a href="http://www.aygfsteel.com/wkkyo/archive/2010/10/15/335219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate~存学习W记http://www.aygfsteel.com/wkkyo/archive/2010/08/22/329601.htmlwkkyowkkyoSun, 22 Aug 2010 15:22:00 GMThttp://www.aygfsteel.com/wkkyo/archive/2010/08/22/329601.htmlhttp://www.aygfsteel.com/wkkyo/comments/329601.htmlhttp://www.aygfsteel.com/wkkyo/archive/2010/08/22/329601.html#Feedback0http://www.aygfsteel.com/wkkyo/comments/commentRss/329601.htmlhttp://www.aygfsteel.com/wkkyo/services/trackbacks/329601.htmlHibernate在进行数据读取时会先在缓存里?~存中不存在时再L据库查询,合理使用hibernate~存能够有效的利用内?减少物理数据库调用的ơ数.

 

ORM~存{略

1.事务U缓?session level cache)

session生命周期的缓?关闭sessionx?/p>

2.应用U?q程U缓?sessionFactory level cache)

某个应用中的׃n~存,多个事务可以׃n,在sessionFactory层实?所有sessionFactory创徏的session可以׃n.

3.分布式缓?/p>

多个JVM׃n的缓?通过q程机制实现~存数据同步,L实例修改数据,所有的JVM都要更新~存.

 

Hibernate数据~存

1.内部~存(session level)一U缓?/span>

是事务的缓?session中维护的一个Map,Map的key是包含了数据cd和id,从数据库加蝲的数据都会进入Map~存?通过session加蝲数据时会先在session~存里找,一U缓存是session的private数据,session实例消亡清除了,在应用中׃持在一ơ请求的开始和l束之间.

一般由Hibernate自动l护,也支持手动维?/p>

session.evit(Object obj) 持久化对象从一U缓存中清除.

session.clear()  清空一U缓?/p>

session.contains(Object obj) 判断指定的对象是否存在于一U缓存中. 

session.flush() h一U缓存区的内?使缓存与数据库数据保持同? 

 

2.二~存(sessionFactory level)

包含了应用和分布式的缓?由本sessionFactory的所有session实例׃n,session操作时会先查一U缓?然后查二U缓?最后再查物理数据库.要用二U缓存必要q行配置.

 

适合用缓存的数据

1.不会被其他应用修?/p>

包括直接用JDBC修改{?因ؓ其他应用修改了数据之后hibernateq不知道,不能自动更新~存,不过可以手动更新~存

2.数据大小可以接受,毕竟内存资源也不?/p>

3.数据更新频率?比如数据字典{常量数?

4.可能被系l频J?/p>

5.非关键的数据

6.不会被ƈ发访问的数据

 

常用的二U缓存插?/p>

EHCache  org.hibernate.cache.EhCacheProvider 

OSCache  org.hibernate.cache.OSCacheProvider 

SwarmCahe  org.hibernate.cache.SwarmCacheProvider 提供了分布式

JBossCache  org.hibernate.cache.TreeCacheProvider 提供了分布式

 

EHCache二~存配置Ҏ

1.启用二~存首先要在hibernate.cfg.xml配置

<hibernate-configuration>  

   <session-factory>  

      <!-- 配置二~存插gEHCache的Providerc?->  

      <property name="hibernate.cache.provider_class">  

         org.hibernate.cache.EhCacheProvider  

      </property>  

      <!-- 启动"查询~存" -->  

      <property name="hibernate.cache.use_query_cache">  

         true  

      </property>  

   </session-factory>  

 </hibernate-configuration> 

 

2.然后配置cache的配|文件ehcache.xml

<ehcache>  

  <!-- maxElementsInMemory为缓存对象的最大数?

eternal讄是否永远不过?

timeToIdleSeconds对象处于I闲状态的最多秒?

timeToLiveSeconds对象处于~存状态的最多秒?

overflowtodisk内存不时是否启用磁盘缓?-->  

  <diskStore path="java.io.tmpdir"/>  

  <defaultCache maxElementsInMemory="10000" eternal="false"  timeToIdleSeconds="300"            timeToLiveSeconds="600" overflowToDisk="true"/>

</ehcache>

 

3.最后要在映文?**.hbm.xml中指定实体的~存同步{略

<?xml version="1.0" encoding='UTF-8'?>  

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >  

<hibernate-mapping>  

   <class>  

       <!-- 讄该持久化cȝ二~存q发讉K{略-->  

       <cache usage="read-write"/>

<set name = "xxx">

<cache usage="read-only" />

    </set>

   </class>

</hibernate-mapping>  

 

hibernate提供的缓存同步策?可以在usage中设|?/p>

read-only

只读

nonstrict-read-write

更新频率不高

read-write

严格可读?/p>

transactional(Ecache不支?

事务型缓?/p>

wkkyo 2010-08-22 23:22 发表评论
]]>
վ֩ģ壺 | | Զ| | ɣֲ| | | Զ| | | | ʡ| | | | | ī| ¡| | | | ɳ| Т| | | ˼| | | | ƽ| Ȫ| ɽ| | Ȫ| | | Ҧ| ƽ| | | ͬ|