<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_hellofox2000</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/28325/rss</id><updated>2010-08-19T02:59:22Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/28325/rss"/><entry><id>http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803255.html</id><title type="text">WAP网站开发</title><summary type="text">WAP网站和传统的网站开发区别不大，主要是使用服务器端脚本生成wml或者xhtml mp，手机使用客户端通过应用网关进行访问。在使用xhtml mp开发时，开发环境和传统的开发环境类似，使用wml开发，浏览需要特殊的浏览器。目前手机操作系统有很多种，流行就有几个：PalmOS、Symbian、Windows CE、Linux和Android、iPhoneOS各大厂家有的也有自己的平台；所有这些平台...</summary><published>2010-08-19T02:56:00Z</published><updated>2010-08-19T02:56:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803255.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803255.html"/><content type="html">&lt;p style="text-indent: 21pt"&gt;WAP&lt;span style="font-family: 宋体"&gt;网站和传统的网站开发区别不大，主要是使用服务器端脚本生成&lt;/span&gt;wml&lt;span style="font-family: 宋体"&gt;或者&lt;/span&gt;xhtml mp&lt;span style="font-family: 宋体"&gt;，手机使用客户端通过应用网关进行访问。在使用&lt;/span&gt;xhtml mp&lt;span style="font-family: 宋体"&gt;开发时，开发环境和传统的开发环境类似，使用&lt;/span&gt;wml&lt;span style="font-family: 宋体"&gt;开发，浏览需要特殊的浏览器。目前手机操作系统有很多种，流行就有几个：&lt;/span&gt;&lt;span style="color: black; font-family: 'Arial','sans-serif'; letter-spacing: 0.4pt"&gt;PalmOS&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; letter-spacing: 0.4pt"&gt;、&lt;/span&gt;&lt;span style="color: black; font-family: 'Arial','sans-serif'; letter-spacing: 0.4pt"&gt;Symbian&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; letter-spacing: 0.4pt"&gt;、&lt;/span&gt;&lt;span style="color: black; font-family: 'Arial','sans-serif'; letter-spacing: 0.4pt"&gt;Windows CE&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; letter-spacing: 0.4pt"&gt;、&lt;/span&gt;&lt;span style="color: black; font-family: 'Arial','sans-serif'; letter-spacing: 0.4pt"&gt;Linux&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; letter-spacing: 0.4pt"&gt;和&lt;/span&gt;&lt;span style="color: black; font-family: 'Arial','sans-serif'; letter-spacing: 0.4pt"&gt;Android&lt;/span&gt;&lt;span style="color: black; font-family: 宋体; letter-spacing: 0.4pt"&gt;、&lt;/span&gt;&lt;span style="color: black; font-family: 'Arial','sans-serif'; letter-spacing: 0.4pt"&gt;iPhoneOS&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;各大厂家有的也有自己的平台；所有这些平台支持的&lt;/span&gt;WAP&lt;span style="font-family: 宋体"&gt;协议都不尽相同。除了软件外，硬件方面也需要考虑各种机型的色彩，分辨率等因素。所以开发&lt;/span&gt;WAP&lt;span style="font-family: 宋体"&gt;网站，主要工作可能在后期兼容性测试方面。在测试时，可使用仿真终端（软件）来进行。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;可以考虑通过应用网关或者服务端技术将现有&lt;/span&gt;html&lt;span style="font-family: 宋体"&gt;转换为&lt;/span&gt;xhtml&lt;span style="font-family: 宋体"&gt;或其他，但是兼容性很难令人满意。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;WAP&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;Wireless Application Protocol &lt;span style="font-family: 宋体"&gt;简称&lt;/span&gt;WAP,&lt;span style="font-family: 宋体"&gt;无线应用协议是一种向移动终端提供互联网内容和先进增值服务的全球统一的开放式协议标准，&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;是简化了的无线&lt;/span&gt;Internet &lt;span style="font-family: 宋体"&gt;协议。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;实现方式&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;WML&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;WML (Wireless Mark-up Language),&lt;span style="font-family: 宋体"&gt;一种&lt;/span&gt;xml&lt;span style="font-family: 宋体"&gt;格式的语言。&lt;/span&gt;WML&lt;span style="font-family: 宋体"&gt;是精简的&lt;/span&gt;HTML&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;XHTML MP&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;XHTML MP&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;eXtensible HyperText Markup Language Mobile Profile&lt;span style="font-family: 宋体"&gt;）它是定义在&lt;/span&gt;WAP 2.0&lt;span style="font-family: 宋体"&gt;上面的标记语言（&lt;/span&gt;markup language&lt;span style="font-family: 宋体"&gt;）。&lt;/span&gt;XHTML MP&lt;span style="font-family: 宋体"&gt;是&lt;/span&gt;XHTML&lt;span style="font-family: 宋体"&gt;的子集，在&lt;/span&gt;XHTML MP&lt;span style="font-family: 宋体"&gt;出现之前，&lt;/span&gt;WAP&lt;span style="font-family: 宋体"&gt;网站的开发者们只能用&lt;/span&gt;WML&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;WML script&lt;span style="font-family: 宋体"&gt;来创建&lt;/span&gt;WAP&lt;span style="font-family: 宋体"&gt;的网站。而与此同时，&lt;/span&gt;web&lt;span style="font-family: 宋体"&gt;的开发者们却在用强大的多的&lt;/span&gt;HTML&lt;span style="font-family: 宋体"&gt;、&lt;/span&gt;CSS&lt;span style="font-family: 宋体"&gt;、&lt;/span&gt;XHTML&lt;span style="font-family: 宋体"&gt;等来进行传统网站的开发。所以&lt;/span&gt;XHTML MP&lt;span style="font-family: 宋体"&gt;的目标就是浏览者在&lt;/span&gt;WAP&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;web&lt;span style="font-family: 宋体"&gt;上获得尽可能相似的浏览体验。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;两种实现方式比较&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;WML&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;XHTML MP&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr style="height: 14.25pt"&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 14.25pt; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;使用协议&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 14.25pt; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;WAP 1.x&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 14.25pt; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;WAP 2.0&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr style="height: 11.65pt"&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 11.65pt; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;多文档显示&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 11.65pt; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;&amp;lt;deck&amp;gt;&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;&amp;lt;card&amp;gt;&lt;span style="font-family: 宋体"&gt;标签&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 11.65pt; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;multipart messages&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;Timer&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;WML timer&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;Meta - refresh&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;事件&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;支持四个事件&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;ontimer,onenterbackward,&lt;/p&gt;&#xD;
&lt;p style="text-indent: 10.5pt"&gt;onenterforward,onpick&lt;span style="font-family: 宋体"&gt;）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;不支持事件&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;可模拟&lt;/span&gt;ontimer&lt;span style="font-family: 宋体"&gt;事件&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;脚本支持&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;支持客户端脚本（&lt;/span&gt;WMLScript&lt;span style="font-family: 宋体"&gt;）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;未来版本会支持客户端脚本（&lt;/span&gt;ECMAScript MP&lt;span style="font-family: 宋体"&gt;），支持所有的&lt;/span&gt;WMLScript&lt;span style="font-family: 宋体"&gt;功能&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;标签&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;WML&lt;span style="font-family: 宋体"&gt;标签&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;XHTML&lt;span style="font-family: 宋体"&gt;子集&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;样式&lt;/span&gt;CSS&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;待查&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;WCSS&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;WAP CSS/WAP Cascading Style Sheet&lt;span style="font-family: 宋体"&gt;）&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;开发环境&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;服务端生成&lt;/span&gt;WML&lt;span style="font-family: 宋体"&gt;即可，但浏览需要特殊软件&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;可常用开发&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 76.3pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="102"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;支持的客户端&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 163pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="217"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;待查&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; width: 186.8pt; padding-top: 0cm; border-bottom: black 1pt solid; background-color: transparent" valign="top" width="249"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;待查&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;开发过程&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;和传统的网站开发区别不大，主要是使用服务器端脚本生成&lt;/span&gt;wml&lt;span style="font-family: 宋体"&gt;或者&lt;/span&gt;xhtml mp&lt;span style="font-family: 宋体"&gt;，手机使用客户端通过应用网关进行访问。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;参考文档&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;WAP 2.0&lt;span style="font-family: 宋体"&gt;介绍和使用规范&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://wuhua.javaeye.com/blog/382172"&gt;http://wuhua.javaeye.com/blog/382172&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Wap&lt;span style="font-family: 宋体"&gt;开发&lt;/span&gt;FAQ&lt;span style="font-family: 宋体"&gt;大全&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.chinaue.com/html/wap/181441433051.htm"&gt;http://www.chinaue.com/html/wap/181441433051.htm&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;WAP&lt;span style="font-family: 宋体"&gt;网站开发实例&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.cnblogs.com/luqingfei/archive/2007/07/18/822135.html"&gt;http://www.cnblogs.com/luqingfei/archive/2007/07/18/822135.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;XHTML MP-----&lt;span style="font-family: 宋体"&gt;基础&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://hszy00232.blog.163.com/blog/static/43022753200937115811582/?fromPostsense"&gt;http://hszy00232.blog.163.com/blog/static/43022753200937115811582/?fromPostsense&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Session, Cookie, Url&lt;span style="font-family: 宋体"&gt;重写与&lt;/span&gt;Wap&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://whf0524.blog.163.com/blog/static/1014146920085185051289/"&gt;http://whf0524.blog.163.com/blog/static/1014146920085185051289/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.openmobilealliance.org/Technical/wapindex.aspx"&gt;http://www.openmobilealliance.org/Technical/wapindex.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hellofox2000/aggbug/1803255.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803255.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803168.html</id><title type="text">PHP编码规范改进版</title><summary type="text">1 介绍  为了更好的提高开发的工作效率，保证开发的有效性和合理性，并最大程度的提高代码的可读性和可重复利用性，制订此规范。本规范包含了PHP开发时程序编码中代码缩进规则、控制结构、函数调用、函数定义、注释、包含代码、PHP标记、文件头的注释块、CVS标记、URL样例、常量命名等方面的规则。1.1 标准化的重要标准化问题的确在某些方面上让每个人头痛，让人人都觉得大家处于同样的境地。但是这往往是因为...</summary><published>2010-08-19T02:07:00Z</published><updated>2010-08-19T02:07:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803168.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803168.html"/><content type="html">&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-size: 22pt; font-family: 宋体"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1 &lt;span style="font-family: 宋体"&gt;介绍&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;为了更好的提高开发的工作效率，保证开发的有效性和合理性，并最大程度的提高代码的可读性和可重复利用性，制订此规范。本规范包含了&lt;/span&gt;PHP&lt;span style="font-family: 宋体"&gt;开发时程序编码中代码缩进规则、控制结构、函数调用、函数定义、注释、包含代码、&lt;/span&gt;PHP&lt;span style="font-family: 宋体"&gt;标记、文件头的注释块、&lt;/span&gt;CVS&lt;span style="font-family: 宋体"&gt;标记、&lt;/span&gt;URL&lt;span style="font-family: 宋体"&gt;样例、常量命名等方面的规则。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1.1 &lt;span style="font-family: 宋体"&gt;标准化的重要&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;标准化问题的确在某些方面上让每个人头痛，让人人都觉得大家处于同样的境地。但是这往往是因为对标准化的误解。标准化不是束缚人，他是为了在大型开发过程中，能够提供项目整体的质量与开发进度。也许有人会说，恩，我不喜欢束缚，这么做会约束我的创造力。如果说你的创造力仅仅在命名，格式（而这恰恰是规范的主要内容）这样的表面层次，那么把你的创造力扔掉吧，没人喜欢这样的创造力。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1.2 &lt;span style="font-family: 宋体"&gt;优点&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;当一个项目尝试着遵守公用的标准时，会有以下好处： &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;程序员可以了解任何代码，弄清程序的状况 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;新人可以很快的适应环境 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;防止新接触php的人出于节省时间的需要，自创一套风格并养成终生的习惯 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;防止新接触php的人一次次的犯同样的错误 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在一致的环境下，人们可以减少犯错的机会 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;程序员们有了一致的敌人&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1.3 &lt;span style="font-family: 宋体"&gt;改进&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;规范并不是一成不变的，如果你觉得规范缺少东西或者有些不合适的地方，提出来，也许项目管理者会考虑加入，记住，任何项目都取决于团队合作的努力。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1.4 &lt;span style="font-family: 宋体"&gt;实施&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;一般情况下，规范的实施是由技术负责人或者项目经理执行和监督的。但是最好的方法还是在开发团队中达成共识，变成一种文化的存在。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2 &lt;span style="font-family: 宋体"&gt;命名规则&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;命名是程序规划的核心。名字就是事物在它所处的生态环境中一个长久而深远的结果。总的来说，只有了解系统的程序员才能为系统取出最合适的名字。如果所有的命名都与其自然相适合，则关系清晰，含义可以推导得出，一般人的推想也能在意料之中。 &lt;br /&gt;如果你发觉你的命名只有少量能和其对应事物相匹配的话， 最好还是重新好好再看看你的设计。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.1 &lt;span style="font-family: 宋体"&gt;文件命名&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;文件名采用C GNU的惯例，所有的字母使用小写字母，使用`_`分割单词。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;例如：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;news_list.php&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;文件命名上有些几乎是约定俗成的单词，比如admin前缀表示是后台管理的文件名,inc.php后缀则表示包含文件或者类库文件，class.php后缀表示类库文件等等。config.php表示配置文件等。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;例如：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;admin_user.php&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;data.inc.php&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;user.class.php&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.2 &lt;span style="font-family: 宋体"&gt;类命名&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;使用大写字母作为词的分隔，其他的字母均使用小写 &lt;br /&gt;&amp;#183; 名字的首字母使用大写 &lt;br /&gt;&amp;#183; 不要使用下划线(`_`) &lt;br /&gt;例如 &lt;br /&gt;class NameOneTwo &lt;br /&gt;class Name &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;注意：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在为类（class ）命名前首先要知道它是什么。如果看到类名，你还是想不起这个类是什么的话，那么你的设计就还做的不够好。 &lt;br /&gt;&amp;#183; 超过三个词组成的混合名是容易造成系统各个实体间的混淆，再看看你的设计，尝试使用（CRC Session card)看看该命名所对应的实体是否有着那么多的功用。 &lt;br /&gt;&amp;#183; 对于派生类的命名应该避免带其父类名产生关系，一个类的名字只与它自身有关，和它的父类叫什么无关。 &lt;br /&gt;&amp;#183; 有些后缀名是几乎是约定俗成的，例如：如果你的系统使用了代理（agent ），那么就把某个部件命名为&amp;#8220;下载代理&amp;#8221;（DownloadAgent）用以真正的传送信息。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当然，这些约定俗成的词汇不会自动出现，需要小组人员的不断总结。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.2.1 &lt;span style="font-family: 宋体"&gt;缩写词不要全部使用大写字母&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;无论如何，当遇到以下情况，你可以用首字母大写其余字母小写来代替全部使用大写字母的方法来表示缩写词。 &lt;br /&gt;使用: GetHtmlStatistic. &lt;br /&gt;不使用: GetHTMLStatistic. &lt;br /&gt;理由 &lt;br /&gt;&amp;#183; 当命名含有缩略词时，人们似乎有着非常不同的直觉。统一规定是最好，这样一来，命名的含义就完全可以预知了。 &lt;br /&gt;举个NetworkABCKey的例子，注意C是应该是ABC里面的C还是key里面的C，这个是很令人费解的。有些人不在意这些，其他人却很讨厌这样。所以你会在不同的代码里看到不同的规则，使得你不知道怎么去叫它。 &lt;br /&gt;例如 &lt;br /&gt;class FluidOz // 不要写成 FluidOZ &lt;br /&gt;class GetHtmlStatistic // 不要写成 GetHTMLStatistic &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.3 &lt;span style="font-family: 宋体"&gt;类库命名&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;目前命名空间正在越来越广泛的被采用，以避免不同厂商和团体类库间的类名冲突。 &lt;br /&gt;&amp;#183; 当尚未采用命名空间的时候，为了避免类名冲突，一般的做法是在类名前加上独特的前缀，两个字符就可以了，当然多用一些会更好。 &lt;br /&gt;例如 &lt;br /&gt;John Johnson的数据结构类库可以用Jj做为前缀，如下： &lt;br /&gt;class JjLinkList &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;另一种折中方式是建立包含类库目录（事实上Java也是这么做的），以不通的目录代表不同的命名空间。 &lt;br /&gt;例如 &lt;br /&gt;Microsoft的数据库相关类库可以在： &lt;br /&gt;/classes/com/Microsoft/ Database/DbConn.php &lt;br /&gt;Apache的数据库相关类库可在： &lt;br /&gt;/classes/org/apache/Database/DbConn.php &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.4 &lt;span style="font-family: 宋体"&gt;类属性命名&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;类属性采用C GNU的惯例，所有的字母使用小写字母，使用`_`分割单词。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;例如 &lt;br /&gt;class NameOneTwo &lt;br /&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;function var_abc() {}; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;function error_number() {}; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;var $var; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;var $error_number; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;var $name; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.5 &lt;span style="font-family: 宋体"&gt;方法命名&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;函数名字采用C GNU的惯例，所有的字母使用小写字母，使用`_`分割单词。&lt;br /&gt;&lt;br /&gt;例如 &lt;br /&gt;class NameOneTwo &lt;br /&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;function do_it() {}; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;function handle_error() {}; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;通常每个方法都是执行一个动作的，所以对它们的命名应该清楚的说明它们是做什么的：用check_for_errors()代替error_check()，用dump_data_to_file()代替data_file()。这么做也可以使功能和数据成为更可区分的物体。 &lt;br /&gt;&amp;#183; 有时后缀名是有用的: &lt;br /&gt;o Max - 含义为某实体所能赋予的最大值。 &lt;br /&gt;o Cnt - 一个运行中的计数变量的当前值。 &lt;br /&gt;o Key - 键值。 &lt;br /&gt;例如：retry_max 表示最多重试次数，retry_cnt 表示当前重试次数。 &lt;br /&gt;&amp;#183; 有时前缀名是有用的： &lt;br /&gt;o Is - 含义为问一个关于某样事物的问题。无论何时，当人们看到Is就会知道这是一个问题。 &lt;br /&gt;o Get - 含义为取得一个数值。 &lt;br /&gt;o Set - 含义为设定一个数值 &lt;br /&gt;例如：is_hit_retry_limit。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.6 &lt;span style="font-family: 宋体"&gt;方法中参数命名&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;函数名字采用C GNU的惯例，所有的字母使用小写字母，使用`_`分割单词。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;例如 &lt;br /&gt;class NameOneTwo &lt;br /&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;function start_your_engines( &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;amp;$some_engine, &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;amp;$another_engine); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.7 &lt;span style="font-family: 宋体"&gt;变量命名&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;所有字母都使用小写 &lt;br /&gt;&amp;#183; 使用`_`作为每个词的分界。 &lt;br /&gt;理由 &lt;br /&gt;&amp;#183; 通过这一途径，代码中变量的作用域是清晰的。 &lt;br /&gt;&amp;#183; 所有的变量在代码中都看起来不同，容易辨认。 &lt;br /&gt;例如 &lt;br /&gt;function handle_error($errorNumber) &lt;br /&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;$error = OsErr($errorNumber); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;$time_of_error = $error-&amp;gt;get_time_of_error(); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;$error_processor = $error-&amp;gt;get_error_processor(); &lt;br /&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.8&lt;span style="font-family: 宋体"&gt;全局常量&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;全局常量用`_`分隔每个单词,并且全部单词大写。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;理由 &lt;br /&gt;这是命名全局常量的传统。你要注意不要与其它的定义相冲突。 &lt;br /&gt;例如 &lt;br /&gt;define("A_GLOBAL_CONSTANT", "Hello world!"); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.9 &lt;span style="font-family: 宋体"&gt;静态变量&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;静态变量应该带前缀&amp;#8216;s&amp;#8217;。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;理由 &lt;br /&gt;&amp;#183; 知道一个变量的作用域是非常重要的。 &lt;br /&gt;例如 &lt;br /&gt;function test() &lt;br /&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;static $msStatus = 0; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.10 &lt;span style="font-family: 宋体"&gt;函数命名&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;函数名字采用C GNU的惯例，所有的字母使用小写字母，使用`_`分割单词。 &lt;br /&gt;理由 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;这样可以更易于区分相关联的类名。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;例如 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;function some_bloody_function() &lt;br /&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.11 &lt;span style="font-family: 宋体"&gt;错误返回检测规则&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;检查所有的系统调用的错误信息，除非你要忽略错误。 &lt;br /&gt;&amp;#183; 为每条系统错误消息定义好系统错误文本以便include。 &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="line-height: 240%"&gt;3 &lt;/span&gt;&lt;span style="line-height: 240%; font-family: 宋体"&gt;书写规则&lt;/span&gt;&lt;span style="line-height: 240%"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.1 &lt;span style="font-family: 宋体"&gt;大括号&lt;/span&gt;{} &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;在三种主要的大括号放置规则中，有两种是可以接受的，如下的第一种是最好的： &lt;br /&gt;&amp;#183; 将大括号放置在关键词下方的同列处： &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;if ($condition) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;{&amp;nbsp;&lt;br /&gt;... ... &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;while ($condition) &lt;br /&gt;{&amp;nbsp;&lt;br /&gt;... ... &lt;br /&gt;} &lt;br /&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;传统的UNIX的括号规则是，首括号与关键词同行，尾括号与关键字同列： &lt;br /&gt;if ($condition) { &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;... ...&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;while ($condition) { &lt;br /&gt;... ... &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;理由:&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;引起剧烈争论的非原则的问题可通过折衷的办法解决，两种方法任意一种都是可以接受的，然而对于大多数人来说更喜欢第一种。原因就是心理研究学习范畴的东西了。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;对于更喜欢第一种还有着更多的原因。如果您使用的字符编辑器支持括号匹配功能的话（例如vi），最重要的就是有一个好的样式。为什么？我们说当你有一大块的程序而且想知道这一大块程序是在哪儿结束的话。你先移到开始的括号，按下按钮编辑器就会找到与之对应的结束括号，例如： &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;if ($very_long_condition &amp;amp;&amp;amp; $second_very_long_condition) &lt;br /&gt;{ &lt;br /&gt;... &lt;br /&gt;} &lt;br /&gt;else if (...) &lt;br /&gt;{ &lt;br /&gt;... &lt;br /&gt;} &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;从一个程序块移动到另一个程序块只需要用光标和你的括号匹配键就可以了，不需找匹配的括号。 &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.2 &lt;span style="font-family: 宋体"&gt;缩进：制表符&lt;/span&gt;vs&lt;span style="font-family: 宋体"&gt;空格&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt; line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;在书写代码的时候，必须注意代码的缩进规则，我们规定：使用&lt;/span&gt;4&lt;span style="font-family: 宋体"&gt;个空格作为缩进，而不使用&lt;/span&gt;tab&lt;span style="font-family: 宋体"&gt;缩进（对于&lt;/span&gt;ultraedit&lt;span style="font-family: 宋体"&gt;，可以进行预先设置）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;对于最大缩进层数，并没有一个固定的规矩，假如缩进层数大于四或者五层的时候，你可以考虑着将代码因数分解(factoring out code)。 &lt;br /&gt;理由 &lt;br /&gt;&amp;#183; 许多编程者支持制表符。 但制表符标准在各种编程工具下、各种平台下所代表的空格数或者意义是不同的。这样会使在一个平台下格式良好的代码在另一个平台下不堪入目。对于php的开发来说，通常情况下是在win平台下开发，linux下部署，尤其需要注意这个问题。&lt;br /&gt;&amp;#183; 虽然此处没有限定最大的缩进层数，但是通常建议不要超过四层、五层。 &lt;br /&gt;例如：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;function func() &lt;br /&gt;{ &lt;br /&gt;if (something bad) &lt;br /&gt;{ &lt;br /&gt;if (another thing bad) &lt;br /&gt;{ &lt;br /&gt;while (more input) &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.3 &lt;span style="font-family: 宋体"&gt;小括号、关键词和函数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;不要把小括号和关键词紧贴在一起，要用空格隔开它们。 &lt;br /&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;小括号和函数名间没有空格；如&lt;/span&gt;$test = date("ymdhis")&lt;span style="font-family: 宋体"&gt;；&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;&lt;br /&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;除非必要，不要在Return返回语句中使用小括号。 &lt;br /&gt;理由 &lt;br /&gt;&amp;#183; 关键字不是函数。如果小括号紧贴着函数名和关键字，二者很容易被看成是一体的。 &lt;br /&gt;例如 &lt;br /&gt;if (condition) &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;while (condition) &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;strcmp($s, $s1); &lt;br /&gt;&lt;br /&gt;return 1; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.4 &lt;span style="font-family: 宋体"&gt;类的构造函数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;别在构造函数中做实际的工作， 构造函数应该包含变量的初始化和（或）不会发生失败的操作。 &lt;br /&gt;理由 &lt;br /&gt;&amp;#183; 构造不能返回错误 。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;例如 &lt;br /&gt;class Device &lt;br /&gt;{ &lt;br /&gt;function device() { /* initialize and other stuff */ } &lt;br /&gt;function open() { return FAIL; } &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;$dev = new Device; &lt;br /&gt;if (FAIL == $dev-&amp;gt;open()) exit(1); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.5 &lt;span style="font-family: 宋体"&gt;＝符号书写&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;在程序中&lt;/span&gt;=&lt;span style="font-family: 宋体"&gt;符号的书写遵循以下规则：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;）在&lt;/span&gt;=&lt;span style="font-family: 宋体"&gt;符号的两侧，均需留出一个空格；如&lt;/span&gt;$a = $b &lt;span style="font-family: 宋体"&gt;、&lt;/span&gt;if ($a = = $b)&lt;span style="font-family: 宋体"&gt;等；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;）在一个申明块，或者实现同样功能的一个块中，要求&lt;/span&gt;=&lt;span style="font-family: 宋体"&gt;号尽量上下对齐，左边可以为了保持对齐使用多个空格，而右边要求空一个空格；如下例：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;$testa&lt;span&gt;&amp;nbsp;&amp;nbsp; = $aaa;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;$testaa&amp;nbsp;= $bbb;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.6 &lt;span style="font-family: 宋体"&gt;控制结构&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.6.1 if then else &lt;span style="font-family: 宋体"&gt;格式&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;不同的花括号样式会产生些微不同的样观。一个通用方式是： &lt;br /&gt;if (条件1) // 注释 &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;else if (条件2) // 注释 &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;else // 注释 &lt;br /&gt;{ &lt;br /&gt;} &lt;br /&gt;如果你有用到else if 语句的话，通常最好有一个else块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else处，即使在else没有任何的动作。 &lt;br /&gt;&lt;br /&gt;&amp;#183;总是将恒量放在等号/不等号的左边，例如： &lt;br /&gt;if ( 6 == $errorNum ) ... &lt;br /&gt;一个原因是假如你在等式中漏了一个等号，语法检查器会为你报错。第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。需要一点时间来习惯这个格式，但是它确实很有用。 &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.6.2 switch &lt;span style="font-family: 宋体"&gt;格式&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当一个case块处理后，直接转到下一个case块处理，在这个case块的最后应该加上注释。 &lt;br /&gt;&amp;#183; default case总应该存在，它应该不被到达，然而如果到达了就会触发一个错误。 &lt;br /&gt;&amp;#183; 如果你要创立一个变量，那就把所有的代码放在块中。 &lt;br /&gt;例如 &lt;br /&gt;switch (...) &lt;br /&gt;{ &lt;br /&gt;case 1: &lt;br /&gt;... &lt;br /&gt;// FALL THROUGH &lt;br /&gt;case 2: &lt;br /&gt;{ &lt;br /&gt;$v = get_week_number(); &lt;br /&gt;... &lt;br /&gt;} &lt;br /&gt;break; &lt;br /&gt;&lt;br /&gt;default: &lt;br /&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.6.3 continue &lt;span style="font-family: 宋体"&gt;和&lt;/span&gt; break &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;continue &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;和 break 其实是变相的隐蔽的 goto方法。 &lt;br /&gt;continue 和 break 像 goto 一样，它们在代码中是有魔力的，所以要节俭（尽可能少）的使用它们。使用了这一简单的魔法，由于一些未公开的原因，读者将会被定向到只有上帝才知道的地方去。 &lt;br /&gt;continue有两个主要的问题： &lt;br /&gt;&amp;#183; 它可以绕过测试条件。 &lt;br /&gt;&amp;#183; 它可以绕过等/不等表达式。 &lt;br /&gt;看看下面的例子，考虑一下问题都在哪儿发生： &lt;br /&gt;while (TRUE) &lt;br /&gt;{ &lt;br /&gt;... &lt;br /&gt;// A lot of code &lt;br /&gt;... &lt;br /&gt;if (/* some condition */) { &lt;br /&gt;continue; &lt;br /&gt;} &lt;br /&gt;... &lt;br /&gt;// A lot of code &lt;br /&gt;... &lt;br /&gt;if ( $i++ &amp;gt; STOP_VALUE) break; &lt;br /&gt;} &lt;br /&gt;注意："A lot of code"是必须的，这是为了让程序员们不能那么容易的找出错误。 &lt;br /&gt;通过以上的例子，我们可以得出更进一步的规则：continue 和 break 混合使用是引起灾难的正确方法。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.6.4 ?: &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;?:&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;本身没什么问题，问题在于人们往往试着在 ? 和 : 之间塞满了许多的代码。以下的是一些清晰的连接规则： &lt;br /&gt;&amp;#183; 把条件放在括号内以使它和其他的代码相分离。 &lt;br /&gt;&amp;#183; 如果可能的话，动作可以用简单的函数。 &lt;br /&gt;&amp;#183; 把所做的动作，&amp;#8220;?&amp;#8221;，&amp;#8220;:&amp;#8221;放在不同的行，除非他们可以清楚的放在同一行。 &lt;br /&gt;例如 &lt;br /&gt;(condition) ? funct1() : func2(); &lt;br /&gt;&lt;br /&gt;or &lt;br /&gt;&lt;br /&gt;(condition) &lt;br /&gt;? long statement &lt;br /&gt;: another long statement; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.7 &lt;span style="font-family: 宋体"&gt;声明块的定位&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;声明代码块需要对齐。 &lt;br /&gt;理由 &lt;br /&gt;&amp;#183; 清晰。 &lt;br /&gt;&amp;#183; 变量初始化的类似代码块应该列表。 &lt;br /&gt;&amp;#183; &amp;amp;应靠近类型，而不是变量名。 &lt;br /&gt;例如 &lt;br /&gt;var $mDate &lt;br /&gt;var&amp;amp; $mrDate &lt;br /&gt;var&amp;amp; $mrName &lt;br /&gt;var $mName &lt;br /&gt;&lt;br /&gt;$mDate = 0; &lt;br /&gt;$mrDate = NULL; &lt;br /&gt;$mrName = 0; &lt;br /&gt;$mName = NULL; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.8 &lt;span style="font-family: 宋体"&gt;每行语句应尽量短&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;除非这些语句有很密切的联系，否则每行只写一个语句。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;在代码书写中，遵循以下原则：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;）尽量保证程序语句一行就是一句，而不要让一行语句太长产生折行；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;）尽量不要使一行的代码太长，一般控制在&lt;/span&gt;80&lt;span style="font-family: 宋体"&gt;个字符以内；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;3&lt;span style="font-family: 宋体"&gt;）如果一行代码太长，请使用类似&lt;/span&gt; .= &lt;span style="font-family: 宋体"&gt;的方式断行书写；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt; line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;4 &lt;span style="font-family: 宋体"&gt;对于执行数据库的&lt;/span&gt;sql&lt;span style="font-family: 宋体"&gt;语句操作，尽量不要在函数内写&lt;/span&gt;sql&lt;span style="font-family: 宋体"&gt;语句，而先用变量定义&lt;/span&gt;sql&lt;span style="font-family: 宋体"&gt;语句，然后在执行操作的函数中调用定义的变量；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt; line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;例如：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;$sql = "SELECT username,password,address,age,postcode FROM test_t ";&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;$sql .= " WHERE username='aaa'";&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;$res = mysql_query($sql);&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.9 &lt;span style="font-family: 宋体"&gt;短方法&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;方法代码要限制在一页内。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.10&lt;span style="font-family: 宋体"&gt;记录所有的空语句&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;总是记录下for或者是while的空块语句，以便清楚的知道该段代码是漏掉了，还是故意不写的。 &lt;br /&gt;&lt;br /&gt;while ($dest++ = $src++) &lt;br /&gt;; // VOID &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.11 &lt;span style="font-family: 宋体"&gt;不要采用缺省方法测试非零值&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;不要采用缺省值测试非零值，也就是使用： &lt;br /&gt;&lt;br /&gt;if (FAIL != f()) &lt;br /&gt;比下面的方法好： &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;if (f()) &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;即使 FAIL 可以含有 0 值 ，即PHP认为是false。但当某人决定用-1代替0作为失败返回值时，一个显式的测试就可以帮助你了。即使是比较值不会变化也应该使用显式的比较；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;例如：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;if (!($bufsize % strlen($str)))&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;应该写成：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;if (($bufsize % strlen($str)) == 0)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;以表示测试的数值（不是布尔）型。一个经常出问题的地方就是使用strcmp来测试一个字符等式，结果永远也不会等于缺省值。 &lt;br /&gt;非零测试采用基于缺省值的做法，那么其他函数或表达式就会受到以下的限制: &lt;br /&gt;&amp;#183; 只能返回0表示失败，不能为/有其他的值。 &lt;br /&gt;&amp;#183; 命名以便让一个真(true)的返回值是绝对显然的，调用函数IsValid()而不是Checkvalid()。 &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.12 &lt;span style="font-family: 宋体"&gt;布尔逻辑类型&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;遵循以下规则：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;）&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;不能使用&lt;/span&gt;0/1&lt;span style="font-family: 宋体"&gt;代替&lt;/span&gt;true/false&lt;span style="font-family: 宋体"&gt;，在&lt;/span&gt;PHP&lt;span style="font-family: 宋体"&gt;中，这是不相等的；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 10.5pt; text-indent: -10.5pt; line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;（&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;）&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;不要使用非零的表达式、变量或者方法直接进行&lt;/span&gt;true/false&lt;span style="font-family: 宋体"&gt;判断，而必须使用严格的完整&lt;/span&gt;true/false&lt;span style="font-family: 宋体"&gt;判断；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 7.05pt; line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;如：不使用&lt;/span&gt;if ($a) &lt;span style="font-family: 宋体"&gt;或者&lt;/span&gt;if (checka()) &lt;span style="font-family: 宋体"&gt;而使用&lt;/span&gt;if (FALSE != $a)&lt;span style="font-family: 宋体"&gt;或者&lt;/span&gt; if (FALSE != check())&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;大部分函数在FALSE的时候返回0，但是并非0值就代表TRUE，因而不要用1（TRUE，YES，诸如此类）等式检测一个布尔值，应该用0（FALSE，NO，诸如此类）的不等式来代替： &lt;br /&gt;&lt;br /&gt;if (TRUE == func()) { ... &lt;br /&gt;应该写成： &lt;br /&gt;&lt;br /&gt;if (FALSE != func()) { ... &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3.13 &lt;span style="font-family: 宋体"&gt;通常避免嵌入式的赋值&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;有时候会看到嵌入式赋值的语句，这样的结构可读性强并不强 &lt;br /&gt;&lt;br /&gt;while ($a != ($c = getchar())) &lt;br /&gt;{ &lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; process the character &lt;br /&gt;} &lt;br /&gt;++&lt;/span&gt;和--操作符类似于赋值语句。因此，出于许多的目的，在使用函数的时候会产生副作用。使用嵌入式赋值提高运行时性能是可能的。无论怎样，程序员在使用嵌入式赋值语句时需要考虑在增长的速度和减少的可维护性两者间加以权衡。例如： &lt;br /&gt;&lt;br /&gt;a = b + c; &lt;br /&gt;d = a + r; &lt;br /&gt;不要写成： &lt;br /&gt;&lt;br /&gt;d = (a = b + c) + r; &lt;br /&gt;&lt;br /&gt;虽然后者可以节省一个周期。但在长远来看，随着程序的维护费用渐渐增长，程序的编写者对代码渐渐遗忘，就会减少在成熟期的最优化所得。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4 &lt;span style="font-family: 宋体"&gt;注释&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;PHP&lt;span style="font-family: 宋体"&gt;中有两种注释方法，一种是使用&lt;/span&gt;//&lt;span style="font-family: 宋体"&gt;开始，另外一种是使用&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;/**/&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;。 &lt;/span&gt;//&lt;span style="font-family: 宋体"&gt;一般用来比较简短的注释。/**/则用在需要大量注释的代码中。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;注释要尽量清晰，扼要，同时要使得你的注释能被机器解析后，能以固定的格式放到手册中去。注释的种类主要包括：类的注释，属性注释、方法注释、变量注释以及关键算法、重要代码实现等。所有的这些部分编织在一起，使得人们在以后的时间里能够准确的知道你干了什么，为什么这么做。 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在注释时，有一些预定义的关键字用来表示方法的目的，作者等，这样那就不需要再起另外一套关键字或者说不懂中文而采用汉语拼音。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;注释是增加程序可读性、可维护性的一种方法，而不是唯一方法。可读性和可维护性主要还是在代码命名，项目组织处提高。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.1 &lt;span style="font-family: 宋体"&gt;预定义关键字&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;关键字 &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;含义 &lt;br /&gt;Purpose 表示类、属性、方法要做些什么或者什么含义。 &lt;br /&gt;Package Name 类名 &lt;br /&gt;Author 作者 &lt;br /&gt;Modifications 修改记录（编号规则为&amp;#8220;No&amp;#8221;＋日期＋&amp;#8220;－&amp;#8221;＋序号） &lt;br /&gt;Ref 参考 &lt;br /&gt;Method Name 方法名 &lt;br /&gt;Parameter 参数名（包括类型） &lt;br /&gt;Return 返回值（包括类型） &lt;br /&gt;Attribute/Variable Name 属性/变量名 &lt;br /&gt;Type 属性/变量类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.2 &lt;span style="font-family: 宋体"&gt;文件头注释&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;每个文件头部必须有统一的注释块，规则如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;a&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含本文件的描述；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;b&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含作者；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;c&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含书写日期；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;d&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含版本信息；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;e&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含项目名称；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;f&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含文件的名称；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;g&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;重要的使用说明，如类的调用方法、注意事项等；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;参考例子如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&amp;lt;?php&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;//&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// +---------------------------------------------------------+&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | PHP version 4.0&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// +---------------------------------------------------------+&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | Copyright (c) 1997-2001 The PHP Group&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// +---------------------------------------------------------+&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | This source file is subject to&amp;nbsp;of the PHP license,&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | that is bundled with this packafile LICENSE, and is&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | available at through the world-web at&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | http://www.php.net/license/2_02.txt.&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | If you did not receive a copy of the&amp;nbsp;and are unable to |&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | obtain it through the world-wide-web,end a note to&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | license@php.net so we can mail you a immediately.&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// +---------------------------------------------------------+&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// | Authors: Stig Bakken &amp;lt;ssb@fast.no&amp;gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// |&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tomas V.V.Cox &amp;lt;cox@idecnet.com&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// |&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// +---------------------------------------------------------+&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;//&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;// $Id: Common.php,v 1.8.2.3 2001/11/13 01:26:48 ssb Exp $&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.3 &lt;span style="font-family: 宋体"&gt;类的注释&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;每个类注释需要包含以下项目：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;a&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含类的描述；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;b&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含作者；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;c&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含书写日期；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;d&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含版本信息；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;e&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;名称空间（可选）；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;f.&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;参考&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;（可选）；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;参考例子如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;/** &lt;br /&gt;* @ Purpose: &lt;br /&gt;* &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;访问数据库的类，以ODBC作为通用访问接口 &lt;br /&gt;* @Package Name: Database &lt;br /&gt;* @Author: Forrest Gump gump@crtvu.edu.cn &lt;br /&gt;* @Modifications: &lt;br /&gt;* No20020523-100: &lt;br /&gt;* odbc_fetch_into()参数位置第二和第三个位置调换 &lt;br /&gt;* John Johnson John@crtvu.edu.cn &lt;br /&gt;* @ref: (参照) &lt;br /&gt;*/ &lt;br /&gt;class Database &lt;br /&gt;{ &lt;br /&gt;&amp;#8230;&amp;#8230; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.4 &lt;span style="font-family: 宋体"&gt;方法注释&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;每个类注释需要包含以下项目：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;a&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须方法描述；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;b&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含方法名称；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;c&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含收入参数及类型；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;d&lt;span style="font-family: 宋体"&gt;．&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;必须包含输出参数及类型；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;参考例子如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;/** &lt;br /&gt;* @Purpose: &lt;br /&gt;* &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;执行一次查询 &lt;br /&gt;* @Method Name: query() &lt;br /&gt;* @Parameter: string $queryStr SQL查询字符串 &lt;br /&gt;* @Return: mixed 查询返回值（结果集对象） &lt;br /&gt;*/ &lt;br /&gt;function（$queryStr）{&amp;#8230;&amp;#8230;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.5 &lt;span style="font-family: 宋体"&gt;属性注释&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;属性注释需要包含以下项目：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;a&lt;span style="font-family: 宋体"&gt;．属性简短描述&lt;/span&gt;(&lt;span style="font-family: 宋体"&gt;必须&lt;/span&gt;)&lt;span style="font-family: 宋体"&gt;；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;参考例子如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;//&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;用户名&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;var mDbUserName; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.6 &lt;span style="font-family: 宋体"&gt;变量注释&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;变量注释需要包含以下项目：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;a&lt;span style="font-family: 宋体"&gt;．变量简短描述&lt;/span&gt;(&lt;span style="font-family: 宋体"&gt;可选&lt;/span&gt;)&lt;span style="font-family: 宋体"&gt;；&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;变量在程序中出现次数是最多的，而且变量从其名字中应该能清楚看到其意义。对临时性变量、作用域较窄的变量可以省略注释，否则程序中将因为注释而变得非常臃肿。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;参考例子如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;//&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;用户名&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;$user_name;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.7 &lt;span style="font-family: 宋体"&gt;代码块注释&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;代码块注释仅在必要时才使用，例如程序关键算法等等。注释方法同变量和属性。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;参考例子：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;func f()&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;#8230; &amp;#8230; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;此处使用的是冒泡排序&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#8230; &amp;#8230;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;5 &lt;span style="font-family: 宋体"&gt;项目组织&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;此节主要在项目层次对涉及的文档，源码，说明等做出一些建议性方法。根据项目属性的不同，下面的部分可进行一些增删处理。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;5.1 &lt;span style="font-family: 宋体"&gt;项目结构&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;设计文档&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;主要是软件设计类图，包图，数据库结构，关键算法参考等&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;项目说明&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 5.25pt; line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;主要包含软件安装，使用说明，初始账号，注意事项等，以指导人们显示资源： &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;源码 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;指能通过编译的或者运行正常的源码&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;&amp;#183;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;工程管理&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;包括需求文档，项目管理，&lt;/span&gt;Bug&lt;span style="font-family: 宋体"&gt;修复等。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;除了上述文档外，可能含有其他形形色色的文档，到时按照项目定义的类型进行归档即可。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;5.2 &lt;span style="font-family: 宋体"&gt;源码结构&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;此处主要介绍在开发企业网站或者小型网站中，常用的一些目录命名。当然如果你要开发的项目类似于百度或者新浪，你可能不会需要，因为那时会有专业的人员或者规范进行约束，方方面面都已经涉及。通常情况下，这些还是对你有帮助的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;一个完整独立的&lt;/span&gt;PHP&lt;span style="font-family: 宋体"&gt;项目目录结构如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/ &lt;span style="font-family: 宋体"&gt;项目根目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/manage(admin) &lt;span style="font-family: 宋体"&gt;后台管理文件存放目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/css css&lt;span style="font-family: 宋体"&gt;文件存放目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/images &lt;span style="font-family: 宋体"&gt;所有图片文件存放路径（在里面根据目录结构设立子目录）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/scripts &lt;span style="font-family: 宋体"&gt;客户端&lt;/span&gt;js&lt;span style="font-family: 宋体"&gt;脚本存放目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/tpl &amp;nbsp;&lt;span style="font-family: 宋体"&gt;网站模版文件存放目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/uploads &lt;span style="font-family: 宋体"&gt;上传文件目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/inc(include) &lt;span style="font-family: 宋体"&gt;全局函数包含文件目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/cache&amp;nbsp;&lt;span style="font-family: 宋体"&gt;缓存目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;/install&amp;nbsp;&lt;span style="font-family: 宋体"&gt;安装程序目录&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 20pt"&gt;&lt;span style="font-family: 宋体"&gt;以上目录结构是通常的目录结构，根据具体应用的具体情况，可以考虑不用完全遵循，但是尽量做到规范化。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;5.3 &lt;span style="font-family: 宋体"&gt;第三方开发包&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;对于在开发中引入的第三方开发包，如果可能，尽量将其放入单独目录进行管理，同时在项目文档中放入开发包的相关文档：帮助文档，原理介绍，项目地址等。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hellofox2000/aggbug/1803168.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1803168.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1802919.html</id><title type="text">开发语言的选择</title><summary type="text">关于Java与.Net孰优孰劣，Linux与Windows哪个更好的等等的争论由来已久，而且在我们的有生之年，还会时不时看到的这种争论。本篇文章不想在这种争论上增加一把干柴，只是希望从开发语言的选择角度上，提供一些个人看法。 公司、个人选择一种语言或者环境时，理由有很多，大体上可分为两种：语言本身，公司层面。本文将会语言层面，公司层面进行简单的论述。  语言层面上： 首先考虑的是其功能和主要应用范...</summary><published>2010-08-18T16:26:00Z</published><updated>2010-08-18T16:26:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1802919.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1802919.html"/><content type="html">&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 关于&lt;/span&gt;Java&lt;span style="font-family: 宋体"&gt;与&lt;/span&gt;.Net&lt;span style="font-family: 宋体"&gt;孰优孰劣，&lt;/span&gt;Linux&lt;span style="font-family: 宋体"&gt;与&lt;/span&gt;Windows&lt;span style="font-family: 宋体"&gt;哪个更好的等等的争论由来已久，而且在我们的有生之年，还会时不时看到的这种争论。本篇文章不想在这种争论上增加一把干柴，只是希望从开发语言的选择角度上，提供一些个人看法。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;公司、个人选择一种语言或者环境时，理由有很多，大体上可分为两种：语言本身，公司层面。本文将会语言层面，公司层面进行简单的论述。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;语言层面上：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;首先考虑的是其功能和主要应用范围。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;现在各种语言不断涌现，可以说简直是&amp;#8220;乱花渐欲迷人眼&amp;#8221;。但其应用范围（或者说定位）似乎在语言创立之初，似乎就已经定性。比如&lt;/span&gt;Web&lt;span style="font-family: 宋体"&gt;开发无非是&lt;/span&gt;asp/asp.net&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;php&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;java&lt;span style="font-family: 宋体"&gt;。最近几年涌现了如&lt;/span&gt;ruby&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;python&lt;span style="font-family: 宋体"&gt;。嵌入式当属&lt;/span&gt;C&lt;span style="font-family: 宋体"&gt;和汇编。手机平台上自然是&lt;/span&gt;j2me&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;android&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;object c&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;windows mobile&lt;span style="font-family: 宋体"&gt;。页面脚本则&lt;/span&gt;javascript&lt;span style="font-family: 宋体"&gt;是当之无愧的老大。。。。可以说语言排行榜的百十种语言都有自己的一片地盘。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次会考虑语言成熟程度&lt;/span&gt;/&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;配套环境。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;成熟度如何考量？个人认为大致在可以从以下几个方面着手：语言发展时间长短，背后支持的公司，技术支持力度（手册，&lt;/span&gt;SDK&lt;span style="font-family: 宋体"&gt;，社区），成型应用。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;语言发展时间长短比较能说明问题。一种语言的推出，会面临很多考验，其经历的时间越长，越能说明其经历的考验越多，也越能说明其健壮性。这就是&lt;/span&gt;C&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;Perl&lt;span style="font-family: 宋体"&gt;经久不衰的原因。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当然后推出的语言在某种程度上可以吸收前者的经验，比如&lt;/span&gt;C#&lt;span style="font-family: 宋体"&gt;借鉴了&lt;/span&gt;Java&lt;span style="font-family: 宋体"&gt;的很多特性。但是试想一下，如果没有微软的支持，&lt;/span&gt;C#&lt;span style="font-family: 宋体"&gt;的命运可能就比较曲折。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;还有些语言推出时间不长，但是一经推出，似乎就广受关注，例如&lt;/span&gt;go&lt;span style="font-family: 宋体"&gt;语言。大公司自有大公司之间的博弈，其所支持的语言似乎也随着大公司的命运起伏。&lt;/span&gt;Delphi&lt;span style="font-family: 宋体"&gt;的地位逐年下降，而&lt;/span&gt;Go&lt;span style="font-family: 宋体"&gt;这个新生儿，一下子就窜到&lt;/span&gt;20&lt;span style="font-family: 宋体"&gt;名的位置，如日中天。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;语言如果没有好的手册，没有充实的&lt;/span&gt;SDK&lt;span style="font-family: 宋体"&gt;，恐怕即使是最聪明的人学起来也会望而生畏。而良好的社区环境，优秀的案例代码更能让人事半功倍。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;当然如果有比较成型的应用，最好不过。有人走在前面，替你尝了螃蟹。不管他有没有将他的经验进行分享，起码证明一点，这门语言是可以做到这种程度的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是开发效率和维护效率。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;当几种语言在实现功能成熟度上差异不大时，开发效率就会成为首选。&lt;/span&gt;C&lt;span style="font-family: 宋体"&gt;语言也能开发&lt;/span&gt;Web&lt;span style="font-family: 宋体"&gt;程序，但是其开发效率和可维护性是很低的。因此没有多少人使用&lt;/span&gt;C&lt;span style="font-family: 宋体"&gt;来进行网站的开发。&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;再次是性能。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;性能问题在语言的选择上其实是比较靠后，除非对性能要求相当严格的程序。而且程序的性能和开发语言的关系其实并不大。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;当然其他配套环境也会影响到语言的选择，比如&lt;/span&gt;IDE&lt;span style="font-family: 宋体"&gt;，数据库，操作系统等。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;以上说的是语言层面，可以说是从纯粹技术的角度来进行的考虑。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;理想很丰满，现实很骨感。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当具体到某个公司或者某个项目时，还有其他的各种各样的考虑。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;首先是公司的业务定位。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;公司做什么业务，是专为&lt;/span&gt;iPhone&lt;span style="font-family: 宋体"&gt;手机开发程序，还是&lt;/span&gt;Android&lt;span style="font-family: 宋体"&gt;的服务提供商。公司的目标客户都是在什么环境下开发和运行？&lt;/span&gt;&amp;#8230;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是客户要求。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;在这个有钱就是大爷，给钱就是甲方的世界里，总有客户规定：嗯，我们要用&lt;/span&gt;XXXX&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;XXXX&lt;span style="font-family: 宋体"&gt;。也许客户只是听了销售人员的忽悠，也许客户就仅仅知道的几个名词和一知半解的技术，或者&lt;/span&gt;&amp;#8230;&lt;span style="font-family: 宋体"&gt;，此时客户的选择就是你的选择，&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;当然你可以选择不选择。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是时间和成本。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;时间对公司来说就是金钱，都是公司运营的成本。实现的相同功能，在薪资水平相同的情况下，哪种语言的开发能力更高，并且开发完成项目可维护性强？&lt;/span&gt;IDE&lt;span style="font-family: 宋体"&gt;，操作系统需不需要付费？不付费的情况下，是不是会造成开发时间的延长？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;基于中国目前盗版横行的现状，对相关软件的付费有时只是象征性的。而国外由于版权保护比较严格，所以造成了&lt;/span&gt;PHP&lt;span style="font-family: 宋体"&gt;流行（当然不仅仅是这一种原因）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次现有开发人员的能力。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;如果能满足公司业务定位，并且时间和成本不成为问题的话，现有开发人员的能力将成为技术选型的首要考虑。在某种程度上，开发语言没有好坏之分，当使用一种语言的时间越长，对这种语言的理解的也就越深入，从而在很大程度上也会依赖于这种语言。&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是发展惯性。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;很多公司不是从头开发一款产品，或者新产品需要和原来的技术环境整合。公司在技术发展层面要延续以前的技术环境，或者有个缓冲期，这就是所谓的技术惯性。这样的情景是恐怕是最多的，必须小心翼翼。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次管理人员的素质。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;有的管理者懂技术，这很好。有的不懂，但能接受技术人员的建议，这也很好。最怕的就是不懂装懂，刚愎自用的领导。公司开发人员团队都是&lt;/span&gt;.Net&lt;span style="font-family: 宋体"&gt;背景，某日听说大型公司都用&lt;/span&gt;PHP&lt;span style="font-family: 宋体"&gt;，随下令他所负责的产品线要全部转&lt;/span&gt;PHP&lt;span style="font-family: 宋体"&gt;。半年之后，转型失败，又转回&lt;/span&gt;.Net&lt;span style="font-family: 宋体"&gt;，他拍拍屁股走人，剩下一群技术人员为他擦屁股。嗯，别奇怪。这就是我们公司前两年的事情。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是办公室政治。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;办公室政治也许听起来遥远，但就在身边。技术人员大多单纯，给画个饼吃，就屁颠屁颠的加班到深夜，并且一加就是半年，即使这样仍不免沦为替罪羊。为什么？为什么新引进的一套产品与公司整体环境格格不入？&lt;/span&gt;&amp;#8230;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当一切都已经搞定，技术选型完毕，开发，测试，项目正式上线，嗯，阳光一片灿烂！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;你的领导走过来说：由于。。。。，我们转型吧。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;前面的你都没听到，只听到后面的几个字，你终于忍不住骂了，我&lt;/span&gt;X&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;再往外一看，天黑了。&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;情景就是这么狗血，然而作为技术人员，该做的还是要做，当从一种选择跳转到另一种选择时，这时就面临风险。风险大概在以下几方面：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;首先需要缓冲期：&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;当面对整个开发环境的转变的时候，需要缓冲期来缓和这种改变，一方面是业务线、产品的开发&lt;/span&gt;/&lt;span style="font-family: 宋体"&gt;更改需要时间，另一方面开发人员的素质转变需要时间。还有就是旧的环境，数据等向新环境的逐步迁移。&lt;/span&gt;&lt;strong&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是时间与机遇。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;当开发转换时间过长时，产品和业务发展的机遇会不会丧失？会不会被竞争对手赶上并被超越？是加紧开发新功能还是为了转型后那个比较飘渺的目标？&lt;/span&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是对风险的容忍。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;既然风险是不可避免的，并且在转换过程中，不可避免的发生各种各样的问题，那么你所有面对的各种人员对这种失误的有多高的容忍度。你的用户或者客户面临着一再的当机，服务不可用，会容忍你么？公司的销售人员会容忍产品转换所带来的销售额下降吗？客服面临着接二连三的投诉，会不会发脾气？管理者在面对众多的压力时，会不会再继续支持？开发人员会不会怀疑这种转换是不是值得，进而人心涣散？&lt;/span&gt;&amp;#8230;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;其次是人力成本。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;简而言之就是转换的开发人员哪里来。是对现有人员进行培训和学习？还是对新招人员？如果采用现有员工，现有员工愿不愿意学习？学习的时间曲线怎样？当面对指责时，会不会一直坚持下去？如果采用新员工，原来的员工怎么办？对业务的理解需要多长时间？对现有产品和业务线的结构的梳理又需要多长时间？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;总而言之，就跟找老婆一样，没有孰好孰坏，只有合适不合适。当面临各种各样的情景时，梳理头绪，分析问题，找出适合自己的才是正道。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hellofox2000/aggbug/1802919.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hellofox2000/archive/2010/08/19/1802919.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2010/08/17/1801329.html</id><title type="text">memCached客户端CPU过高问题的排查</title><summary type="text">公司网站使用了memCached来做分布式缓存，最近有人反映memCached客户端占用CPU过高，怀疑是第三方客户端性能不佳，进而怀疑是文本协议的问题，要求部门自己开发memCached的客户端，使其支持二进制协议。因为重新开发客户端工作量比较大，同时在日常开发中，没有听说过memCached客户端遇到瓶颈。因此对此问题进行了排查。结果发现主要是由于客户端反序列化，类设计不合理造成的。把排查过程...</summary><published>2010-08-17T03:31:00Z</published><updated>2010-08-17T03:31:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/17/1801329.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/17/1801329.html"/><content type="html">&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;公司网站使用了&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;来做分布式缓存，最近有人反映&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;客户端占用&lt;/span&gt;CPU&lt;span style="font-family: 宋体"&gt;过高，怀疑是第三方客户端性能不佳，进而怀疑是文本协议的问题，要求部门自己开发&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;的客户端，使其支持二进制协议。因为重新开发客户端工作量比较大，同时在日常开发中，没有听说过&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;客户端遇到瓶颈。因此对此问题进行了排查。结果发现主要是由于客户端反序列化，类设计不合理造成的。把排查过程分享下，希望对其他人有所帮助。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;　　首先想到是：&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;服务器端内存占满，在清理内存中，造成客户端&lt;/span&gt;socket&lt;span style="font-family: 宋体"&gt;连接不上，不断发生异常。随上服务器查看了&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;的内存占用率，连接数等，发现利用率均很低。暂时先排除服务器端问题。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;　　其次想到可能是第三方在使用&lt;/span&gt;socket&lt;span style="font-family: 宋体"&gt;连接池时，造成资源没有关闭，或者死锁。随对第三方客户端代码粗略读了一遍，并搜索相关文档。未发现异常代码。暂时先排除第三方客户端问题。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;　　最后想到会不会是开发人员在代码编写中出现了问题。随对反映问题的两个产品进行了排查。发现了以下代码。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;代码片段&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;：&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('3b64a1fa-388f-49cd-a8d6-86965d8ce798')"&gt;&lt;img  id="code_img_opened_3b64a1fa-388f-49cd-a8d6-86965d8ce798" style="display: none" onclick="cnblogs_code_hide('3b64a1fa-388f-49cd-a8d6-86965d8ce798',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div  id="cnblogs_code_open_3b64a1fa-388f-49cd-a8d6-86965d8ce798"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Serializer&amp;nbsp;ser&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Serializer(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000"&gt;(List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;UserModule&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;));&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;using&amp;nbsp;JsonExSerializer;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;UserModule&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetAllUserModule(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;userId)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;cache&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CacheManager.Current.Get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(GetCacheKey(userId));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.IsNullOrEmpty(cache))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ser.Deserialize(cache)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;UserModule&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;UserModule&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SetAllUserModule(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;userId,&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;UserModule&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;modules)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(modules&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;cache&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ser.Serialize(modules);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CacheManager.Current.Add(GetCacheKey(userId),&amp;nbsp;cache);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CacheManager.Current.Remove(GetCacheKey(userId));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;modules;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;代码片段&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('29cf415d-15e7-43bf-8aef-ac0e427ab9ca')"&gt;&lt;img  id="code_img_opened_29cf415d-15e7-43bf-8aef-ac0e427ab9ca" style="display: none" onclick="cnblogs_code_hide('29cf415d-15e7-43bf-8aef-ac0e427ab9ca',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div  id="cnblogs_code_open_29cf415d-15e7-43bf-8aef-ac0e427ab9ca"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;聊天室房间&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;[Serializable]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Room&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;房间有观看人员数据&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Viewer&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_viewers&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_blackips&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Viewer&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_blackviewers&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Notice&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_notice&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Speaker&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_speakers&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;Content&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_content&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;添加新聊天者&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;返回新添加的聊天人员&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Viewer&amp;nbsp;AddViewer()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Viewer&amp;nbsp;vi&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Viewer();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;MaxViewerID&amp;nbsp;+=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;int&amp;nbsp;id&amp;nbsp;=&amp;nbsp;MaxViewerID;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;id&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetViewerID();&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vi.Name&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetViewerName(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;游客&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;vi.IP&amp;nbsp;=&amp;nbsp;System.Web.HttpContext.Current.Request.UserHostAddress;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vi.IP&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;127.0.0.1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vi.ViewID&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;id;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Viewers.Add(vi);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;vi;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;添加聊天内容&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="content"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;聊天的内容&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="viewid"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;发言人的id&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;返回新添加的对象&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Content&amp;nbsp;AddContent(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;content,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;viewid)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaxContentID&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content&amp;nbsp;con&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Content(DateTime.Now,&amp;nbsp;content,&amp;nbsp;viewid,&amp;nbsp;MaxContentID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Contents.Add(con);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;con;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;调用代码为：&lt;br /&gt;Room&amp;nbsp;room&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LiveSys.Get(key);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;lock&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(room)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(room.MaxContentID&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;ChatContentOp&amp;nbsp;cpo&amp;nbsp;=&amp;nbsp;new&amp;nbsp;ChatContentOp();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;room.MaxContentID&amp;nbsp;=&amp;nbsp;cpo.GetMaxContentID();&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;room.MaxContentID&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;300&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;viewerID&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;123124123&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;room.AddContent(chatContent,&amp;nbsp;viewerID);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;判断内容是否大于100条。如果大于100条，删除最近的100条以外的数据。&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.IO.File.AppendAllText(&lt;/span&gt;&lt;span style="color: #800000"&gt;@"&lt;/span&gt;&lt;span style="color: #800000"&gt;d:\haha.txt&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;最大数值：&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;room.LimitContentCount&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;###############聊天记录数：&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;room.Contents.Count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;\r\n&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(room.Contents.Count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;room.LimitContentCount)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;room.Contents.RemoveRange(&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;room.Contents.Count&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;room.LimitContentCount);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;LiveSys.Set(key,&amp;nbsp;room);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;代码&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;存在的问题是：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Cache&lt;span style="font-family: 宋体"&gt;存储的参数类型为&lt;/span&gt;object&lt;span style="font-family: 宋体"&gt;，没有必要先进行一次序列化，然后再进行存储。而序列化是很消耗&lt;/span&gt;CPU&lt;span style="font-family: 宋体"&gt;的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;代码&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;问题：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;代码&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;实现的是一个在线聊天室，聊天室本身含有访客，发言等内容。在发言时，对聊天室内容进行判断，只显示最近&lt;/span&gt;30&lt;span style="font-family: 宋体"&gt;条。新进来访客直接加到访客别表中。表面上是没什么问题的。但是细想之下有两个问题：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1 &lt;span style="font-family: 宋体"&gt;聊天室类设计的比较复杂，每次从&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;服务端取得数据后，都要进行类型转换。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2 &lt;span style="font-family: 宋体"&gt;没有访客清理机制。随着访客的不断进入，对象的体积会不断增大。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;对存疑部分编写了代码进行测试。测试结果果然如推测所想。测试结果如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table style="border-right: medium none; border-top: medium none; border-left: medium none; width: 671.65pt; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="896" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr style="height: 15.75pt"&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="168" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;场景&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 189.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.75pt" valign="top" width="253" colspan="3"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;写入&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 202.8pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.75pt" valign="top" width="270" colspan="3"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;读取&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="100" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;大小&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;单位&lt;/span&gt;)&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="104" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr style="height: 15.35pt"&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;次数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;时间&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;平均&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="93"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;次数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;时间&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="93"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;平均&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;本地缓存&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.03125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;MemClient&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;19.2656&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.001926&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;22.75&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.002275&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;Json1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;2.8437&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.002843&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;5.375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.005375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;Json8k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;3.8593&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.003859&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;29.0312&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.029031&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;8k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;1000&lt;span style="font-family: 宋体"&gt;人次&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;38.9375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.038937&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;50k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;8000&lt;span style="font-family: 宋体"&gt;人次&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;18.25&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.1825&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;350k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;500k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;7.375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.07375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;7.09375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.070937&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;500k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table style="border-right: medium none; border-top: medium none; border-left: medium none; width: 671.65pt; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="896" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr style="height: 15.75pt"&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="168" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;场景&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 189.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.75pt" valign="top" width="253" colspan="3"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;写入&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 202.8pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.75pt" valign="top" width="270" colspan="3"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;读取&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="100" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;大小&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;单位&lt;/span&gt;)&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="104" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr style="height: 15.35pt"&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;次数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;时间&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;平均&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="93"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;次数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;时间&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="93"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;平均&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;本地缓存&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.03125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;3.125E-06&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.015625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1.5625E-06&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;MemClient&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;19.78125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.001978&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;21.953125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.002195&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;Json1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;2.03125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.002031&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;6.078125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.006078&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;Json8k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;2.765625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.002765&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;55.375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.055375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;8k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;1000&lt;span style="font-family: 宋体"&gt;人次&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;38.53125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.038531&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;50k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;8000&lt;span style="font-family: 宋体"&gt;人次&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;17.96875&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.179687&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;350k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;500k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;7.5&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.075&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;6.5625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.065625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;500k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;table style="border-right: medium none; border-top: medium none; border-left: medium none; width: 671.65pt; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="896" border="1"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr style="height: 15.75pt"&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="168" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;场景&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 189.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.75pt" valign="top" width="253" colspan="3"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;写入&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 202.8pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 15.75pt" valign="top" width="270" colspan="3"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;读取&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="100" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;大小&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;单位&lt;/span&gt;)&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.75pt" valign="top" width="104" rowspan="2"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;CPU&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr style="height: 15.35pt"&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;次数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;时间&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;平均&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="93"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;次数&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="84"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;时间&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid; height: 15.35pt" valign="top" width="93"&gt;&#xD;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;平均&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;本地缓存&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.015625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1.5625E-06&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.015625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1.5625E-06&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;0&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;MemClient&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;18.015625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.001801&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;10000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;25.96875&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.002596&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;6%&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;Json1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1.15625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.001156&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;3.078125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.003078&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;1k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;40%&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;Json8k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1.859375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.001859&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;32.484375&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.032484&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;8k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;50%&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;1000&lt;span style="font-family: 宋体"&gt;人次&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;45.046875&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.045046&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;1000&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;50k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;30-40%&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;8000&lt;span style="font-family: 宋体"&gt;人次&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;31.703125&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.317031&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;350k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;50%&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; width: 126.3pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="168"&gt;&#xD;
&lt;p&gt;500k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.05pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.25pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;7.0625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 63.1pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;0.070625&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.9pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;100&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 62.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="84"&gt;&#xD;
&lt;p&gt;6.421875&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 69.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="93"&gt;&#xD;
&lt;p&gt;0.064218&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 75.2pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="100"&gt;&#xD;
&lt;p&gt;500k&lt;/p&gt;&lt;/td&gt;&#xD;
&lt;td style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 77.95pt; padding-top: 0cm; border-bottom: black 1pt solid" valign="top" width="104"&gt;&#xD;
&lt;p&gt;6%&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;1000&lt;span style="font-family: 宋体"&gt;人次（当天一共有&lt;/span&gt;1000&lt;span style="font-family: 宋体"&gt;人访问，数据来源于运营检测），留言内容为&lt;/span&gt;30&lt;span style="font-family: 宋体"&gt;条时，&lt;/span&gt;Room&lt;span style="font-family: 宋体"&gt;体积大概为：&lt;/span&gt;57K&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;img height="101" alt="" src="http://images.cnblogs.com/cnblogs_com/hellofox2000/memcached_image001.png" width="780" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;直播&lt;/span&gt;1000&lt;span style="font-family: 宋体"&gt;人次（当天一共有&lt;/span&gt;8000&lt;span style="font-family: 宋体"&gt;人访问，数据来源于运营检测），留言内容为&lt;/span&gt;30&lt;span style="font-family: 宋体"&gt;条时，&lt;/span&gt;Room&lt;span style="font-family: 宋体"&gt;体积大概为：&lt;/span&gt;350k&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="104" alt="" src="http://images.cnblogs.com/cnblogs_com/hellofox2000/memcached_image002.png" width="768" border="0" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;根据图表可以看到以下情况：处理时间、&lt;/span&gt;CPU&lt;span style="font-family: 宋体"&gt;利用率和数据量大小，序列化，类复杂性都有关系。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;序列化问题（类型转换）对性能影响最为明显（可在场景&lt;/span&gt;&amp;#8221;json1k&amp;#8221;&lt;span style="font-family: 宋体"&gt;、场景直播中看到）。在&lt;/span&gt;Json1k&lt;span style="font-family: 宋体"&gt;中，存储对象和前几个场景是相同的，处理时间也相差不大，较大区别是&lt;/span&gt;CPU&lt;span style="font-family: 宋体"&gt;利用率由&lt;/span&gt;5%&lt;span style="font-family: 宋体"&gt;左右增长到&lt;/span&gt;40%&lt;span style="font-family: 宋体"&gt;左右（反序列化时尤为明显）。在场景直播系统中，不存在序列化问题，但是其对象属性中存在&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体"&gt;访客&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt; &amp;#8221;&lt;span style="font-family: 宋体"&gt;繁衍&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体"&gt;等多个复杂对象，造成其在处理时需要处理过多的类型转换，同时其体积不断增大。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;存储对象的大小和处理时间存在一定关系，例如场景&lt;/span&gt;&amp;#8221;500k&amp;#8221;&lt;span style="font-family: 宋体"&gt;，其处理时间增长，但是其&lt;/span&gt;CPU&lt;span style="font-family: 宋体"&gt;利用率并未提高，其时间增长是由于对象传输造成。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;本地缓存在内存中进行寻址和类型转换，涉及不到&lt;/span&gt;Socket&lt;span style="font-family: 宋体"&gt;连接，网络传输，序列化操作，所以其处理相当快。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;就测试结果看：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;本地缓存性能大约是分布式缓存性能的&lt;/span&gt;100&lt;span style="font-family: 宋体"&gt;倍左右。而出问题的聊天室除了&lt;/span&gt;CPU&lt;span style="font-family: 宋体"&gt;增高以外，其性能更比分布式缓存再降低&lt;/span&gt;40&lt;span style="font-family: 宋体"&gt;倍（直播&lt;/span&gt;1000&lt;span style="font-family: 宋体"&gt;人次）到&lt;/span&gt;200&lt;span style="font-family: 宋体"&gt;倍（直播&lt;/span&gt;8000&lt;span style="font-family: 宋体"&gt;人次）。综合来看，聊天室的分布式缓存比本地缓存降了&lt;/span&gt;4000&lt;span style="font-family: 宋体"&gt;倍，甚至更多。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;但是，还没有完。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;对于第二个问题，更改类设计，清楚无效访客，即可解决。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;但是第一个问题，为什么用户在存储之前，先进行&lt;/span&gt;json&lt;span style="font-family: 宋体"&gt;序列化呢？嗯，这是一个问题。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;遂问之。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;答曰，有些类直接使用第三方客户端存储时，直接存储报错，所以先序列化为&lt;/span&gt;json&lt;span style="font-family: 宋体"&gt;类型，取值时再反序列化回来。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;嗯，还有这事？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;开发人员说了相关代码。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('64fde2b6-67df-44cb-8ede-fbccf23fb540')"&gt;&lt;img  id="code_img_opened_64fde2b6-67df-44cb-8ede-fbccf23fb540" style="display: none" onclick="cnblogs_code_hide('64fde2b6-67df-44cb-8ede-fbccf23fb540',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div  id="cnblogs_code_open_64fde2b6-67df-44cb-8ede-fbccf23fb540"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;IUser&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;UserId{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;UserName{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[Serializable]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserInfo&amp;nbsp;:&amp;nbsp;IUser&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;UserId{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;UserName{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;}&lt;br /&gt;}&lt;br /&gt;[Serializable]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Game&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IUser&amp;nbsp;User{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;UserName{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;他说：&lt;/span&gt;Game&lt;span style="font-family: 宋体"&gt;对象在直接使用&lt;/span&gt;memCachedClient&lt;span style="font-family: 宋体"&gt;时，是不能被二进制序列化的，因为其&lt;/span&gt;User&lt;span style="font-family: 宋体"&gt;属性类型为&lt;/span&gt;IUser&lt;span style="font-family: 宋体"&gt;，为一个接口。因此想了一个解决方法，即先将&lt;/span&gt;Game&lt;span style="font-family: 宋体"&gt;对象进行&lt;/span&gt; json&lt;span style="font-family: 宋体"&gt;序列化将其变为字符串，然后将字符串存储到&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;原来是这样。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;接着又查看了&lt;/span&gt;memCachedClient&lt;span style="font-family: 宋体"&gt;源代码，其需要将对象进行二进制序列化，然后进行存储。接口属性不能被序列化，遂又对序列化问题进行了测试（见附件）。测试结果显示上述代码直接进行二进制序列化是可以的，同时直接使用第三方客户端也是可以可行的。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;问题出在哪？难道是没有加&lt;/span&gt;[Serializable]&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;一查果然：一个&lt;/span&gt;Serializable&lt;span style="font-family: 宋体"&gt;引发的血案。。。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;记得有人说过，慎用分布式，能不用尽量不用。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;一方面在性能上确实下降很多，分布式存储主要性能消耗在以下几个方面：协议解析，&lt;/span&gt;Socket&lt;span style="font-family: 宋体"&gt;连接，数据传输，序列化&lt;/span&gt;/&lt;span style="font-family: 宋体"&gt;类型转换。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;一方面在使用场景和类设计上要求也更加严格。个人认为&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;是不太适合存储特别大的文件的。虽然有人说网上已经有用来存储视频的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;还有几个问题希望知道的朋友回答下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1 &lt;span style="font-family: 宋体"&gt;有没有&lt;/span&gt;.Net&lt;span style="font-family: 宋体"&gt;方面的&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;客户端支持二进制协议和一致性的？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2 &lt;span style="font-family: 宋体"&gt;测试中发现，当&lt;/span&gt;memCached&lt;span style="font-family: 宋体"&gt;设置缓存过小时（例如&lt;/span&gt;64M&lt;span style="font-family: 宋体"&gt;），当其内存使用已经到&lt;/span&gt;62M&lt;span style="font-family: 宋体"&gt;时，再进行存储，新存储的内容再取出来就是空值，不知道是什么原因。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;文章中用到的源码:&lt;a href="http://files.cnblogs.com/hellofox2000/MemCachedTest2.rar"&gt;下载源码&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hellofox2000/aggbug/1801329.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hellofox2000/archive/2010/08/17/1801329.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2010/08/09/1796053.html</id><title type="text">Url小写替换工具开发笔记</title><summary type="text">SEO部门在进行SEO的过程中,发现搜索引擎区分大小写。因此做了这个Url大小写替换工具。开发过程中，遇到一些问题，例如委托，重构，类与项目的涉及等，觉得有些记录和探讨的价值，因此整理了一下作为开发笔记。</summary><published>2010-08-09T13:23:00Z</published><updated>2010-08-09T13:23:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/09/1796053.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2010/08/09/1796053.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;项目简介&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;：&lt;/span&gt;SEO&lt;span style="font-family: 宋体"&gt;部门在进行&lt;/span&gt;SEO&lt;span style="font-family: 宋体"&gt;的过程中&lt;/span&gt;,&lt;span style="font-family: 宋体"&gt;发现搜索引擎区分大小写，即：一个&lt;/span&gt;Url&lt;span style="font-family: 宋体"&gt;如果大小写不同会被认为是不同链接（真的？）&lt;/span&gt;,&lt;span style="font-family: 宋体"&gt;所以提出建议：将&lt;/span&gt;url&lt;span style="font-family: 宋体"&gt;进行统一&lt;/span&gt;. &lt;span style="font-family: 宋体"&gt;因为项目较多，手动替换比较费时，所以做了简单的小工具，可以批量进行替换。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;开发周期&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体"&gt;：&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;天&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;在此工具的开发过程中，遇到一些问题，有几处值得拿出来跟大家讨论一下的情景，因此整理了一下，感兴趣的可以跟帖讨论。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;文件中出现&lt;/span&gt;url&lt;span style="font-family: 宋体"&gt;的情况比较复杂，出现位置大致有以下几种情景&lt;/span&gt;:&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;以&lt;/span&gt;http&lt;span style="font-family: 宋体"&gt;等开头的链接&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: 宋体"&gt;例如&lt;/span&gt;: http://price.bitauto.com&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;锚标签&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;例如&lt;/span&gt; &amp;lt;a href="/user/detail.aspx?userid" target=_blank&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;文件源，以&lt;/span&gt;src&lt;span style="font-family: 宋体"&gt;为表现&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;例如：&lt;/span&gt;&amp;lt;img src="http://images.cnblogs.com/logo.gif"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;iframe src="ad.htm"&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;服务器端链接&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;例如&lt;/span&gt;: &amp;lt;asp:HyperLink id="" NavigateUrl="" runat="server"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;转向&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;例如&lt;/span&gt;: Response.Redirect("error.aspx")&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;配置文件&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: 宋体"&gt;例如&lt;/span&gt;: &amp;lt;add name="errorpage" value="404.aspx"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;变量&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;例如&lt;/span&gt;:&amp;nbsp;public const string HOME = "index.aspx";&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var actionPage = "save.aspx";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;但是链接并不是总是以直接的字符串形式出现，&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;有可能以变量的形式出现，例如&lt;/span&gt;: &amp;lt;a href="&amp;lt;%# Eval(Container, "Url").ToString()%&amp;gt;" target=_blank&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;有时会将部分路径进行组合得到最终链接。例如：&lt;/span&gt;var searchpage = "search.aspx?keywords=" + keywords + "&amp;amp;searchtype=" + searchtype&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;因此工具在替换时进行了取舍。对情景&lt;/span&gt;1-5&lt;span style="font-family: 宋体"&gt;做了较好的判断，对情景&lt;/span&gt;6&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;7&lt;span style="font-family: 宋体"&gt;没有进行处理。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;对情景&lt;/span&gt;1-5&lt;span style="font-family: 宋体"&gt;也只是替换了出现的字符串，对变量或者组合变量没有进行考虑。这些例外情况需要大家单独进行处理&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;有一种值得说明的情况是：类似于&lt;/span&gt; img.bitauto.com&lt;span style="font-family: 宋体"&gt;这样的域名并没有进行处理。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;因为其和对象引用的方式非常类似，例如：&lt;/span&gt; User.Role.Id &lt;span style="font-family: 宋体"&gt;和&lt;/span&gt; img.bitauto.com &lt;span style="font-family: 宋体"&gt;通过正则很难区分。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;简单的代码重用：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;此工具需要两个基本功能：备份，小写替换。因此开始时直接定义了两个方法&lt;/span&gt; Backup(string dir)&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;LowercaseLink(string dir)&lt;span style="font-family: 宋体"&gt;，开发完成后，查看了一下代码，发现一个问题：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;即文件夹遍历，这两个方法都对文件夹进行了一次遍历，其代码是重复的&lt;/span&gt;(.Net&lt;span style="font-family: 宋体"&gt;虽好，但并不万能，例如文件夹的复制就没有实现。需要自己来开发。&lt;/span&gt;)&lt;span style="font-family: 宋体"&gt;。因此我在想有什么方法能够将遍历的代码只写一遍，后来发现&lt;/span&gt;Backup&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;LowercaseLink&lt;span style="font-family: 宋体"&gt;这两个方法参数和返回值相同，因此想到了委托，代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;delegate&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; HandleMethod(&lt;span style="color: blue"&gt;string&lt;/span&gt; filepath);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Backup(&lt;span style="color: blue"&gt;string&lt;/span&gt; fileName)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;此处省略若干字&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; LowercaseLink(&lt;span style="color: blue"&gt;string&lt;/span&gt; filepath)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;此处省略若干字&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Traversal(&lt;span style="color: blue"&gt;string&lt;/span&gt; dirName,&lt;span style="color: red"&gt;HandleMethod method&lt;/span&gt;)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;string&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;[] subDirs = &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.GetDirectories(dirName);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; subDir &lt;span style="color: blue"&gt;in&lt;/span&gt; subDirs)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Traversal(subDir, method);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt;[] files = &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.GetFiles(dirName);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; file &lt;span style="color: blue"&gt;in&lt;/span&gt; files)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red"&gt;method.Invoke(file);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;调用如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;Traversal(selectedFolder, &lt;span style="color: red"&gt;Backup&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;Traversal(selectedFolder, &lt;span style="color: red"&gt;LowercaseLink&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;Traversal&lt;span style="font-family: 宋体"&gt;的第二个参数为委托类型（相当于函数指针）&lt;/span&gt;,&lt;span style="font-family: 宋体"&gt;调用时需要将实际的方法名传递过去，然后通过&lt;/span&gt;Invoke&lt;span style="font-family: 宋体"&gt;来触发。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;业务处理和表现层分离：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在第一版完成后，基本功能已经实现，能实现将文本中的所有链接的批量替换。此时所有的代码都放在了&lt;/span&gt;Form1.cs&lt;span style="font-family: 宋体"&gt;文件中，只是通过不同的方法和属性来区分。大致代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsBackup;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;delegate&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; HandleMethod(&lt;span style="color: blue"&gt;string&lt;/span&gt; filepath);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; linkPatterns = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; selectedFolder = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnStart_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnSelectFolder_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: #4f6228; font-family: 新宋体"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: #4f6228; font-family: 新宋体"&gt;方法代码&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Backup(&lt;span style="color: blue"&gt;string&lt;/span&gt; fileName){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Traversal(&lt;span style="color: blue"&gt;string&lt;/span&gt; dirName,HandleMethod method){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InitPattern(){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; LowercaseLink(&lt;span style="color: blue"&gt;string&lt;/span&gt; filepath){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在对代码进行了一些考虑以后，发现下面的四个方法和上面的两个方法是不同的。上面是界面代码的事件响应（属于表现层），下面的才是真正的业务处理（属于业务处理层）。后来又添加一次操作状态和信息的响应，此时仍然堆积在&lt;/span&gt;Form1&lt;span style="font-family: 宋体"&gt;中，代码体积开始变得庞大和混乱。&lt;/span&gt;&amp;nbsp;&lt;span style="font-family: 宋体"&gt;因此对代码进行了分离。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;分离后代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LowercaseManager&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: #2b91af"&gt;ProjectStatus&lt;/span&gt; DoTask(&lt;span style="color: #2b91af"&gt;LowercaseManagerStartupInfo&lt;/span&gt; startInfo){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; CheckBackup(&lt;span style="color: blue"&gt;string&lt;/span&gt; folder){};&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 21pt; text-indent: 21pt"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;TraversalBackup(&lt;span style="color: blue"&gt;string&lt;/span&gt; dirName,&lt;span style="color: #2b91af"&gt; LowercaseManagerStartupInfo&lt;/span&gt; startInfo){};&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Traversal(&lt;span style="color: blue"&gt;string&lt;/span&gt; dirName, &lt;span style="color: #2b91af"&gt;HandleMethod&lt;/span&gt; method){};&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; LowercaseLink(&lt;span style="color: blue"&gt;string&lt;/span&gt; filepath){}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LowercaseManagerStartupInfo&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; IsBackup;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; BackupFolder;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; ProjectFolder;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;enum&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ProjectStatus&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp; NoProject,&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp; ProjectFolderNotExist,&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp; NeedBackupFolder,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp; Success&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; Form1 : Form&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;const&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; NEED_BACKUPFLODER = &lt;span style="color: #a31515"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 新宋体"&gt;请选择备份文件夹"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;const&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; MSG_TITLE = &lt;span style="color: #a31515"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 新宋体"&gt;提示"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;const&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; NEED_PROJECT = &lt;span style="color: #a31515"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 新宋体"&gt;请选择要替换的项目文件夹"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;const&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; PROJECT_FOLDER_NOT_EXIST = &lt;span style="color: #a31515"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 新宋体"&gt;项目文件夹不存在"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;const&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; SUCCESS = &lt;span style="color: #a31515"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: #a31515; font-family: 新宋体"&gt;替换成功"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnStart_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnSelectFolder_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; btnBackup_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;private&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; cbIsBackup_CheckedChanged(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;这还有一个意外，刚开始时，并没有想到使用&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;LowercaseManagerStartupInfo&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;这个参数类，而是将参数放到了&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;LowercaseManager&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;里面，后来想到调用线程类时&lt;/span&gt;Thread&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;Process&lt;span style="font-family: 宋体"&gt;等类都将入口参数变为了类&lt;/span&gt;xxxxStartInfo&lt;span style="font-family: 宋体"&gt;，因此这里简单的模仿了一下&lt;/span&gt;,&lt;span style="font-family: 宋体"&gt;连名字都抄了过来&lt;/span&gt;((&lt;span style="font-family: 宋体"&gt;&amp;#8745;&lt;/span&gt;_&lt;span style="font-family: 宋体"&gt;&amp;#8745;&lt;/span&gt;))&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;在面向过程的开发中，是以函数作为开发单元；而在面向对象的开发中，是以类作为开发单元的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;扩展与可配置化&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;截止此时，代码已经开发完毕。下午再次浏览代码时，突然想到，如果要实现将匹配的字符串替换为大写或者替换为其他要求（首字母大写，统一替换为&lt;/span&gt;xxx&lt;span style="font-family: 宋体"&gt;等），这时应该怎么做。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;最开始的想法是直接在&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; LowercaseLink(&lt;span style="color: blue"&gt;string&lt;/span&gt; filepath)&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;方法中添加 switch来实现。代码可能如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; pattern &lt;span style="color: blue"&gt;in&lt;/span&gt; linkPatterns)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;MatchCollection urls = Regex.Matches(fileContent, pattern);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;foreach&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; (Match url &lt;span style="color: blue"&gt;in&lt;/span&gt; urls)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;switch&lt;/span&gt;(replaceType)&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 21pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 42pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;case&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: #a31515"&gt;"lower"&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 63pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;fileBuilder.Replace(url.Value, url.Value.ToLower());&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 63pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;break&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 42pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;case&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: #a31515"&gt;"upper"&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 63pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;fileBuilder.Replace(url.Value, url.Value.ToUpper());&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 63pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;break&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 63pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;...&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 21pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;但是这样的设计感觉并不是很好，同时不利于配置，扩展起来也不是特别严谨和清晰。忘了哪位大人物曾经说过：&amp;#8220;当你看到&lt;/span&gt;switch&lt;span style="font-family: 宋体"&gt;分支过多的时候，可以想想策略，命令等模式&amp;#8221;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;呵呵，策略模式来敲门了&lt;/span&gt;(&lt;span style="font-family: 宋体"&gt;那些大人物如果看到实现的并不是策略模式的话，别敲我头就好了&lt;/span&gt;)&lt;span style="font-family: 宋体"&gt;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;于是实现如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;string&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; ToDest(&lt;span style="color: blue"&gt;string&lt;/span&gt; src);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ReplaceFactory&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt; lower = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LowerReplace&lt;/span&gt;();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt; CreateInstance()&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 21pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: red; font-family: 新宋体"&gt;//&lt;/span&gt;&lt;span style="font-size: 10pt; color: red; font-family: 新宋体"&gt;配置&lt;/span&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;return&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; (&lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;)&lt;span style="color: #2b91af"&gt;Assembly&lt;/span&gt;.Load(path).CreateInstance(className);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 21pt; text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;return&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; lower;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt" align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LowerReplace&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;{ // }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UpperReplace&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;{ // }&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;注意红色那行代码，当我们需要替换为不同的目的字符时，那么创建不同类的示例即可（&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;path,className&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;从配置文件加载&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;）。如果没有你要的类，则需要继承&lt;/span&gt; IReplace&lt;span style="font-family: 宋体"&gt;接口，建立自己的类。&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;这样便可规范类，方便管理和扩展，同时实现了可配置化&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;此时就会遇到一个问题：原来我们的类叫做：&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;LowercaseManager&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;和LowercaseManagerStartupInfo，&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;只是为替换小写使用，现在可替换为不同的目标字符串，所以需要来类名已经不太合适。此时对类名进行了更改：&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;ReplaceManager&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;和ReplaceManagerStartupInfo&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在配置方面新增加了一个类&lt;/span&gt;ConfigHelper.cs&lt;span style="font-family: 宋体"&gt;辅助读取配置文件。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;设想（以下出现的代码暂时没写，只是预想）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;至此，算是做了一些代码重码。在进行简单的测试时，出现了一些问题：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 18pt; text-indent: -18pt"&gt;&lt;span&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;有些文件不需要进行过滤，例如扩展名为&lt;/span&gt;exe&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;dll&lt;span style="font-family: 宋体"&gt;等&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 18pt; text-indent: -18pt"&gt;&lt;span&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;类似&lt;/span&gt;&amp;lt;a href="&amp;lt;%# Eval(Container, "Url")%&amp;gt;" &amp;gt; &lt;span style="font-family: 宋体"&gt;类似的并没有考虑。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-left: 18pt; text-indent: -18pt"&gt;&lt;span&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;原来的正则表达式区分了大小写。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;因此对程序进行简单的更改。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;针对问题&lt;/span&gt;1 &lt;span style="font-family: 宋体"&gt;，直接在代码里进行了扩展名的判断。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; exts;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;exts = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;exts.Add(&lt;span style="color: #a31515"&gt;".cs"&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;exts.Add(&lt;span style="color: #a31515"&gt;".html"&lt;/span&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Times New Roman','serif'"&gt;&amp;#8230;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;if&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; (exts.Contains(&lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetExtension(filepath).ToLower())) &lt;span style="color: green"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; color: green; font-family: 新宋体"&gt;对指定文件进行替换&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{ &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Times New Roman','serif'"&gt;&amp;#8230;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;但是如果做成一个简单过滤器似乎是更好的选择&lt;/span&gt;,&lt;span style="font-family: 宋体"&gt;代码可能如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IFilter&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;{&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p align="left"&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;string&lt;/span&gt; DoFilter(&lt;span style="color: blue"&gt;string&lt;/span&gt; input);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FileFilter&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IFilter&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;针对问题&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;偷了个懒，直接将代码放到了&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;LowerReplace&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;里面，对包含&lt;/span&gt;eval,bind&lt;span style="font-family: 宋体"&gt;等关键字的情况进行了判断，包含此关键字的则不进行替换&lt;/span&gt;. &lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;实际上不进行替换也是替换的一种，也可以做成类，叫做&lt;/span&gt;NoReplace&lt;span style="font-family: 宋体"&gt;，实现可能如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NoReplace&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;这样连同我们已经实现的替换类，现在已经有很多了：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;NoReplace&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UpperReplace&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LowerReplace&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IReplace&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;以后可能更多。这时就会出现一个问题，在使用&lt;/span&gt;&lt;span style="font-size: 10pt; color: #2b91af; font-family: 新宋体"&gt;ReplaceFactory.&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;CreateInstance()&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt;进行&lt;/span&gt;Replace&lt;span style="font-family: 宋体"&gt;实例创建时，到底要创建哪个类。配置文件只能解决单一类的情况，但是现在要根据字符串包含的某些字符或者其他特征判断后，动态的进行创建。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;当然可以在&lt;/span&gt;Factory&lt;span style="font-family: 宋体"&gt;类型里面进行判断，也可以建立单独类&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt; color: blue; font-family: 新宋体"&gt;public&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 新宋体"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ReplaceRouter / ReplaceMap &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;将其路由到正确的&lt;/span&gt;Replace&lt;span style="font-family: 宋体"&gt;类。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体"&gt;（此处可能需要探讨，大家注意。）&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;针对问题&lt;/span&gt;3&lt;span style="font-family: 宋体"&gt;：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;这个很好解决，忽略大小写即可。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;一路走来，就会发现，其实类的设计与架构并不是一开始就能确定的，而是随着问题的不断深入，设计的不断迭代而逐步成型的。这需要时间，精力和经验，更需要不断的自我否定，对代码艺术的不断追求，否则所谓的重构，设计只能是空谈。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;当然，现在的代码也未尽善尽美，没有其他办法，只有继续学习，不断超越。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://files.cnblogs.com/hellofox2000/Url-Lower源码.rar"&gt;&amp;nbsp;源码下载&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hellofox2000/aggbug/1796053.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hellofox2000/archive/2010/08/09/1796053.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2010/07/13/1776159.html</id><title type="text">经纬度相关计算</title><summary type="text">近期做一个与GRPS相关的应用，涉及到经纬度的计算，找资料时颇费了一番功夫，特此将其相关资料整理了一下，发布出来，希望对用到的同学有所帮助。闲话少说，经纬度计算主要有两种： 1. 知道两点的经纬度值，计算两点间的距离 2. 知道一点的经纬度，知道另一点相对于此点的角度，距离。计算另一点的经纬度信息对于第一种计算，网上搜索到大概有三种：1．把地球当球体，根据球面公式计算2．根据公式d＝111.12c...</summary><published>2010-07-12T19:01:00Z</published><updated>2010-07-12T19:01:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2010/07/13/1776159.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2010/07/13/1776159.html"/><content type="html">&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;近期做一个与&lt;/span&gt;GRPS&lt;span style="font-family: 宋体"&gt;相关的应用，涉及到经纬度的计算，找资料时颇费了一番功夫，特此将其相关资料整理了一下，发布出来，希望对用到的同学有所帮助。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;闲话少说，经纬度计算主要有两种：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;知道两点的经纬度值，计算两点间的距离&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;知道一点的经纬度，知道另一点相对于此点的角度，距离。计算另一点的经纬度信息&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: 21pt"&gt;&lt;span style="font-family: 宋体"&gt;对于第一种计算，网上搜索到大概有三种：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"&gt;&lt;span&gt;1．&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;把地球当球体，根据球面公式计算&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"&gt;&lt;span&gt;2．&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;根据公式&lt;/span&gt;d&lt;span style="font-family: 宋体"&gt;＝&lt;/span&gt;111.12cos{1/[sin&lt;span style="font-family: 宋体"&gt;&amp;#934;&lt;/span&gt;Asin&lt;span style="font-family: 宋体"&gt;&amp;#934;&lt;/span&gt;B&lt;span style="font-family: 宋体"&gt;十&lt;/span&gt;cos&lt;span style="font-family: 宋体"&gt;&amp;#934;&lt;/span&gt;Acos&lt;span style="font-family: 宋体"&gt;&amp;#934;&lt;/span&gt;Bcos(&lt;span style="font-family: 宋体"&gt;&amp;#955;&lt;/span&gt;B&lt;span style="font-family: 宋体"&gt;&amp;#8212;&amp;#955;&lt;/span&gt;A)]} &lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 39pt"&gt;&lt;span style="font-family: 宋体"&gt;其中&lt;/span&gt;A&lt;span style="font-family: 宋体"&gt;点经度，纬度分别为&amp;#955;&lt;/span&gt;A&lt;span style="font-family: 宋体"&gt;和&amp;#934;&lt;/span&gt;A&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;B&lt;span style="font-family: 宋体"&gt;点的经度、纬度分别为&amp;#955;&lt;/span&gt;B&lt;span style="font-family: 宋体"&gt;和&amp;#934;&lt;/span&gt;B&lt;span style="font-family: 宋体"&gt;，&lt;/span&gt;d&lt;span style="font-family: 宋体"&gt;为距离。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 39pt"&gt;&lt;span style="font-family: 宋体"&gt;这个公司搜索结果挺多，在百度搜索&amp;#8220;经纬度&lt;/span&gt; &lt;span style="font-family: 宋体"&gt;计算距离&amp;#8221;，一二位都是这个公式。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"&gt;&lt;span&gt;3．&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;从&lt;/span&gt;Google&lt;span style="font-family: 宋体"&gt;地图中反推出的算法（详见参考文档&lt;/span&gt;1&lt;span style="font-family: 宋体"&gt;）。公式如下图&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="83" alt="" src="http://images.cnblogs.com/cnblogs_com/hellofox2000/image001.jpg" width="447" border="0" /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;第一种没做验证，第二种测试了一下，偏差较大（以圆明园、动物园之间的距离进行测定）目前采用的是第三种算法。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;对于第二种计算，找到的资料很少，倒是找到不少遇到相同问题的朋友。不过最终还是找到了（详见参考文档&lt;/span&gt;2&lt;span style="font-family: 宋体"&gt;）。并使用第一种计算进行反验证，偏差很小。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;整理后的代码如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;经纬度类&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('225925cf-1564-4771-bfb4-bf9bcfa4360f')"&gt;&lt;img  id="code_img_opened_225925cf-1564-4771-bfb4-bf9bcfa4360f" style="display: none" onclick="cnblogs_code_hide('225925cf-1564-4771-bfb4-bf9bcfa4360f',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div  id="cnblogs_code_open_225925cf-1564-4771-bfb4-bf9bcfa4360f"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Data;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Configuration;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Linq;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.Security;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI.HtmlControls;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI.WebControls;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI.WebControls.WebParts;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Xml.Linq;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GeoSite&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;经纬度表示类&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;经纬度计算主要有两种：&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;1.&amp;nbsp;知道两点的经纬度值，计算两点间的距离&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;2.&amp;nbsp;知道一点的经纬度，知道另一点相对于此点的角度，距离。计算另一点的经纬度信息&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://blog.csdn.net/fdnike/archive/2007/07/18/1696603.aspx&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;赤道半径&amp;nbsp;earth&amp;nbsp;radius&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;EARTH_RADIUS&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;6378137&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;极半径&amp;nbsp;polar&amp;nbsp;radius&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;POLAR_RADIUS&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;6356725&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;33&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;34&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;35&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;36&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;37&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon()&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;38&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;39&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;40&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;41&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;构造函数&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;42&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;43&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="lat"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;维度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;44&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="lon"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;经度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;45&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lat,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lon)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;46&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;47&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.Lat&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lat;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;48&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.Lon&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lon;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;49&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;50&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;51&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;52&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;纬度&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;53&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;54&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Lat&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;55&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;56&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;57&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;经度&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;58&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;59&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Lon&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;60&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;61&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;62&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;纬度的弧度&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;63&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;64&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;RadLat&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Lat&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.PI&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;65&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;66&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;67&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;经度的弧度&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;68&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;69&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;RadLon&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Lon&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.PI&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;70&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;71&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;72&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;?&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;73&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;74&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Ec&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;POLAR_RADIUS&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(EARTH_RADIUS&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;POLAR_RADIUS)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #800080"&gt;90&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Lat)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;90&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;75&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;76&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;77&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;?&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;78&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;79&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Ed&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Ec&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Cos(RadLat);&amp;nbsp;}&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;80&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;81&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;82&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;计算类:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('c21a23bb-4960-419a-88ee-15a9d6cb370b')"&gt;&lt;img  id="code_img_opened_c21a23bb-4960-419a-88ee-15a9d6cb370b" style="display: none" onclick="cnblogs_code_hide('c21a23bb-4960-419a-88ee-15a9d6cb370b',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div  id="cnblogs_code_open_c21a23bb-4960-419a-88ee-15a9d6cb370b"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;&#xD;
http://www.CodeHighlighter.com/&lt;br/ /&gt;&#xD;
&lt;br/ /&gt;&#xD;
--&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Data;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Configuration;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Linq;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.Security;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI.HtmlControls;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI.WebControls;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;10&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Web.UI.WebControls.WebParts;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;11&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Xml.Linq;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;12&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;13&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GeoSite&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;14&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;15&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;16&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Geo辅助类&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;17&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;18&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GeoHelper&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;19&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;20&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;21&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;根据两点的经纬度计算两点距离&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;22&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;可参考:通过经纬度计算距离的公式&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://www.storyday.com/html/y2009/2212_according-to-latitude-and-longitude-distance-calculation-formula.html&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;23&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;24&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="src"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;A点维度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;25&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="dest"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点经度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;26&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;27&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetDistance(LatLon&amp;nbsp;src,&amp;nbsp;LatLon&amp;nbsp;dest)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;28&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;29&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Math.Abs(src.Lat)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;90&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;||&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Abs(dest.Lat)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;90&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;||&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Abs(src.Lon)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;||&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Abs(dest.Lon)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;30&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ArgumentException(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;经纬度信息不正确！&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;31&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;32&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;latDis&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;src.RadLat&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dest.RadLat;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;33&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lonDis&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;src.RadLon&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dest.RadLon;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;34&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;35&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(latDis&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Cos(src.Lat)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Cos(dest.Lat)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Pow(Math.Sin(lonDis&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;)));&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;36&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon.EARTH_RADIUS&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1000&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;37&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Round(s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;10000&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;10000&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;38&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;39&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;s;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;40&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;41&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;42&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;43&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;根据两点的经纬度计算两点距离&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;44&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;可参考:通过经纬度计算距离的公式&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline"&gt;http://www.storyday.com/html/y2009/2212_according-to-latitude-and-longitude-distance-calculation-formula.html&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;45&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;46&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="lat1"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;A点维度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;47&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="lon1"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;A点经度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;48&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="lat2"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点维度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;49&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="lon2"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点经度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;50&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;51&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetDistance(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lat1,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lon1,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lat2,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lon2)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;52&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;53&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LatLon&amp;nbsp;src&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon(lat1,&amp;nbsp;lon1);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;54&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LatLon&amp;nbsp;dest&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon(lat2,&amp;nbsp;lon2);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;55&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetDistance(src,&amp;nbsp;dest);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;56&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;57&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;58&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;59&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;60&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;已知点A经纬度，根据B点据A点的距离，和方位，求B点的经纬度&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;61&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;62&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="a"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;已知点A&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;63&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="distance"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点到A点的距离&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;64&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="angle"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点相对于A点的方位，12点钟方向为零度，角度顺时针增加&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;65&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点的经纬度坐标&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;66&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon&amp;nbsp;GetLatLon(LatLon&amp;nbsp;a,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;distance,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;angle)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;67&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;68&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dx&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;distance&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1000&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Sin(angle&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.PI&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;69&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dy&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;distance&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;1000&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Cos(angle&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.PI&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;70&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;71&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lon&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(dx&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;a.Ed&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;a.RadLon)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.PI;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;72&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;lat&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(dy&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;a.Ec&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;a.RadLat)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;180&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.PI;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;73&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;74&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LatLon&amp;nbsp;b&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon(lat,&amp;nbsp;lon);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;75&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;b;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;76&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;77&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;78&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;79&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;已知点A经纬度，根据B点据A点的距离，和方位，求B点的经纬度&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;80&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;81&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="longitude"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;已知点A经度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;82&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="latitude"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;已知点A纬度&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;83&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="distance"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点到A点的距离&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;84&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;param&amp;nbsp;name="angle"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点相对于A点的方位，12点钟方向为零度，角度顺时针增加&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;85&lt;/span&gt;&amp;nbsp;&lt;span style="color: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;B点的经纬度坐标&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;86&lt;/span&gt;&amp;nbsp;&lt;span style="color: #808080"&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon&amp;nbsp;GetLatLon(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;longitude,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;latitude,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;distance,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;angle)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;87&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;88&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LatLon&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LatLon(latitude,&amp;nbsp;longitude);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;89&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetLatLon(a,&amp;nbsp;distance,&amp;nbsp;angle);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;90&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;91&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;92&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080"&gt;93&lt;/span&gt;&amp;nbsp;&lt;span style="color: #000000"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;示例运行结果：&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;img height="366" alt="" src="http://images.cnblogs.com/cnblogs_com/hellofox2000/image002.png" width="628" border="0" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;strong&gt;参考文档：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"&gt;&lt;span&gt;1．&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;通过经纬度计算距离的公式&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.storyday.com/html/y2009/2212_according-to-latitude-and-longitude-distance-calculation-formula.html" target="_blank"&gt;http://www.storyday.com/html/y2009/2212_according-to-latitude-and-longitude-distance-calculation-formula.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"&gt;&lt;span&gt;2．&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;经纬度距离计算&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blog.csdn.net/fdnike/archive/2007/07/18/1696603.aspx" target="_blank"&gt;http://blog.csdn.net/fdnike/archive/2007/07/18/1696603.aspx&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;开发环境：&lt;/span&gt;VS2008&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 宋体"&gt;&lt;a title="经纬度计算代码下载" href="http://files.cnblogs.com/hellofox2000/GeoSite.rar" target="_blank"&gt;经纬度计算代码下载&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hellofox2000/aggbug/1776159.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hellofox2000/archive/2010/07/13/1776159.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2009/08/20/1550489.html</id><title type="text">使用JS闭包特性模拟的多线程</title><summary type="text">在最近的项目中，为了实现对各节点状态的同时监控，结合js中的setInterval和闭包特性，模拟实现了C#中的多线程，从而实现了同时监控各节点状态，希望能对大家的开发有所帮助。</summary><published>2009-08-20T03:36:00Z</published><updated>2009-08-20T03:36:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2009/08/20/1550489.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2009/08/20/1550489.html"/></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2008/06/30/1232648.html</id><title type="text">招聘OA工程师</title><summary type="text"/><published>2008-06-30T10:07:00Z</published><updated>2008-06-30T10:07:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2008/06/30/1232648.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2008/06/30/1232648.html"/></entry><entry><id>http://www.cnblogs.com/hellofox2000/archive/2008/06/25/1229566.html</id><title type="text">Discuz!NT 系统架构分析</title><summary type="text">对Discuz!NT论坛的架构和程序上的分析。主要从整体架构，皮肤实现，数据库访问与设计等方面进行了简单介绍。</summary><published>2008-06-25T04:35:00Z</published><updated>2008-06-25T04:35:00Z</updated><author><name>韩龙</name><uri>http://www.cnblogs.com/hellofox2000/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hellofox2000/archive/2008/06/25/1229566.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hellofox2000/archive/2008/06/25/1229566.html"/></entry></feed>
