﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-秋风的萧瑟 又见湖边木叶飞-随笔分类-HTML</title><link>http://www.blogjava.net/lonleung/category/44734.html</link><description>欢迎来到梁良 | LonBlog，这里记录下了我生活点点滴滴。                                                              </description><language>zh-cn</language><lastBuildDate>Tue, 17 Apr 2012 18:41:58 GMT</lastBuildDate><pubDate>Tue, 17 Apr 2012 18:41:58 GMT</pubDate><ttl>60</ttl><item><title>PSP版豆瓣电台独家发布 (2012-3-28  更新：公共频道。) </title><link>http://www.blogjava.net/lonleung/archive/2011/05/16/350341.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Mon, 16 May 2011 11:42:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2011/05/16/350341.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/350341.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2011/05/16/350341.html#Feedback</comments><slash:comments>32</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/350341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/350341.html</trackback:ping><description><![CDATA[<span style="font-family: 黑体; font-size: 24pt"><span style="color: #99cc00; font-size: 8pt"><span style="font-family: 黑体; font-size: 24pt">下载发布<br /></span>&nbsp;<br /></span></span>
<table class="formtable datatable" cellspacing="0" summary="分类信息" cellpadding="0">
<tbody>
<tr>
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">中文名称</span></span></span></th>
<td style="width: 529px; height: 19px"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; psp版豆瓣电台 (2011年6月24日 更新)</span></span></span></td></tr>
<tr class="colplural">
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">原文名称</span></span></span></th>
<td><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; psp版豆瓣电台</span></span></span></td></tr>
<tr>
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">发行版本<br />开发人员</span></span></span></th>
<td><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; 1.1.5<br />&nbsp;&nbsp;LonLeung</span></span></span></td></tr>
<tr class="colplural">
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">游戏类型</span></span></span></th>
<td><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; 多媒体</span></span></span></td></tr>
<tr>
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">发行厂商</span></span></span></th>
<td><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; 豆瓣 &#169; 2005－2012 douban.com, all rights reserved</span></span></span></td></tr>
<tr class="colplural">
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">容量大小</span></span></span></th>
<td><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; 103 KB</span></span></span></td></tr>
<tr>
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">语言</span></span></span></th>
<td><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; 中文</span></span></span></td></tr>
<tr class="colplural">
<th><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">其他</span></span></span></th>
<td><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="font-family: 微软雅黑">&nbsp; 京ICP证090015号 京ICP备09113438 网络视听许可证0110418号 文网文[2009]267号</span></span></span></td></tr></tbody></table><br /><strong style="color: #800000; font-size: 18pt">安装和使用方法：将压缩包&#8220;psp版豆瓣电台&#8221;文件夹<strong><font color="#800000">中</font></strong>的&#8220;PSP&#8221;文件夹解压在psp根目录中，在<strong><font color="#800000">XMB</font></strong>的&#8220;网络&#8221;-》&#8220;互联网电台&#8221;-》&#8220;douban.fm&#8221;中打开。注意系统选择中文，编码GBK(936)，浏览器文字编码：自动选择</strong><strong style="color: #800000"><br /></strong>
<dl class="t_attachlist">
<dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>Update：</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</dt></dl>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2010-6-18 新建PSP豆瓣电台项目</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2010-7-20 第一个Demo</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2010-8-8&nbsp; 在1.0.1版本上增加了官方UI</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.3 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-5-15 PSP豆瓣电台发布</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.4 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-5-17 新增加20个豆瓣频道，用摇杆光标选择下拉框的频道后自动播放相应频道的歌曲</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-5-22 新增豆瓣私人频道</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.0.6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-5-23 新增加红心、去红心、删除歌曲功能</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-5-24 新增Lee MHz 频道、优化UI</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-5-25 修正歌曲还差0.5秒未播放完就开始跳歌问题</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-5-27 修正Skip歌曲时延时问题，增加短报告处理方法，删除UI中多余的控件让界面更清爽</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.1.3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2011-6-1&nbsp; 增加长报告处理方法，使后台的歌曲喜好计算更加准确<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.1.4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-6-10 新增一台服务器，今后开始采取自动脚本更新方式，方便同学们升级。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-6-24 作者 Saoirse Ronan 对豆瓣电台图标进行了美化修复 </p>
<dl class="t_attachlist">
<dt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img class="absmiddle" border="0" alt="" src="http://forum.tgbus.com/images/attachicons/rar.gif" width="28" height="30" />&nbsp;psp版豆瓣电台.rar (145.32 KB) 下载地址： 
<dd>
<p>&nbsp;</p>
<p><strike>thunder://QUFodHRwOi8vMTI3LjAuMC4xLzExMDUxNjE4NDlmODdkN2EyOTNhZGRjNWVhLnJhcj9maWQ9ZnVTVnFDTTFNcDVkSlp1eGhMRjlKMjRSNGtwR1JRSUFBQUFBQUs2YldpMGo3SThjK2FRZzdkQ1pyandzWUxXcCZtaWQ9NjY2JnRocmVzaG9sZD0xNTAmdGlkPTRGMjJFOUUyQjkxMjhEN0UxRUNGNTUwMUE4NDNFOTRBJnNyY2lkPTZaWg</strike>==</p><br />(2011年5月18日 更新:新增加二十多个豆瓣频道) 
<dd>&nbsp; 
<dd>115网盘：<a href="http://u.115.com/file/bhnqilut">http://u.115.com/file/bhnqilut</a> 
<dd>&nbsp; 
<dd><strike>&nbsp;thunder://QUFodHRwOi8vMTI3LjAuMC4xL3BzcOeJiOixhueTo+eUteWPsCgyMDExLTUtMTjmm7TmlrApLnJhcj9maWQ9VzVnWEZLbW90cThPOHpldmRnQmxUWFFtcUF1alJRSUFBQUFBQU9nZjBYeHVBaS9TVWZneUlwazN5c2hSL0FBZyZtaWQ9NjY2JnRocmVzaG9sZD0xNTAmdGlkPTU5RDA1MkYwNTJFMTQzQUEwMzg2N0QwNkZBM0YzREQ4JnNyY2lkPTZaWg==<br /><br /></strike>(2011-5-22 更新：新增豆瓣私人频道)<br /><br />115网盘：<a href="http://u.115.com/file/aq86ktqe">http://u.115.com/file/aq86ktqe</a><br /><br />(2011-5-23 更新：新增加红心、去红心、删除歌曲功能)<br />
<dd>115网盘：<a href="http://u.115.com/file/aq86k99f">http://u.115.com/file/aq86k99f</a> 
<dd>&nbsp; 
<dd>(2011-5-24 更新：新增Lee MHz 频道、优化UI) 
<dd>&nbsp; 
<dd>115网盘：<a href="http://u.115.com/file/aq867udi">http://u.115.com/file/aq867udi</a><br /><br />(2011-5-25 更新:修正歌曲还差0.5秒未播放完就开始跳歌问题)<br />
<dd>115网盘：<a href="http://u.115.com/file/e61dkddd">http://u.115.com/file/e61dkddd<br /></a><br />(2011-5-27 更新:修正Skip歌曲时延时问题，增加短报告处理方法，删除UI中多余的控件让界面更清爽)</dd></dl>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 115网盘：<a href="http://u.115.com/file/e61dk1rk">http://u.115.com/file/e61dk1rk</a></p>
<dl class="t_attachlist">
<dd>thunder://QUFodHRwOi8vMTI3LjAuMC4xL3BzcOeJiOixhueTo+eUteWPsCgyMDExLTUtMjfmm7TmlrApLnJhcj9maWQ9M2dVc3dvVG1ZUWlONjlCYndoanZMQ2pPWXJwOG5BRUFBQUFBQU0xSUVyM003TnRiR1ZGY0hWYUE2WXJzejBIZiZtaWQ9NjY2JnRocmVzaG9sZD0xNTAmdGlkPTA2OTAyMjYxOTNGREFEMTgyRjdBNjg3MzU5NjE0Qzc2JnNyY2lkPTZaWg==&nbsp; 
<dd>&nbsp; 
<dd>&nbsp;(2011-6-1 更新: 增加长报告处理方法，使后台的歌曲喜好计算更加准确) 
<dd>&nbsp; 
<dd>&nbsp;dbank网盘：&nbsp;<a href="http://dl.dbank.com/c0pfpb8e53">http://dl.dbank.com/c0pfpb8e53</a>&nbsp; 
<dt><br />
<dt>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;(2012-3-28 更新: 公共频道)&nbsp;<br />&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbank网盘：&nbsp;<a href="http://dl.dbank.com/c0gdv0aj9c">http://dl.dbank.com/c0gdv0aj9c</a><br /></p><br /></dt></dl><img src ="http://www.blogjava.net/lonleung/aggbug/350341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2011-05-16 19:42 <a href="http://www.blogjava.net/lonleung/archive/2011/05/16/350341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>audio.js – A JavaScript Library For Flexible HTML5 Audio Players</title><link>http://www.blogjava.net/lonleung/archive/2011/01/07/342545.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Fri, 07 Jan 2011 11:26:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2011/01/07/342545.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/342545.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2011/01/07/342545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/342545.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/342545.html</trackback:ping><description><![CDATA[<p><a href="http://kolber.github.com/audiojs/" target="_blank" closure_uid_kmepa0="1480"><strong>audio.js</strong></a> is a drop-in JavaScript library that provides a <strong>more flexible HTML5's <code>&lt;audio&gt;</code> tag usage</strong>.</p>
<p>It uses native <code>&lt;audio&gt;</code> where available and <strong>falls back to an invisible flash player</strong> to emulate it for other browsers.</p>
<p closure_uid_kmepa0="1521"><a href="http://kolber.github.com/audiojs/" target="_blank" closure_uid_kmepa0="1481"><img alt="Audio.js" src="http://www.webresourcesdepot.com/wp-content/uploads/audio-js.gif" width="480" height="233" /></a></p>
<p>The player <strong>can be completely styled with CSS</strong> to provide a consistent user interface.</p>
<p><strong>audio.js can only play mp3 files</strong> and can be extended in any way like playing a single file or a list of songs.</p>
<p><strong>Special Downloads:</strong><br />
<a href="http://www.webresourcesdepot.com/?download=jBasket" target="_blank" closure_uid_kmepa0="1482">Ajaxed Add-To-Basket Scenarios With jQuery And PHP</a><br />
<a href="http://www.webresourcesdepot.com/?download=Free-Admin-Template" target="_blank" closure_uid_kmepa0="1483">Free Admin Template For Web Applications</a><br />
<a href="http://www.webresourcesdepot.com/?download=jQuery-Dynamic-Drag-Drop" target="_blank" closure_uid_kmepa0="1484">jQuery Dynamic Drag&#8217;n Drop</a><br />
<a href="http://www.webresourcesdepot.com/?download=sTwitter-1-0" target="_blank" closure_uid_kmepa0="1485">ScheduledTweets</a></p>
<p><strong>Advertisements:</strong><br />
<a href="http://www.admintemplates.com" target="_blank" closure_uid_kmepa0="1486">Professional XHTML Admin Template ($15 Discount With The Code: WRD.)</a><br />
<a href="http://www.xhtmchop.com" target="_blank" closure_uid_kmepa0="1487">Psd to Xhtml</a><br />
<a href="http://www.sslmatic.com" target="_blank" closure_uid_kmepa0="1488">SSLmatic &#8211; Cheap SSL Certificates (from $19.99/year)</a></p>
Tags: <a title="HTML5" href="http://www.webresourcesdepot.com/tag/html5/" rel="tag" target="_blank" closure_uid_kmepa0="1489">HTML5</a>, <a title="Javascript" href="http://www.webresourcesdepot.com/tag/javascript/" rel="tag" target="_blank" closure_uid_kmepa0="1490">Javascript</a>, <a title="MP3" href="http://www.webresourcesdepot.com/tag/mp3/" rel="tag" target="_blank" closure_uid_kmepa0="1491">MP3</a><br />
<h4>Related posts</h4>
<ul>
    <li><a title="Stunning Ajax File Manager: AjaXplorer (March 11, 2009)" href="http://www.webresourcesdepot.com/stunning-ajax-file-manager-ajaxplorer/" target="_blank" closure_uid_kmepa0="1492">Stunning Ajax File Manager: AjaXplorer</a></li>
    <li><a title="Speed Up &amp; Modernize Websites With Head JS (December 3, 2010)" href="http://www.webresourcesdepot.com/speed-up-modernize-websites-with-head-js/" target="_blank" closure_uid_kmepa0="1493">Speed Up &amp; Modernize Websites With Head JS</a></li>
    <li><a title="Plupload: Advanced Multiple File Uploader (February 4, 2010)" href="http://www.webresourcesdepot.com/plupload-advanced-multiple-file-uploader/" target="_blank" closure_uid_kmepa0="1494">Plupload: Advanced Multiple File Uploader</a></li>
    <li><a title="MooTools Image Slider With HTML5: Gradually (May 6, 2010)" href="http://www.webresourcesdepot.com/mootools-image-slider-with-html5-gradually/" target="_blank" closure_uid_kmepa0="1495">MooTools Image Slider With HTML5: Gradually</a></li>
    <li><a title="MooTools HTML5 Video Player: Moovie (July 11, 2010)" href="http://www.webresourcesdepot.com/mootools-html5-video-player-moovie/" target="_blank" closure_uid_kmepa0="1496">MooTools HTML5 Video Player: Moovie</a></li>
</ul>
<img src ="http://www.blogjava.net/lonleung/aggbug/342545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2011-01-07 19:26 <a href="http://www.blogjava.net/lonleung/archive/2011/01/07/342545.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>国产开源XHTML在线编辑器xhEditor v1.1.3正式版发布</title><link>http://www.blogjava.net/lonleung/archive/2011/01/07/342538.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Fri, 07 Jan 2011 11:04:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2011/01/07/342538.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/342538.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2011/01/07/342538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/342538.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/342538.html</trackback:ping><description><![CDATA[<strong>xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化XHTML编辑器，基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+。</strong>在众多用户不断的问题回馈和意见反馈下，经过长达1年零3 个月的不断完善后，v1系列的正式版本v1.1.3 Final终于正式对外发布。经过这么久的不断开发修正和完善，v1.1.3 Final的BUG数量相对已经非常少，我们有自信可以给大家交上一份满意的答卷。
<p>我们不是最好的，但是我们会努力做的更好，我们愿意倾听和接受所有用户的心声。最后，大家在使用过程中若发现任何的问题，或者有比较好的创意和想法，可以随时向我们反馈(yanis.wang@gmail.com)，我们会随时倾听大家的意见，xhEditor的发展离不开大家的支持。<br />
<br />
查看最新版演示：<a href="http://xheditor.com/demo">http://xheditor.com/demo</a><br />
<br />
<strong>更多官方在线演示：</strong><br />
&nbsp;&nbsp; 1. 默认模式：<a href="http://xheditor.com/demos/demo01.html">http://xheditor.com/demos/demo01.html</a><br />
&nbsp;&nbsp; 2. 自定义按钮：<a href="http://xheditor.com/demos/demo02.html">http://xheditor.com/demos/demo02.html</a><br />
&nbsp;&nbsp; 3. 皮肤选择：<a href="http://xheditor.com/demos/demo03.html">http://xheditor.com/demos/demo03.html</a><br />
&nbsp;&nbsp; 4. 其它选项：<a href="http://xheditor.com/demos/demo04.html">http://xheditor.com/demos/demo04.html</a><br />
&nbsp;&nbsp; 5. Javascript交互：<a href="http://xheditor.com/demos/demo05.html">http://xheditor.com/demos/demo05.html</a><br />
&nbsp;&nbsp; 6. 非utf-8编码网页调用：<a href="http://xheditor.com/demos/demo06.html">http://xheditor.com/demos/demo06.html</a><br />
&nbsp;&nbsp; 7. UBB可视化编辑：<a href="http://xheditor.com/demos/demo07.html">http://xheditor.com/demos/demo07.html</a><br />
&nbsp;&nbsp; 8. Ajax文件上传：<a href="http://xheditor.com/demos/demo08.html">http://xheditor.com/demos/demo08.html</a><br />
&nbsp;&nbsp; 9. 插件扩展：<a href="http://xheditor.com/demos/demo09.html">http://xheditor.com/demos/demo09.html</a><br />
&nbsp;&nbsp; 10.iframe调用文件上传：<a href="http://xheditor.com/demos/demo10.html">http://xheditor.com/demos/demo10.html</a><br />
&nbsp;&nbsp; 11.异步加载：<a href="http://xheditor.com/demos/demo11.html">http://xheditor.com/demos/demo11.html</a><br />
<br />
v1.1.3 Change (2011-1-1)
<ol>
    <li>调整：取消删除线的快捷键：Ctrl+S </li>
</ol>
<ol>
    <li>修正：IE浏览器下无边框的table没有显示辅助的虚线边框问题的修正
    <li>修正：IE浏览器下光标定位在编辑器中，xheditor(false)卸载编辑器会造成当前页面光标被锁死问题的修正
    <li>修正：&amp;reg;和&amp;copy;被浏览器强制转为字符问题的修正
    <li>修正：从其它网站复制粘贴WORD文档和普通HTML混合的内容时，会导致图片丢失问题的修正
    <li>修正：urlType参数开启情况下，mailto:地址被转绝对地址问题的进一步修正
    <li>修正：Flash和视频不支持输入百分比数值问题的修正 </li>
</ol>
<ol>
    <li>优化：优化Word自动文档清理功能，进一步提高代码处理效率并且兼容Excel文档粘贴
    <li>优化：优化formatXHTML函数，极大提高代码格式化效率 </li>
</ol>
<br />
<strong>官方下载：</strong><br />
<ul>
    <li><a href="http://xheditor.googlecode.com/files/xheditor-1.1.3.zip">xhEditor v1.1.3 (简体,繁体,English) (zip)</a> [670KB] ( 更新：2011年1月1日 )<br />
    MD5: 14F4437E9D3D48D4217D09AFF817B83B
    <li><a href="http://xheditor.googlecode.com/files/xheditor-1.1.3.tar.gz">xhEditor v1.1.3 (简体,繁体,English) (tar.gz)</a> [567KB] ( 更新：2011年1月1日 )<br />
    MD5: B57FC85A2EFEFA44D8F447B7D8BA6510 </li>
