<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>大航路 &#187; 学习笔记</title>
	<atom:link href="http://bigline.cn/word/index.php/category/note/feed/" rel="self" type="application/rss+xml" />
	<link>http://bigline.cn/word</link>
	<description>超越时代的妄想</description>
	<lastBuildDate>Wed, 04 Jan 2012 12:24:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[译]Google+提升网页性能的5个小秘密</title>
		<link>http://bigline.cn/word/index.php/2012/01/page-speed/</link>
		<comments>http://bigline.cn/word/index.php/2012/01/page-speed/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 12:24:30 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=820</guid>
		<description><![CDATA[原文地址： https://plus.google.com/115060278409766341143/posts/ViaVbBMpSVG 1.使用Closure 我们使用Closure库、模版以及编译器来渲染Google+里每一个页面的每一个节点——甚至包括掌控页面的Javascript脚本。以下几点有助于加速网页的显示： -Closure模版可以在服务器端用Java渲染，也可以在浏览器里用JS生成。这样的话，我们需要的内容总是能立即获取到；同时，我们也可以在”后台”( 指浏览器中的异步加载 )中载入javaScript（就像“装饰”一个网页，在主干之上，不断给各节点增加事件的响应） -同时，Closure套件为JS提供了许多新特性：强类型、更强的错误检测、“死代码”预估、跨模块的通信以及很多的优化手段。 (欲了解更多的Closure套件细节，访问 http://code.google.com/closure/ ) 2.总是在最适当的时候，书写最恰当的JS代码 我们将JS代码分割程序多小的模块，并能被异步加载，从而更方便的管理Google+中的JS脚本。而用户只需要按需下载最少的JS脚本。我们依照两个规则来进行设计： -客户端必须包含一个核心的代码，它通过历史标记(也就是记录浏览器地址栏中的地址)来判断加载需要的模块。 -如果需要的JS模块没有加载完全，我们会阻塞页面所有的操作，直到加载完毕。 3.无刷新实现页面间的跳转 一旦JS脚本载入完毕，我们将脱离服务器，在本地渲染所有的内容，因此可以达到很快的速度。我们设置了一个全局的事件监听器——它监听页面上所有的锚点的单击事件。我们尽可能将单击事件转换为页面内的跳转。然而，对于不能在客户端渲染，或是用户单击鼠标中键或者按住CTRL键的情况下，将打开一个新的页面。 在这种情况下，浏览器中的地址可以代表当前页面的状态，所以我们可以复制/分享这个地址以分享当前页面。 4.刷新输出数据块 为了让数据下载完就立刻呈现出来，我们使用刷新输出数据块的技术(flushing chunks)，这样用户就不需要等待整个页面载入完成。 我们的实现方法是： -最开始只载入最精简的数据，剩下的交由异步请求去获取。 -仅当需要的数据没有下载完全的时候才阻塞页面的渲染。 这个系统也可以让我们更快的加载CSS,JS,图像等等资源，并让这个网站显得更快且响应更加及时。 5.使用IFRAME 突破浏览器并行加载JS脚本的限制(参见 http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/)，[一般浏览器在一个页面中最多会并行加载3个JS脚本或是其他资源文件]——我们在页面的BODY的最前面加上一个IFRAME。其间的具体实现比较复杂，但是幸好我们还有Closure套件，实现此类功能非常方便。总而言之，相较网页速度的提升，这些努力都是值得的。 同时，你可能发现了我们通过XHR而非&#60;style&#62;标签来加载CSS样式表——这个设定并非为了优化，只是为了突破IE浏览器中一个样式表内选择器个数的限制。 最后的话 略。。。。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="2011GDD大会" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F10%2F2011gdd%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">2011GDD大会</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="[一起看电影] 之 长发公主" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F03%2Ftangled%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/16/3652350.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">[一起看电影] 之 长发公主</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="北京欢乐谷 2010" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F07%2F2010-beijing%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/447409.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">北京欢乐谷 2010</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>原文地址： <a href="https://plus.google.com/115060278409766341143/posts/ViaVbBMpSVG">https://plus.google.com/115060278409766341143/posts/ViaVbBMpSVG</a></p>
<p><strong>1.使用Closure</strong></p>
<p>我们使用Closure库、模版以及编译器来渲染Google+里每一个页面的每一个节点——甚至包括掌控页面的Javascript脚本。以下几点有助于加速网页的显示：</p>
<p>-Closure模版可以在服务器端用Java渲染，也可以在浏览器里用JS生成。这样的话，我们需要的内容总是能立即获取到；同时，我们也可以在”后台”( 指浏览器中的异步加载 )中载入javaScript（就像“装饰”一个网页，在主干之上，不断给各节点增加事件的响应）</p>
<p>-同时，Closure套件为JS提供了许多新特性：强类型、更强的错误检测、“死代码”预估、跨模块的通信以及很多的优化手段。</p>
<p>(欲了解更多的Closure套件细节，访问 <a href="http://code.google.com/closure/">http://code.google.com/closure/</a> )</p>
<p><strong>2.总是在最适当的时候，书写最恰当的JS代码</strong></p>
<p>我们将JS代码分割程序多小的模块，并能被异步加载，从而更方便的管理Google+中的JS脚本。而用户只需要按需下载最少的JS脚本。我们依照两个规则来进行设计：</p>
<p>-客户端必须包含一个核心的代码，它通过历史标记(也就是记录浏览器地址栏中的地址)来判断加载需要的模块。</p>
<p>-如果需要的JS模块没有加载完全，我们会阻塞页面所有的操作，直到加载完毕。</p>
<p><strong>3.无刷新实现页面间的跳转</strong></p>
<p>一旦JS脚本载入完毕，我们将脱离服务器，在本地渲染所有的内容，因此可以达到很快的速度。我们设置了一个全局的事件监听器——它监听页面上所有的锚点的单击事件。我们尽可能将单击事件转换为页面内的跳转。然而，对于不能在客户端渲染，或是用户单击鼠标中键或者按住CTRL键的情况下，将打开一个新的页面。</p>
<p>在这种情况下，浏览器中的地址可以代表当前页面的状态，所以我们可以复制/分享这个地址以分享当前页面。</p>
<p><strong>4.刷新输出数据块</strong></p>
<p>为了让数据下载完就立刻呈现出来，我们使用刷新输出数据块的技术(flushing chunks)，这样用户就不需要等待整个页面载入完成。</p>
<p>我们的实现方法是：<br />
-最开始只载入最精简的数据，剩下的交由异步请求去获取。<br />
-仅当需要的数据没有下载完全的时候才阻塞页面的渲染。</p>
<p>这个系统也可以让我们更快的加载CSS,JS,图像等等资源，并让这个网站显得更快且响应更加及时。</p>
<p><strong>5.使用IFRAME</strong></p>
<p>突破浏览器并行加载JS脚本的限制(参见 <a href="http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/">http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/</a>)，[一般浏览器在一个页面中最多会并行加载3个JS脚本或是其他资源文件]——我们在页面的BODY的最前面加上一个IFRAME。其间的具体实现比较复杂，但是幸好我们还有Closure套件，实现此类功能非常方便。总而言之，相较网页速度的提升，这些努力都是值得的。</p>
<p>同时，你可能发现了我们通过XHR而非&lt;style&gt;标签来加载CSS样式表——这个设定并非为了优化，只是为了突破IE浏览器中一个样式表内选择器个数的限制。</p>
<p><strong>最后的话</strong></p>
<p>略。。。。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="2011GDD大会" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F10%2F2011gdd%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">2011GDD大会</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="生命就像一盒巧克力" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F05%2Flife-is-like-a-box-of-chocklate%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/25/331048.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">生命就像一盒巧克力</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="北京欢乐谷 2010" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D350&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/447409.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">北京欢乐谷 2010</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2012%2F01%2Fpage-speed%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2012/01/page-speed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[译]关于Android图形系统的一些事实真相</title>
		<link>http://bigline.cn/word/index.php/2011/12/android-2/</link>
		<comments>http://bigline.cn/word/index.php/2011/12/android-2/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 13:06:52 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[graphics]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=808</guid>
		<description><![CDATA[原文地址：https://plus.google.com/105051985738280261832/posts/2FXDCz8x93s (作者更新：后面的很多评论认为我写这个只是为Android不如IOS流畅乱找借口或是不体贴用户等等，我在这里需要澄清一下：之所以写这篇文章，仅仅是为了纠正网上传播的关于Android的各种错误认知。我并非是为了解释什么，只不过是想给那些关注Android却又被网上各种错误认知困扰的童鞋提供参考) 现在网上满天飞的各类关于Android图像渲染的水文实在让我不爽，下面给大家一些关于Android硬件渲染的事实真相： 1. Android 一直在使用硬件加速。实际上从1.0版本之后，所有的窗口元素的合成与显示都是通过硬件完成的。 2.这意味着许多你所看见的动画都是被加速过的：按钮的显示、通知栏下拉的阴影、不同Activity之间的切换动画、弹出窗口以及提示框的显示和隐藏等等等等。 3.Android以前使用软件方式(与硬件加速相对应)来控制各个窗口元素的渲染，例如下图的UI，其中包括四个窗口组件：状态条、壁纸、桌面上的的启动器、以及菜单。如果其中一个元素更改了自身的内容，例如一个菜单条目被高亮，那么在3.0之前的版本中，系统会使用软件方式来绘制新的内容。不过此时，并非所有的元素都需要被重新绘制，而各个窗口元素的拼接也是通过硬件方式完成的。类似的，任何窗口的移动：例如菜单的上下运动是完全通过硬件方式渲染的。 4. 现在我们来关注窗口元素的内部渲染过程：实际上为了达到每秒60帧的FPS,你并不一定非得要硬件加速。帧速取决于要显示的像素的数量和CPU的速度。比如说，二儿子(Nexus S)完全可以以60FPS的速度在它800*480分辨率的屏幕上完成任何普通的原生UI动画，类似列表的滚动等，完全没有问题。而最初的Droid系列却很难达到这样的速度。 5.在Android3.0中可以实现窗口元素”完全”的硬件加速绘制，而Android 4.0也基本上与3.0相同。 从3.0开始，如果你在应用中设置了一个标志允许硬件加速，那么此时所有的窗口的绘制都会交给GPU来完成。而在Android 4.0中最主要的改变就是：在面向Android 4.0或更高版本的应用中，硬件加速是被默认开启的，因而再也不需要在配置文件中设置 android:handwareAccelerated=”true”. (注意，我们之所以不允许面向之前版本的应用默认打开硬件加速，是因为光靠硬件加速，无法很好的完成某些旧版本的绘制操作；同时在应用需要其中一部分UI更新的时候，会影响其的一些表现。对于目前现有的很多应用，强制开启硬件加速，会明显的感觉到卡顿) 6.硬件加速并不如大家所认为的那样完美。例如在基于PVR驱动的设备上(比如二儿子跟三儿子)，光是在进程中开启OpenGL就得占用8M的RAM——对比一般进程的2M的开销实在是巨大。大家都知道，RAM是有限的，如果一大部分被拿去绘制，那么其他正在运行的进程就会因为缺少内存而出问题，比如严重拖缓应用间切换的速度。 7.由于OpenGL的额外开销，一般情况下，我们最好不要过多的使用其进行绘制。我们现在就在做一些工作，让Android 4.0能在不开启硬件加速的情况下流畅的在二儿子上使用：这样我们就不需要在系统进程中浪费8MB的内存用，也不需要在手机进程中浪费额外的8M内存，或者是在系统UI进程中的8MB内存 等等等等。相信我，你一般会忽略——用OpenGL来绘制一些类似状态栏的更新或是某些动画是完全没有好处的。 8.硬件加速并非流畅UI的“解药”。事实上，我们为了让UI更流畅，尝试了很多不同的方法，比如说：在1.6中引入了对前台/后台进程的调度策略，在2.3中对输入系统的重写，而后”严厉模式”的使用，并发的垃圾回收机制，载入器等等。如果你想达到60fps的帧速，你只有20毫秒的时间来处理每帧的内容。这时间实在太短，光是在UI进程中读取存储卡的操作产生的延时就会大于这个时限，尤其是在写操作的时候。 9.举些最近发现的影响UI流畅度的例子：我们注意到在二儿子上，使用4.0时列表的滚动就不如使用2.3时流畅。而导致这个现象的原因则是计时器的轻微漂移：有些时候应用正在接收触摸事件并在屏幕上绘制，而在上一个动作还没完成的的时候，就接受到下一个事件并开始绘制，导致它丢失了当前这帧。尽管发生这种现象的时候，帧速能达到稳定的60FPS.(当然，这个问题已经修正) 10.当人们比较Android跟IOS上浏览器的滚动流畅度的时候，他们所看见的差别实际上并不是开没开启硬件加速所致。 最初的时候，Android使用了一种完全不同的渲染策略，并做了一些折中：网页被转换成一个”显示列表“，并持续的在屏幕上进行绘制——而非使用块(Tiles)的形式。它有一个优点：就是在滚动或是缩放的时候不会发生有的块还没被渲染出来的现象(译者注：早期的IOS上这种现象非常明显，快速滚动到底部时要等一会网页才会一块一块的绘制出来)。 而这个方法的不给力之处就在于页面复杂的时候，帧速就明显低了。而在Android3.0中，浏览器开始使用块的方式进行渲染，于是它可以在滚动或是放大的时候保持一个稳定的帧速，自然也会出现新的块没有被立即渲染出来的情况。 与此同时，每个块都是以软件方式绘制的，我相信在iOS中也是这样的。(在3.0之前的版本中，即便没有开启硬件加速，基于块的策略也可以使用。而且如我之前提到的，二儿子可以很容易的达到60FPS) 11.硬件加速并不能如大家所想奇迹般的让绘制的问题统统消失。GPU的性能就是一个很重要的限制。最近一个很有趣的例子：基于英伟达的Tegra2的平板可以很容易的以60FPS的速度访问2.5次1280*800分辨率的屏幕中的任何一个像素点。现在考虑到在Android 3.0中切换到所有应用列表的情形：你需要绘制背景(1x 所有的像素)、接着是启动器和桌面小工具(假设内容不多，花费0.5x)，接着是所有应用的黑色背景(1x)，再接着是所有应用的ICON(0.5x)。显然，到这一步我们就已经超过了原先的预算了，而此时我们还没完成各个独立窗口元素的拼接并做最后的显示。想要取得帧速60FPS的动画效果，Android 3.0以及后续版本使用了一系列的小技巧。 其中主要的一个就是： 它将所有的窗口元素平铺在一个层中，而不是挨个拷贝到GPU的缓存中。然而即便这样，我们已然超出预算，幸好我们还有另一个策略：因Android中的背景是一个独立的窗口元素，我们可以将它设置的比屏幕更大来放置整幅位图。假设用户开始滑动，背景会跟着运动，此时却并不需要任何特殊的绘制，仅仅是移动窗口即可，而由于这个窗口是在一个平铺层上，我们甚至不需要用GPU来将这个窗口元素组织到屏幕中输出。 12.随着屏幕分辨率的不断升高，能否达到60FPS跟GPU的速度尤其是内存总线带宽息息相关。事实上，如果你想要提升硬件的效力，特别注意得提升内存总线的带宽。很多时候CPU(特别是带有完美的NEON指令集的CPU)会比内存总线块的多。 作者更新：下面居然有这么多讨论，但是我木有能力解释清楚相关的所有问题了。不过我会尽力在这里提供一些我认为比较有趣的观点。 有些人认为盖世兔(Galaxy S2)已经有了一个非常流畅的UI，并指出他们已然超越三儿子(Galaxy Nexus)并做了相当多的提升。事实上，大家忽略了很多设备上的差异，比如盖世兔的屏幕是480*800而三儿子是720*1280，如果二儿子在它480*800的屏幕上都能达到60FPS，那么拥有更NB的CPU的盖世兔必须得同样流畅嘛。 而两者之间最大的差别就是三儿子需要同时绘制2.4倍于盖世兔的像素。这相当于在单核上提升到2.4倍的速度。(需要指出 在UI渲染的时候，多核是没有意义的，因为最终的渲染必须要在一个主UI线程中完成，无法并行) 这就是为什么硬件加速非常重要：随着像素的提升，GPU通常能更好的处理图像相关的运算。事实上，这是我们在Android中引入硬件加速的最大动力。在720*1280的屏幕上，现有的ARM CPU达到60FPS很吃力，但是通过GPU渲染就不同了。同样，在与盖世兔的比较中，同时打开没有硬件加速的应用，在三儿子中无法达到盖世兔同样的60FPS，是因为它得渲染2.4倍于盖世兔的像素。 在最后，还得提及GPU的另外一个优势：GPU的引入让许多绘制效果变得更加容易。比如你要以软件形式绘制一个位图，你除了设置一个偏移量，不能做任何事。仅仅是放大/缩小这个位图就得花上相当多的时间进行渲染。而在GPU中，此类转换则相当容易。这就是为神马新的默认主题Holo使用硬件加速绘制背景。而在没有开启硬件加速的应用中，此类背景会自动去掉~<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Android拾遗" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Android拾遗</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="2011GDD大会" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F10%2F2011gdd%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">2011GDD大会</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="关于在线阅读系统的一些更正和解答" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/13/1247275.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">关于在线阅读系统的一些更正和解答</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="狄拉克海上的涟漪" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F07%2Flipper-in-the-sea%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/10/03/447413.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">狄拉克海上的涟漪</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="百合增强脚本" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F01%2Flily%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/05/30/10131917.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">百合增强脚本</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>原文地址：<a href="https://plus.google.com/105051985738280261832/posts/2FXDCz8x93s">https://plus.google.com/105051985738280261832/posts/2FXDCz8x93s</a></p>
<p>(作者更新：后面的很多评论认为我写这个只是为Android不如IOS流畅乱找借口或是不体贴用户等等，我在这里需要澄清一下：之所以写这篇文章，仅仅是为了纠正网上传播的关于Android的各种错误认知。我并非是为了解释什么，只不过是想给那些关注Android却又被网上各种错误认知困扰的童鞋提供参考)</p>
<p>现在网上满天飞的各类关于Android图像渲染的水文实在让我不爽，下面给大家一些关于Android硬件渲染的事实真相：</p>
<p>1. Android 一直在使用硬件加速。实际上从1.0版本之后，所有的窗口元素的合成与显示都是通过硬件完成的。</p>
<p>2.这意味着许多你所看见的动画都是被加速过的：按钮的显示、通知栏下拉的阴影、不同Activity之间的切换动画、弹出窗口以及提示框的显示和隐藏等等等等。</p>
<p>3.Android以前使用软件方式(与硬件加速相对应)来控制各个窗口元素的渲染，例如下图的UI，其中包括四个窗口组件：状态条、壁纸、桌面上的的启动器、以及菜单。如果其中一个元素更改了自身的内容，例如一个菜单条目被高亮，那么在3.0之前的版本中，系统会使用软件方式来绘制新的内容。不过此时，并非所有的元素都需要被重新绘制，而各个窗口元素的拼接也是通过硬件方式完成的。类似的，任何窗口的移动：例如菜单的上下运动是完全通过硬件方式渲染的。</p>
<p> <img src="http://www.simplemobilereview.com/wp-content/uploads/2010/12/2-home-menu.png" alt="" /></p>
<p>4. 现在我们来关注窗口元素的内部渲染过程：实际上为了达到每秒60帧的FPS,你并不一定非得要硬件加速。帧速取决于要显示的像素的数量和CPU的速度。比如说，二儿子(Nexus S)完全可以以60FPS的速度在它800*480分辨率的屏幕上完成任何普通的原生UI动画，类似列表的滚动等，完全没有问题。而最初的Droid系列却很难达到这样的速度。</p>
<p>5.在Android3.0中可以实现窗口元素”完全”的硬件加速绘制，而Android 4.0也基本上与3.0相同。 从3.0开始，如果你在应用中设置了一个标志允许硬件加速，那么此时所有的窗口的绘制都会交给GPU来完成。而在Android 4.0中最主要的改变就是：在面向Android 4.0或更高版本的应用中，硬件加速是被默认开启的，因而再也不需要在配置文件中设置 android:handwareAccelerated=”true”. (注意，我们之所以不允许面向之前版本的应用默认打开硬件加速，是因为光靠硬件加速，无法很好的完成某些旧版本的绘制操作；同时在应用需要其中一部分UI更新的时候，会影响其的一些表现。对于目前现有的很多应用，强制开启硬件加速，会明显的感觉到卡顿)</p>
<p>6.硬件加速并不如大家所认为的那样完美。例如在基于PVR驱动的设备上(比如二儿子跟三儿子)，光是在进程中开启OpenGL就得占用8M的RAM——对比一般进程的2M的开销实在是巨大。大家都知道，RAM是有限的，如果一大部分被拿去绘制，那么其他正在运行的进程就会因为缺少内存而出问题，比如严重拖缓应用间切换的速度。</p>
<p>7.由于OpenGL的额外开销，一般情况下，我们最好不要过多的使用其进行绘制。我们现在就在做一些工作，让Android 4.0能在不开启硬件加速的情况下流畅的在二儿子上使用：这样我们就不需要在系统进程中浪费8MB的内存用，也不需要在手机进程中浪费额外的8M内存，或者是在系统UI进程中的8MB内存 等等等等。相信我，你一般会忽略——用OpenGL来绘制一些类似状态栏的更新或是某些动画是完全没有好处的。</p>
<p>8.硬件加速并非流畅UI的“解药”。事实上，我们为了让UI更流畅，尝试了很多不同的方法，比如说：在1.6中引入了对前台/后台进程的调度策略，在2.3中对输入系统的重写，而后”严厉模式”的使用，并发的垃圾回收机制，载入器等等。如果你想达到60fps的帧速，你只有20毫秒的时间来处理每帧的内容。这时间实在太短，光是在UI进程中读取存储卡的操作产生的延时就会大于这个时限，尤其是在写操作的时候。</p>
<p>9.举些最近发现的影响UI流畅度的例子：我们注意到在二儿子上，使用4.0时列表的滚动就不如使用2.3时流畅。而导致这个现象的原因则是计时器的轻微漂移：有些时候应用正在接收触摸事件并在屏幕上绘制，而在上一个动作还没完成的的时候，就接受到下一个事件并开始绘制，导致它丢失了当前这帧。尽管发生这种现象的时候，帧速能达到稳定的60FPS.(当然，这个问题已经修正)</p>
<p>10.当人们比较Android跟IOS上浏览器的滚动流畅度的时候，他们所看见的差别实际上并不是开没开启硬件加速所致。 最初的时候，Android使用了一种完全不同的渲染策略，并做了一些折中：网页被转换成一个”显示列表“，并持续的在屏幕上进行绘制——而非使用块(Tiles)的形式。它有一个优点：就是在滚动或是缩放的时候不会发生有的块还没被渲染出来的现象(译者注：早期的IOS上这种现象非常明显，快速滚动到底部时要等一会网页才会一块一块的绘制出来)。 而这个方法的不给力之处就在于页面复杂的时候，帧速就明显低了。而在Android3.0中，浏览器开始使用块的方式进行渲染，于是它可以在滚动或是放大的时候保持一个稳定的帧速，自然也会出现新的块没有被立即渲染出来的情况。 与此同时，每个块都是以软件方式绘制的，我相信在iOS中也是这样的。(在3.0之前的版本中，即便没有开启硬件加速，基于块的策略也可以使用。而且如我之前提到的，二儿子可以很容易的达到60FPS)</p>
<p>11.硬件加速并不能如大家所想奇迹般的让绘制的问题统统消失。GPU的性能就是一个很重要的限制。最近一个很有趣的例子：基于英伟达的Tegra2的平板可以很容易的以60FPS的速度访问2.5次1280*800分辨率的屏幕中的任何一个像素点。现在考虑到在Android 3.0中切换到所有应用列表的情形：你需要绘制背景(1x 所有的像素)、接着是启动器和桌面小工具(假设内容不多，花费0.5x)，接着是所有应用的黑色背景(1x)，再接着是所有应用的ICON(0.5x)。显然，到这一步我们就已经超过了原先的预算了，而此时我们还没完成各个独立窗口元素的拼接并做最后的显示。想要取得帧速60FPS的动画效果，Android 3.0以及后续版本使用了一系列的小技巧。 其中主要的一个就是： 它将所有的窗口元素平铺在一个层中，而不是挨个拷贝到GPU的缓存中。然而即便这样，我们已然超出预算，幸好我们还有另一个策略：因Android中的背景是一个独立的窗口元素，我们可以将它设置的比屏幕更大来放置整幅位图。假设用户开始滑动，背景会跟着运动，此时却并不需要任何特殊的绘制，仅仅是移动窗口即可，而由于这个窗口是在一个平铺层上，我们甚至不需要用GPU来将这个窗口元素组织到屏幕中输出。</p>
<p>12.随着屏幕分辨率的不断升高，能否达到60FPS跟GPU的速度尤其是内存总线带宽息息相关。事实上，如果你想要提升硬件的效力，特别注意得提升内存总线的带宽。很多时候CPU(特别是带有完美的NEON指令集的CPU)会比内存总线块的多。</p>
<p>作者更新：下面居然有这么多讨论，但是我木有能力解释清楚相关的所有问题了。不过我会尽力在这里提供一些我认为比较有趣的观点。</p>
<p>有些人认为盖世兔(Galaxy S2)已经有了一个非常流畅的UI，并指出他们已然超越三儿子(Galaxy Nexus)并做了相当多的提升。事实上，大家忽略了很多设备上的差异，比如盖世兔的屏幕是480*800而三儿子是720*1280，如果二儿子在它480*800的屏幕上都能达到60FPS，那么拥有更NB的CPU的盖世兔必须得同样流畅嘛。</p>
<p>而两者之间最大的差别就是三儿子需要同时绘制2.4倍于盖世兔的像素。这相当于在单核上提升到2.4倍的速度。(需要指出 在UI渲染的时候，多核是没有意义的，因为最终的渲染必须要在一个主UI线程中完成，无法并行)</p>
<p>这就是为什么硬件加速非常重要：随着像素的提升，GPU通常能更好的处理图像相关的运算。事实上，这是我们在Android中引入硬件加速的最大动力。在720*1280的屏幕上，现有的ARM CPU达到60FPS很吃力，但是通过GPU渲染就不同了。同样，在与盖世兔的比较中，同时打开没有硬件加速的应用，在三儿子中无法达到盖世兔同样的60FPS，是因为它得渲染2.4倍于盖世兔的像素。</p>
<p>在最后，还得提及GPU的另外一个优势：GPU的引入让许多绘制效果变得更加容易。比如你要以软件形式绘制一个位图，你除了设置一个偏移量，不能做任何事。仅仅是放大/缩小这个位图就得花上相当多的时间进行渲染。而在GPU中，此类转换则相当容易。这就是为神马新的默认主题Holo使用硬件加速绘制背景。而在没有开启硬件加速的应用中，此类背景会自动去掉~</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="Android拾遗" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">Android拾遗</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="2011GDD大会" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F10%2F2011gdd%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">2011GDD大会</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="关于在线阅读系统的一些更正和解答" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/13/1247275.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">关于在线阅读系统的一些更正和解答</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="自顶向下的文法分析器实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D99&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://bigline.cn/word/wp-content/uploads/2010/04/p_large_E1b0_1fd4000110ad2d13-175x300.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">自顶向下的文法分析器实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="PS的笔刷真是好东西" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D336&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://bigline.cn/word/wp-content/uploads/2010/07/up1.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">PS的笔刷真是好东西</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2011/12/android-2/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Android拾遗</title>
		<link>http://bigline.cn/word/index.php/2011/11/android/</link>
		<comments>http://bigline.cn/word/index.php/2011/11/android/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 12:12:49 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=798</guid>
		<description><![CDATA[学习&#038;实践Android开发之中，发现了好多恶心问题啊 Mark一下~ Tread 的 Run 与 Start 在写ListView的时候，想通过新建一个线程来更新Adapter的数据，让此线程sleep 3000ms，再通过Handler返回UI线程进行更新，结果发现主UI线程也被睡了。。。研究了一晚上，终于发现我建立线程的时候，调用的是 Thread.run(); 此时主线程会等到新的线程执行完才会继续执行，囧。 应该调用Thread.start() 才对，这样会新开一个线程。 透明颜色 类似 AARRGGBB 的写法，我一直使用的是 @color/transparent = #00ffffff 设置了一个背景图，然后在ListView之中设定其 Divider = @color/transparent, CacheHintColor = @color/transparent, 结果发现在拖动的时候还是会有黑影出现，于是把颜色改成 @color/transparent = #00000000 这时候，拖动的时候倒没阴影了，但是Divider显示却出问题了，变成了后面ImageView的内容，最后只好折中，设置 Divider = #00ffffff, CacheHintColor = #00000000, 结果。。。奇迹般的没有问题了。。。。真心诡异啊 LayoutAnimation 在第一次给ListView设置Adapter时，可以设定LayoutAnimation给每个View进入加入一个动画。但是在之后，增加列表数据，并调用notifyDatasetChanged更新显示的时候，新加入的条目是不会以动画的形式加入的，实在无奈，只能自己写一个动画管理器了。 实现的思路是：ListView作为ViewGroup，取得其中的每一个View，而后设定Animation&#8230;..当然，这样有一个好处，就是可以控制每一个动画播放的时差，可以让动画越来越快~~ ListView中条目动画形式飞出 在设置了Animation之后，每一个条目会依据动画飞出，但是在动画结束之后，会原样重现在原先的列表中，没有办法，只能对每一个动画加载一个监听器，动画结束之后，调用 setVisibility(View.INVISIBLE)，此时不能用View.GONE哦~GONE会释放这个列表所占用的位置，使得后面的列表项向前移一格 ListView的缓冲 Android默认的ListView居然没有缓动，也就是移到顶部或尾部的时候不会跟iOS一样象征性的继续滚动然后弹性恢复，而是直接就停住了。用户体验非常不爽，不过网上关于这个的教程也蛮多的~我就不啰嗦了~自行百度把 。。。。继续整理 挖掘Android的恶心问题。。。。。<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="[译]关于Android图形系统的一些事实真相" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/12/08/12084557.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">[译]关于Android图形系统的一些事实真相</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="2011GDD大会" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F10%2F2011gdd%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">2011GDD大会</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="快回学校了 再更新一下" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2Fupdate%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/02/17/2804213.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">快回学校了 再更新一下</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="[一起看电影] 之 超级大坏蛋" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F03%2Fmegamind%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/17/3717129.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">[一起看电影] 之 超级大坏蛋</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="菊花体生成器" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F06%2Fbutton-to-make-chrysanthemum-font-style%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/447422.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">菊花体生成器</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>学习&#038;实践Android开发之中，发现了好多恶心问题啊 Mark一下~</p>
<p><strong>Tread 的 Run 与 Start</strong><br />
在写ListView的时候，想通过新建一个线程来更新Adapter的数据，让此线程sleep 3000ms，再通过Handler返回UI线程进行更新，结果发现主UI线程也被睡了。。。研究了一晚上，终于发现我建立线程的时候，调用的是 Thread.run(); 此时主线程会等到新的线程执行完才会继续执行，囧。<br />
<strong>应该调用Thread.start() 才对</strong>，这样会新开一个线程。</p>
<p><strong>透明颜色</strong><br />
类似 AARRGGBB 的写法，我一直使用的是 </p>
<blockquote><p>@color/transparent = #00ffffff</p></blockquote>
<p>设置了一个背景图，然后在ListView之中设定其</p>
<blockquote><p>Divider = @color/transparent, CacheHintColor = @color/transparent, </p></blockquote>
<p>结果发现在拖动的时候还是会有黑影出现，于是把颜色改成 </p>
<blockquote><p>@color/transparent = #00000000</p></blockquote>
<p>这时候，拖动的时候倒没阴影了，但是Divider显示却出问题了，变成了后面ImageView的内容，最后只好折中，设置</p>
<blockquote><p>Divider = #00ffffff, CacheHintColor = #00000000,</p></blockquote>
<p>结果。。。奇迹般的没有问题了。。。。真心诡异啊</p>
<p><strong>LayoutAnimation</strong><br />
在第一次给ListView设置Adapter时，可以设定LayoutAnimation给每个View进入加入一个动画。但是在之后，增加列表数据，并调用notifyDatasetChanged更新显示的时候，<strong>新加入的条目是不会以动画的形式加入的</strong>，实在无奈，只能自己写一个动画管理器了。<br />
实现的思路是：ListView作为ViewGroup，取得其中的每一个View，而后设定Animation&#8230;..当然，这样有一个好处，就是可以控制每一个动画播放的时差，可以让动画越来越快~~</p>
<p><strong>ListView中条目动画形式飞出</strong><br />
在设置了Animation之后，每一个条目会依据动画飞出，但是在动画结束之后，会原样重现在原先的列表中，没有办法，只能对每一个动画加载一个监听器，动画结束之后，调用 setVisibility(View.INVISIBLE)，此时不能用View.GONE哦~GONE会释放这个列表所占用的位置，使得后面的列表项向前移一格</p>
<p><strong>ListView的缓冲</strong><br />
Android默认的ListView居然<strong>没有缓动</strong>，也就是移到顶部或尾部的时候不会跟iOS一样象征性的继续滚动然后弹性恢复，而是直接就停住了。用户体验非常不爽，不过网上关于这个的教程也蛮多的~我就不啰嗦了~自行百度把</p>
<p>。。。。继续整理 挖掘Android的恶心问题。。。。。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="[译]关于Android图形系统的一些事实真相" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/12/08/12084557.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">[译]关于Android图形系统的一些事实真相</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="2011GDD大会" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F10%2F2011gdd%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">2011GDD大会</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="一梦三四年" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D22&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1195884.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">一梦三四年</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="菊花体生成器" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D289&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/447422.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">菊花体生成器</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="旅途的尽头 都是被逼的" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F06%2Fend-of-fullmetal-alchemist%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F11%2Fandroid%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/10/01/447417.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">旅途的尽头 都是被逼的</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2011/11/android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX跨域请求的实现</title>
		<link>http://bigline.cn/word/index.php/2011/07/crossdomain/</link>
		<comments>http://bigline.cn/word/index.php/2011/07/crossdomain/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 11:56:50 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[跨域]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=770</guid>
		<description><![CDATA[跨域就是因为JavaScript同源策略的限制，a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。例如 http://www.a.com/a.js 与以下同域： http://www.a.com/b.js http://www.a.com/script/b.js 与以下域名不同域： http://www.a.com:8080/a.js //端口不同 https://www.a.com/b.js //协议不同 http://70.32.92.74/b.js //对应IP 依旧不同域 http://script.a.com/b.js //子域不同 http://a.com/b.js //子域不同 即：域仅仅是通过“URL的首部”来识别，即window.location.protocol +window.location.host，也就是说域名, 协议与端口三者都相同才算是一个域。 跨域调用的方法 主要有以下几种： 利用FLASH ，即JS传递数据到FLASH，由FLASH进行提交，参考这里 同主域时候使用document.domain，但是有安全隐患，参考这里 不同主域的时候使用Iframe，其中又有location.hash(参考这里),window.name(参考这里)或是代理iframe(后面有说明)几种方式实现数据交互 JSONP &#8211; 即动态加载&#60;script&#62;标签，达到模拟GET请求的目的，同时反馈回来的数据可以直接被执行 参考这里 HTML5 postMessage接口 它可以在指定的iframe和window之间实现消息的传递 可以参考这里 HTML5 webSocket 也可以实现跨域调用，可以参考 http://html5demos.com/web-socket 不同域时的代理IFRAME说明 主域不同的时候我们可以使用间接的代理，其实现原理是基于 同域的窗口和框架能够互相调用JS实现数据传递 例如域a.com上的原页面为A，通过iframe加载b.com上的页面B，B上再通过一个iframe加载a.com上的页面C。即A &#62; B &#62; C，其值是向下传递的。 而C可以直接调用A上的方法和属性，例如 window.parent.parent.alert(0); 调用A页面上的alert。 大家可以用手机或是电脑访问 http://bigline.cn/lab/crossdomain/ 进行测试(其中本域为 bigline.cn 调用的域为 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="DomWriter:延迟调用含有document.write的外部JS脚本" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fdom-writer%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/02/1148425.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">DomWriter:延迟调用含有document.write的外部JS脚本</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="所谓的喜剧演员" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D184&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://bigline.cn/word/wp-content/uploads/2010/04/p-beds05218421-17-54.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">所谓的喜剧演员</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="[一起看电影] 之 超级大坏蛋" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F03%2Fmegamind%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/17/3717129.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">[一起看电影] 之 超级大坏蛋</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>跨域就是因为JavaScript同源策略的限制，a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。例如 http://www.a.com/a.js 与以下同域：</p>
<ul>
<li>http://www.a.com/b.js</li>
<li>http://www.a.com/script/b.js</li>
</ul>
<p>与以下域名不同域：</p>
<ul>
<li>http://www.a.com:8080/a.js //端口不同</li>
<li>https://www.a.com/b.js //协议不同</li>
<li>http://70.32.92.74/b.js //对应IP 依旧不同域</li>
<li>http://script.a.com/b.js //子域不同</li>
<li>http://a.com/b.js //子域不同</li>
</ul>
<p>即：域仅仅是通过“URL的首部”来识别，即window.location.protocol +window.location.host，也就是说域名, 协议与端口三者都相同才算是一个域。</p>
<h3>跨域调用的方法</h3>
<p>主要有以下几种：</p>
<ul>
<li><strong>利用FLASH</strong> ，即JS传递数据到FLASH，由FLASH进行提交，参考<a href="http://hi.baidu.com/luanxian/blog/item/f76633dbf0634d65d1164e2a.html" target="_blank">这里</a></li>
<li>同主域时候使用<strong>document.domain</strong>，但是有安全隐患，参考<a href="http://blog.csdn.net/kevin4190689/article/details/4770362" target="_blank">这里</a></li>
<li>不同主域的时候使用<strong>Iframe</strong>，其中又有<strong>location.hash</strong>(<a href="http://www.cnblogs.com/A-I/archive/2010/06/01/1748915.html" target="_blank">参考这里</a>),<strong>window.name</strong>(<a href="http://www.planabc.net/2008/09/01/window_name_transport/" target="_blank">参考这里</a>)或是<strong>代理iframe</strong>(后面有<a href='#kuayu'>说明</a>)几种方式实现数据交互</li>
<li>JSONP &#8211; 即动态加载&lt;script&gt;标签，达到模拟GET请求的目的，同时反馈回来的数据可以直接被执行 <a href="http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/" target="_blank">参考这里</a></li>
<li>HTML5 postMessage接口 它可以在指定的iframe和window之间实现消息的传递 可以<a href="http://www.iteye.com/news/4221-the-use-of-html-5-postmessage" target="_blank">参考这里</a></li>
<li>HTML5 webSocket 也可以实现跨域调用，可以参考 <a href="http://html5demos.com/web-socket" target="_blank">http://html5demos.com/web-socket </a></li>
</ul>
<p><span id="more-770"></span></p>
<h3 id='kuayu'>不同域时的代理IFRAME说明</h3>
<p>主域不同的时候我们可以使用间接的代理，其实现原理是基于 <strong>同域的窗口和框架能够互相调用JS实现数据传递</strong></p>
<p>例如域a.com上的原页面为A，通过iframe加载b.com上的页面B，B上再通过一个iframe加载a.com上的页面C。即A &gt; B &gt; C，其值是向下传递的。 而C可以直接调用A上的方法和属性，例如<br />
window.parent.parent.alert(0);<br />
调用A页面上的alert。</p>
<p>大家可以用手机或是电脑访问 <a href="http://bigline.cn/lab/crossdomain/" target=_blank > http://bigline.cn/lab/crossdomain/</a> 进行测试(其中本域为 bigline.cn 调用的域为 cidu.jx.cn)</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="DomWriter:延迟调用含有document.write的外部JS脚本" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fdom-writer%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/02/1148425.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">DomWriter:延迟调用含有document.write的外部JS脚本</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="北京欢乐谷 2010" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F07%2F2010-beijing%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/447409.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">北京欢乐谷 2010</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2011/07/crossdomain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>更新一下</title>
		<link>http://bigline.cn/word/index.php/2011/02/2011/</link>
		<comments>http://bigline.cn/word/index.php/2011/02/2011/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 12:30:41 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=685</guid>
		<description><![CDATA[话说很久很久很久没更新了貌似 到家了果然就开始看电视剧了。。。 就记录下部分学习的笔记吧 首先是余弦定理 忘记是高中还是初中学的了 如图所示 将它扩展到两个N维向量，公式就变成这两个向量的夹角 假如X Y 向量分别是x1,x2,&#8230;,x64000 和y1,y2,&#8230;,y64000，其夹角的计算公式为： 那有神马用？ 如果X与Y分别代表两个句子(也可以是文章或者其他各种东东) 通过余弦定理 就可以简单的计算其相似度了嘛 假设我们有一个词典 X代表句子中的每一个词语在词典中的位置，Y亦然 于是我们将XY相乘 就能粗略的判断其相似度 原来最近做的就是这个啊 当然还有各种边边角角的问题嘛 如何做到分词最优，比如最出名的问题：“南京市长江大桥” 该理解成 “南京市 长江大桥” 还是 “南京 市长 江大桥”呢? 同时，句子中含有停用词，即在汉语中出现的太过泛滥的字词，比如“的” “在” “和” “接着”，果断要抛弃之 还有，汉语一大特色就是近义词同义词出现，”神马”和”什么”就在很多时候是通用的 再者，每个词的出现频率与语境考量，这种问题太过恶心就不考虑了 一些实现 无奈此类资源网上不好找，词典神马的还是自己收集最好 整理词典的过程中发现：”的” “是” 二词堪称绝代双骄，出现的太频繁了 稀疏矩阵是好东西：两个向量相乘的时候那么多的0 占内存也影响效率 实现一个稀疏矩阵好处多多 判断问题分类： 对付一个问句，最重要的是确定问题的分类，不过首先要找到提问词以及问题的对象，例如 南京市最长的大桥是什么? 疑问词是”什么” 问题的对象是”大桥” 不过这里还要处理下 “什么”作为疑问词太过平凡，要往前找找，把”是”字融进来，”是什么”就能说明我们要问的是一样东西了 分类器一定要用到了，SVM向量机是个不错的选择，不过我还是喜欢用神经网络分类器。当然自己实现太麻烦了，推荐使用JOONE 类库，一切不就图个方便嘛 答案的模式匹配: 比如我问 “神马是大航路” [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="[译]关于Android图形系统的一些事实真相" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F12%2Fandroid-2%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/12/08/12084557.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">[译]关于Android图形系统的一些事实真相</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="RAINBOW到手" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F05%2Frainbow-comes%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/09/30/447428.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">RAINBOW到手</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="时间是无限的" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D222&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/447426.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">时间是无限的</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>话说很久很久很久没更新了貌似<br />
到家了果然就开始看电视剧了。。。<br />
就记录下部分学习的笔记吧</p>
<h2>首先是余弦定理</h2>
<p>忘记是高中还是初中学的了<br />
如图所示<br />
<img class="alignnone" title="余弦定理" src="http://images.cnblogs.com/cnblogs_com/live41/cosA_2.png" alt="余弦定理" width="160" height="69" /><br />
将它扩展到两个N维向量，公式就变成这两个向量的夹角<br />
假如X Y 向量分别是x1,x2,&#8230;,x64000 和y1,y2,&#8230;,y64000，其夹角的计算公式为：<br />
<img class="alignnone" title="余弦定理" src="http://images.cnblogs.com/cnblogs_com/live41/cosTheta_2.jpg" alt="余弦定理" width="320" height="49" /></p>
<h2>那有神马用？</h2>
<p>如果X与Y分别代表两个句子(也可以是文章或者其他各种东东) 通过余弦定理 就可以简单的计算其相似度了嘛<br />
假设我们有一个词典 X代表句子中的每一个词语在词典中的位置，Y亦然<br />
于是我们将XY相乘 就能粗略的判断其<strong>相似度</strong></p>
<h2>原来最近做的就是这个啊</h2>
<p>当然还有各种边边角角的问题嘛<br />
<span id="more-685"></span>如何做到<strong>分词最优</strong>，比如最出名的问题：“南京市长江大桥” 该理解成 “南京市 长江大桥” 还是 “南京 市长 江大桥”呢?<br />
同时，句子中含有<strong>停用词</strong>，即在汉语中出现的太过泛滥的字词，比如“的” “在” “和” “接着”，果断要抛弃之<br />
还有，汉语一大特色就是<strong>近义词同义词</strong>出现，”神马”和”什么”就在很多时候是通用的<br />
再者，每个词的出现频率与语境考量，这种问题太过恶心就不考虑了</p>
<h2>一些实现</h2>
<p>无奈此类资源网上不好找，词典神马的还是自己收集最好<br />
整理词典的过程中发现：”的” “是” 二词堪称绝代双骄，出现的太频繁了</p>
<p><strong>稀疏矩阵</strong>是好东西：两个向量相乘的时候那么多的0 占内存也影响效率 实现一个稀疏矩阵好处多多</p>
<p><strong>判断问题分类</strong>：<br />
对付一个问句，最重要的是确定问题的分类，不过首先要找到<strong>提问词以及问题的对象</strong>，例如 南京市最长的大桥是什么?<br />
疑问词是”什么” 问题的对象是”大桥” 不过这里还要处理下 “什么”作为疑问词太过平凡，要往前找找，把”是”字融进来，”是什么”就能说明我们要问的是一样东西了</p>
<p><strong>分类器</strong>一定要用到了，SVM向量机是个不错的选择，不过我还是喜欢用神经网络分类器。当然自己实现太麻烦了，推荐使用<a href="http://sourceforge.net/projects/joone">JOONE</a> 类库，一切不就图个方便嘛</p>
<p><strong>答案的模式匹配</strong>: 比如我问 “神马是大航路” ，最好的答案自然是 “大航路是亚楠兄正在写的博客”</p>
<p>也就是说，在找寻答案的时候，茫茫句海，如果你遇到一句话开头是”大航路是”的句子，你一定要好好珍惜，因为它基本上就是你要的答案。</p>
<p>还有就是答案的动态性：数据库中存储的是固定的答案，但对于”今天礼拜几”这样具有实效性的问题，固定的答案就未免太尴尬(“我不知道” 除外)，不妨做出一个小型的<strong>解释器</strong>，答案不仅仅只是具体问题的解答，也可以是一段自定义的解释型代码，会被系统所执行</p>
<p>罗嗦完了 &#8211; -</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="4"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="生命就像一盒巧克力" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F05%2Flife-is-like-a-box-of-chocklate%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/25/331048.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">生命就像一盒巧克力</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="无聊北上" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F07%2Fheading-north%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/10/05/447410.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">无聊北上</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="菊花体生成器" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F06%2Fbutton-to-make-chrysanthemum-font-style%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/447422.png" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">菊花体生成器</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="自顶向下的文法分析器实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2F%3Fp%3D99&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F02%2F2011%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://bigline.cn/word/wp-content/uploads/2010/04/p_large_E1b0_1fd4000110ad2d13-175x300.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">自顶向下的文法分析器实现</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="4" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2011/02/2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POI中文字高亮的实现与在线代理的一些正则表达式</title>
		<link>http://bigline.cn/word/index.php/2010/12/poi-something/</link>
		<comments>http://bigline.cn/word/index.php/2010/12/poi-something/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 05:35:46 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=553</guid>
		<description><![CDATA[1.关于POI中的文字高亮，直接修改选中文字比较麻烦，不妨换一种变通的方法，将原先的文本框清空，而再分别添加不同颜色的TextRun进去。 代码参考如下，仅作参考，不过还需要考虑更多情况。 String key="入口"; Shape[] shape = slide[order].getShapes(); for(int k=0;k&#60;shape.length;k++) { if (shape[k] instanceof AutoShape) { AutoShape s = (AutoShape)(shape[k]); s.getAnchor(); String[]sm = s.getText().split(key); s.setText("");//将文本框内文字清空 for(int i=0;i&#60;sm.length;i++) { System.out.println(sm[i]); TextRun _autoText2 = s.createTextRun();//新建一个TextRun RichTextRun _richText = _autoText2.appendText(sm[i]);//将文字加入此TextRun _richText.setFontColor(new Color(0,0,255));//设定此TextRUn的颜色 if(i&#60;sm.length-1) { autoText2 = s.createTextRun();//加入关键词 _richText = _autoText2.appendText(m); _richText.setFontColor(new Color(255,0,0)); } } }else if (shape[k] instanceof [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" sty]]></description>
			<content:encoded><![CDATA[<p><strong>1.关于POI中的文字高亮</strong>，直接修改选中文字比较麻烦，不妨换一种变通的方法，将原先的文本框清空，而再分别添加不同颜色的TextRun进去。<br />
代码参考如下，仅作参考，不过还需要考虑更多情况。</p>
<pre name="code" class="java">
String key="入口";
Shape[] shape = slide[order].getShapes();
for(int k=0;k&lt;shape.length;k++)
{
      if (shape[k] instanceof AutoShape)
      {
            AutoShape s = (AutoShape)(shape[k]);
            s.getAnchor();
            String[]sm = s.getText().split(key);
            s.setText("");//将文本框内文字清空
            for(int i=0;i&lt;sm.length;i++)
            {
                  System.out.println(sm[i]);
                  TextRun _autoText2 = s.createTextRun();//新建一个TextRun
                  RichTextRun _richText = _autoText2.appendText(sm[i]);//将文字加入此TextRun
                  _richText.setFontColor(new Color(0,0,255));//设定此TextRUn的颜色
                  if(i&lt;sm.length-1)
                  {
                        autoText2 = s.createTextRun();//加入关键词
                        _richText = _autoText2.appendText(m);
                        _richText.setFontColor(new Color(255,0,0));
                  }
            }
      }else if (shape[k] instanceof TextBox)
      {
            TextBox s = (TextBox)(shape[k]);
            System.out.println(s.getText());
            //类似的操作
      }
}
</pre>
<p><strong>2.关于之前的在线代理中的正则表达式</strong>,是有问题的,不过还好,大家都发现啦～但是还是要更正一下～</p>
<p><a href="http://bigline.cn/word/index.php/2010/12/java-socket-proxy/">上一篇日志</a>当中，我使用的是</p>
<pre name="code" class="java">
res = res.replaceAll("(<a.*?href=\")([^http://][^\"]+\".*?>)", "$1"+host+"$2");
</pre>
<p>用以匹配不以 http:// 开头的链接，从而将相对地址转化为绝对地址<br />
而^实际上是以单个字符为匹配单位的，于是此正则表达式所匹配的是所有的不以h,t,p,:,/ 5个字符开头的链接，于是显然有问题了。<br />
实际上应该修改成如下所示，具体原因大家可以<a href="http://www.baidu.com/">百度</a>之</p>
<pre name="code" class="java">
res = res.replaceAll("(<a.*?href=\")((?!http://)[^\"]+\".*?>)", "$1"+host+"$2");
</pre>
<p><strong>3.关于在线代理中的禁止网站的实现</strong><br />
实际上我开始的时候设想的是：假如我在禁止的条目里面输入 baidu.com，而后</p>
<p>http://www.baidu.com不能访问</p>
<p>http://mp3.baidu.com不能访问</p>
<p>http://www.otherdomain.com/xx/baidu.com/sd <font color="red">能访问</font><br />
http://pbaidu.com <font color="red">能访问</font><br />
这时候推荐使用正则表达式处理</p>
<pre name="code" class="java">
String forbid = "baidu.com";
if(url.matches("(http://)*([^/]*\\.)*"+forbid+"(.*?)"))
{
	System.out.println(st + " forbidden");
}else
	System.out.println(st + " pass");
/*
输出
http://baidu.com forbidden
http://mp3.baidu.com forbidden
http://www.baidu.com forbidden
http://pbaidu.com pass
http://A.domain/baidu.com pass
*/
</pre>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="关于在线阅读系统的一些更正和解答" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/13/1247275.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">关于在线阅读系统的一些更正和解答</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2010/12/poi-something/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>关于在线阅读系统的一些更正和解答</title>
		<link>http://bigline.cn/word/index.php/2010/12/correction/</link>
		<comments>http://bigline.cn/word/index.php/2010/12/correction/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 06:15:30 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[大作业]]></category>
		<category><![CDATA[更正]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=534</guid>
		<description><![CDATA[很抱歉！由于俺的疏忽，没注意到Apache POI类库并不完善，同学们在完成大作业的时候可能会遇到一些困难，现在就更正一下吧～减轻同学们的负担～ 要求变更： 1.关于添加备注，由于POI的不完善，不能直接在PPT里面添加备注，需要自己在PPT的每一页上添加一点备注(空格都行)，才能通过POI进行更改，最后检查的时候也会提供特制的PPT供大家使用，所以不必担心 2.高亮显示的要求变更为：关键词变成红色，其他字变成黑色，而不需要更改背景。 3.如果还能按照原先的要求实现～显然要加分嘛 下面是对于修改的说明以及童鞋们发给我的一些问题的回答的整理： A.首先是关于文字高亮的说明： POI中的层次关系为:Slide -&#62; Shape(AutoShape 或 TextBox) -&#62; TextRun -&#62; RichTextRun 而AutoShape与TextBox为常见的文本框，继承自TextShape，且修改背景颜色只能再此一层上进行操作。即TextRun与RichTextRun只能修改文字的颜色大小等样式，但不能修改背景颜色。 于是现在只是要求修改关键字以及其他文字的颜色即可，以避免很多的麻烦。 当然，要想实现背景色的高亮操作的话，我的想法是: 1.将一个AutoShape拆分成多个AutoShape，对应关键词的AutoShape则可以设定颜色 2.直接在最底层绘制一个矩形，对应于关键词的位置。 但问题的最关键还是如何确定要高亮的文字的位置以及大小，需要从这方面考虑吧～ B.如何建立AutoShape？以下是参考代码 AutoShape _autoShape = new AutoShape(ShapeTypes.Rectangle); //设置形状 TextRun _autoText = _autoShape.createTextRun(); _autoText.setRawText("杜磊米"); _autoShape.setAnchor(new Rectangle(200,200,100,100)); _autoShape.setFillColor(new Color(170,215,255)); _autoShape.setLineWidth(5.0); _autoShape.setLineStyle(Line.LINE_DOUBLE); // AutoShape 对象可以设置多个不同样式文本 TextRun _autoText2 = _autoShape.createTextRun(); RichTextRun _richText = _autoText2.appendText("杜"); _richText.setFontColor(new Color(255,255,255)); RichTextRun [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style=]]></description>
			<content:encoded><![CDATA[<p>很抱歉！由于俺的疏忽，没注意到Apache POI类库并不完善，同学们在完成大作业的时候可能会遇到一些困难，现在就更正一下吧～减轻同学们的负担～<br />
<strong>要求变更：</strong></p>
<blockquote><p>1.关于添加备注，由于POI的不完善，不能直接在PPT里面添加备注，<span style="color: #ff0000;">需要自己在PPT的每一页上添加一点备注(空格都行)，才能通过POI进行更改</span>，最后检查的时候也会提供特制的PPT供大家使用，所以不必担心<br />
2.高亮显示的要求变更为：<span style="color: #ff0000;">关键词变成红色，其他字变成黑色，而不需要更改背景</span>。<br />
3.如果还能按照原先的要求实现～<span style="color: #ff0000;">显然要加分嘛</span></p></blockquote>
<p><strong>下面是对于修改的说明以及童鞋们发给我的一些问题的回答的整理：</strong><br />
<strong>A.首先是关于文字高亮的说明：</strong><br />
POI中的层次关系为:Slide -&gt; Shape(AutoShape 或 TextBox) -&gt; TextRun -&gt; RichTextRun<br />
而AutoShape与TextBox为常见的文本框，继承自TextShape，<strong>且修改背景颜色只能再此一层上进行操作</strong>。即TextRun与RichTextRun只能修改文字的颜色大小等样式，但不能修改背景颜色。</p>
<p>于是现在只是要求修改关键字以及其他文字的颜色即可，以避免很多的麻烦。</p>
<p><strong> 当然，要想实现背景色的高亮操作的话，我的想法是: </strong></p>
<blockquote><p>1.将一个AutoShape拆分成多个AutoShape，对应关键词的AutoShape则可以设定颜色<br />
2.直接在最底层绘制一个矩形，对应于关键词的位置。<br />
但问题的最关键还是如何<strong>确定要高亮的文字的位置以及大小</strong>，需要从这方面考虑吧～</p></blockquote>
<p><span id="more-534"></span><strong>B.如何建立AutoShape？以下是参考代码</strong></p>
<pre name="code" class="java">
AutoShape _autoShape = new AutoShape(ShapeTypes.Rectangle); //设置形状
TextRun _autoText = _autoShape.createTextRun();
_autoText.setRawText("杜磊米");
_autoShape.setAnchor(new Rectangle(200,200,100,100));
_autoShape.setFillColor(new Color(170,215,255));
_autoShape.setLineWidth(5.0);
_autoShape.setLineStyle(Line.LINE_DOUBLE);

// AutoShape 对象可以设置多个不同样式文本
TextRun _autoText2 = _autoShape.createTextRun();
RichTextRun _richText = _autoText2.appendText("杜");
_richText.setFontColor(new Color(255,255,255));
RichTextRun _richText2 = _autoText2.appendText("磊米");
_richText2.setFontColor(new Color(255,0,0));
_richText2.setFontSize(12);

// 将文本对象置入幻灯片
slide.addShape(_autoShape);
</pre>
<p><strong>C.如何取得一个Slide中的所有图片？</strong></p>
<pre name="code" class="java">
Shape[] sps = slide[1].getShapes();
for(Shape s:sps)
{
if(s instanceof Picture)
{
//要干什么 你知道的
}
}
</pre>
<p><strong>D.备注如何操作</strong><br />
备注对应的是Notes类，通过SlideShow.getNotes()[对应的页面编号0开始]就可以取得对应的Notes了<br />
而Slide.setNotes(Notes)功能测试发现好像还是有问题，直接导致不能增加新的注释<br />
而通过getNotes获取的Notes里的文字可以进行修改，经测试没有问题</p>
<p><strong>E.文件上传以及参数的获取</strong><br />
首先需要将表单修改为：</p>
<pre name="code" class="XML">
&lt;form action="FileUploadServlet" method="post" enctype="multipart/form-data"&gt;
&lt;/form&gt;
</pre>
<p>这样才能以文件流的形式上传<br />
而此时在服务器端执行request.getParamenter()方法是读取不到参数的。<br />
正确的方法是自己来解析上传的比特流里的参数<br />
这里是我的<a target=_blank href='http://bigline.cn/word/wp-content/uploads/2010/12/UploadServlet.java_.txt'>UploadServlet.java</a>源代码，希望能给大家作为参考</p>
<p><strong>F.文件上传后保存在哪里？</strong><br />
尽量避免使用绝对地址，而可以在运行的时候获取网站根目录地址。<br />
参考在Servlet中：</p>
<pre name="code" class="java">
String dirurl=request.getSession().getServletContext().getRealPath("")+"\\PPT\\"+OwnerID;
</pre>
<p>这样做的好处是避免在Eclipse中调用Tomcat时候，会自动开启一个新的临时目录，上传文件到原目录后不会同步到临时目录，于是在Tomcat重启前链接失效的现象。</p>
<p>目前遇到的问题就是这些了吧～如果大家还有啥问题就发信给我吧 xyn90(at)qq.com，我尽可能回答大家吧～<br />
嗯 就是这样</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="[一起看电影] 之 超级大坏蛋" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F03%2Fmegamind%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2011/03/17/3717129.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">[一起看电影] 之 超级大坏蛋</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI中文字高亮的实现与在线代理的一些正则表达式" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI中文字高亮的实现与在线代理的一些正则表达式</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2010/12/correction/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>HTTP请求过程与在线代理流程</title>
		<link>http://bigline.cn/word/index.php/2010/12/http-request-and-proxy/</link>
		<comments>http://bigline.cn/word/index.php/2010/12/http-request-and-proxy/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 02:37:56 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[代理]]></category>
		<category><![CDATA[在线]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=518</guid>
		<description><![CDATA[看来大家对代理的过程还是不太了解，就专门解释一下吧～ 所有的流程都以尽量简单的形式表示～ 首先是我们正常访问某一网站http://bbs.nju.edu.cn Raw request GET / HTTP/1.1 User-Agent: Opera/9.80 (Windows NT 6.1; U; Edition IBIS; zh-cn) Presto/2.6.30 Version/10.63 Host: bbs.nju.edu.cn Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: zh-cn,zh;q=0.9,en;q=0.8 Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1 Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0 If-Modified-Since: Mon, 13 Sep 2010 05:57:22 GMT Cookie: FOOTKEY=1322203998; SCREEN_NAME=tZmnnLA49+ywh6Ob5tpxdQ== Cookie2: $Version=1 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="DomWriter:延迟调用含有document.write的外部JS脚本" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fdom-writer%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/02/1148425.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">DomWriter:延迟调用含有document.write的外部JS脚本</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI中文字高亮的实现与在线代理的一些正则表达式" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI中文字高亮的实现与在线代理的一些正则表达式</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>看来大家对代理的过程还是不太了解，就专门解释一下吧～<br />
所有的流程都以尽量简单的形式表示～<br />
<strong>首先是我们正常访问某一网站http://bbs.nju.edu.cn</strong></p>
<blockquote><p><strong>Raw request</strong><br />
GET / HTTP/1.1<br />
<strong>User-Agent</strong>: Opera/9.80 (Windows NT 6.1; U; Edition IBIS; zh-cn) Presto/2.6.30 Version/10.63<br />
Host: bbs.nju.edu.cn<br />
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1<br />
Accept-Language: zh-cn,zh;q=0.9,en;q=0.8<br />
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1<br />
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0<br />
If-Modified-Since: Mon, 13 Sep 2010 05:57:22 GMT<br />
<strong>Cookie</strong>: FOOTKEY=1322203998; SCREEN_NAME=tZmnnLA49+ywh6Ob5tpxdQ==<br />
Cookie2: $Version=1<br />
Connection: Keep-Alive, TE<br />
TE: deflate, gzip, chunked, identity, trailers</p>
<p><strong>Raw Response</strong><br />
HTTP/1.1 304 OK<br />
Server: nginx/0.8.39<br />
Date: Thu, 09 Dec 2010 01:50:24 GMT<br />
Last-Modified: Mon, 13 Sep 2010 05:57:22 GMT<br />
Content-Type: text/html; charset=gb2312<br />
Connection: keep-alive</p></blockquote>
<p>用户通过浏览器发出一个HTTP REQUEST请求，其头部如上述<strong>Raw Request</strong>所示，服务器接收到响应后，就返回一个Response，其头部如<strong>Raw Response</strong>所示，表明返回的是text/html 即HTML文本，编码是GB2312，而Response Body部分则即时我们所要请求的文本，假定内容是</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;a href=”http://baidu.com”&gt;链接&lt;/a&gt;</p>
<p>&lt;img src=”a.jpg” /&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<p>用户(即浏览器)得到这段文字以后，就开始解释此段HTML代码，读取到&lt;a href=”http://baidu.com”&gt;链接&lt;/a&gt;之后就开始绘制一个指向http://baidu.com的超链接，读到&lt;img src=”a.jpg” /&gt;之后就知道要绘制一个图像，而用户端现在是不知道这个图片内容的，只知道这个图片 的地址是 a.jpg (相对定位 即为页面同名目录下的a.jpg，在本例中实际上为 <strong>http://bbs.nju.edu.cn/a.jpg 为绝对定位</strong>)。</p>
<p>那么<strong>浏览器就要再发送一个HTTP REQUEST请求</strong>，这次请求的地址就是http://bbs.nju.edu.cn/a.jpg了，然后服务器再返回一个Response，而这次Response Header的格式变成这样：</p>
<blockquote><p><strong>Raw Response</strong><br />
HTTP/1.1 200 OK<br />
Server: nginx/0.8.39<br />
Date: Thu, 09 Dec 2010 02:02:55 GMT<br />
<strong>Content-Type</strong>: image/jpeg<br />
<strong>Content-Length</strong>: 3741<br />
Last-Modified: Fri, 05 May 2006 15:42:36 GMT<br />
Connection: keep-alive<br />
Expires: Mon, 07 Feb 2011 02:02:55 GMT<br />
Cache-Control: max-age=5184000<br />
Accept-Ranges: bytes</p></blockquote>
<p>其中指出了返回内容的类型是图像，大小是3741，而Response Body即为图像的二进制文件</p>
<p>回到浏览器的解释过程中，浏览器得到了a.jpg的Response，就开始继续在网页上把这个图片给绘制出来，然后读到&lt;/html&gt;的时候，结束页面的绘制，一个网页就在浏览器窗口中正常显示出来了。</p>
<p>下图就显示了我们访问http://bbs.nju.edu.cn的时候，浏览器所发出的请求，也就是说，<strong>虽然我们看到的只是打开一个页面，但是其中的所有框架，图像，JS脚本都是通过新建请求加入请求队列来实现的</strong>，每个请求持续了几十毫秒，最后在<strong>2859ms</strong>的时候所有的资源都请求并相应到，页面加载完成。</p>
<p><a href="http://bigline.cn/word/wp-content/uploads/2010/12/lily.jpg"><img class="alignnone size-full wp-image-520" title="lily" src="http://bigline.cn/word/wp-content/uploads/2010/12/lily.jpg" alt="" width="775" height="421" /></a></p>
<p>以上是用户(即浏览器)与目标网站的直接对话的过程，下面介绍下在线代理的简单模型</p>
<p><span id="more-518"></span>还是根据上一篇文章的图例所示，服务器端A为Web Project，在Apache+Tomcat里执行后假定其的访问地址为 http://localhost/AProject</p>
<p>假设我们新建了一个Servlet 命名为<strong>S</strong> 并配置为 http://localhost/AProject/S</p>
<p>其中URL参数以GET的形式传入<strong>S</strong>，即调用的形式为 http://localhost/AProject/S?url=<span style="color: #808080;">http://baidu.com</span><br />
而服务器B的socket服务的IP为127.0.0.1 端口为8888</p>
<p><strong>S</strong>接受传入参数url之后，新建一个到127.0.0.1,端口8888的socket连接，并将必要的信息URL,CONTENT-TYPE,COOKIES等传给服务器B，服务器B于是根据得到的参数模仿浏览器新建一个request，并发给目标网站，于是取得目标网站返回的Response，接着将Response传回给<strong>S</strong>，<strong>S</strong>再对Response进行适当的修改，传给用户(浏览器)。</p>
<p>于是浏览器就得到了此Response，并按照原先的方式读取Response的Header与Body并且在窗口中绘制出来。类似，碰到图片或者JS的时候，又会继续发出去请求(此时由于之前<strong>S</strong>的修改，其请求的地址应当是类似 http://localhost/AProject/S?url=原请求的地址)</p>
<p>还是引用上文提到的例子，IMG标签中的SRC地址发生了变化，而浏览器解释到此标签的时候，就不是直接请求http://bbs.nju.edu.cn/a.jpg，而是向我们的Servlet <strong>S</strong>发出请求了</p>
<blockquote><p>&lt;html&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;a href=”http://baidu.com”&gt;链接&lt;/a&gt;</p>
<p>&lt;img src=”http://localhost/AProject/S?url=http://bbs.nju.edu.cn/a.jpg” /&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p></blockquote>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="DomWriter:延迟调用含有document.write的外部JS脚本" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fdom-writer%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/02/1148425.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">DomWriter:延迟调用含有document.write的外部JS脚本</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI中文字高亮的实现与在线代理的一些正则表达式" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI中文字高亮的实现与在线代理的一些正则表达式</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2010/12/http-request-and-proxy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSocketProxy:在线代理的实现</title>
		<link>http://bigline.cn/word/index.php/2010/12/java-socket-proxy/</link>
		<comments>http://bigline.cn/word/index.php/2010/12/java-socket-proxy/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 08:26:55 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Socket]]></category>
		<category><![CDATA[代理]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=500</guid>
		<description><![CDATA[这次的目标是实现一个在线代理程序，类似www.proxyie.cn这样的就行啦 但是后台是要求两台服务器间通过socket交互，结构如下图所示： 作为一个简单模型，只要考虑能传输文字就好啦 首先是服务器B端 服务器B端的主要任务是：接受服务器A的socket连接，然后向目标网站发出请求，并将结果返回给服务器A。 1.接收Socket连接 public void do_server() throws IOException { server=new ServerSocket(8888); while(true) { Socket client=server.accept();//若客户机提请求，socket连接 new Thread(new ServerThread(client)).start(); } } 我采用的是多线程的方法，每次接收到客户端的请求，就新建一个ServerThread的线程用于交互 2.请求目标网站 而ServerThread每次检测到有服务器A发出的消息，就读取之，我设定的是三个参数：URL,COOKIE以及USER-AGENT 之后ServerThread调用getResponse发出请求并取得目标网站的响应，并返回相应内容；ServerThread于是可以将内容写回Socket供服务器A读取 public String getResponse(String url,String cookie,String UA) throws ClientProtocolException, IOException { HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url);//新建一个Http的Get请求 httpget.setHeader("Cookie", cookie);//定义Request头部中的Cookie httpget.setHeader("User-Agent", UA);//定义Request头部中的User-Agent System.out.println("executing request " + [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI中文字高亮的实现与在线代理的一些正则表达式" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi-something%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI中文字高亮的实现与在线代理的一些正则表达式</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="基于AJAX：WebIM的简单实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/04/1158362.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">基于AJAX：WebIM的简单实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="关于在线阅读系统的一些更正和解答" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/13/1247275.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">关于在线阅读系统的一些更正和解答</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>这次的目标是实现一个在线代理程序，类似<a href="http://www.proxyie.cn/" target="_blank">www.proxyie.cn</a>这样的就行啦<br />
但是后台是要求两台服务器间通过socket交互，结构如下图所示：<br />
<a href="http://bigline.cn/word/wp-content/uploads/2010/12/proxy.jpg"><img class="size-full wp-image-501" title="proxy" src="http://bigline.cn/word/wp-content/uploads/2010/12/proxy.jpg" alt="" width="567" height="454" /></a><br />
作为一个简单模型，只要考虑能传输文字就好啦<br />
<strong><span style="color: #000000;">首先是服务器B端</span></strong><br />
服务器B端的主要任务是：接受服务器A的socket连接，然后向目标网站发出请求，并将结果返回给服务器A。</p>
<p>1.接收Socket连接</p>
<pre name="code" class="java">

public void do_server() throws IOException
{
server=new ServerSocket(8888);
while(true)
{
Socket client=server.accept();//若客户机提请求，socket连接
new Thread(new ServerThread(client)).start();
}
}
</pre>
<p>我采用的是<strong>多线程</strong>的方法，每次接收到客户端的请求，就新建一个ServerThread的线程用于交互</p>
<p>2.请求目标网站<br />
而ServerThread每次检测到有服务器A发出的消息，就读取之，我设定的是三个参数：<strong>URL,COOKIE以及USER-AGENT</strong></p>
<p>之后ServerThread调用getResponse发出请求并取得目标网站的响应，并返回相应内容；ServerThread于是可以将内容写回Socket供服务器A读取<br />
<span id="more-500"></span></p>
<pre name="code" class="java">

public String getResponse(String url,String cookie,String UA) throws ClientProtocolException, IOException
{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);//新建一个Http的Get请求
httpget.setHeader("Cookie", cookie);//定义Request头部中的Cookie
httpget.setHeader("User-Agent", UA);//定义Request头部中的User-Agent
System.out.println("executing request " + httpget.getURI());
HttpResponse responseBody = httpclient.execute(httpget);//执行请求 获取response
HttpEntity en = responseBody.getEntity();//取得response的body
String all = EntityUtils.toString(en);//将response内容转化为字符串
httpclient.getConnectionManager().shutdown();//关闭http请求
return all;
}
</pre>
<p>事实上由于返回的内容不一定是文本(有可能是图像什么的)，可以选择在socket之间通过字节流交互</p>
<p>由于本项目的设定，<strong>在服务器B取得目标网站的内容并写入socket后，就可以直接关闭这个socket连接</strong>，至于原因，后面会谈到</p>
<p><strong><span style="color: #000000;">其次是服务器A端</span></strong></p>
<p>作为一个Web Project, 可以通过建立一个Servlet来处理用户的请求。即用户将请求的URL作为参数传给Servlet，而后Servlet建立到服务器B的Socket连接，将必要的参数发送过去(或者干脆以字节流的方式将Request发送过去)，然后<strong>等待</strong>服务器B发送回来的数据，处理一下就可以输出，用户就能看到了。</p>
<p>注意关键词<strong>等待</strong>，因为数据通过socket往返必然不会是瞬间完成的，<strong>需要有一个While(True)的循环无限等待</strong>，直到确认读入完毕才能终止循环。于是我们之间在服务器端B设定的输出完立刻结束Socket连接就很方便了。服务器A的Servlet确认连接被服务器关闭后就可以停止输出并在用户的浏览器上显示了。</p>
<p>其实这种方式比较粗鲁，也有很多很好的解决方法，大家可以思考～</p>
<p>ServletA取得了数据后，需要做哪些处理呢？</p>
<p>首先是网页内的链接的URL替换,将相对地址替换成绝对地址</p>
<p>假定我们的Servlet地址是<span style="color: #ff0000;">http://localhost/Servlet</span>?url=http://url</p>
<p>当前请求的地址是http://baidu.com/index.html(即此时服务器A无法直接访问到baidu.com)</p>
<p>则&lt;a href=”o.html”&gt;此链接指向同名目录&lt;/a&gt; 表示指向http://baidu.com/o.html</p>
<p>于是我们要利用正则表达式换成 &lt;a href=”http://baidu.com/o.html”&gt;此链接指向同名目录&lt;/a&gt;</p>
<p>但是我们依旧无法直接访问baidu.com，那么我们应当修改成 &lt;a href=”<span style="color: #ff0000;">http://localhost/Servlet</span>?url=http://baidu.com/o.html”&gt;此链接指向同名目录&lt;/a&gt;</p>
<p>这样就OK了。</p>
<p>这些操作都可以直接使用正则表达式来确定，例如上面的功能可以通过两次正则表达式替换来确定。</p>
<pre name="code" class="java">

String res="&lt;a href=\"o.html\" &gt;&lt;/a&gt;&lt;a href=\"http://baidu.com/o.html\" &gt;&lt;/a&gt;";
String host="http://baidu.com/";

res = res.replaceAll("(&lt;a.*?href=\")([^http://][^\"]+\".*?&gt;)", "$1"+host+"$2");
res = res.replaceAll("(&lt;a.*?href=\")([http://][^\"]+\".*?&gt;)", "$1http://localhost/Servlet?url=$2");
System.out.println(res);

//输出：&lt;a href="http://localhost/Servlet?url=http://baidu.com/o.html" &gt;&lt;/a&gt;&lt;a href="http://localhost/Servlet?url=http://baidu.com/o.html" &gt;&lt;/a&gt;
</pre>
<p>那么还有哪些是需要考虑的呢？</p>
<p><strong>CSS文件(link 标签)</strong><br />
形如：&lt;link rel=”stylesheet” type=”text/css” href=”<span style="color: #ff0000;">xxx.css</span>“/&gt;<br />
<strong>JAVASCRIPT文件(script标签)</strong><br />
形如：&lt;script src=”<span style="color: #ff0000;">xxx.js</span>” &gt;&lt;/script&gt;<br />
<strong>图像(Img标签)</strong><br />
形如 &lt;img src=”<span style="color: #ff0000;">xxx.png</span>” /&gt;<br />
CSS文件中的background标签</p>
<p>background:url(<span style="color: #ff0000;">xxx.jpg</span>) ;</p>
<p>对应的正则表达式类似上面就行了</p>
<p>看到这里，就发现了我们的Servlet不仅要中转网页文本，还需要中转图像文件</p>
<p>于是在request头里的”<strong>Content-Type</strong>“需要修改为对应的参数</p>
<p>这样一个基本的在线代理就实现了，有啥问题欢迎指出！</p>
<p>然后，就没有然后了。</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
                <td width="102" v]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2010/12/java-socket-proxy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>基于AJAX：WebIM的简单实现</title>
		<link>http://bigline.cn/word/index.php/2010/12/web-im/</link>
		<comments>http://bigline.cn/word/index.php/2010/12/web-im/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 05:33:16 +0000</pubDate>
		<dc:creator>亚楠兄</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[技术]]></category>

		<guid isPermaLink="false">http://bigline.cn/word/?p=485</guid>
		<description><![CDATA[如何实现一个简单的基于B/S的IMS(Instant Message System 即时通信系统)？ 本文就给出了俺的一个思路，以及其基本的模型。尽管架构不完善，且代码写的难看，基本的聊天功能还是实现了的，期望能给大家作为参考，高手也请一笑置之吧。 首先确定我们需要的功能： 1.显示所有的用户，以及其在线状态 2.实现两个用户间点对点的聊天 现在就开始我们的数据库设计吧！ 1.数据库的选择 MySQL是个不错的选择，方便且实用，在MyEclipse加入MySQL的支持库(猛击此处获取)就好了 2.数据表 根据基本模型的设定，只要两个表就好了：User表——用以存储用户的信息 以及Chat表——用以存储消息 那么我们需要有哪些用户信息呢？ 主键ID,帐号 与 密码 肯定是必须的啦！ 那么我们如何判断用户的在线状态呢？可以直接利用Session来实现，但是我决定通过自己建立的数据库来判断，又该如何实现？ 答案是记录用户每次的最后活动时间(Last)，每次请求的时候根据系统当前时间(Current)减去最后活动时间,就可以知道用户有多久没有访问啦！之后我们可以设定一个上限(我设定是1分钟)，如果用户超过1分钟没有任何活动，表示用户已经离线了。 User表里面的还有一个字段——LastRec，是用于记录当前用户的最后接收消息的时间，每次用户在请求接受消息之后，会返回在此时间之后的所有消息，并更新LastRec。这样就能保证用户每次能够接收到未读消息啦！ 其实可以将LastRec与Last合并，但考虑到接收列表以及接收消息是在不同的方法内执行，所以两个方法开始的时间是不同的，在服务器负担非常重的时候，两者间可能会有很大的差别。下图就已经显示出来这种趋势，lastrec会比last晚上几个毫秒。 上图就是我的User表的设定。 那么Chat表又有哪些元素呢？ 首先是消息的来源与目标 —— 分别表示发送消息的用户ID(from)以及目标对象的用户ID(to) timestamp：时间戳记录消息发送的时间 say：消息的具体内容 上图给出了我的Chat表的设定 3.逻辑结构 用户登录后，在浏览器端执行JS脚本，使得其每过一段时间(我设定的是5秒)就向服务器发出一次更新请求，更新用户列表并获取新的消息。 用户只能发送两种请求：请求更新 和 发送消息 服务器端对于不同消息将调用不同的方法，我编写了一个Serverlet用以处理各种请求。 对于 请求更新 -&#62; 开始取得用户列表 -&#62; 更新当前用户的last时间 -&#62; 读取所有用户，用当前时间减去last字段的值判断是否在线 -&#62; 开始取得用户尚未阅读的消息 -&#62; 读取lastrec时间之后的所有发送给当前用户的消息 -&#62; 更新当前用户的lastrec时间 -&#62; 以XML的形式返回给用户 -&#62; 客户端对XML进行解析，执行相应的操作(刷新列表，显示新消息等) 对于 [...]<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="AJAX跨域请求的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">AJAX跨域请求的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="关于在线阅读系统的一些更正和解答" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/13/1247275.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">关于在线阅读系统的一些更正和解答</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></description>
			<content:encoded><![CDATA[<p>如何实现一个简单的基于B/S的IMS(Instant Message System 即时通信系统)？<br />
本文就给出了俺的一个思路，以及其基本的模型。尽管架构不完善，且代码写的难看，基本的聊天功能还是实现了的，期望能给大家作为参考，高手也请一笑置之吧。</p>
<p><strong>首先确定我们需要的功能</strong>：<br />
1.显示所有的用户，以及其在线状态<br />
2.实现两个用户间点对点的聊天</p>
<p><strong>现在就开始我们的数据库设计吧！</strong></p>
<p>1.数据库的选择</p>
<p>MySQL是个不错的选择，方便且实用，在MyEclipse加入MySQL的支持库(<a href="http://dev.mysql.com/downloads/connector/j" target="_blank">猛击此处获取</a>)就好了</p>
<p>2.数据表</p>
<p>根据基本模型的设定，只要两个表就好了：<strong>User表</strong>——用以存储用户的信息 以及<strong>Chat表</strong>——用以存储消息</p>
<p>那么我们需要有哪些用户信息呢？ <strong>主键ID,帐号</strong> 与 <strong>密码</strong> 肯定是必须的啦！</p>
<p>那么我们如何判断用户的在线状态呢？可以直接利用<strong>Session</strong>来实现，但是我决定通过自己建立的数据库来判断，又该如何实现？</p>
<p>答案是记录用户每次的<strong>最后活动时间(Last)</strong>，每次请求的时候根据系统当前时间(Current)减去最后活动时间,就可以知道用户有多久没有访问啦！之后我们可以设定一个<strong>上限</strong>(我设定是1分钟)，如果用户超过1分钟没有任何活动，表示用户已经离线了。</p>
<p>User表里面的还有一个字段——<strong>LastRec</strong>，是用于记录当前用户的最后接收消息的时间，每次用户在请求接受消息之后，会返回<strong>在此时间之后的所有消息，并更新<strong>LastRec</strong></strong>。这样就能保证用户每次能够接收到未读消息啦！</p>
<p>其实可以将LastRec与Last合并，但考虑到接收列表以及接收消息是在不同的方法内执行，所以两个方法开始的时间是不同的，在服务器负担非常重的时候，两者间可能会有很大的差别。下图就已经显示出来这种趋势，lastrec会比last晚上几个毫秒。</p>
<p><img title="user" src="http://bigline.cn/word/wp-content/uploads/2010/12/user.jpg" alt="" width="400" height="90" /></p>
<p>上图就是我的User表的设定。</p>
<p>那么Chat表又有哪些元素呢？</p>
<p>首先是消息的<strong>来源</strong>与<strong>目标</strong> —— 分别表示发送消息的用户ID(from)以及目标对象的用户ID(to)</p>
<p><strong>timestamp</strong>：时间戳记录消息发送的时间</p>
<p><strong>say</strong>：消息的具体内容</p>
<p><img title="Chat" src="http://bigline.cn/word/wp-content/uploads/2010/12/Chat.jpg" alt="" width="510" height="126" /></p>
<p>上图给出了我的Chat表的设定</p>
<p>3.逻辑结构</p>
<p>用户登录后，在浏览器端执行JS脚本，使得其每过一段时间(我设定的是5秒)就向服务器发出一次更新请求，<strong>更新用户列表并获取新的消息</strong>。</p>
<p>用户只能发送两种请求：<strong>请求更新</strong> 和 <strong>发送消息</strong></p>
<p><span id="more-485"></span>服务器端对于不同消息将调用不同的方法，我编写了一个Serverlet用以处理各种请求。</p>
<p>对于 <strong>请求更新 </strong>-&gt; 开始取得用户列表 -&gt; 更新当前用户的last时间 -&gt; 读取所有用户，用当前时间减去last字段的值判断是否在线 -&gt; 开始取得用户尚未阅读的消息 -&gt; 读取lastrec时间之后的所有发送给当前用户的消息 -&gt; 更新当前用户的lastrec时间 -&gt; 以XML的形式返回给用户 -&gt; 客户端对<strong>XML</strong>进行解析，执行相应的操作(刷新列表，显示新消息等)</p>
<p>对于 <strong>发送消息</strong> -&gt; 将消息写入 chat 表 -&gt; 更新消息发送者的last活动时间</p>
<p>4.XML数据</p>
<p>服务器返回的XML格式如下：</p>
<pre name="code" class="XML">
&lt;items&gt;
&lt;users&gt;
&lt;user name="user2" uid="3" ol="0"/&gt;
&lt;user name="user1" uid="2" ol="1"/&gt;
&lt;/users&gt;
&lt;messages&gt;
&lt;message from="2" time="10-12-4 下午01时04分58秒"&gt;
Hi
&lt;/message&gt;
&lt;message from="2" time="10-12-4 下午01时05分03秒"&gt;
测试
&lt;/message&gt;
&lt;/messages&gt;
&lt;/items&gt;</pre>
<p>用Javascript解析XML的方法非常简单，网上有很多参考，而如果使用JQuery的话就更加方便了！</p>
<p>5.服务器端代码参考</p>
<p>Serverlet输出XML的参考</p>
<pre name="code" class="java">
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//输出对应的XML数据 其中getParameter方法需要考虑出现异常的情况，这里暂省略
response.setContentType("text/xml;charset=UTF-8");//设定输出的类型以及编码
PrintWriter out = response.getWriter();
out.println("&lt;items&gt;");
String action = request.getParameter("act");
if(action.equals("log"))
{
out.println("&lt;user&gt;"+UserManager.check(request.getParameter("n"), request.getParameter("p"))+"&lt;/user&gt;");
}else if(action.equals("list"))
{
out.println(UserManager.getAllUser(request.getParameter("id")));
out.println(ChatManager.getMessage(request.getParameter("id")));
}
out.println("&lt;/items&gt;");
out.flush();
out.close();
}
</pre>
<p>获取所有用户的方法参考</p>
<pre name="code" class="java">
public static String getALlUser(String mid)
{
String tmp = "&lt;users&gt;";
try {
Database.getUpdate("update user set `last`='"+new Date().getTime()+"' where id = " + mid);
String sql = "select * from user order by id desc";
ResultSet rs = Database.getResult(sql);
while(rs.next())
{
if(rs.getString("id").equals(mid) )
continue;//不显示自己的信息
tmp += "&lt;user name=\"" + rs.getString("uname") + "\" uid=\"" + rs.getString("id") + "\" ol=\"";
if(rs.getLong("last") + 60000 &gt; new Date().getTime())//一分钟没操作则表示不在线
{
tmp += "1\"&gt;";
}else
tmp += "0\"&gt;";
tmp+="&lt;/user&gt;";
}
//Database.close();
} catch (Exception e) {
e.printStackTrace();
}
tmp+="&lt;/users&gt;";
return tmp;
}
</pre>
<p>6.客户端的构建</p>
<p>这里我选用的是JqueryUI框架，<a href="http://jqueryui.com/" target="_blank">点击这里访问项目主页</a>，使用JUI，可以很方便的构建各种WebApp的窗口，同时JQuery框架内的Ajax模块也是非常好用的！<br />
程序的实现效果如封面图片所示，左边是一个列表，而右边使用的是JUI中的Tabs组件，可以动态创建删除Tab，非常方便，这里是<a href="http://jqueryui.com/demos/tabs/#manipulation" target="_blank">官方的使用例子</a>。</p>
<p>客户端的主要函数，GetUpdate，用以循环请求用户列表以及新的消息，用JAVASCRIPT编写</p>
<pre name="code" class="javascript">
getUpdate = function()
{

$.get("Handle",{act:"list",id:mid},function(data){//发出GET请求，其中Handle为我编写的Serverlet地址
$(data).find("items users user").each(function(i){//取得XML中每条user的信息

//属性有 uid-用户id，ol-在线情况 1 为在线，0为不在线，name-用户名
var d = $(this).attr("uid");//取得对应的Uid
var s = $("#users").find("li[uid='"+d+"']");//取得对应Uid的用户Li
if(s.size() != 1)//如果页面中没有当前用户的信息
{
addUser($(this).attr("name"),d,$(this).attr("ol"))//在页面的用户列表中添加此用户
}else
{
s.find(".ol img").attr("src","img/"+$(this).attr("ol")+".png");//若用于信息已经存在，则更新在线状态
}
});
$(data).find("items messages message").each(function(i){//循环对每条消息进行操作
var uid = $(this).attr("from");//取得消息发送者的ID
addTabs(uid);//如果页面上没有此用户的聊天窗口则添加，否则激活窗口
addPost(uid,$("li[uid='"+uid+"']").text(),$(this).attr("time"),$(this).text());//在指定的窗口中加入接受到的消息
});
setTimeout("getUpdate()",3000);//设定每三秒执行一次更新请求
});
}
</pre>
<p>好了 一个基本的聊天系统就实现啦！接下来的就看你们的了！</p>
<table class="wumii-related-items" cellspacing="0" cellpadding="3" border="0"  style="clear: both;">
    
    <tr>
        <td colspan="5"><b><font size="-1"  style="display: block !important; padding: 20px 0 5px !important;">您可能也喜欢</font></b></td>
    </tr>
    
        <tr>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important;">
                    <a target="_blank" title="AJAX跨域请求的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2011%2F07%2Fcrossdomain%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/images/blogWidget/wordpress_default.gif" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">AJAX跨域请求的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="JSocketProxy:在线代理的实现" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fjava-socket-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/06/1171246.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">JSocketProxy:在线代理的实现</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="POI-HSLF:超级强大的处理PPT文档的JAVA类库" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fpoi%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/03/1152621.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">POI-HSLF:超级强大的处理PPT文档的JAVA类库</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="HTTP请求过程与在线代理流程" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fhttp-request-and-proxy%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/09/1194158.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">HTTP请求过程与在线代理流程</font>
                    </a>
                </td>
                <td width="102" valign="top" style="padding: 5px !important; margin: 0 !important; border-left: 1px solid #DDDDDD !important;">
                    <a target="_blank" title="关于在线阅读系统的一些更正和解答" style="text-decoration: none !important; cursor: pointer !important;" href="http://app.wumii.com/ext/redirect.htm?url=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fcorrection%2F&from=http%3A%2F%2Fbigline.cn%2Fword%2Findex.php%2F2010%2F12%2Fweb-im%2F">
                        <img style="margin: 0 !important; padding: 2px !important; border: 1px solid #DDDDDD !important; width: 96px !important; height: 96px !important;" src="http://static.wumii.com/site_images/2010/12/13/1247275.jpg" width="96px" height="96px" /><br />
                        <font size="-1" color="#333333" style="display: block !important; line-height: 15px !important; width: 102px !important; font: 12px/15px arial !important; height: 60px !important; margin: 3px 0 0 0 !important; padding: 0 !important; overflow: hidden !important;">关于在线阅读系统的一些更正和解答</font>
                    </a>
                </td>
        </tr>
    
    <tr>
        <td colspan="5" align="right">
            <a style="text-decoration: none !important;" href="http://www.wumii.com/widget/relatedItems.htm" target="_blank" title="无觅相关文章插件">
                <font size="-1" color="#bbbbbb" style="display: block !important; font-family: arial !important; padding: 5px 0 !important; font-size: 12px !important; color: #bbb !important;">无觅</font>
            </a>
        </td>
    </tr>
</table>]]></content:encoded>
			<wfw:commentRss>http://bigline.cn/word/index.php/2010/12/web-im/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