</ul>
<p>&nbsp;</p>
<div class="digbox">
<div id="dig131400" class="dig">4</div>
<div id="action131400" class="digaction"><a style="color: white" href="javascript:dig(131400);">顶一下</a></div>
<div id="loading131400" class="digload"></div>
<div id="reply131400"></div>
</div>
<script type="text/javascript"><!-- google_ad_client="pub-9066977823953139" ;
/* 页内文末468 */ google_ad_slot="3876456074" ; google_ad_width="468;
google_ad_height" = 60;
//-->
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><script src="http://pagead2.googlesyndication.com/pagead/js/r20101117/r20110106/show_ads_impl.js"></script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script><script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script><script>google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);</script><ins style="position: relative; border-bottom-style: none; padding-bottom: 0px; border-right-style: none; margin: 0px; padding-left: 0px; width: 468px; padding-right: 0px; display: inline-table; border-top-style: none; height: 60px; visibility: visible; border-left-style: none; padding-top: 0px"><ins style="position: relative; border-bottom-style: none; padding-bottom: 0px; border-right-style: none; margin: 0px; padding-left: 0px; width: 468px; padding-right: 0px; display: block; border-top-style: none; height: 60px; visibility: visible; border-left-style: none; padding-top: 0px" id="google_ads_frame3_anchor"><iframe style="position: absolute; top: 0px; left: 0px" id="google_ads_frame3" height="60" marginheight="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-9066977823953139&amp;output=html&amp;h=60&amp;slotname=3876456074&amp;w=468&amp;lmt=1294337353&amp;flash=10.1.102.64&amp;url=http%3A%2F%2Fcnbeta.com%2Farticles%2F131400.htm&amp;dt=1294398186046&amp;shv=r20101117&amp;jsv=r20110106&amp;saldr=1&amp;correlator=1294398184953&amp;frm=0&amp;adk=2180315742&amp;ga_vid=947378310.1294397434&amp;ga_sid=1294397434&amp;ga_hid=1722427212&amp;ga_fc=1&amp;u_tz=480&amp;u_his=0&amp;u_java=1&amp;u_h=1050&amp;u_w=1680&amp;u_ah=1010&amp;u_aw=1680&amp;u_cd=32&amp;u_nplug=0&amp;u_nmime=0&amp;biw=1237&amp;bih=677&amp;ref=http%3A%2F%2Fcnbeta.com%2Findex.php&amp;fu=0&amp;ifi=3&amp;dtd=32&amp;xpc=aqgGo91txz&amp;p=http%3A//cnbeta.com" frameborder="0" width="468" allowTransparency name="google_ads_frame" marginwidth="0" scrolling="no"></iframe></ins></ins>
<img src ="http://www.blogjava.net/lonleung/aggbug/342538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2011-01-07 19:04 <a href="http://www.blogjava.net/lonleung/archive/2011/01/07/342538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>国产开源在线HTML编辑器 xhEditor v1.1.0正式发布</title><link>http://www.blogjava.net/lonleung/archive/2010/09/02/330673.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Thu, 02 Sep 2010 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/09/02/330673.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/330673.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/09/02/330673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/330673.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/330673.html</trackback:ping><description><![CDATA[xhEditor是一个基于jQuery开发的简单迷你并且高效的轻量可视化XHTML编辑器，基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+。此次v1.1.0版主要变化在于提升编辑器用户体验，在修正大量问题的基础上增加了各种提升用户体验的实用功能，例如HTML5功能支持下的直接将文件拖入编辑区域上传功能，就能极大的提高用户操作效率，改善使用体验。
<p>我们不是最好的，但是我们会努力做的更好，我们愿意倾听和接受所有用户的心声。最后，大家在使用过程中若发现任何的问题，或者有比较好的创意和想法，可以随时向我们反馈(yanis.wang@gmail.com)，我们会随时倾听大家的意见，xhEditor的发展离不开大家的支持。<br />
<br />
<strong>本次v1.1.0版本主要变化如下</strong>：<br />
1，可自定义表情根路径(emotPath参数)<br />
2，提供本地图片等资源文件的前后台路径不一致问题的解决方案(urlBase参数)<br />
3，双击链接、图片等直接打开修改界面<br />
4，Word代码粘贴过滤功能由原先的IE only改为跨浏览器兼容<br />
5，强制粘贴为文本功能(forcePasteText参数)<br />
6，将本地电脑直接拖入编辑区域即可上传在当前光标处，此功能需要HTML5上传支持(Firefox,Chrome)<br />
<br />
<strong>完整更新列表如下</strong>：<br />
ver 1.1.0 (2010-9-1)<br />
1. 添加：添加由网友shiny原创设计的皮肤NoStyle<br />
2. 添加：demo07 UBB演示页面添加Google地图插件，也作为不定宽按钮的演示<br />
3. 添加：添加urlType转非相对路径中合并&#8220;..&#8221;到上一级路径的功能<br />
4. 添加：添加emotPath初始化参数，以将表情指向其它自定义URL路径下，注意路径必需以&#8220;/&#8221;结尾<br />
5. 添加：添加urlBase初始化参数，用来定义超链接、图片及Flash等文件的相对根路径，同时也是urlType参数的参考根路径<br />
6. 添加：经用户反馈意见，重新添加&#8220;预览&#8221;功能按钮<br />
7. 添加：添加双击超链接、图片、Flash和多媒体可直接打开相应修改界面的功能，注：某些浏览器双击Flash和多媒体会有问题<br />
8. 添加：打开面板时可按Esc键隐藏当前的面板<br />
9. 添加：初始化参数添加disableContextmenu，用以禁用浏览器在编辑区域的默认右键菜单，设置为true禁用，默认不禁用<br />
10.添加：Word粘贴自动过滤功能由原先的IE only增加为跨浏览器兼容<br />
11.添加：添加强制粘贴为文本功能，初始化参数forcePasteText设置为true开启此功能，默认不强制文本<br />
12.添加：添加Pidgin和IPB两套表情，并在demo05和demo07中添加相应的配置演示<br />
13.添加：初始化参数添加editorRoot，在某些特殊情况下定位编辑器的根路径<br />
14.添加：将本地电脑中的多个文件拖放至编辑器的编辑区即可上传并插入，此功能需要浏览器支持HTML5上传(Firefox,Chrome)<br />
<br />
1. 修正：showIframeModal上传模式下onUpload接口无效问题的修正<br />
2. 修正：使用无效按钮名称会导致JS出错问题的修正<br />
3. 修正：IE6,IE7在iframe框架中使用xhEditor会在页面中出现_xhe_cursor问题的修正<br />
4. 修正：IE浏览器在图片、FLASH等控件上按Backspace会导致整个页面后退问题的修正<br />
5. 修正：回车BR模式在IE浏览器下，按下回车只显示一个空格不换行问题的修正<br />
6. 修正：IE浏览器中会造成内存泄漏问题的修正<br />
7. 修正：WebKit内核浏览器回车换行在切换一次源代码后会丢失问题的修正<br />
<br />
1. 调整：皮肤框架进行了调整，支持不定宽按钮，需要的用户可自行设计修改<br />
2. 调整：为使按钮配置更直观简便，原按钮分隔符Separator变更为&#8220;|&#8221;，原按钮换行符BtnBr变更为&#8220;/&#8221;<br />
3. 调整：原localUrl参数名变更为urlType<br />
<br />
查看最新版演示：<a href="http://xheditor.com/demo">http://xheditor.com/demo</a><br />
<br />
<strong>更多官方在线演示</strong>：<br />
&nbsp;&nbsp; 1. 默认模式：<a href="http://xheditor.com/demos/demo01.html">http://xheditor.com/demos/demo01.html</a><br />
&nbsp;&nbsp; 2. 自定义按钮：<a href="http://xheditor.com/demos/demo02.html">http://xheditor.com/demos/demo02.html</a><br />
&nbsp;&nbsp; 3. 皮肤选择：<a href="http://xheditor.com/demos/demo03.html">http://xheditor.com/demos/demo03.html</a><br />
&nbsp;&nbsp; 4. 其它选项：<a href="http://xheditor.com/demos/demo04.html">http://xheditor.com/demos/demo04.html</a><br />
&nbsp;&nbsp; 5. Javascript交互：<a href="http://xheditor.com/demos/demo05.html">http://xheditor.com/demos/demo05.html</a><br />
&nbsp;&nbsp; 6. 非utf-8编码网页调用：<a href="http://xheditor.com/demos/demo06.html">http://xheditor.com/demos/demo06.html</a><br />
&nbsp;&nbsp; 7. UBB可视化编辑：<a href="http://xheditor.com/demos/demo07.html">http://xheditor.com/demos/demo07.html</a><br />
&nbsp;&nbsp; 8. Ajax文件上传：<a href="http://xheditor.com/demos/demo08.html">http://xheditor.com/demos/demo08.html</a><br />
&nbsp;&nbsp; 9. 插件扩展：<a href="http://xheditor.com/demos/demo09.html">http://xheditor.com/demos/demo09.html</a><br />
&nbsp;&nbsp; 10.iframe调用文件上传：<a href="http://xheditor.com/demos/demo10.html">http://xheditor.com/demos/demo10.html</a><br />
&nbsp;&nbsp; 11.异步加载：<a href="http://xheditor.com/demos/demo11.html">http://xheditor.com/demos/demo11.html</a><br />
<br />
<strong>最新v1.1.0下载地址</strong>：<br />
<a href="http://xheditor.com/download">http://xheditor.com/download</a></p>
<img src ="http://www.blogjava.net/lonleung/aggbug/330673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-09-02 10:18 <a href="http://www.blogjava.net/lonleung/archive/2010/09/02/330673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]用JavaScript修改CSS属性</title><link>http://www.blogjava.net/lonleung/archive/2010/08/06/328173.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Fri, 06 Aug 2010 14:44:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/08/06/328173.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/328173.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/08/06/328173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/328173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/328173.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;<br />
exmpall<br />
&lt;/title&gt;<br />
&lt;meta content="text/html; charset=utf-8" http-equiv="content-type"/&gt;<br />
&lt;STYLE type="text/css"&gt;<br />
div{<br />
padding: 0;<br />
margin: 0;<br />
position: absolute;<br />
left:200px; /*左边*/<br />
top:0;&nbsp;&nbsp; /*上面*/<br />
display: none; <br />
width: 180px; <br />
height: 150px;<br />
border-style: solid;<br />
border-color: #E6C963;<br />
border-width: thin;<br />
}<br />
&lt;/STYLE&gt;<br />
&lt;SCRIPT TYPE="text/javascript"&gt;<br />
&lt;!--<br />
function myfunction1()<br />
{<br />
var my=document.getElementById("chenyi");<br />
my.style.position = "absolute";<br />
my.style.top = "50px";&nbsp;&nbsp; /*上面*/<br />
my.style.display = "inline"; <br />
my.style.backgroundColor = "#E4A17C";<br />
}<br />
<br />
function myfunction2()<br />
{<br />
var my=document.getElementById("chenyi");<br />
my.style.position = "absolute";<br />
my.style.top = "150px";&nbsp;&nbsp; /*上面*/<br />
my.style.display = "inline"; <br />
my.style.backgroundColor = "#A3935F";<br />
}<br />
<br />
function myfunction3()<br />
{<br />
var my=document.getElementById("chenyi");<br />
my.style.position = "absolute";<br />
my.style.top = "200px";&nbsp;&nbsp; /*上面*/<br />
my.style.display = "inline"; <br />
my.style.backgroundColor = "#79851A";<br />
}<br />
<br />
function myfunction4()<br />
{<br />
var my=document.getElementById("chenyi");<br />
my.style.position = "absolute";<br />
my.style.top = "300px";&nbsp;&nbsp; /*上面*/<br />
my.style.display = "inline"; <br />
my.style.backgroundColor = "#ACACA9";<br />
}<br />
<br />
function myfunction5()<br />
{<br />
var my=document.getElementById("chenyi");<br />
my.style.position = "absolute";<br />
my.style.top = "400px";&nbsp;&nbsp; /*上面*/<br />
my.style.display = "inline"; <br />
my.style.backgroundColor = "#B38DD9";<br />
}<br />
// --&gt;<br />
&lt;/SCRIPT&gt;<br />
&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;FORM method="post" action=""&gt;<br />
&lt;br /&gt;&lt;br /&gt;<br />
&lt;INPUT name="text1" type="text" onmouseover="myfunction1()"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;<br />
&lt;INPUT name="text2" type="text" onmouseover="myfunction2()"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;<br />
&lt;INPUT name="text3" type="text" onmouseover="myfunction3()"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;<br />
&lt;INPUT name="text4" type="text" onmouseover="myfunction4()"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;<br />
&lt;INPUT name="text5" type="text" onmouseover="myfunction5()"&gt;&lt;br /&gt;&lt;br /&gt;<br />
&lt;/FORM&gt;<br />
&lt;div id="chenyi"&gt;<br />
&lt;ol&gt;<br />
&lt;li&gt;&lt;a href="http://hi.baidu.com/515314237/blog"&gt;高兴&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;php&lt;/li&gt;<br />
&lt;li&gt;asp.net&lt;/li&gt;<br />
&lt;li&gt;javaEE&lt;/li&gt;<br />
&lt;li&gt;javascript&lt;/li&gt;<br />
&lt;/ol&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</div>
<img src ="http://www.blogjava.net/lonleung/aggbug/328173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-08-06 22:44 <a href="http://www.blogjava.net/lonleung/archive/2010/08/06/328173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高质量材质下载站</title><link>http://www.blogjava.net/lonleung/archive/2010/07/12/325835.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Mon, 12 Jul 2010 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/07/12/325835.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/325835.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/07/12/325835.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/325835.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/325835.html</trackback:ping><description><![CDATA[材质是设计中必不可少的一部分，原来我们都需要把亲自动手拍下来的或者网上收集到的材质精心刻制成光盘，这样寻找和使用材质的时候十分麻烦。现如今网络上出现了很多不错的材质下载站，而且分类明确目录清晰，需要的时候只要打开网页然后选中再右键保存就可以了，大大提高了设计的效率也节省了磁盘空间。但是如此之多的材质下载站中我们如何能够找到最好最全面的站点呢？今天就为大家精挑细选出了10个高质量的材质下载站，而且全部提供免费下载。
<p>
<h5>1) Texture Lovers</h5>
<h5><a href="http://www.texturelovers.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="texturelover" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/texturelover-e1274170544502.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/texturelover-e1274170544502.png" /></a></h5>
<h5>2) urbandirty</h5>
<h5><a href="http://urbandirty.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="urbandirty" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/urbandirty-e1274178790298.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/urbandirty-e1274178790298.png" /></a></h5>
<h5>3) Lost And Taken</h5>
<h5><a href="http://lostandtaken.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="losttaken" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/losttaken-e1274179159838.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/losttaken-e1274179159838.png" /></a></h5>
<h5>4) 3Dxo</h5>
<h5><a href="http://www.3dxo.com/page/46.htm?sid=07c9b0e94da5495fd250c38b4a3c43c6"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="3dxo" alt="" src="http://www.fisherv.com/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/3dxo-e1274179770765.png" /></a></h5>
<h5>5) Textures Library</h5>
<h5><a href="http://textures.forrest.cz/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="texturelibrary" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/texturelibrary-e1274180309944.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/texturelibrary-e1274180309944.png" /></a></h5>
<h5>6) Texture king</h5>
<h5><a href="http://www.textureking.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="textureking" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/textureking-e1274181274197.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/textureking-e1274181274197.png" /></a></h5>
<h5>7) Mayang Texture</h5>
<h5><a href="http://mayang.com/textures/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="mayang" alt="" src="http://www.fisherv.com/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/mayang-e1274181733703.png" /></a></h5>
<h5>8 ) cgtextures</h5>
<h5><a href="http://www.cgtextures.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="cg" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/cg-e1274182063603.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/cg-e1274182063603.png" /></a></h5>
<h5>9) Texture Warehouse</h5>
<h5><a href="http://www.texturewarehouse.com/gallery/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="texturewarehouse" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/texturewarehouse-e1274188263165.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/texturewarehouse-e1274188263165.png" /></a></h5>
<h5>10) Photoshop Textures</h5>
<h5><a href="http://www.photoshoptextures.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="photoshoptexture" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/photoshoptexture-e1274189737946.png" width="550" height="382" original="http://resources.savedelete.com/wp-content/uploads/2010/05/photoshoptexture-e1274189737946.png" /></a></h5>
<p>11)&nbsp; Grunge Textures</p>
<h5><a href="http://www.grungetextures.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="grunge" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/grunge1-e1274171420483.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/grunge1-e1274171420483.png" /></a></h5>
<h5>12) Free Stock Textures</h5>
<h5><a href="http://freestocktextures.com/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="stocktexture" alt="" src="http://resources.savedelete.com/wp-content/uploads/2010/05/stocktexture-e1274171636442.png" width="550" height="275" original="http://resources.savedelete.com/wp-content/uploads/2010/05/stocktexture-e1274171636442.png" /></a></h5>
<p>[<a href="http://savedelete.com/top-10-sites-to-download-free-high-resolution-textures.html" target="_blank">via</a>]</p>
<p>国内类似的资源网站也很多，这里就不一一列出啦，Just Google It！</p>
<p>转载请注明： <br />
转载自：<a href="http://www.fisherv.com/">http://www.fisherv.com</a></p>
<img src ="http://www.blogjava.net/lonleung/aggbug/325835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-07-12 11:23 <a href="http://www.blogjava.net/lonleung/archive/2010/07/12/325835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>国产开源XHTML在线编辑器 xhEditor v1.0.0正式版发布</title><link>http://www.blogjava.net/lonleung/archive/2010/07/02/325102.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Fri, 02 Jul 2010 11:43:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/07/02/325102.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/325102.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/07/02/325102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/325102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/325102.html</trackback:ping><description><![CDATA[<a href="/topics/128.htm"></a>
<p><strong>xhEditor是一个基于jQuery开发的简单迷你并且高效的可视化XHTML编辑器，基于网络访问并且兼容IE 6.0+,Firefox 3.0+,Opera 9.6+,Chrome 1.0+,Safari 3.22+。</strong><br />
在众多用户不断的问题回馈和意见反馈下，经过长达1年零3 个月的不断完善后，v1系列的正式版本v1.0.0 Final终于正式对外发布。经过这么久的不断开发修正和完善，v1.0.0 Final的BUG数量相对已经非常少，我们有自信可以给大家交上一份满意的答卷。</p>
<p>我们不是最好的，但是我们会努力做的更好，我们愿意倾听和接受所有用户的心声。最后，大家在使用过程中若发现任何的问题，或者有比较好的创意和想法，可以随时向我们反馈(yanis.wang@gmail.com)，我们会随时倾听大家的意见，xhEditor的发展离不开大家的支持。<br />
<br />
查看最新版演示：<a href="http://xheditor.com/demo">http://xheditor.com/demo</a><br />
<br />
<strong>更多官方在线演示：</strong><br />
&nbsp;&nbsp; 1. 默认模式：<a href="http://xheditor.com/demos/demo01.html">http://xheditor.com/demos/demo01.html</a><br />
&nbsp;&nbsp; 2. 自定义按钮：<a href="http://xheditor.com/demos/demo02.html">http://xheditor.com/demos/demo02.html</a><br />
&nbsp;&nbsp; 3. 皮肤选择：<a href="http://xheditor.com/demos/demo03.html">http://xheditor.com/demos/demo03.html</a><br />
&nbsp;&nbsp; 4. 其它选项：<a href="http://xheditor.com/demos/demo04.html">http://xheditor.com/demos/demo04.html</a><br />
&nbsp;&nbsp; 5. Javascript交互：<a href="http://xheditor.com/demos/demo05.html">http://xheditor.com/demos/demo05.html</a><br />
&nbsp;&nbsp; 6. 非utf-8编码网页调用：<a href="http://xheditor.com/demos/demo06.html">http://xheditor.com/demos/demo06.html</a><br />
&nbsp;&nbsp; 7. UBB可视化编辑：<a href="http://xheditor.com/demos/demo07.html">http://xheditor.com/demos/demo07.html</a><br />
&nbsp;&nbsp; 8. Ajax文件上传：<a href="http://xheditor.com/demos/demo08.html">http://xheditor.com/demos/demo08.html</a><br />
&nbsp;&nbsp; 9. 插件扩展：<a href="http://xheditor.com/demos/demo09.html">http://xheditor.com/demos/demo09.html</a><br />
&nbsp;&nbsp; 10.iframe调用文件上传：<a href="http://xheditor.com/demos/demo10.html">http://xheditor.com/demos/demo10.html</a><br />
&nbsp;&nbsp; 11.异步加载：<a href="http://xheditor.com/demos/demo11.html">http://xheditor.com/demos/demo11.html</a><br />
<br />
<strong>最新1.0.0 Final版本更新内容(2010-7-1)：</strong><br />
&nbsp;&nbsp; 1. 添加：添加html5Upload参数，用以关闭HTML5上传功能，若关闭HTML5上传，则upMultiple参数无效<br />
&nbsp;&nbsp; 2. 添加：添加delShortcuts API接口，以供插件或者外部动态的删除快捷键<br />
<br />
&nbsp;&nbsp; 1. 修正：UBB模块背景色在Firefox浏览器下某些情况会丢失问题的修正<br />
&nbsp;&nbsp; 2. 修正：IE6浏览器直接在标签内调用初始化JS代码失败问题的修正<br />
&nbsp;&nbsp; 3. 修正：插件代码在IE的某些特殊情况会造成焦点丢失问题的修正<br />
&nbsp;&nbsp; 4. 修正：Firefox浏览器下用jQuery的load动态加载带编辑器代码页面无效问题的修正<br />
&nbsp;&nbsp; 5. 修正：从Word文档粘贴内容在Chrome浏览器中清理不完全问题的修正<br />
&nbsp;&nbsp; 6. 修正：inlineStyle参数无效问题的修正<br />
&nbsp;&nbsp; 7. 修正：IE浏览器粘贴无法清理Word文档问题的修正<br />
<br />
&nbsp;&nbsp; 1. 调整：优化初始化代码以提高初始化速度<br />
&nbsp;&nbsp; 2. 调整：考虑到&#8220;关于&#8221;按钮自动显示容易影响正常用户使用体验，特关闭此按钮的自动显示功能<br />
&nbsp;&nbsp; 3. 调整：考虑php的json支持需要5.2版本以上才支持，对演示上传程序upload.php进行了适当的调节以提高兼容性，并同时优化了某些代码流程<br />
&nbsp;&nbsp; 4. 调整：upMultiple参数由原先的逻辑值，变更为数值型，代表允许一次最大上传文件数，允许值：大于0的整数，等于1代表关闭多文件选择<br />
&nbsp;&nbsp; 5. 调整：缩略图等参数分隔符逗号：&#8220;,&#8221;在非常多的特殊URL中容易出现，因此变更为：&#8220;||&#8221;<br />
&nbsp;&nbsp; 6. 调整：根据用户反馈意见，将默认表情变更为QQ表情<br />
&nbsp;&nbsp; 7. 调整：某些按钮的功能代码中使用title属性传值，会与某些toolTip插件冲突，因此变更传值属性值以提高兼容性<br />
&nbsp;&nbsp; 8. 调整：关闭所有textarea在Chrome浏览器中的拖动改变大小功能<br />
&nbsp;&nbsp; <br />
<strong>最新v1.0.0 Final下载地址：</strong><br />
<a href="http://xheditor.com/download">http://xheditor.com/download</a><br />
</p>
<img src ="http://www.blogjava.net/lonleung/aggbug/325102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-07-02 19:43 <a href="http://www.blogjava.net/lonleung/archive/2010/07/02/325102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google 发布 HTML 5 推广网站 HTML5ROCKS</title><link>http://www.blogjava.net/lonleung/archive/2010/06/23/324238.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Wed, 23 Jun 2010 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/23/324238.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/324238.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/23/324238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/324238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/324238.html</trackback:ping><description><![CDATA[<p id="news_author"><a href="/topics/138.htm"></a>&nbsp;</p>
<div id="news_content">
<p><strong>Apple和Google现在是两大推广HTML 5和WebKit的巨头，既然Apple有一个专门</strong><a href="http://www.apple.com/html5/" target="_blank"><strong>推广HTML 5的网站</strong></a><strong>，那Google也不能落后，于是他们祭出了</strong><a href="http://www.html5rocks.com/" target="_blank"><strong>HTML5ROCKS</strong></a><strong>。</strong><a href="http://www.html5rocks.com/" target="_blank">HTML5ROCKS</a>里目 前有9个<a href="http://www.html5rocks.com/tutorials/" target="_blank">关于 HTML 5功能的指南</a>，通过&#8220;<a href="http://playground.html5rocks.com/" target="_blank">代码练兵场</a>&#8221;还能让你插入自己的代码进去实践──很显然Chrome对它们的支持是最好的，但Safari也没 问题（Google不像Apple那样小气还），对了别忘记被Chrome Frame强行插入的IE也能胜任哦。</p>
<p><a href="http://www.google.org.cn/wp-content/uploads/2010/06/screen-capture10.jpg"></a><br />
<p>Via <a href="http://blog.chromium.org/2010/06/html5-rocks-resource-for-open-web.html" target="_blank">Chromium Blog</a> <a href="http://google.org.cn/">谷奥</a></p>
</div>
<img src ="http://www.blogjava.net/lonleung/aggbug/324238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-23 10:33 <a href="http://www.blogjava.net/lonleung/archive/2010/06/23/324238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]css透明、半透明层</title><link>http://www.blogjava.net/lonleung/archive/2010/06/22/324212.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Tue, 22 Jun 2010 13:31:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/22/324212.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/324212.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/22/324212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/324212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/324212.html</trackback:ping><description><![CDATA[<p>这个效果在IE和Mozilla浏览器上都可以工作，代码如下</p>
<p><strong><font color="#003300">1.HTML页面直接写</font></strong></p>
<p>&lt;img alt="powerbookg4.jpg" src="archives/images/powerbookg4.jpg" width="250" height="60" style="-moz-opacity:0.5; filter:alpha(opacity=50);cursor:pointer;" /&gt;</p>
<p><strong><font color="#003300">2.JS中写</font></strong></p>
<p>在IE中需要通过"filter"来定义透明度"opacity"，而在Mozilla中是可以直接解析"opacity",所以如果要使得这个效 果在两种浏览器中都得到支持，需要把两种设定都加进去。针对IE的设定：this.filters.alpha.opacity=50　而针对 Mozilla的设定：this.style.MozOpacity=0.5</p>
<p><strong><font color="#003300">3.CSS样式表中写</font></strong></p>
<p>css代码里这样写就可以： <br />
.div { <br />
&nbsp;&nbsp;&nbsp;&nbsp; filter:alpha(opacity=50);/*IE*/ <br />
&nbsp;&nbsp;&nbsp;&nbsp; opacity:0.5;/*Mozilla*/ <br />
&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<img src ="http://www.blogjava.net/lonleung/aggbug/324212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-22 21:31 <a href="http://www.blogjava.net/lonleung/archive/2010/06/22/324212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KindEditor 3.5 发布，开源的HTML在线编辑器</title><link>http://www.blogjava.net/lonleung/archive/2010/06/20/324017.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Sun, 20 Jun 2010 13:53:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/20/324017.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/324017.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/20/324017.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/324017.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/324017.html</trackback:ping><description><![CDATA[<h3 id="news_title">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.5版本是3.x系列的改进版本，除了修复3.4.4版本的BUG之外，还有表格编辑、界面优化，多语言、新API等功能的增加和改善，本次更新 对代码改动较大，不兼容低版本的皮肤，但兼容低版本的插件。<br />
主要变化： </h3>
<p>1）表格：插入表格采用dialog，可设置常用属性。插入表格后在表格上点击右键弹出表格控制菜单。
<p>2）右键菜单（contextmenu）：支持左侧小图标、分割线，外观更美观。</p>
<p>3）菜单（menu）：标题、字体、文字大小、颜色可以反映当前状态。</p>
<p>4）表情：增加分页和预览，通过allowPreviewEmoticons属性可关闭预览表情功能。</p>
<p>5）弹出框（dialog）：弹出框支持阴影效果，通过shadowMode可关闭阴影效果。</p>
<p>6）国际化：3.5版本开始所有中文都提取到一个js里，制作其它语言版本只需要翻译src/lang/zh_CN.js即可。</p>
<p>7）新接口：引入KE.html, KE.text, KE.selectedHtml, KE.insertHtml, KE.appendHtml, KE.isEmpty等函数。</p>
<p>其它改善和bugfix：</p>
<p>--------</p>
<p>* 改善: 编辑器底部显示向下拖动指示图标。</p>
<p>* 改善: 点击编辑器外的页面其它部位时关闭菜单。</p>
<p>* 改善: 移除编辑器时将编辑器内容设置到原来的textarea。</p>
<p>* 改善: 从外部粘贴内容时自动将font转换成span标签。</p>
<p>* 改善: ASP.NET程序改成ashx，使用时不需要编译。</p>
<p>* BUG: 改善了文章内容比较多时速度比较慢的问题。</p>
<p>* BUG: 修改了在IE上选中图片或表格后无法用backspace键删除的问题。</p>
<p>* BUG: 修改了在Firefox上全屏后浏览器一直处于加载状态的问题。</p>
<p>* BUG: 修改了在非IE上DOMContentLoaded事件不起作用的问题。</p>
<p>* BUG: 修改了删除编辑器时没有销毁事件的问题。</p>
<p>* BUG: 修改了设置成无颜色时其它样式也被删除的问题。</p>
<p>* BUG: 修改了拖动时拖到浏览器外面放开鼠标后会粘住的问题。</p>
<p>* BUG: 修改了在Firefox上pre标签自动生成br标签的问题。</p>
<p>* BUG: 修改了在IE6上用KE.cmd.wrap方法设置class属性后没有效果的问题。</p>
<p>* BUG: 修改了在P标签内没选中内容时无法插入超级链接的问题。</p>
<p>* BUG: 修改了使用快捷键加粗体、斜体、下划线时没有同步的问题。</p>
<p>演示：</p>
<p>--------</p>
<p><a href="http://www.kindsoft.net/demo.php" target="_blank">http://www.kindsoft.net/demo.php</a></p>
<p>下载：</p>
<p>--------</p>
<p><a href="http://www.kindsoft.net/down.php" target="_blank">http://www.kindsoft.net/down.php</a></p>
<img src ="http://www.blogjava.net/lonleung/aggbug/324017.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-20 21:53 <a href="http://www.blogjava.net/lonleung/archive/2010/06/20/324017.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用CSS的float和clear创建三栏液态布局的方法</title><link>http://www.blogjava.net/lonleung/archive/2010/06/09/323149.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Wed, 09 Jun 2010 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/09/323149.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323149.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/09/323149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323149.html</trackback:ping><description><![CDATA[三栏布局是目前最常见的网页布局，主要页内容放在中间一栏，边上的两栏放置导航链接之类的内容。基本布局一般是标题之下放置三栏，三栏占据整个页面的宽度，最后在页的底端放置页脚，页脚也占据整个页面宽度。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 绝大多数网页设计者都熟悉传统的网页设计技术，用这些技术可以生成带有表格、创建固定宽度布局或者&#8220;液态&#8221;（它可以根据用户浏览器窗口宽度自动伸缩）布局的网页。 <br />
<br />
现在，我们都开始抛弃基于表格的布局技术，许多网络设计者正在从XHTML标记和CSS格式这一新范例中寻找创建三栏布局的方法。用绝对定位的方法从CSS中得到固定宽度的布局并不困难；但是得到液态布局就有点困难了。因此，本文介绍一种用CSS的float和clear属性来获得三栏液态布局的方法。 <br />
<br />
基本方法 <br />
<br />
基本的布局包含五个div，即标题、页脚和三栏。标题和页脚占据整个页宽。左栏div和右栏div都是固定宽度的，并且用float属性来把它们挤压到浏览器窗口的左侧和右侧。中栏实际上占据了整个页宽，中栏的内容在左、右两栏之间&#8220;流淌&#8221;。由于中栏div的宽度并不固定，因此它可以根据浏览器窗口的改变进行必要的伸缩。中栏div的左侧和右侧的填充（padding）属性保证内容安排在一个整齐的栏中，甚至当它伸展到边栏（左栏或者右栏）的底端也是这样。 <br />
<br />
三栏布局的一个例子 <br />
<br />
请看看用本文所介绍的技术进行三栏布局的例子。这个例子用鲜艳的颜色来区分布局的各个div。下面是XHTML代码：&nbsp;
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">&nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"header"</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>Header</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"left"</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Port&nbsp;side&nbsp;text...&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"right"</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Starboard&nbsp;side&nbsp;text...&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"middle"</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Middle&nbsp;column&nbsp;text...&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">"footer"</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Footer&nbsp;text...&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>下面是CSS代码：</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">&nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span><span>body&nbsp;{&nbsp; &nbsp;&nbsp;</span></span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;margin:&nbsp;0px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;0px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>}&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>div#header&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;clear:&nbsp;both;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;50px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;aqua;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;1px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>}&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>div#left&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;float:&nbsp;left;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;150px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;red;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>div#right&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;float:&nbsp;right;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;150px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;green;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>}&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>div#middle&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;0px&nbsp;160px&nbsp;5px&nbsp;160px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;margin:&nbsp;0px;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;silver;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>div#footer&nbsp;{&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;clear:&nbsp;both;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;background-color:&nbsp;yellow;&nbsp; &nbsp;&nbsp;</span></li>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <li class="alt"><span>}&nbsp; &nbsp;&nbsp;</span></li>
</ol>
</div>
<p>代码说明 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTML代码中各部分出现的顺序是非常重要的。左栏和右栏div必须在中栏之前出现。这样才可以让这两个边栏浮动到它们的位置上（屏幕两侧），并让中栏的内容将&#8220;流&#8221;入它们之间的空间。如果浏览器在一个或者两个边栏div之前先发现中栏，那么中栏将占据屏幕的一侧或者两侧，这样浮动的部分就会跑到中栏的下面而不是中栏的旁边了。&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;div#header和div#footer样式（style）中的clearoth申明用来确保这浮动部分不会占据标题和页脚的空间。div#header样式中的padding:1px申明用来消除页头背景色中的异常边，如果padding设置为零，那么在Netscape浏览器中就会看到这个异常。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; div#left样式中的float:left申明是用来把左栏挤压到左侧。width:150px申明用来设置栏的固定宽度，不过你也可以把它的宽度设置为其它具体值。类似的，div#right样式中的float:right申明用来把右栏div挤压到右侧。在本例中，float把左栏和右栏完全挤压到浏览器窗口的左边缘和右边缘。然而，如果这些div被其它div包含，那么float将会把它们挤压到包含它们的div的边缘。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在div#middle样式中，clear申明允许中栏的内容&#8220;流淌&#8221;在两个边栏之间。padding:0px 160px 5px 160px申明设置了到左栏和右栏的填充，这样允许150象素宽度的栏div，在加上10象素的间距。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个例子非常粗糙和简单，但是它很好的演示了用浮动div来创建三栏液态布局的边栏这一基本技术。</p>
<div class="post-body">
<center><br />
本文地址: <a href="http://www.vxxp.com/archives/2.html">http://www.vxxp.com/archives/2.html</a> </center></div>
<img src ="http://www.blogjava.net/lonleung/aggbug/323149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-09 14:06 <a href="http://www.blogjava.net/lonleung/archive/2010/06/09/323149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]http协议学习和总结系列——基础概念篇</title><link>http://www.blogjava.net/lonleung/archive/2010/06/09/323132.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Wed, 09 Jun 2010 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/09/323132.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323132.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/09/323132.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323132.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323132.html</trackback:ping><description><![CDATA[<h1 style="text-indent: -18pt; margin-left: 18pt"><span style="line-height: 240%; font-size: 16pt">1.&nbsp;</span><span style="line-height: 240%; font-family: 宋体; font-size: 16pt">基础概念篇</span></h1>
<h2>1.1 <span style="line-height: 173%; font-family: 宋体; font-size: 15pt">介绍</span></h2>
<p style="line-height: 150%; text-indent: 21pt">&nbsp; HTTP<span style="font-family: 宋体">是</span>Hyper Text Transfer Protocol<span style="font-family: 宋体">（超文本传输协议）的缩写。它的发展是万维网协会（</span>World Wide Web Consortium<span style="font-family: 宋体">）和</span>Internet<span style="font-family: 宋体">工作小组</span>IETF<span style="font-family: 宋体">（</span>Internet Engineering Task Force<span style="font-family: 宋体">）合作的结果，（他们）最终发布了一系列的</span>RFC<span style="font-family: 宋体">，</span>RFC 1945<span style="font-family: 宋体">定义了</span>HTTP/1.0<span style="font-family: 宋体">版本。其中最著名的就是</span>RFC 2616<span style="font-family: 宋体">。</span>RFC 2616<span style="font-family: 宋体">定义了今天普遍使用的一个版本</span>——HTTP 1.1<span style="font-family: 宋体">。</span></p>
<p style="line-height: 150%; text-indent: 21pt">HTTP<span style="font-family: 宋体">协议（</span>HyperText Transfer Protocol<span style="font-family: 宋体">，超文本传输协议）是用于从</span>WWW<span style="font-family: 宋体">服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效，使网络传输减少。它不仅保证计算机正确快速地传输超文本文档，还确定传输文档中的哪一部分，以及哪部分内容首先显示</span>(<span style="font-family: 宋体">如文本先于图形</span>)<span style="font-family: 宋体">等。</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: Calibri; font-size: 10.5pt">HTTP</span><span style="font-family: 宋体; font-size: 10.5pt">是一个应用层协议，由请求和响应构成，是一个标准的客户端服务器模型。</span><span style="font-family: Calibri; font-size: 10.5pt">HTTP</span><span style="font-family: 宋体; font-size: 10.5pt">是一个无状态的协议。</span><span style="font-family: 宋体"></p>
<h2>1.2 <span style="line-height: 173%; font-family: 宋体; font-size: 15pt">在</span><span style="line-height: 173%; font-size: 15pt">TCP/IP</span><span style="line-height: 173%; font-family: 宋体; font-size: 15pt">协议栈中的位置</span></h2>
<p style="line-height: 150%; text-indent: 21pt">HTTP<span style="font-family: 宋体">协议通常承载于</span>TCP<span style="font-family: 宋体">协议之上，有时也承载于</span>TLS<span style="font-family: 宋体">或</span>SSL<span style="font-family: 宋体">协议层之上，这个时候，就成了我们常说的</span>HTTPS<span style="font-family: 宋体">。如下图所示：<br />
&nbsp;&nbsp;&nbsp; <img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-11.jpg" width="396" height="300" /><br />
</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">默认</span>HTTP<span style="font-family: 宋体">的端口号为</span>80<span style="font-family: 宋体">，</span>HTTPS<span style="font-family: 宋体">的端口号为</span>443<span style="font-family: 宋体">。</span></p>
<h2>1.3 <span style="line-height: 173%; font-size: 15pt">HTTP</span><span style="line-height: 173%; font-family: 宋体; font-size: 15pt">的请求响应模型</span></h2>
<p style="line-height: 150%; text-indent: 21pt">HTTP<span style="font-family: 宋体">协议永远都是客户端发起请求，服务器回送响应。见下图：<br />
&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-12.jpg" width="551" height="181" /><br />
</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">这样就限制了使用</span>HTTP<span style="font-family: 宋体">协议，无法实现在客户端没有发起请求的时候，服务器将消息推送给客户端。</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: Calibri; font-size: 10.5pt">HTTP</span><span style="font-family: 宋体; font-size: 10.5pt">协议是一个无状态的协议，同一个客户端的这次请求和上次请求是没有对应关系。</span><br />
</span></p>
<h2>1.4 <span style="line-height: 173%; font-family: 宋体; font-size: 15pt">工作流程</span></h2>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一次</span>HTTP<span style="font-family: 宋体">操作称为一个事务，其工作过程可分为四步：</span></p>
<p style="line-height: 150%; text-indent: 21pt">1<span style="font-family: 宋体">）首先客户机与服务器需要建立连接。只要单击某个超级链接，</span>HTTP<span style="font-family: 宋体">的工作开始。</span></p>
<p style="line-height: 150%; text-indent: 21pt">2<span style="font-family: 宋体">）建立连接后，客户机发送一个请求给服务器，请求方式的格式为：统一资源标识符（</span>URL<span style="font-family: 宋体">）、协议版本号，后边是</span>MIME<span style="font-family: 宋体">信息包括请求修饰符、客户机信息和可能的内容。</span></p>
<p style="line-height: 150%; text-indent: 21pt">3<span style="font-family: 宋体">）服务器接到请求后，给予相应的响应信息，其格式为一个状态行，包括信息的协议版本号、一个成功或错误的代码，后边是</span>MIME<span style="font-family: 宋体">信息包括服务器信息、实体信息和可能的内容。</span></p>
<p style="line-height: 150%; text-indent: 21pt">4<span style="font-family: 宋体">）客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上，然后客户机与服务器断开连接。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">如果在以上过程中的某一步出现错误，那么产生错误的信息将返回到客户端，有显示屏输出。对于用户来说，这些过程是由</span>HTTP<span style="font-family: 宋体">自己完成的，用户只要用鼠标点击，等待信息显示就可以了。</span></p>
<h2>1.5 <span style="line-height: 173%; font-family: 宋体; font-size: 15pt">使用</span><span style="line-height: 173%; font-size: 15pt">Wireshark</span><span style="line-height: 173%; font-family: 宋体; font-size: 15pt">抓</span><span style="line-height: 173%; font-size: 15pt">TCP</span><span style="line-height: 173%; font-family: 宋体; font-size: 15pt">、</span><span style="line-height: 173%; font-size: 15pt">http</span><span style="line-height: 173%; font-family: 宋体; font-size: 15pt">包</span></h2>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">打开</span>Wireshark<span style="font-family: 宋体">，选择工具栏上的&#8220;</span>Capture<span style="font-family: 宋体">&#8221;</span>-&gt;<span style="font-family: 宋体">&#8220;</span>Options<span style="font-family: 宋体">&#8221;，界面选择如图</span>1<span style="font-family: 宋体">所示：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img style="width: 459px; height: 399px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-1.jpg" width="459" height="399" /><br />
</span></p>
<p style="text-align: center; line-height: 150%; text-indent: 18pt" align="center"><span style="font-family: 宋体">图</span>1 设置Capture选项</p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">一般读者只需要选择最上边的下拉框，选择合适的</span>Device<span style="font-family: 宋体">，而后点击&#8220;</span>Capture Filter<span style="font-family: 宋体">&#8221;，此处选择的是&#8220;</span>HTTP TCP port<span style="font-family: 宋体">（</span>80<span style="font-family: 宋体">）&#8221;，选择后点击上图的&#8220;</span>Start<span style="font-family: 宋体">&#8221;开始抓包。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img style="width: 388px; height: 361px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-2.jpg" width="388" height="361" /><br />
</span></p>
<p style="text-align: center; line-height: 150%; text-indent: 18pt" align="center"><span style="font-family: 宋体">图</span>2 选择Capture Filter</p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">例如在浏览器中打开</span><a href="http://image.baidu.com/">http://image.baidu.com/</a><span style="font-family: 宋体">，抓包如图</span>3<span style="font-family: 宋体">所示：<br />
&nbsp;&nbsp;&nbsp; http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-3.jpg<br />
<img style="width: 614px; height: 142px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-3.jpg" width="614" height="142" /><br />
</span></p>
<p style="text-align: center; line-height: 150%; text-indent: 18pt" align="center"><span style="font-family: 宋体">图</span>3&nbsp; &nbsp;抓包</p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">在上图中，可清晰的看到客户端浏览器（</span>ip<span style="font-family: 宋体">为</span>192.168.2.33<span style="font-family: 宋体">）与服务器的交互过程：</span></p>
<p style="line-height: 150%; text-indent: 18pt">1<span style="font-family: 宋体">）</span>No1<span style="font-family: 宋体">：浏览器（</span>192.168.2.33<span style="font-family: 宋体">）向服务器（</span>220.181.50.118<span style="font-family: 宋体">）发出连接请求。此为</span>TCP<span style="font-family: 宋体">三次握手第一步，此时从图中可以看出，为</span>SYN<span style="font-family: 宋体">，</span>seq:X <span style="font-family: 宋体">（</span>x=0<span style="font-family: 宋体">）</span></p>
<p style="line-height: 150%; text-indent: 18pt">2<span style="font-family: 宋体">）</span>No2<span style="font-family: 宋体">：服务器（</span>220.181.50.118<span style="font-family: 宋体">）回应了浏览器（</span>192.168.2.33<span style="font-family: 宋体">）的请求，并要求确认，此时为：</span>SYN<span style="font-family: 宋体">，</span>ACK<span style="font-family: 宋体">，此时</span>seq<span style="font-family: 宋体">：</span>y<span style="font-family: 宋体">（</span>y<span style="font-family: 宋体">为</span>0<span style="font-family: 宋体">），</span>ACK<span style="font-family: 宋体">：</span>x+1<span style="font-family: 宋体">（为</span>1<span style="font-family: 宋体">）。此为三次握手的第二步；</span></p>
<p style="line-height: 150%; text-indent: 18pt">3<span style="font-family: 宋体">）</span>No3<span style="font-family: 宋体">：浏览器（</span>192.168.2.33<span style="font-family: 宋体">）回应了服务器（</span>220.181.50.118<span style="font-family: 宋体">）的确认，连接成功。为：</span>ACK<span style="font-family: 宋体">，此时</span>seq<span style="font-family: 宋体">：</span>x+1<span style="font-family: 宋体">（为</span>1<span style="font-family: 宋体">），</span>ACK<span style="font-family: 宋体">：</span>y+1<span style="font-family: 宋体">（为</span>1<span style="font-family: 宋体">）。此为三次握手的第三步；</span></p>
<p style="line-height: 150%; text-indent: 18pt">4<span style="font-family: 宋体">）</span>No4<span style="font-family: 宋体">：浏览器（</span>192.168.2.33<span style="font-family: 宋体">）发出一个页面</span>HTTP<span style="font-family: 宋体">请求；</span></p>
<p style="line-height: 150%; text-indent: 18pt">5<span style="font-family: 宋体">）</span>No5<span style="font-family: 宋体">：服务器（</span>220.181.50.118<span style="font-family: 宋体">）确认；</span></p>
<p style="line-height: 150%; text-indent: 18pt">6<span style="font-family: 宋体">）</span>No6<span style="font-family: 宋体">：服务器（</span>220.181.50.118<span style="font-family: 宋体">）发送数据；</span></p>
<p style="line-height: 150%; text-indent: 18pt">7<span style="font-family: 宋体">）</span>No7<span style="font-family: 宋体">：客户端浏览器（</span>192.168.2.33<span style="font-family: 宋体">）确认；</span></p>
<p style="line-height: 150%; text-indent: 18pt">8<span style="font-family: 宋体">）</span>No14<span style="font-family: 宋体">：客户端（</span>192.168.2.33<span style="font-family: 宋体">）发出一个图片</span>HTTP<span style="font-family: 宋体">请求；</span></p>
<p style="line-height: 150%; text-indent: 18pt">9<span style="font-family: 宋体">）</span>No15<span style="font-family: 宋体">：服务器（</span>220.181.50.118<span style="font-family: 宋体">）发送状态响应码</span>200 OK</p>
<p style="line-height: 150%; text-indent: 18pt">&#8230;&#8230;</p>
<h2>1.6 <span style="line-height: 173%; font-family: 宋体; font-size: 15pt">头域</span></h2>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">每个头域由一个域名，冒号（</span>:<span style="font-family: 宋体">）和域值三部分组成。域名是大小写无关的，域值前可以添加任何数量的空格符，头域可以被扩展为多行，在每行开始处，使用至少一个空格或制表符。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">在抓包的图中，</span>No14<span style="font-family: 宋体">点开可看到如图</span>4<span style="font-family: 宋体">所示：<br />
&nbsp;&nbsp; <a href="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-4.jpg">http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-4.jpg</a><br />
<img style="width: 703px; height: 175px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-4.jpg" width="703" height="175" /><br />
</span></p>
<p style="text-align: center; line-height: 150%" align="center"><span style="font-family: 宋体">图</span>4 http请求消息</p>
<p style="line-height: 150%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">回应的消息如图</span>5<span style="font-family: 宋体">所示：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img style="width: 478px; height: 250px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-5.jpg" width="478" height="250" /><br />
</span></p>
<p style="text-align: center; line-height: 150%" align="center"><span style="font-family: 宋体">图</span>5 http状态响应信息</p>
<h3><span style="line-height: 173%; font-size: 14pt">1.6.1</span><span style="line-height: 173%; font-size: 14pt"> host</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">头域</span></h3>
<p style="line-height: 150%; text-indent: 18pt">Host<span style="font-family: 宋体">头域指定请求资源的</span>Intenet<span style="font-family: 宋体">主机和端口号，必须表示请求</span>url<span style="font-family: 宋体">的原始服务器或网关的位置。</span>HTTP/1.1<span style="font-family: 宋体">请求必须包含主机头域，否则系统会以</span>400<span style="font-family: 宋体">状态码返回。</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">图</span>5<span style="font-family: 宋体">中</span>host<span style="font-family: 宋体">那行为：<br />
&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-6.jpg" width="210" height="20" /><br />
</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.6.2</span><span style="line-height: 173%; font-size: 14pt"> Referer</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">头域</span></h3>
<p style="line-height: 150%; text-indent: 18pt">Referer<span style="font-family: 宋体">头域允许客户端指定请求</span>uri<span style="font-family: 宋体">的源资源地址，这可以允许服务器生成回退链表，可用来登陆、优化</span>cache<span style="font-family: 宋体">等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的</span>uri<span style="font-family: 宋体">没有自己的</span>uri<span style="font-family: 宋体">地址，</span>Referer<span style="font-family: 宋体">不能被发送。如果指定的是部分</span>uri<span style="font-family: 宋体">地址，则此地址应该是一个相对地址。</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">在图</span>4<span style="font-family: 宋体">中，</span>Referer<span style="font-family: 宋体">行的内容为：<br />
&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-7.jpg" width="301" height="23" /><br />
</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.6.3</span><span style="line-height: 173%; font-size: 14pt"> User-Agent</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">头域</span></h3>
<p style="line-height: 150%; text-indent: 18pt">User-Agent<span style="font-family: 宋体">头域的内容包含发出请求的用户信息。</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">在图</span>4<span style="font-family: 宋体">中，</span>User-Agent<span style="font-family: 宋体">行的内容为：<br />
&nbsp;&nbsp; <a href="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-8.jpg">http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-8.jpg</a><br />
<br />
</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.6.4</span><span style="line-height: 173%; font-size: 14pt"> Cache-Control</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">头域</span></h3>
<p style="line-height: 150%; text-indent: 18pt">Cache-Control<span style="font-family: 宋体">指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置</span>Cache-Control<span style="font-family: 宋体">并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括</span>no-cache<span style="font-family: 宋体">、</span>no-store<span style="font-family: 宋体">、</span>max-age<span style="font-family: 宋体">、</span>max-stale<span style="font-family: 宋体">、</span>min-fresh<span style="font-family: 宋体">、</span>only-if-cached<span style="font-family: 宋体">，响应消息中的指令包括</span>public<span style="font-family: 宋体">、</span>private<span style="font-family: 宋体">、</span>no-cache<span style="font-family: 宋体">、</span>no-store<span style="font-family: 宋体">、</span>no-transform<span style="font-family: 宋体">、</span>must-revalidate<span style="font-family: 宋体">、</span>proxy-revalidate<span style="font-family: 宋体">、</span>max-age<span style="font-family: 宋体">。</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">在图</span>5<span style="font-family: 宋体">中的该头域为：<br />
&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-9.jpg" width="244" height="21" /><br />
<br />
</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.6.5</span><span style="line-height: 173%; font-size: 14pt"> Date</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">头域</span></h3>
<p style="line-height: 150%; text-indent: 18pt">Date<span style="font-family: 宋体">头域表示消息发送的时间，时间的描述格式由</span>rfc822<span style="font-family: 宋体">定义。例如，</span>Date:Mon,31Dec200104:25:57GMT<span style="font-family: 宋体">。</span>Date<span style="font-family: 宋体">描述的时间表示世界标准时，换算成本地时间，需要知道用户所在的时区。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">图</span>5<span style="font-family: 宋体">中，该头域如下图所示：<br />
&nbsp;&nbsp; <img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0-%e6%a6%82%e5%bf%b5-10.jpg" width="318" height="20" /><br />
&nbsp; </p>
<h2>1.7 <span style="line-height: 173%; font-size: 15pt">HTTP</span><span style="line-height: 173%; font-family: 宋体; font-size: 15pt">的几个重要概念</span></h2>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.1</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">连接：</span><span style="line-height: 173%; font-size: 14pt">Connection</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一个传输层的实际环流，它是建立在两个相互通讯的应用程序之间。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">在</span>http1.1<span style="font-family: 宋体">，</span>request<span style="font-family: 宋体">和</span>reponse<span style="font-family: 宋体">头中都有可能出现一个</span>connection<span style="font-family: 宋体">的头，此</span>header<span style="font-family: 宋体">的含义是当</span>client<span style="font-family: 宋体">和</span>server<span style="font-family: 宋体">通信时对于长链接如何进行处理。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">在</span>http1.1<span style="font-family: 宋体">中，</span>client<span style="font-family: 宋体">和</span>server<span style="font-family: 宋体">都是默认对方支持长链接的，</span> <span style="font-family: 宋体">如果</span>client<span style="font-family: 宋体">使用</span>http1.1<span style="font-family: 宋体">协议，但又不希望使用长链接，则需要在</span>header<span style="font-family: 宋体">中指明</span>connection<span style="font-family: 宋体">的值为</span>close<span style="font-family: 宋体">；如果</span>server<span style="font-family: 宋体">方也不想支持长链接，则在</span>response<span style="font-family: 宋体">中也需要明确说明</span>connection<span style="font-family: 宋体">的值为</span>close<span style="font-family: 宋体">。不论</span>request<span style="font-family: 宋体">还是</span>response<span style="font-family: 宋体">的</span>header<span style="font-family: 宋体">中包含了值为</span>close<span style="font-family: 宋体">的</span>connection<span style="font-family: 宋体">，都表明当前正在使用的</span>tcp<span style="font-family: 宋体">链接在当天请求处理完毕后会被断掉。以后</span>client<span style="font-family: 宋体">再进行新的请求时就必须创建新的</span>tcp<span style="font-family: 宋体">链接了。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.2</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">消息：</span><span style="line-height: 173%; font-size: 14pt">Message</span></h3>
<p style="line-height: 150%; text-indent: 21pt">HTTP<span style="font-family: 宋体">通讯的基本单位，包括一个结构化的八元组序列并通过连接传输。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.3</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">请求：</span><span style="line-height: 173%; font-size: 14pt">Request</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.4</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">响应：</span><span style="line-height: 173%; font-size: 14pt">Response</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一个从服务器返回的信息包括</span>HTTP<span style="font-family: 宋体">协议的版本号、请求的状态</span>(<span style="font-family: 宋体">例如</span>&#8220;<span style="font-family: 宋体">成功</span>&#8221;<span style="font-family: 宋体">或</span>&#8220;<span style="font-family: 宋体">没找到</span>&#8221;)<span style="font-family: 宋体">和文档的</span>MIME<span style="font-family: 宋体">类型。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.5</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">资源：</span><span style="line-height: 173%; font-size: 14pt">Resource</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">由</span>URI<span style="font-family: 宋体">标识的网络数据对象或服务。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.6</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">实体：</span><span style="line-height: 173%; font-size: 14pt">Entity</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">数据资源或来自服务资源的回映的一种特殊表示方法，它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.7</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">客户机：</span><span style="line-height: 173%; font-size: 14pt">Client</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一个为发送请求目的而建立连接的应用程序。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.8</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">用户代理：</span><span style="line-height: 173%; font-size: 14pt">UserAgent</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.9</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">服务器：</span><span style="line-height: 173%; font-size: 14pt">Server</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一个接受连接并对请求返回信息的应用程序。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.10</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">源服务器：</span><span style="line-height: 173%; font-size: 14pt">Originserver</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">是一个给定资源可以在其上驻留或被创建的服务器。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.11</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">代理：</span><span style="line-height: 173%; font-size: 14pt">Proxy</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一个中间程序，它可以充当一个服务器，也可以充当一个客户机，为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前，必须解释并且如果可能重写它。</span> </p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">代理经常作为通过防火墙的客户机端的门户，代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.12</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">网关：</span><span style="line-height: 173%; font-size: 14pt">Gateway</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">一个作为其它服务器中间媒介的服务器。与代理不同的是，网关接受请求就好象对被请求的资源来说它就是源服务器；发出请求的客户机并没有意识到它在同网关打交道。</span> </p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">网关经常作为通过防火墙的服务器端的门户，网关还可以作为一个协议翻译器以便存取那些存储在非</span>HTTP<span style="font-family: 宋体">系统中的资源。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.13</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">通道：</span><span style="line-height: 173%; font-size: 14pt">Tunnel</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">是作为两个连接中继的中介程序。一旦激活，通道便被认为不属于</span>HTTP<span style="font-family: 宋体">通讯，尽管通道可能是被一个</span>HTTP<span style="font-family: 宋体">请求初始化的。当被中继的连接两端关闭时，通道便消失。当一个门户</span>(Portal)<span style="font-family: 宋体">必须存在或中介</span>(Intermediary)<span style="font-family: 宋体">不能解释中继的通讯时通道被经常使用。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">1.7.14</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">缓存：</span><span style="line-height: 173%; font-size: 14pt">Cache</span></h3>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体; font-size: 10.5pt">反应信息的局域存储。</span><br />
</span></p>
<h1 style="text-indent: -18pt; margin-left: 18pt"><span style="line-height: 240%; font-family: 宋体; font-size: 16pt"><font face="Trebuchet MS">&nbsp;&nbsp;&nbsp; 附录：</font>参考资料</span></h1>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《</span>http_<span style="font-family: 宋体">百度百科》：</span><a href="http://baike.baidu.com/view/9472.htm">http://baike.baidu.com/view/9472.htm</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《结果编码和</span>http<span style="font-family: 宋体">状态响应码》：</span><a href="http://blog.tieniu1980.cn/archives/377">http://blog.tieniu1980.cn/archives/377</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《分析</span>TCP<span style="font-family: 宋体">的三次握手》：</span></p>
<p style="line-height: 150%; text-indent: 18pt"><a href="http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc7905141130a8e5747e0d548d98297a5ae91e03f7f63772315477e3cacdd94cdbbdc42225d82c36734f844315c419d891007a9f34d507a9f916a2e1b065d2f48193864353bb15543897f1fb4d711edd1b86033093b1e94e022e67adec40728e2e605f983431c5508fe4&amp;p=c6769a46c5820efd08e2973b42&amp;user=baidu">http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc7905141130a8e5747e0d548d98297a5ae91e03f7f63772315477e3cacdd94cdbbdc42225d82c36734f844315c419d891007a9f34d507a9f916a2e1b065d2f48193864353bb15543897f1fb4d711edd1b86033093b1e94e022e67adec40728e2e605f983431c5508fe4&amp;p=c6769a46c5820efd08e2973b42&amp;user=baidu</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《使用</span>Wireshark<span style="font-family: 宋体">来检测一次</span>HTTP<span style="font-family: 宋体">连接过程》：</span></p>
<p style="line-height: 150%; text-indent: 18pt">http://blog.163.com/wangbo_tester/blog/static/12806792120098174162288/</p>
<p style="line-height: 150%; text-indent: 18pt" class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">《</span><span lang="EN-US">http</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">协议的几个重要概念》：</span><span lang="EN-US"><a href="http://nc.mofcom.gov.cn/news/10819972.html">http://nc.mofcom.gov.cn/news/10819972.html</a></span></p>
<p style="line-height: 150%; text-indent: 18pt" class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">《</span><span lang="EN-US">http</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">协议中</span><span lang="EN-US">connection</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri">头的作用》：</span></p>
<span style="font-family: Calibri; font-size: 10.5pt; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://blog.csdn.net/barfoo/archive/2008/06/05/2514667.aspx">http://blog.csdn.net/barfoo/archive/2008/06/05/2514667.aspx</a></span>&nbsp;<br />
<img src ="http://www.blogjava.net/lonleung/aggbug/323132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-09 11:27 <a href="http://www.blogjava.net/lonleung/archive/2010/06/09/323132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]http协议学习和总结系列——协议详解篇</title><link>http://www.blogjava.net/lonleung/archive/2010/06/09/323131.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Wed, 09 Jun 2010 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/09/323131.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323131.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/09/323131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323131.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 2.&nbsp;协议详解篇2.1 HTTP/1.0和HTTP/1.1的比较RFC 1945定义了HTTP/1.0版本，RFC 2616定义了HTTP/1.1版本。笔者在blog上提供了这两个RFC中文版的下载地址。RFC1945下载地址：http://www.blogjava.net/Files/amigoxie/RFC1945（HTTP）中文版.rarRFC2616下载地...&nbsp;&nbsp;<a href='http://www.blogjava.net/lonleung/archive/2010/06/09/323131.html'>阅读全文</a><img src ="http://www.blogjava.net/lonleung/aggbug/323131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-09 11:26 <a href="http://www.blogjava.net/lonleung/archive/2010/06/09/323131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]http协议学习和总结系列——深入了解篇 </title><link>http://www.blogjava.net/lonleung/archive/2010/06/09/323130.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Wed, 09 Jun 2010 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/09/323130.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323130.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/09/323130.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323130.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323130.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这篇开篇的时候，要感谢一下我的老大，他看到我在写这个系列，给我提供了一个他以前做内部培训时，写得很赞的两个ppt，被我拿来为我所用，(*^__^*) 嘻嘻&#8230;&#8230;。另外感谢下网上提供各种资料的IT同仁们。<br />
3.&nbsp;<span style="line-height: 240%; font-family: 宋体; font-size: 16pt">深入了解篇</span> </p>
<h2>3.1 Cookie<span style="font-family: 宋体">和</span>Session</h2>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">Cookie<span style="font-family: 宋体">和</span>Session<span style="font-family: 宋体">都为了用来保存状态信息，都是保存客户端状态的机制，它们都是为了解决</span>HTTP<span style="font-family: 宋体">无状态的问题而所做的努力。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">Session<span style="font-family: 宋体">可以用</span>Cookie<span style="font-family: 宋体">来实现，也可以用</span>URL<span style="font-family: 宋体">回写的机制来实现。用</span>Cookie<span style="font-family: 宋体">来实现的</span>Session<span style="font-family: 宋体">可以认为是对</span>Cookie<span style="font-family: 宋体">更高级的应用。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.1.1</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">两者比较</span></h3>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">Cookie<span style="font-family: 宋体">和</span>Session<span style="font-family: 宋体">有以下明显的不同点：</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">1<span style="font-family: 宋体">）</span>Cookie<span style="font-family: 宋体">将状态保存在客户端，</span>Session<span style="font-family: 宋体">将状态保存在服务器端；</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">2<span style="font-family: 宋体">）</span>Cookies<span style="font-family: 宋体">是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。</span>Cookie<span style="font-family: 宋体">最早在</span>RFC2109<span style="font-family: 宋体">中实现，后续</span>RFC2965<span style="font-family: 宋体">做了增强。网络服务器用</span>HTTP<span style="font-family: 宋体">头向客户端发送</span>cookies<span style="font-family: 宋体">，在客户终端，浏览器解析这些</span>cookies<span style="font-family: 宋体">并将它们保存为一个本地文件，它会自动将同一服务器的任何请求缚上这些</span>cookies<span style="font-family: 宋体">。</span>Session<span style="font-family: 宋体">并没有在</span>HTTP<span style="font-family: 宋体">的协议中定义；</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">3<span style="font-family: 宋体">）</span>Session<span style="font-family: 宋体">是针对每一个用户的，变量的值保存在服务器上，用一个</span>sessionID<span style="font-family: 宋体">来区分是哪个用户</span>session<span style="font-family: 宋体">变量</span>,<span style="font-family: 宋体">这个值是通过用户的浏览器在访问的时候返回给服务器，当客户禁用</span>cookie<span style="font-family: 宋体">时，这个值也可能设置为由</span>get<span style="font-family: 宋体">来返回给服务器；</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">4<span style="font-family: 宋体">）就安全性来说：当你访问一个使用</span>session <span style="font-family: 宋体">的站点，同时在自己机子上建立一个</span>cookie<span style="font-family: 宋体">，建议在服务器端的</span>SESSION<span style="font-family: 宋体">机制更安全些</span>.<span style="font-family: 宋体">因为它不会任意读取客户存储的信息。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.1.2</span><span style="line-height: 173%; font-size: 14pt"> Session</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">机制</span></h3>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">Session<span style="font-family: 宋体">机制是一种服务器端的机制，服务器使用一种类似于散列表的结构（也可能就是使用散列表）来保存信息。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">当程序需要为某个客户端的请求创建一个</span>session<span style="font-family: 宋体">的时候，服务器首先检查这个客户端的请求里是否已包含了一个</span>session<span style="font-family: 宋体">标识</span>&nbsp;-&nbsp;<span style="font-family: 宋体">称为</span> session&nbsp;id<span style="font-family: 宋体">，如果已包含一个</span>session&nbsp;id<span style="font-family: 宋体">则说明以前已经为此客户端创建过</span>session<span style="font-family: 宋体">，服务器就按照</span>session&nbsp;id<span style="font-family: 宋体">把这个</span> session<span style="font-family: 宋体">检索出来使用（如果检索不到，可能会新建一个），如果客户端请求不包含</span>session&nbsp;id<span style="font-family: 宋体">，则为此客户端创建一个</span>session<span style="font-family: 宋体">并且生成一个与此</span>session<span style="font-family: 宋体">相关联的</span>session&nbsp;id<span style="font-family: 宋体">，</span>session&nbsp;id<span style="font-family: 宋体">的值应该是一个既不会重复，又不容易被找到规律以仿造的字符串，这个</span> session&nbsp;id<span style="font-family: 宋体">将被在本次响应中返回给客户端保存。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.1.6</span><span style="line-height: 173%; font-size: 14pt"> Session</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">的实现方式</span></h3>
<h4><span style="line-height: 156%; font-size: 12pt">3.1.6</span><span style="line-height: 156%; font-size: 12pt">.1 &nbsp;</span><span style="line-height: 156%; font-family: 黑体; font-size: 12pt">使用</span><span style="line-height: 156%; font-size: 12pt">Cookie</span><span style="line-height: 156%; font-family: 黑体; font-size: 12pt">来实现</span></h4>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">服务器给每个</span>Session<span style="font-family: 宋体">分配一个唯一的</span>JSESSIONID<span style="font-family: 宋体">，</span><span style="font-family: 宋体">并通过</span>Cookie<span style="font-family: 宋体">发送给客户端。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">当客户端发起新的请求的时候，将在</span>Cookie<span style="font-family: 宋体">头中携带这个</span>JSESSIONID<span style="font-family: 宋体">。这样服务器能够找到这个客户端对应的</span>Session<span style="font-family: 宋体">。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">流程如下图所示：<br />
&nbsp;&nbsp;&nbsp; <img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0%e5%92%8c%e6%80%bb%e7%bb%93%e7%b3%bb%e5%88%97-3-1.jpg" width="586" height="198" /><br />
</span></p>
<h4><span style="line-height: 156%; font-size: 12pt">3.1.6</span><span style="line-height: 156%; font-size: 12pt">.2 &nbsp;</span><span style="line-height: 156%; font-family: 黑体; font-size: 12pt">使用</span><span style="line-height: 156%; font-size: 12pt">URL</span><span style="line-height: 156%; font-family: 黑体; font-size: 12pt">回显来实现</span></h4>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">URL<span style="font-family: 宋体">回写是指服务器在发送给浏览器页面的所有链接中都携带</span>JSESSIONID<span style="font-family: 宋体">的参数，这样客户端点击任何一个链接都会把</span>JSESSIONID<span style="font-family: 宋体">带会服务器。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">如果直接在浏览器输入服务端资源的</span>url<span style="font-family: 宋体">来请求该资源，那么</span>Session<span style="font-family: 宋体">是匹配不到的。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">Tomcat<span style="font-family: 宋体">对</span>Session<span style="font-family: 宋体">的实现，是一开始同时使用</span>Cookie<span style="font-family: 宋体">和</span>URL<span style="font-family: 宋体">回写机制，如果发现客户端支持</span>Cookie<span style="font-family: 宋体">，就继续使用</span>Cookie<span style="font-family: 宋体">，停止使用</span>URL<span style="font-family: 宋体">回写。如果发现</span>Cookie<span style="font-family: 宋体">被禁用，就一直使用</span>URL<span style="font-family: 宋体">回写。</span>jsp<span style="font-family: 宋体">开发处理到</span>Session<span style="font-family: 宋体">的时候，对页面中的链接记得使用</span>response.encodeURL() <span style="font-family: 宋体">。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.1.3</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">在</span><span style="line-height: 173%; font-size: 14pt">J2EE</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">项目中</span><span style="line-height: 173%; font-size: 14pt">Session</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">失效的几种情况</span></h3>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">1<span style="font-family: 宋体">）</span>Session<span style="font-family: 宋体">超时：</span>Session<span style="font-family: 宋体">在指定时间内失效，例如</span>30<span style="font-family: 宋体">分钟，若在</span>30<span style="font-family: 宋体">分钟内没有操作，则</span>Session<span style="font-family: 宋体">会失效，例如在</span>web.xml<span style="font-family: 宋体">中进行了如下设置：</span></p>
<p style="margin-left: 21pt">&lt;session-config&gt; <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&lt;session-timeout&gt;30&lt;/session-timeout&gt; //<span style="font-family: 宋体">单位：分钟</span><br />
&nbsp; &nbsp; &lt;/session-config&gt;</p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">2<span style="font-family: 宋体">）</span><span style="font-family: 宋体">使用</span>session.invalidate()<span style="font-family: 宋体">明确的去掉</span>Session<span style="font-family: 宋体">。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.1.4</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">与</span><span style="line-height: 173%; font-size: 14pt">Cookie</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">相关的</span><span style="line-height: 173%; font-size: 14pt">HTTP</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">扩展头</span></h3>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">1<span style="font-family: 宋体">）</span><strong>Cookie</strong><span style="font-family: 宋体">：</span><span style="font-family: 宋体">客户端将服务器设置的</span>Cookie<span style="font-family: 宋体">返回到服务器</span><span style="font-family: 宋体">；</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">2<span style="font-family: 宋体">）</span><strong>Set-Cookie</strong><span style="font-family: 宋体">：</span><span style="font-family: 宋体">服务器向客户端设置</span>Cookie<span style="font-family: 宋体">；</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">3<span style="font-family: 宋体">）</span><strong>Cookie2</strong> (RFC2965)<span style="font-family: 宋体">）：</span><span style="font-family: 宋体">客户端指示服务器支持</span>Cookie<span style="font-family: 宋体">的版本</span><span style="font-family: 宋体">；</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">4<span style="font-family: 宋体">）</span><strong>Set-Cookie2</strong> (RFC2965)<span style="font-family: 宋体">：</span><span style="font-family: 宋体">服务器向客户端设置</span>Cookie<span style="font-family: 宋体">。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.1.5</span><span style="line-height: 173%; font-size: 14pt">Cookie</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">的流程</span></h3>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">服务器在响应消息中用</span>Set-Cookie<span style="font-family: 宋体">头将</span>Cookie<span style="font-family: 宋体">的内容回送给客户端，客户端在新的请求中将相同的内容携带在</span>Cookie<span style="font-family: 宋体">头中发送给服务器。从而实现会话的保持。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">流程如下图所示：<br />
<img style="width: 482px; height: 211px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0%e5%92%8c%e6%80%bb%e7%bb%93%e7%b3%bb%e5%88%97-3-2.jpg" width="482" height="211" /><br />
</span></p>
<h2>3.2 <span style="font-family: 宋体">缓存的实现原理</span></h2>
<h3><span style="line-height: 173%; font-size: 14pt">3.2.1</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">什么是</span><span style="line-height: 173%; font-size: 14pt">Web</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">缓存</span></h3>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">WEB<span style="font-family: 宋体">缓存</span>(cache)<span style="font-family: 宋体">位于</span>Web<span style="font-family: 宋体">服务器和客户端之间。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt"><span style="font-family: 宋体">缓存会根据请求保存输出内容的副本，例如</span>html<span style="font-family: 宋体">页面，</span><span style="font-family: 宋体">图片，文件，当下一个请求来到的时候：如果是相同的</span>URL<span style="font-family: 宋体">，缓存直接使用副本响应访问请求，而不是向源服务器再次发送请求。</span></p>
<p style="line-height: 150%; text-indent: 21pt; tab-stops: list 36.0pt">HTTP<span style="font-family: 宋体">协议定义了相关的消息头来使</span>WEB<span style="font-family: 宋体">缓存尽可能好的工作。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.2.2</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">缓存的优点</span></h3>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 宋体">减少相应延迟</span></strong><span style="font-family: 宋体">：因为请求从缓存服务器（离客户端更近）而不是源服务器被相应，这个过程耗时更少，让</span>web<span style="font-family: 宋体">服务器看上去相应更快。</span> </p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 宋体">减少网络带宽消耗</span></strong><span style="font-family: 宋体">：当副本被重用时会减低客户端的带宽消耗；客户可以节省带宽费用，控制带宽的需求的增长并更易于管理。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.2.3</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">与缓存相关的</span><span style="line-height: 173%; font-size: 14pt">HTTP</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">扩展消息头</span></h3>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Expires</strong><span style="font-family: 宋体">：指示响应内容过期的时间，格林威治时间</span>GMT </p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Cache-Control</strong><span style="font-family: 宋体">：更细致的控制缓存的内容</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Last-Modified</strong><span style="font-family: 宋体">：响应中资源最后一次修改的时间</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>ETag</strong><span style="font-family: 宋体">：响应中资源的校验值，在服务器上某个时段是唯一标识的。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>Date</strong><span style="font-family: 宋体">：服务器的时间</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>If-Modified-Since</strong><span style="font-family: 宋体">：客户端存取的该资源最后一次修改的时间，同</span>Last-Modified<span style="font-family: 宋体">。</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong>If-None-Match</strong><span style="font-family: 宋体">：客户端存取的该资源的检验值，同</span>ETag<span style="font-family: 宋体">。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.2.4</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">客户端缓存生效的常见流程</span></h3>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">服务器收到请求时，会在</span>200OK<span style="font-family: 宋体">中回送该资源的</span>Last-Modified<span style="font-family: 宋体">和</span>ETag<span style="font-family: 宋体">头，客户端将该资源保存在</span>cache<span style="font-family: 宋体">中，并记录这两个属性。当客户端需要发送相同的请求时，会在请求中携带</span>If-Modified-Since<span style="font-family: 宋体">和</span>If-None-Match<span style="font-family: 宋体">两个头。两个头的值分别是响应中</span>Last-Modified<span style="font-family: 宋体">和</span>ETag<span style="font-family: 宋体">头的值。服务器通过这两个头判断本地资源未发生变化，客户端不需要重新下载，返回</span>304<span style="font-family: 宋体">响应。常见流程如下图所示：<br />
<img style="width: 540px; height: 212px" border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0%e5%92%8c%e6%80%bb%e7%bb%93%e7%b3%bb%e5%88%97-3-3.jpg" width="540" height="212" /><br />
</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.2.5</span><span style="line-height: 173%; font-size: 14pt"> Web</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">缓存机制</span></h3>
<p style="line-height: 150%; text-indent: 21pt">HTTP/1.1<span style="font-family: 宋体">中缓存的目的是为了在很多情况下减少发送请求，同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量；</span>HTTP<span style="font-family: 宋体">利用一个&#8220;过期（</span>expiration<span style="font-family: 宋体">）&#8221;机制来为此目的。后者减少了网络应用的带宽；</span>HTTP<span style="font-family: 宋体">用&#8220;验证（</span>validation<span style="font-family: 宋体">）&#8221;机制来为此目的。</span></p>
<p style="line-height: 150%; text-indent: 21pt">HTTP<span style="font-family: 宋体">定义了</span>3<span style="font-family: 宋体">种缓存机制：</span></p>
<p style="line-height: 150%; text-indent: 21pt">1<span style="font-family: 宋体">）</span><strong>Freshness</strong><span style="font-family: 宋体">：允许一个回应消息可以在源服务器不被重新检查，并且可以由服务器和客户端来控制。例如，</span>Expires<span style="font-family: 宋体">回应头给了一个文档不可用的时间。</span>Cache-Control<span style="font-family: 宋体">中的</span>max-age<span style="font-family: 宋体">标识指明了缓存的最长时间；</span></p>
<p style="line-height: 150%; text-indent: 21pt">2<span style="font-family: 宋体">）</span><strong>Validation</strong><span style="font-family: 宋体">：用来检查以一个缓存的回应是否仍然可用。例如，如果一个回应有一个</span>Last-Modified<span style="font-family: 宋体">回应头，缓存能够使用</span>If-Modified-Since<span style="font-family: 宋体">来判断是否已改变，以便判断根据情况发送请求；</span></p>
<p style="line-height: 150%; text-indent: 21pt">3<span style="font-family: 宋体">）</span><strong>Invalidation</strong><strong><span style="font-family: 宋体">：</span></strong> <span style="font-family: 宋体">在另一个请求通过缓存的时候，常常有一个副作用。例如，如果一个</span>URL<span style="font-family: 宋体">关联到一个缓存回应，但是其后跟着</span>POST<span style="font-family: 宋体">、</span>PUT<span style="font-family: 宋体">和</span>DELETE<span style="font-family: 宋体">的请求的话，缓存就会过期。</span></p>
<h2>3.3 <span style="font-family: 宋体">断点续传和多线程下载的实现原理</span></h2>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>HTTP<span style="font-family: 宋体">协议的</span>GET<span style="font-family: 宋体">方法，支持只请求某个资源的某一部分；</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>206 Partial Content <span style="font-family: 宋体">部分内容响应；</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Range <span style="font-family: 宋体">请求的资源范围；</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Content-Range <span style="font-family: 宋体">响应的资源范围；</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">在连接断开重连时，客户端只请求该资源未下载的部分，而不是重新请求整个资源，来实现断点续传。</span></p>
<p style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">分块请求资源实例：</span></p>
<p style="line-height: 150%; margin-left: 18pt">Eg1<span style="font-family: 宋体">：</span><strong>Range: bytes=306302- </strong><span style="font-family: 宋体">：请求这个资源从</span>306302<span style="font-family: 宋体">个字节到末尾的部分；</span></p>
<p style="line-height: 150%; margin-left: 18pt">Eg2<span style="font-family: 宋体">：</span><strong>Content-Range: bytes 306302-604047/604048</strong><span style="font-family: 宋体">：响应中指示携带的是该资源的第</span>306302-604047<span style="font-family: 宋体">的字节，该资源共</span>604048<span style="font-family: 宋体">个字节；</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">客户端通过并发的请求相同资源的不同片段，来实现对某个资源的并发分块下载。从而达到快速下载的目的。目前流行的</span>FlashGet<span style="font-family: 宋体">和迅雷基本都是这个原理。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">多线程下载的原理：</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">下载工具开启多个发出</span>HTTP<span style="font-family: 宋体">请求的线程；</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">每个</span>http<span style="font-family: 宋体">请求只请求资源文件的一部分：</span>Content-Range: bytes 20000-40000/47000<span style="font-family: 宋体">；</span></p>
<p style="line-height: 150%; text-indent: -18pt; margin-left: 36pt; tab-stops: list 36.0pt"><span style="font-family: Wingdings">q<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">合并每个线程下载的文件。</span></p>
<h2>3.4 https<span style="font-family: 宋体">通信过程</span></h2>
<h3><span style="line-height: 173%; font-size: 14pt">3.4.1</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">什么是</span><span style="line-height: 173%; font-size: 14pt">https</span></h3>
<p style="line-height: 150%; text-indent: 18pt">HTTPS<span style="font-family: 宋体">（全称：</span>Hypertext Transfer Protocol over Secure Socket Layer<span style="font-family: 宋体">），是以安全为目标的</span>HTTP<span style="font-family: 宋体">通道，简单讲是</span>HTTP<span style="font-family: 宋体">的安全版。即</span>HTTP<span style="font-family: 宋体">下加入</span>SSL<span style="font-family: 宋体">层，</span>HTTPS<span style="font-family: 宋体">的安全基础是</span>SSL<span style="font-family: 宋体">，因此加密的详细内容请看</span>SSL<span style="font-family: 宋体">。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">见下图：<br />
&nbsp;&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0%e5%92%8c%e6%80%bb%e7%bb%93%e7%b3%bb%e5%88%97-3-4.jpg" width="397" height="301" /><br />
</span></p>
<p style="line-height: 150%; text-indent: 18pt">https<span style="font-family: 宋体">所用的端口号是</span>443<span style="font-family: 宋体">。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.4.2</span><span style="line-height: 173%; font-size: 14pt"> https</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">的实现原理</span></h3>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">有两种基本的加解密算法类型：</span></p>
<p style="line-height: 150%; text-indent: 18pt">1<span style="font-family: 宋体">）<strong>对称加密</strong>：密钥只有一个，加密解密为同一个密码，且加解密速度快，典型的对称加密算法有</span>DES<span style="font-family: 宋体">、</span>AES<span style="font-family: 宋体">等；</span></p>
<p style="line-height: 150%; text-indent: 18pt">2<span style="font-family: 宋体">）<strong>非对称加密</strong>：密钥成对出现（且根据公钥无法推知私钥，根据私钥也无法推知公钥），加密解密使用不同密钥（公钥加密需要私钥解密，私钥加密需要公钥解密），相对对称加密速度较慢，典型的非对称加密算法有</span>RSA<span style="font-family: 宋体">、</span>DSA<span style="font-family: 宋体">等。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">下面看一下</span>https<span style="font-family: 宋体">的通信过程：<br />
&nbsp;&nbsp; <img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0%e5%92%8c%e6%80%bb%e7%bb%93%e7%b3%bb%e5%88%97-3-5.jpg" width="369" height="408" /><br />
</span></p>
<p style="line-height: 150%; text-indent: 18pt">https<span style="font-family: 宋体">通信的优点：</span></p>
<p style="line-height: 150%; text-indent: 18pt">1<span style="font-family: 宋体">）客户端产生的密钥只有客户端和服务器端能得到；</span></p>
<p style="line-height: 150%; text-indent: 18pt">2<span style="font-family: 宋体">）加密的数据只有客户端和服务器端才能得到明文；</span></p>
<p style="line-height: 150%; text-indent: 18pt">3<span style="font-family: 宋体">）客户端到服务端的通信是安全的。</span></p>
<h2>3.5 http<span style="font-family: 宋体">代理</span></h2>
<h3><span style="line-height: 173%; font-size: 14pt">3.5.1</span><span style="line-height: 173%; font-size: 14pt"> http</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">代理服务器</span></h3>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">代理服务器英文全称是</span>Proxy Server<span style="font-family: 宋体">，其功能就是代理网络用户去取得网络信息。形象的说：它是网络信息的中转站。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">代理服务器是介于浏览器和</span>Web<span style="font-family: 宋体">服务器之间的一台服务器，有了它之后，浏览器不是直接到</span>Web<span style="font-family: 宋体">服务器去取回网页而是向代理服务器发出请求，</span>Request<span style="font-family: 宋体">信号会先送到代理服务器，由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">而且，大部分代理服务器都具有缓冲的功能，就好象一个大的</span>Cache<span style="font-family: 宋体">，它有很大的存储空间，它不断将新取得数据储存到它本机的存储器上，如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的，那么它就不重新从</span>Web<span style="font-family: 宋体">服务器取数据，而直接将存储器上的数据传送给用户的浏览器，这样就能显著提高浏览速度和效率。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">更重要的是：</span>Proxy Server(<span style="font-family: 宋体">代理服务器</span>)<span style="font-family: 宋体">是</span>Internet<span style="font-family: 宋体">链路级网关所提供的一种重要的安全功能，它的工作主要在开放系统互联</span>(OSI)<span style="font-family: 宋体">模型的对话层。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.5.2</span><span style="line-height: 173%; font-size: 14pt"> http</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">代理服务器的主要功能</span></h3>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">主要功能如下：</span></p>
<p style="line-height: 150%; text-indent: 18pt">1<span style="font-family: 宋体">）突破自身</span>IP<span style="font-family: 宋体">访问限制，访问国外站点。如：教育网、</span>169<span style="font-family: 宋体">网等网络用户可以通过代理访问国外网站；</span></p>
<p style="line-height: 150%; text-indent: 18pt">2<span style="font-family: 宋体">）访问一些单位或团体内部资源，如某大学</span>FTP(<span style="font-family: 宋体">前提是该代理地址在该资源的允许访问范围之内</span>)<span style="font-family: 宋体">，使用教育网内地址段免费代理服务器，就可以用于对教育</span> <span style="font-family: 宋体">网开放的各类</span>FTP<span style="font-family: 宋体">下载上传，以及各类资料查询共享等服务；</span></p>
<p style="line-height: 150%; text-indent: 18pt">3<span style="font-family: 宋体">）突破中国电信的</span>IP<span style="font-family: 宋体">封锁：中国电信用户有很多网站是被限制访问的，这种限制是人为的，不同</span>Serve<span style="font-family: 宋体">对地址的封锁是不同的。所以不能访问时可以换一个国</span> <span style="font-family: 宋体">外的代理服务器试试；</span></p>
<p style="line-height: 150%; text-indent: 18pt">4<span style="font-family: 宋体">）提高访问速度：通常代理服务器都设置一个较大的硬盘缓冲区，当有外界的信息通过时，同时也将其保存到缓冲区中，当其他用户再访问相同的信息时，</span> <span style="font-family: 宋体">则直接由缓冲区中取出信息，传给用户，以提高访问速度；</span></p>
<p style="line-height: 150%; text-indent: 18pt">5<span style="font-family: 宋体">）隐藏真实</span>IP<span style="font-family: 宋体">：上网者也可以通过这种方法隐藏自己的</span>IP<span style="font-family: 宋体">，免受攻击。</span></p>
<h3><span style="line-height: 173%; font-size: 14pt">3.5.3</span><span style="line-height: 173%; font-size: 14pt"> http</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">代理图示</span></h3>
<p style="line-height: 150%; text-indent: 18pt">http<span style="font-family: 宋体">代理的图示见下图：<br />
&nbsp;&nbsp;<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/40799/o_http%e5%8d%8f%e8%ae%ae%e5%ad%a6%e4%b9%a0%e5%92%8c%e6%80%bb%e7%bb%93%e7%b3%bb%e5%88%97-3-6.jpg" width="361" height="169" /><br />
</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">对于客户端浏览器而言，</span>http<span style="font-family: 宋体">代理服务器相当于服务器。</span></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">而对于</span>Web<span style="font-family: 宋体">服务器而言，</span>http<span style="font-family: 宋体">代理服务器又担当了客户端的角色。</span></p>
<h2>3.6 <span style="font-family: 宋体">虚拟主机的实现</span></h2>
<h3><span style="line-height: 173%; font-size: 14pt">3.6.1</span><span style="line-height: 173%; font-family: 宋体; font-size: 14pt">什么是虚拟主机</span></h3>
<p style="line-height: 150%; text-indent: 18pt"><strong><span style="font-family: 宋体">虚拟主机</span></strong><span style="font-family: 宋体">：是在</span><a href="http://baike.baidu.com/view/813.htm" target="_blank"><span style="font-family: 宋体; color: windowtext; text-decoration: none; text-underline: none">网络服务器</a></span><span style="font-family: 宋体">上划分出一定的磁盘空间供用户放置</span><a href="http://baike.baidu.com/view/391109.htm" target="_blank"><span style="font-family: 宋体; color: windowtext; text-decoration: none; text-underline: none">站点</a></span><span style="font-family: 宋体">、应用组件等，提供必要的站点功能与数据存放、传输功能。</span> &nbsp;</p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">所谓虚拟主机，也叫</span>&#8220;<a href="http://baike.baidu.com/view/40851.htm" target="_blank"><span style="font-family: 宋体; color: windowtext; text-decoration: none; text-underline: none">网站空间</a>&#8221;</span><span style="font-family: 宋体">就是把一台运行在互联网上的服务器划分成多个</span>&#8220;<span style="font-family: 宋体">虚拟</span>&#8221;<span style="font-family: 宋体">的服务器，每一个虚拟主机都<strong>具有独立的</strong></span><strong><a href="http://baike.baidu.com/view/43.htm" target="_blank"><span style="font-family: 宋体; color: windowtext; text-decoration: none; text-underline: none">域名</a></span></strong><strong><span style="font-family: 宋体">和完整的</span>Internet</strong><strong><span style="font-family: 宋体">服务器</span></strong><span style="font-family: 宋体">（支持</span><a href="http://baike.baidu.com/view/1453.htm" target="_blank"><span style="color: windowtext; text-decoration: none; text-underline: none">WWW</a></span><span style="font-family: 宋体">、</span><a href="http://baike.baidu.com/view/369.htm" target="_blank"><span style="color: windowtext; text-decoration: none; text-underline: none">FTP</a></span><span style="font-family: 宋体">、</span><a href="http://baike.baidu.com/view/8409.htm" target="_blank"><span style="color: windowtext; text-decoration: none; text-underline: none">E-mail</a></span><span style="font-family: 宋体">等）功能。一台服务器上的不同虚拟主机是各自独立的，并由用户自行管理。但一台服务器主机只能够支持一定数量的虚拟主机，当超过这个数量时，用户将会感到性能急剧下降。</span></p>
<h3>3.6.2<span style="font-family: 宋体">虚拟主机的实现原理</span></h3>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">虚拟主机是用同一个</span>WEB<span style="font-family: 宋体">服务器，为不同域名网站提供服务的技术。</span>Apache<span style="font-family: 宋体">、</span>Tomcat<span style="font-family: 宋体">等均可通过配置实现这个功能。</span></p>
<p style="line-height: 150%; margin-left: 18pt"><span style="font-family: 宋体">相关的</span>HTTP<span style="font-family: 宋体">消息头：</span>Host<span style="font-family: 宋体">。</span></p>
<p style="line-height: 150%; margin-left: 18pt"><span style="font-family: 宋体">例如：</span>Host: <a href="http://www.baidu.com/" target="_parent">www.baidu.com</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">客户端发送</span>HTTP<span style="font-family: 宋体">请求的时候，会携带</span>Host<span style="font-family: 宋体">头，</span>Host<span style="font-family: 宋体">头记录的是客户端输入的域名。这样服务器可以根据</span>Host<span style="font-family: 宋体">头确认客户要访问的是哪一个域名。</span></p>
<h1><span style="line-height: 240%; font-family: 宋体; font-size: 16pt">附录：参考资料</span></h1>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《理解</span>Cookie<span style="font-family: 宋体">和</span>Session<span style="font-family: 宋体">机制》：</span></p>
<p style="line-height: 150%; text-indent: 18pt"><a href="http://sumongh.javaeye.com/blog/82498">http://sumongh.javaeye.com/blog/82498</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《浅析</span>HTTP<span style="font-family: 宋体">协议》：</span></p>
<p style="line-height: 150%; text-indent: 18pt"><a href="http://203.208.39.132/search?q=cache:CdXly_88gjIJ:www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html+http%E5%8D%8F%E8%AE%AE+web%E7%BC%93%E5%AD%98&amp;cd=27&amp;hl=zh-CN&amp;ct=clnk&amp;gl=cn&amp;st_usg=ALhdy2-vzOcP8XTG1h7lcRr2GJrkTbH2Cg">http://203.208.39.132/search?q=cache:CdXly_88gjIJ:www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html+http%E5%8D%8F%E8%AE%AE+web%E7%BC%93%E5%AD%98&amp;cd=27&amp;hl=zh-CN&amp;ct=clnk&amp;gl=cn&amp;st_usg=ALhdy2-vzOcP8XTG1h7lcRr2GJrkTbH2Cg</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《</span>http<span style="font-family: 宋体">代理</span>_<span style="font-family: 宋体">百度百科》：</span></p>
<p style="line-height: 150%; text-indent: 18pt"><a href="http://baike.baidu.com/view/1159398.htm">http://baike.baidu.com/view/1159398.htm</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《虚拟主机</span>_<span style="font-family: 宋体">百度百科》：</span></p>
<p style="line-height: 150%; text-indent: 18pt"><a href="http://baike.baidu.com/view/7383.htm">http://baike.baidu.com/view/7383.htm</a></p>
<p style="line-height: 150%; text-indent: 18pt"><span style="font-family: 宋体">《</span>https_<span style="font-family: 宋体">百度百科》：</span><a href="http://baike.baidu.com/view/14121.htm">http://baike.baidu.com/view/14121.htm</a></p>
<img src ="http://www.blogjava.net/lonleung/aggbug/323130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-09 11:25 <a href="http://www.blogjava.net/lonleung/archive/2010/06/09/323130.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>给网页设计师的30个HTML5学习资源</title><link>http://www.blogjava.net/lonleung/archive/2010/06/08/323032.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Tue, 08 Jun 2010 02:16:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/08/323032.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323032.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/08/323032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323032.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323032.html</trackback:ping><description><![CDATA[<p align="left"><a href="/topics/138.htm"></a>&nbsp;新闻来源:NTT.cc<br />
<br />
早在几个星期前，Adobe就发布了Dreamweaver CS5 HTML5 Pack的预览版下载。众所周知，HTML5在互联网领域掀起了一场大论战，并让Adobe的日子很难熬。HTML5致力于为前端开发提供全面的标记语 言。以下30多个资源可帮你开始学习HTML5。</p>
<p><br />
<a href="http://www.craftymind.com/2010/04/20/blowing-up-html5-video-and-mapping-it-into-3d-space/">Blowing up HTML5 video and mapping it into 3D space（将HTML5视频吹散并组成3D效果）</a>最近我研究了HTML 5中的Canvas 和Video 标签，并发现了一些很酷的特性。其中之一就是Canvas.drawImage() api。此为详细介绍。<br />
<br />
<a href="http://inspectelement.com/tutorials/code-a-backwards-compatible-one-page-portfolio-with-html5-and-css3/">Code a Backwards Compatible, One Page Portfolio with HTML5 and CSS3（用HTML5 和CSS3 打造向下兼容的网页）</a>HTML5更加语义化，使用HTML5 我们不必在网页上布满没有意义的div。它引入了有意义的tag，比如 navigations 和 footers 使代码更有意义也更接近自然语言。<br />
<br />
<a href="http://www.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Coding A HTML 5 Layout From Scratch（HTML 5 布局）</a><br />
这篇文章将教你<br />
<ul>
    <li>用原有技术将元素放置在特定位置
    <li>最新的技术潮流
    <li>Microformats与HTML5协同使用
    <li>介绍HTML5与CSS3的新特性 </li>
</ul>
<p align="left"><a href="http://tutorialzine.com/2010/02/html5-css3-website-template/">Coding a CSS3 and HTML5 One Page Website Template（制作CSS3和 HTML5 一页式站点模板）</a>这篇文章介绍了如何利用CSS3 和jQuery的新特性制作HTML5 网页模版。 HTML5 仍在完善当中，你也可以选择性的下载XHTML版。<br />
<br />
<a href="http://www.html5trends.com/tutorials/comprehensive-video-tutorial-on-html5/">Comprehensive video tutorial on HTML5（全面的HTML5视频指南）</a>这 是一个叫Brad Neuberg的工程师制作的HTML5教学视频。<br />
<br />
<a href="http://www.ibm.com/developerworks/web/tutorials/wa-html5/">Create modern Web sites using HTML5 and CSS3（用HTML5与CSS3打造时尚站点）</a>这篇文章介绍了许多HTML5的功能和语法及API，还有CSS3的新的选择器，效果和特性。最 后， 还将教你如何利用这些新特性开发一个网页。当你读完这篇文章，你就能用HTML5和CSS3开发一个自己的站点啦。<br />
<br />
<a href="http://html5doctor.com/designing-a-blog-with-html5/">Designing a blog with html5（用html5设计博客）</a>许多HTML5 特性要结合JavaScript API一起使用，以增加网页的互动性。但仍有一些新元素可让传统的Web1.0页面更加语义化。为了学习这些，我们来看怎样建立一个博客。<br />
<br />
<a href="http://devsnippets.com/article/designing-with-html5-css3.html">Designing for the Future with HTML5 and CSS3 : Tutorials and Best Practices（为未来设计：HTML 5 和 CSS3 指南与最佳案例）</a>这篇文章将介绍用 HTML5和CSS3搭建的几个最佳站点。<br />
<br />
<a href="http://line25.com/tutorials/design-and-code-a-cool-iphone-app-website-in-html5">Design and Code a Cool iPhone App Website in HTML5（用HTML5设计和实现一个超酷 iPhone App 网站）</a><br />
<br />
<a href="http://24ways.org/2009/have-a-field-day-with-html5-forms">Have a Field Day with HTML5 Forms（建立HTML 5表格）</a>这篇文站将教你 如果用HTML 5 和高级CSS技术与最新的CSS3技术建立一个漂亮的表格。<br />
<br />
<a href="http://www.pvmgarage.com/2010/04/touch-the-future-create-an-elegant-website-with-hmtl-5-and-css3/">How To Create A Nice Blog Design Touching The Future(不用photoshop，完成网页设计)</a><br />
<br />
<a href="http://net.tutsplus.com/tutorials/html-css-techniques/how-to-make-all-browsers-render-html5-mark-up-correctly-even-ie6/">How to Make All Browsers Render HTML5 Mark-up Correctly &#8211; Even IE6（怎样让所有浏览器都渲染HTML5标记——即使是IE6）</a>这篇文章将教你如何用JavaScript和CSS，使 HTML5页面向下兼容，即使是IE6也不例外。<br />
<br />
<a href="http://sixrevisions.com/web-development/html5-iphone-app/">How to Make an HTML5 iPhone App（制作HTML5 iPhone 应用）</a>这是 一篇针对iPhone的指导，但是许多技术也可用在兼容HTML5的手机浏览器上。<br />
<br />
<a href="http://net.tutsplus.com/tutorials/html-css-techniques/html-5-and-css-3-the-techniques-youll-soon-be-using/">HTML 5 and CSS 3: The Techniques You&#8217;ll Soon Be Using（HTML 5 和CSS 3：你将用到的技术）</a>这篇文章使用HTML 5和CSS 3 搭建博客页面。如果你已经熟悉html 和CSS，将很容易跟上。<br />
<br />
<a href="http://www.whatcreative.co.uk/blog/tutorials/html5-for-beginners-use-it-now-its-easy/">HTML5 for Beginners. Use it now, its easy!（HTML 5初学指南）</a>给 所有具有基础HTML知识的初学者的HTML 5 入门指南<br />
<br />
<a href="http://apirocks.com/html5/html5.html">HTML5 Presentation</a>这篇文章介绍了HTML5 的发展历史和它的基本特性<br />
<br />
<a href="http://www.dave-woods.co.uk/index.php/html5-tutorial-getting-started/">HTML5 Tutorial &#8211; Getting Started（HTML 5 入门指导）</a><br />
<br />
<a href="http://www.webmonkey.com/2010/02/building_web_pages_with_html_5/">How to Build Web Pages With HTML 5（怎样建立HTML 5网页）</a><br />
<br />
<a href="http://www.designzzz.com/website-layout-tutorial-html-5-css-3/">Simple Website Layout Tutorial Using HTML 5 and CSS 3（HTML5和CSS3布局指南）</a>HTML5最令人期待的新标签包括&lt;header&gt;, &lt;footer&gt;, &lt;aside&gt;, &lt;nav&gt;, &lt;audio&gt;，同时它还包括画图，线下存储数据，拖放等API。页面布局将会更易理解。这里将介绍一个最简单的HTML 5 布局页面，用CSS3 设置样式。最终结果如下<br />
<br />
<a href="http://orderedlist.com/our-writing/resources/html-css/structural-tags-in-html5/">Structural Tags in HTML5（HTML 5 结构标签）</a>HTML5 有许多标签帮助网页结构化，这能省去以网页中许多div<br />
<br />
<a href="http://html5doctor.com/html-5-boilerplates/">HTML5 Boilerplates（HTML 5模板）</a>此文介绍了一些你能拿来就用的HTML5 模板文件<br />
<br />
<a href="http://dev.opera.com/articles/view/html-5-canvas-the-basics/">HTML 5 canvas &#8211; the basics（HTML 5 基础——Canvas）</a>对HTML 5 Canvas使用方法的全面指导<br />
<br />
<a href="http://html5tutorial.net/category/tutorials">HTML 5 Tutorials（HTML 5 指南）</a><br />
<br />
<a href="http://net.tutsplus.com/tutorials/html-css-techniques/implementing-html5-drag-and-drop-new-premium-tutorial/">Implementing HTML5 Drag and Drop: New Premium Tutorial（HTML 5 拖放）</a>HTML5 的一个新特性就是拖放，不过IE早在5.5时代就支持拖放了，而HTML 5 的拖放也是基于IE的。本例将教你如果用拖放实现一个简单的购物车界面。<br />
<br />
<a href="http://www.alistapart.com/articles/previewofhtml5/">Preview of HTML 5</a>这是一篇比较老的文章，介绍了HTML5的特性和优点。<br />
<br />
<a href="http://www.8bitrocket.com/newsdisplay.aspx?newspage=39402">The HTML 5 Canvas For Flash Developers : Drawing（HTML 5 Canvas 的画图功能）</a><br />
<br />
<a href="http://perishablepress.com/press/2009/07/19/power-of-html5-css3/">The Power of HTML 5 and CSS 3</a>介绍了HTML 5 与CSS3能创造的各种效果。<br />
<br />
<a href="http://ajaxian.com/archives/view-source-tutorial-sticky-notes-with-html5-and-css3">View Source Tutorial: Sticky Notes With HTML5 and CSS3（HTML5 和CSS3 打造便利贴效果）</a><br />
<br />
<a href="http://www.weboshelp.net/getting-started-with-webos/156-palm-webos-html5-database-storage-tutorial">webOS HTML5 Database Storage Tutorial（webOS HTML5 数据存储指南）</a>HTML5 的本地存储功能将使数据存储十分简便。<br />
<br />
<a href="http://articles.sitepoint.com/article/html-5-snapshot-2009">Yes, You Can Use HTML 5 Today!</a>本文介绍了一些现已被支持的HTML 5 特性，对初学者十分有用。<br />
<br />
文章来源：NTT.cc<br />
翻译：lovelyashes<br />
</p>
<img src ="http://www.blogjava.net/lonleung/aggbug/323032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-08 10:16 <a href="http://www.blogjava.net/lonleung/archive/2010/06/08/323032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>隔岸观火 为你解读Flash和HTML5那点事</title><link>http://www.blogjava.net/lonleung/archive/2010/06/08/323031.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Tue, 08 Jun 2010 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/08/323031.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323031.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/08/323031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323031.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323031.html</trackback:ping><description><![CDATA[<p><strong>最近关于HTML5 吵得火热，很多人认为HTML5出现会秒杀Flash，以至于在各大web前端开发论坛吵得不可开交。论坛里三言两语说的不够尽兴，只好在自己一亩三分地 里敞开了说说。也当一次神棍，展望一下web前端开发的未来。</strong>首先这里所说的HTML5也不仅指HTML5本身，而是泛指HTML5、 CSS3、 JavaScript以及新的浏览器API所包含的整个web前端技术。</p>
<p>
<p>　<strong>　谁需要HTML5？</strong></p>
<p>　 　Google最需要！Apple的Jobs也需要。但这两个肯定各怀鬼胎。微软无所谓了，反正他还有Silverlight。</p>
<p>　　 Mozilla/Firefox非盈利组织，目标可能会高尚些，是w3c标准就要支持。Opera那点浏览器市场占有率估计还没敢有太多想法。</p>
<p>　 　Google的云计算帝国就差一个支持 RIA(Rich Internet Applications)富互联网应用的客户端了，试想HTML5得到普及，更多的应用转向BS模式时，微软帝国的桌面软件生态环境必定受到很大威胁， 垂涎多年的Google一定是最大受益者。当在一台操作系统免费的电脑上使用和MS Word差不多功能的免费Google Doc时，你还会掏钱买微软的Word吗？当你所有的办公应用都只需要打开浏览器窗口时，你还会花钱买操作系统吗？Google的Chrome OS操作系统界面已经说明了这个意图。</p>
<p>　　Jobs也需要HTML5，他是打着小算盘，想让浏览器原生支持视频音频，这样iPhone、 iPad就不用嵌入Flash，Jobs当然不能让Flash进iPhone OS，要不然App Store里的游戏谁去买？同时，如果大量的应用都能基于浏览器实现时，用户就不会被Windows的桌面应用套牢了。漂亮的Mac电脑谁不喜欢。</p>
<p>　 　他们选择 HTML5都是为了更大野心，期望HTML5带来整个软件生态环境的改变，同时避开不受自己控制的Flash。</p>
<p>　　 Macromedia和后来的当家Adobe把握住了互联网应用的发展需求，不断的完善的Flash，使之已经超越了浏览器本身的功能。各大浏览器厂商也 看到这种应用的需求，不甘于一个本该浏览器实现的功能，由一个几兆大小的 Plugin实现了，并玩的风生水起。于是不遗余力的推进HTML5，并且矛头直指Flash。</p>
<p>　　用户想要HTML5吗？用户要的不是技 术，是应用，是体验。如果你能拿Ajax实现一个开心农场，我想没谁会在乎它是不是Flash做的。</p>
<p>　　开发者想要 HTML5吗？那需要一个成熟的HTML5+CSS3+JS的开发环境，需要各个浏览器提供统一的用户体验，即标准的完全兼容。还需要增加新的学习成本。</p>
<p>　 　<strong>Flash 的优势？</strong></p>
<p>　　Flash比HTML5强在哪？性能，功能？如果说HTML5将拥有和Flash所有内置对象类 似的DOM 呢，还有GPU的2D、3D加速呢?这不是没可能，毕竟HTML5还只是草案。当然Flash也能不停的更新。</p>
<p>　　开发群体</p>
<p>　 　我认为Flash的优势是在开发人员上，十多年的积累，有众多优秀的艺术家、程序员和互动设计师集中在Flash平台上做互动媒体开发。也使无数的类库 有了AS版，如FLARToolKit，Touchlib，OpenCV这些互动、图像分析的c++库都移植到了Flash平台。在RIA应用上有相对成 熟且开源的Flex框架，越来越多的企业在尝试使用Flex替代Ext等 Ajax框架，为客户提供更好RIA应用体验。</p>
<p>　　持续发展</p>
<p>　 　FlashPlayer 是一个封闭的系统，是由Adoeb独家控制，相对于开放的HTML5标准这是弱势，也是技术上的优势，它可以很灵活，可以随时加入新技术，新功能。而 HTML5是一个公开标准，既然是标准就意味着不会经常改动。Flash的改进升级只需要用户升级FlashPlayer插件，插件的升级相对用户来说， 是轻量级的。HTML标准的改进意味着升级浏览器，这是相对重量级的用户操作，尤其是还有很多人不明白什么是浏览器。</p>
<p>　　HTML5开放标 准一旦确定下来，就会有一个很长的使用周期，今天看是足够先进的功能，十年后呢。就像当年我们用着HTML4+CSS2+JS沾沾自喜以为足够表现Web 应用时，谁能想到今天Flash不断改进所开拓的天地呢。或许十年后我们又该讨论HTML6秒杀Flash的话题了。</p>
<p>　　超越web应用</p>
<p>　 　如果当年SUN能重视Java Applet，或许就没有Flash的今天，SUN也不会沦落到被收购的境地。而如今Adobe AIR更是让Flash超越Java Applet，让Flash超越了web，脱离了浏览器。Flash到如今功能不断增强，在多媒体领域也在不断地压缩自家老大哥Director的应用空 间。多点触摸、人脸识别、Socket通讯同步、AR增强现实、实时视频等等功能在Flash平台上的实现，让越来越多的互动多媒体项目采用Flash方 案。</p>
<p>　　希望Adobe继续能扩展Adobe AIR平台的功能，提高性能。能有越来越多的跨平台桌面应用在AIR上实现。</p>
<p>　 　<strong>Flash 的劣势？</strong></p>
<p>　　FlashPlayer版权私有。</p>
<p>　　swf文件的内容相对封闭，搜索引擎不友 好。</p>
<p>　　插件的安全隐患。</p>
<p>　　相对与Ajax技术的学习曲线及学习成本。</p>
<p>　　FlashPlayer 94%装机率!=100%。</p>
<p>　　iPhoneOS明确不支持Flash，而iPad首日12万的订单，预计将会开启一个大市场。</p>
<p>　 　不支持3D硬件加速。FlashPlayer如果支持3D硬件加速，必将重写现有的2D矢量引擎，鉴于ShockWave 3D的表现，FlashPlayer 硬件3D，很难有很好的用户体验。</p>
<p>　　<strong>HTML5拿什么取代Flash</strong></p>
<p>　 　功能：HTML5目前还只是草案，从已提交的内容来看，增加了许多更具语义的标签，新的标签意味着在DOM中增加新的类，如果把浏览器比做一个大的 Flashplayer，HTML5无非就是在增加新的类，新的API。然后由JavaScript来调用这些API。如果HTML5要完全取代 Flash，至少要提供和Flashplayer10相似的功能。这应该不是问题，添加WebSocket 、WebSQL、WebGL&#8230;&#8230;甚至WebQt、WebMFC都是可以无尽畅想的。或者干脆把浏览器就做成一个大虚拟机，完成Java的桌面遗愿。如果有 足够的需求动力，这些都不是问题。</p>
<p>　　性能：在很多 HTML5激进派的文章里，都痛指目前Flash的效率低下，导致浏览崩溃。真的是Flash效率低到如此不堪吗？肯定不是，只是Flash的滥用和参差 不齐的Web前端开发人员造成的。同样如果用IE的JS引擎写一个Ajax版的XX农场，如果所有页面广告动画都用JS来写，我想那才叫效率低下。如果真 的Flash效率低，为什么那么多网页游戏都不是Ajax做的呢？为什么很多优化的很好的Flash3D游戏场景都很流畅，而一个2D的XX农场就能拖慢 你的酷睿2呢？不明真相的半吊子开发人员总是把浏览器不响应和崩溃归结于Flash效率低下。所以未来HTML5要取代Flash 必须有一个高效的2D/3D图形文字渲染引擎，和一个高效的JavaScript引擎。这样才能带来更好的用户体验。这些，众浏览器厂商都准备好了 吗？Chrome和Opera似乎正在走这条路。</p>
<p>　　兼容性：HTML4标准已经十多年了，今天我们还会写下fxckIE6的CSS样式 名。浏览器的兼容性会是最大的问题，尤其是加入n多特性后的HTML5和CSS3。IE，Firefox，Chrome，Safari这些浏览器背后的大 佬们，怎么去协调呢？这有个矛盾，开发差异化的产品，却要提供同质化的功能。JS性能、标签浏览，同步收藏，插件这些提高用户体验的功能，都是这些差异化 的方向。如果再出现类似ActiveX这类IE only的东西，那还不如维持HTML4这种方式不变。</p>
<p>　　开发模式：Flash IDE将无数优秀的艺术家、UI设计师和互动程序设计师团结在一起，最终成就了Flash，这也与Macromedia和Adobe在图形设计和互动设计 群体中的号召力不无关系。HTML5的互动会将JavaScript提高到一个新的高度，这必将需要一个成熟的开发环境。继续DW+Firebug？或者 DW升级为全新的HTML5互动开发IDE，或者微软VS来干这件事，或者是Eclipse？成熟的开发环境才能聚拢人才，才能激发无穷的创造力，带来更 多的内容。丰富的内容自然带来更多用户。</p>
<p>　　部署：这是最重要的一个问题，没有这一步，一切都是零。Flash新版本怎么部署？在90%多 桌面占有率的基础上更新插件就OK。HTML5怎么部署，更新浏览器，这个有点难，看看顽强的IE6。听到有人建议微软在系统 ServerPack里包含IE更新，只能说这想法很好，但是反垄断的大锤一定会把微软砸死。那怎么引导用户去升级浏览器呢？对于互联网&#8220;Core User&#8221;来说不是问题，目前支持HTML5和CSS3部分特性的Chrome开发版，很多人都在用了。但是那些&#8220;Light User&#8221;呢，可能连天天看网页用的这个窗口跟浏览器是什么关系都不明白。这需要一个HTML5的杀手级应用去引导，&#8220;Light User&#8221;几乎不会以技术为导向去升级浏览器的，他们只会以应用需求为导向去升级。比如YouTube不再支持IE6用户，这样喜欢YouTube视频的 用户会去升级IE6再来访问。用户不会是因为IE6的HTML标准兼容差而选择更新IE6，这是必然的。那HTML5的杀手级应用在哪里呢？或者说都有 Youtube这样的影响力和号召力吗？而没有这种号召力的网站，谁会贸然率先支持HTML5来要求用户升级浏览器吗？这些网站之间必定会陷入囚徒困境 中，在重复的囚徒困境中，博弈被反复地进行。最终才会全面进入 HTML5时代。这个过程或者很短，也可能很长。毕竟现存的Web前端还没到不堪的地步，反倒是由于Flash这些插件和jQuery这些JS框架弄的有 声有色。</p>
<p>　　<strong>总结</strong></p>
<p>　　HTML5不是用户应用的迫切需求，更多是厂商试图改变软件生态格局的战略需求。<br />
HTML5的兼容性鉴于各大浏览器的以往表现，有待观望，不宜立即迁移应用。<br />
HTML5需要一个成熟完整的开发环境，记事本+浏览器对付不 了。<br />
HTML5功能的暴增，浏览器必须有一个高效的图形引擎和脚本引擎。<br />
HTML5需要杀手级应用来吸引和引导用户升级浏览器， 最终完成HTML5终端的部署。<br />
Flash是一个不断在发展的技术，有很强的灵活性，HTML5不可能完全取代Flash，众多的开发人员也 不会断然抛弃Flash。</p>
<p>　　希望Adobe AIR能有更好发展，使Flash能超越浏览器Web应用，跨越操作系统，有更好发展，更多应用。<br />
<br />
文/IT168</p>
<img src ="http://www.blogjava.net/lonleung/aggbug/323031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-08 10:14 <a href="http://www.blogjava.net/lonleung/archive/2010/06/08/323031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML5 到底是什么？</title><link>http://www.blogjava.net/lonleung/archive/2010/06/08/323030.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Tue, 08 Jun 2010 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/08/323030.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323030.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/08/323030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323030.html</trackback:ping><description><![CDATA[新闻来源:webmonkey.com<br />
除非你与世隔绝，否则，一定听到过关于 HTML5 的各种声音，HTML5 表面上看是用来<a href="http://www.webmonkey.com/2010/05/who-needs-flash/">取代 Flash Web 视频的</a>，然而，它的使命远不止此。HTML5 是下一代 Web 语言，它不单单是一种标记语言，更为下一代 Web 提供了全新功能，并将引领下一代 Web 实现类似桌面的应用体验。
<p>HTML5 主要新功能
<ul>
    <li>本地音频视频播放
    <li>动画
    <li>地理信息
    <li>硬件加速
    <li>本地运行（即使在 Internet 连接中断之后）
    <li>本地存储
    <li>从桌面拖放文件到浏览器上传
    <li>语义化标记 </li>
</ul>
HTML5 应用现状 <br />
现今，<a href="http://www.webmonkey.com/2009/11/a_brave_new_web_will_be_here_soon__but_browsers_must_improve/">各大浏览器对 HTML5 的支持各有千秋</a>，我们期待着他们在一两年内趋向一致，你可能以为，既然这样，现在大概很少人在使用这个未来的标准，事实并不如此，HTML5 现在已经被广泛应用，正如 <a href="http://en.wikiquote.org/wiki/William_Gibson#Attributed">William Gibson</a> 所言，未来的 Web 已经来临，只是还没有被广泛采用。<br />
<br />
你可能不知道，<a href="http://google.com/">Google 的首页</a>也使用 HTML5，不过，目前，他们还仅仅使用了 <a href="http://www.webmonkey.com/2010/02/building_web_pages_with_html_5/#Finally.2C_a_doctype_anyone_can_remember">HTML5 的 doctype</a>，页面的其它部分还是<a href="http://validator.w3.org/check?uri=http://www.google.com/&amp;amp;amp;charset=%28detect+automatically%29&amp;amp;amp;doctype=Inline&amp;amp;amp;group=0">旧代码</a>，但 Google 在他们的各种应用中已经在广泛采用 HTML5。最典型的例子是 Gmail，HTML5 的离线存储使用户即使在离线状态下也可以使用 Gmail，另外，Google Docs 也使用离线存储，同样使用离线存储的其它厂商的类似应用还包括 Zoho 的办公套件和 Wordpress 的博客平台。如果你对 HTML5 的离线存储功能感兴趣，可以看一看 Mark Pilgrim 的 <a href="http://diveintohtml5.org/offline.html">how to add offline support to your apps</a> 一文。<br />
Scribd 基于 HTML5 的文档阅读器 <br />
<br />
<br />
<em>上图是 Scribd 的新文档阅读器，全部基于 Web 标准，并未借助 Flash。</em><br />
<br />
除了视频，HTML5 还可以在多个方面取代 Flash，文档共享站点 <a href="http://www.scribd.com/">Scribd</a> 最近<a href="http://www.webmonkey.com/2010/05/scribd-switches-from-flash-to-html5/">宣布</a>，他们将<a href="http://www.scribd.com/documents/5/Paper-5">使用 HTML5 取代 Flash 实现文档阅读器</a>，Scribd 是 HTML5 结合 CSS 所能实现的惊人功能的最好例子，他们还使用 @font-face 实现个性化字体，另外，在翻页时的变换效果也完全基于 CSS3。这些 Web 标准工具的结合使用，使 Scribd 实现了从 Flash 向纯 HTML 的过度，同时并没有牺牲文档在结构，字体，内嵌图片，图层等方面的功能。Scribd 的最新文档阅读器甚至支持 IE6,这里有一个实例，<a href="http://www.scribd.com/documents/5/Paper-5">使用纯 HTML 输出复杂的公式</a>。<br />
<br />
可惜被墙了 - 译者<br />
HTML5 Canvas 与 HTML5 视频 <br />
<a href="http://www.webmonkey.com/wp-content/uploads/2010/05/canvas-invaders.jpg"></a><br />
<br />
<em>基于 HTML5 Canvas 对象的 Invaders 经典游戏</em><br />
<br />
虽然，Scribd 对 Canvas 的应用已经出神入化，我们还能找到更多这样的站点。<a href="http://www.canvasdemos.com/">Canvas Demos</a> 有一系列关于 Canvas 的应用，从<a href="http://www.canvasdemos.com/2010/01/16/canvas-invaders/">各种在线游戏</a>，到<a href="http://www.webmonkey.com/2009/12/clever_use_html5_makes_a_great_color_picker/">从网页上提取颜色</a>的 <a href="https://addons.mozilla.org/en-US/firefox/addon/14328">Rainbow</a> 应用。<br />
<br />
关于视频，最典型的例子莫过于 <a href="http://www.youtube.com/html5">YouTube</a> 和 <a href="http://vimeo.com/blog:268">Vimeo</a>，他们都提供了 HTML5 版本。<br />
HTML5 地理信息定位 <br />
<br />
<br />
<em>点击地图中，黄色小人上方的圆圈，可以告诉 Google 地图你的地理位置</em><br />
<br />
HTML5 的另一个功能是地理信息定位功能，一些浏览器提供了 <a href="http://dev.w3.org/geo/api/spec-source.html">geolocation API</a> ，这个 API 也由 W3C 管理，可以结合 HTML5 实现你当前地理位置定位。<a href="http://maps.google.com/">Google Maps</a> 在使用该功能，在 Google 地图上，有一个小圆圈，点击一下，就能告诉 Google 地图你现在的地理位置。目前，Geolocation API 并没有被众多桌面浏览器广泛采用（只有 Chrome 和 Firefox 3.6+ 采用了），但 Google Gears 插件可以帮助那些旧浏览器实现该功能。<br />
<br />
<a href="http://twitter.com/">Twitter</a> 借此实现地理信息感知的 tweets 消息，当浏览器支持 geolocation API 的时候，会自动使用该 API，否则，则使用 Google Gears。<br />
HTML5 的更多意义 <br />
HTML5 的意义远不止上面这些，它最大的意义在于改变了 Web 文档的结构方式，借助 header, footer, section, article 这些标签，我们可以实现更具结构化，语义化的 Web 文档。这样，搜索引擎可以更容易索引 Web 站点，我们也可以搜索到更快，更准确的信息。<br />
<br />
已经有数不清的站点在使用 HTML5 新标签，你可以在 <a href="http://html5gallery.com/">HTML5Gallery</a> 找到大量这样的站点。要想现在使用 HTML5 的新结构，不妨看看这篇 <a href="http://www.webmonkey.com/2010/02/building_web_pages_with_html_5/">HTML5 教程</a>。<br />
<br />
另外，借助 <a href="http://www.data-vocabulary.org/">Microdata</a>， HTML5 还可以实现更强大的语义结构，这个标准化的数据格式（类似 <a href="http://microformats.org/">microformats</a>），可以让你的站点不仅能够提供数据，还能提供数据定义。Microdata 对浏览器和搜索引擎都意义深远，搜索引擎可以借助 Microdata 发现你网络中的好友，而浏览器则可以藉此连接到你的社会网络好友站点，你可以在 Google 的 <a href="http://www.google.com/webmasters/tools/richsnippets">Rich Snippets Testing Tool</a> 对此进行体验。<br />
延伸阅读 <br />
<br />
<ul>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K957.aspx">HTML5：实至名归还是言过其实？</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K918.aspx">关 于 HTML5，开发者可以期待什么？</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K885.aspx">HTML 5 之后是什么？HTML</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K701.aspx">深入了解 HTML 5</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K804.aspx">让 JavaScript 拯救 HTML5 的离线存储</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K745.aspx">Web Forms 2.0 行将被 HTML 5 代替</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K511.aspx">HTML 5 正在改变 Web</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K667.aspx">HTML 5 令人期待的 5 项功能</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K816.aspx">当 HTML 5 遇见 Google</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K823.aspx">HTML 5 会为 Flash 和 Silverlight 送终吗？</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K824.aspx">Firefox 访谈：OGG, HTML 5 与 Web 视频的未来</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K828.aspx">XHTML 2: 出师未捷身先死, HTML 5:万千宠爱于一身</a>
    <li><a href="http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K834.aspx">HTML5 File API：把文件从桌面拖放到 Web</a> </li>
</ul>
<br />
本文国际来源：Web Monkey <a href="http://www.webmonkey.com/2010/05/where-on-the-web-is-html5/">Where on the Web Is HTML5?</a> (原文作者：<a href="http://www.webmonkey.com/author/luxagraf/">Scott Gilbertson</a>)<br />
<br />
中文编译来源：<a href="http://www.comsharp.com"><strong>锐商企业CMS</strong> 网站内容管理系统</a> 官方网站<br />
<img src ="http://www.blogjava.net/lonleung/aggbug/323030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-08 10:13 <a href="http://www.blogjava.net/lonleung/archive/2010/06/08/323030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详解HTML的发展史</title><link>http://www.blogjava.net/lonleung/archive/2010/06/08/323029.html</link><dc:creator>梁良</dc:creator><author>梁良</author><pubDate>Tue, 08 Jun 2010 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/lonleung/archive/2010/06/08/323029.html</guid><wfw:comment>http://www.blogjava.net/lonleung/comments/323029.html</wfw:comment><comments>http://www.blogjava.net/lonleung/archive/2010/06/08/323029.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lonleung/comments/commentRss/323029.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lonleung/services/trackbacks/323029.html</trackback:ping><description><![CDATA[<p>HTML是Web统一语言，这些容纳在尖括号里的简单标签，构成了如今的Web，1991年，Tim Berners-Lee编写了一份叫做&#8220;HTML标签&#8221;的文档，里面包含了大约20个用来标记网页的HTML标签。他直接借用SGML的标记格式，也就是 后来我们看到的HTML标记的格式。<strong>本文讲述了HTML这门Web标记语言的发展简史。</strong></p>
<p><strong>从IETF到W3C：HTML4之路</strong>
<p>HTML1并不曾存在，HTML的第一个官方版本就是由IETF（互联网工程任务组）推出的HTML2.0。问世之前，这个版本中的很多细则已经被 实现，比如，1994年的Mosaic浏览器已经实现了在文档中嵌入图片的方法，后来HTML2.0便吸纳了img这个标签。</p>
<p>后来，W3C取代IETF的角色，成为HTML的标准组织，1990年代的后半页，HTML的版本被频繁修改，直到1999年的HTML4.01， 至此，HTML到达了它的第一个拐点。</p>
<p><strong>XHTML1：XML风格的HTML</strong></p>
<p>HTML在HTML4.01之后的第一个修订版本就是XHTML1.0，其中X代表&#8220;eXtensible&#8221;，扩展，当然也有人将之解读为 &#8220;eXtreme&#8221;，极端。XHTML1.0是基于HTML4.01的，并没有引入任何新标签或属性，唯一的区别是语法，HTML对语法比较随便，而 XHTML则要求XML般的严格语法。</p>
<p>使用严格的语法规范并非坏事，要求开发者使用单一的代码风格，比如，HTML4.01允许你使用大写或小写字母标识标记元素和属性，XHTML则只 允许小写字母。XHTML1.0的推出刚好碰上了CSS的崛起，Web开发设计者们开始意识到Web标准问题，基于XHTML的严格语法规范被视为编写 HTML代码的最佳实践。</p>
<p><strong>W3C推出XHTML1.1</strong></p>
<p>如果说XHTML1.0是XML风格的HTML，XHTML1.1则是货真价实的XML。这意味着XHTML1.1无法使用 text/htmlmime-type直接输出，然而，如果Web开发者使用XMLmime-type，则当时的主流浏览器，IE则压根不支持。看上 去，W3C似乎正在与当时的Web脱节。</p>
<p><strong>出力不讨好的XHTML2</strong></p>
<p>对W3C而言，到了HTML4已经是功德圆满，他们的下一步工作是XHTML2，希望将Web带向XML的光明未来。虽然XHTML2听上去和 XHTML1类似，它们却有很多差别，XHTML2不向前兼容，甚至不兼容之前的HTML。它是一种全新的语言，赤条条来去无牵挂。这实在是一场灾难。</p>
<p><strong>WHATWG：与W3C决裂</strong></p>
<p>W3C闭门造车的作风引起了一些人的不满，来自Opera,Apple,以及Mozilla的代表开始表达反对声音。2004年，Opera的 Ian Hickson提议在HTML基础上进行扩展以适应新的Web应用，该提议遭到W3C的拒绝。于是，他们自发组织成立了超文本应用技术工作组，就是 WHATWG。</p>
<p><strong>从WebApps1.0到HTML5</strong></p>
<p>从一开始，WHATWG就和W3C走不同的路线，W3C对问题的讨论是集体投票，而WHATWG则由主笔IanHickson定度。表面上 看，W3C更民主，然而事实上，各种内部纷争会使一些决议限于泥潭，在WHATWG，事情的进展会更容易，不过，主笔的权力并非无限大，他们的委员会可以 对那些过于偏执的主笔进行弹劾。</p>
<p>一开始，WHATWG的主要工作包括两部分，Web Forms 2.0和Web Apps 1.0，它们都是HTML的扩展，后来，他们合并到一起成为现在的HTML5规范。</p>
<p>在WHATWG致力于HTML5的同时，W3C继续他们的XHTML2.0，然而，他们慢慢地陷入困境。</p>
<p>2006年10月，Web之父Tim Berners-Lee发表了一篇博客文章，表示，从HTML走向XML的路是行不通的，几个月后，W3C组建了一个新的HTML工作组，他们非常明智地 选择了WHATWG的成果作为基础。这一转变带来一些困惑，W3C同时进行这两套规范，XHTML2和HTML5（注意，W3C的HTTML5在5之前有 个空格，而WHATWG的HTML5则没有空格），而WHATWG也在进行着同样的工作。</p>
<p><strong>XHTML已死：XHTML语法永存</strong></p>
<p>这一混乱局面到了2009年开始变得清晰，W3C宣布终止XHTML2的工作，这是一份关于XHTML2的迟到的讣告。这一消息被那些XML的反对 者视为珍宝，他们借此嘲笑那些使用XHTML1规范的人，然而他们似乎忘记了，XHTML1和XHTML2是截然不同的东西。于此同时，XHTML1规范 的制定者担心，XHTML1中的严格语法规范会被HTML5弃用，这种担心后来证明是多余的，HTML5既支持松散语法，也支持XHTML1般的严格语 法。</p>
<p><strong>HTML5路线图</strong></p>
<p>HTML5的现状是，它不再象以前那样让人困惑，然而仍不够明朗。有两个组织在同时制定它的规范，这两个组织有着完全不同的行事风格，WHATWG 是先买后尝，W3C是先尝后买，他们形成了一个不太靠谱的联姻，最终人们必将面临一个HTML5还是HTML5的问题。</p>
<p>更让开发者困惑的是，他们什么时候才可以试水HTML5。</p>
<p>在一次访谈中，Ian Hickson提到了2022，表示要到那时HTML5才会形成"推荐标准"，此话一出，立刻招来Web设计者们的愤怒，尽管他们不知道推荐标准时什么意 思，但他们明白，2022已经是猴年马月的事了。</p>
<p>这还不算，更重要的是，这个推荐标准涉及两套规范，考虑到HTML5标准的规模，这个日期还是太乐观了，毕竟，各大浏览器以往对既有标准的兼容并不 遂人意，想当初，IE花了10年才接纳abbr这个标签。</p>
<p>2012年，HTML5会被接纳为候选标准，这将是HTML5真正开始发力的日子。对Web开发设计者来说，这并不重要，重要的是浏览器的支持，就 像CSS2.1，当有浏览器开始支持这一规范的时候，就有开发设计者在使用了，倘若必须等到所有浏览器都支持才开始入手，恐怕我们现在还在等待中。</p>
<p>HTML5也一样，并不会有一个时间点，宣布HTML5已经准备妥当，相反，我们会先开始使用它的部分功能，HTML5并不是一个从零开始全新的东 西，它是旧的HTML标准的改进，事实上，不管你正在使用的HTML是哪个版本，你已经在使用HTML5了。<br />
<br />
文/IT168</p>
<img src ="http://www.blogjava.net/lonleung/aggbug/323029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lonleung/" target="_blank">梁良</a> 2010-06-08 10:11 <a href="http://www.blogjava.net/lonleung/archive/2010/06/08/323029.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>