<?xml version="1.0" encoding="utf-8" ?>
<!-- generator="crazycoder cms 1.0(beta)" -->
<rss version="2.0" xmlns:sns="http://www.crazycoder.cn/rss/news">
	<channel>
		<title>疯狂代码</title>
		<description>专注于互联网</description>
		<link>http://CrazyCoder.cn/</link>
		<lastBuildDate>2010-03-13</lastBuildDate>
		<generator>CrazyCoder 1.0(beta)</generator>
		<language>zh-cn</language>
		<copyright>Copyright 1996 - 2008 疯狂代码  All Rights Reserved.</copyright>
		<pubDate>2010-03-13</pubDate>
		<item>
			<title><![CDATA[struts中的action:初学者入门－－Structs中基本配置入门]]></title>
			<link>http://CrazyCoder.cn/Java/Article78981.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.为Structs应用配置Web.xml文件<br/>　　<br/>　　第<img src='/icons/14569yi.gif' />步:配置ActionServlet<br/>　　<br/>　　&lt; servlet&gt;<br/>　　&lt; servlet-name&gt;action&lt; /servlet-name&gt;<br/>　　&lt; servlet-<img src='/icons/14569class.gif' />&gt;org.appache.structs.ActionServlet&lt; /servlet-<img src='/icons/14569class.gif' />&gt;<br/>　　&lt; /servlet&gt;<br/>　　<br/>　　&lt; servlet-mapping&gt;<br/>　　&lt; servlet-name&gt;action&lt; /servlet-name&gt;<br/>　　&lt; uri-pattern&gt;*.do&lt; /url-pattern&gt;<br/>　　&lt; /servlet-mapping&gt;<br/>　　<br/>　　注意:不管应用中包含多少个子应用,都只需配置<img src='/icons/14569yi.gif' />个ActionServlet,<img src='/icons/14569yinwei.gif' />ActionServlet支持多线程,目前<img src='/icons/14569de.gif' />Structs框架只允许在应用中配置<img src='/icons/14569yi.gif' />个ActionServlet<img src='/icons/14569dou2.gif' /><br/>　　<br/>　　第 2步:<img src='/icons/14569chushi.gif' />化参数对Servlet<img src='/icons/14569de.gif' />运行环境进行<img src='/icons/14569chushi.gif' />化配置<img src='/icons/14569dou2.gif' /><br/>　　<br/>　　&lt; servlet&gt;<br/>　　&lt; servlet-name&gt; action&lt; /servlet-name&gt;<br/>　　&lt; servlet-<img src='/icons/14569class.gif' />&gt; org.appache.structs.ActionServlet &lt; /servlet-<img src='/icons/14569class.gif' />&gt;<br/>　　&lt; init-param&gt;<br/>　　&lt; param-name&gt;config&lt; /param-name&gt;<br/>　　&lt; param-value&gt;/WEB-INF/structs-config.xml&lt; /param-value&gt;<br/>　　&lt; /init-param&gt;<br/>　　&lt; /servlet&gt;<br/>　　<br/>　　表2-1. Struts1.1中用到<img src='/icons/14569de.gif' /><img src='/icons/14569chushi.gif' />化参数<br/>　　<br/>　　参数名　　　　　　 含义/默认值<br/>　　config　　　　　以相对路径<img src='/icons/14569de.gif' />方式指明Struts应用<img src='/icons/14569chengxu.gif' /><img src='/icons/14569de.gif' />配置文件位置<img src='/icons/14569dou2.gif' />如不设置<img src='/icons/14569dou.gif' />则默认值为/WEB-INF/struts-config.xml<img src='/icons/14569dou2.gif' /><br/>　　config/sub1　　 以相对路径<img src='/icons/14569de.gif' />方式指明子应用<img src='/icons/14569chengxu.gif' /><img src='/icons/14569de.gif' />配置文件位置<img src='/icons/14569dou.gif' /><img src='/icons/14569yi.gif' />般来说<img src='/icons/14569dou.gif' />很少用到子应用<img src='/icons/14569chengxu.gif' /><img src='/icons/14569dou.gif' />在此不多描述<img src='/icons/14569dou2.gif' /><br/>　　debug　　　　　 设置Servlet<img src='/icons/14569de.gif' />debug级别<img src='/icons/14569dou.gif' />控制日志记录<img src='/icons/14569de.gif' />详细程度<img src='/icons/14569dou2.gif' />默认为0<img src='/icons/14569dou.gif' />记录相对最少<img src='/icons/14569de.gif' />日志信息<img src='/icons/14569dou2.gif' /><br/>　　detail　　　　　设置Digester<img src='/icons/14569de.gif' />debug级别<img src='/icons/14569dou.gif' />Digester是Struts框架所使用<img src='/icons/14569de.gif' />用来解析xml配置文件<img src='/icons/14569de.gif' /><img src='/icons/14569yi.gif' />个框架<img src='/icons/14569dou.gif' />通过该设置<img src='/icons/14569dou.gif' />可以查看区别详细等级<img src='/icons/14569de.gif' />解析日志<img src='/icons/14569dou2.gif' />默认为0<img src='/icons/14569dou.gif' />记录相对最少<img src='/icons/14569de.gif' />日志信息<img src='/icons/14569dou2.gif' /><br/>　　<br/>　　第 3步:配置欢迎清单<br/>　　<br/>　　当客户访问Web应用时<img src='/icons/14569dou.gif' />如果仅仅给出Web应用<img src='/icons/14569de.gif' />Root URL<img src='/icons/14569dou.gif' />没用指定具体<img src='/icons/14569de.gif' />文件名<img src='/icons/14569dou.gif' />Web容器会自动<img src='/icons/14569diaoyong.gif' />Web应用<img src='/icons/14569de.gif' />欢迎文件<img src='/icons/14569dou2.gif' /><br/>　　<br/>　　&lt; welcome-file-list&gt;<br/>　　&lt; welcome-file&gt;welcome.jsp&lt; /welcome-file&gt;<br/>　　&lt; welcome-file&gt;index.jsp&lt; /welcome-file&gt;<br/>　　&lt; /welcome-fiel-list&gt;<br/>　　<br/>　　介绍说明:&lt; welcome-file-list&gt;可以包含多个&lt; welcome-file&gt;子元素<img src='/icons/14569dou.gif' />首先查找第<img src='/icons/14569yi.gif' />个&lt; welcome-file&gt;文件<img src='/icons/14569dou2.gif' />

<br/>

<span <img src='/icons/14569class.gif' />="xspace-totlerecord">3</span><span <img src='/icons/14569class.gif' />="xspace-totlepages">1/3</span><span <img src='/icons/14569class.gif' />="xspace-current">1</span>23&gt;<br/> <a href="/mypdf/78981.pdf" title="查看 struts中的action:初学者入门－－Structs中基本配置入门 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>Java教程</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Java/Article78981.html</guid>
		</item>
		<item>
			<title><![CDATA[springintegration:OpenCredo宣布为Spring Integration增加AMQP支持]]></title>
			<link>http://CrazyCoder.cn/Java/Article78980.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenCredo是<img src='/icons/59169yi.gif' />家咨询公司<img src='/icons/59169dou.gif' />由Jonas Partner和Russ Miles创建<img src='/icons/59169dou.gif' />近日发布了<img src='/icons/59169yi.gif' />个开源<img src='/icons/59169de.gif' />适配器——可以让Spring Integration应用和AMQP端点协同工作<img src='/icons/59169dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Advanced Message Queuing Protocol(AMQP)是个平台中立<img src='/icons/59169de.gif' />规范标准<img src='/icons/59169dou.gif' />描述了面向客户<img src='/icons/59169de.gif' />消息中间件<img src='/icons/59169dou.gif' />作为<img src='/icons/59169yi.gif' />个线级协议(wire-level<img src='/icons/59169dou.gif' />该协议是对以 8进制数据流在网络上进行传输<img src='/icons/59169de.gif' />数据格式<img src='/icons/59169de.gif' />描述——译者注)<img src='/icons/59169dou.gif' />它并没有规定API<img src='/icons/59169de.gif' />实现细节<img src='/icons/59169dou2.gif' />大家可以将其看作是适合于异步消息<img src='/icons/59169de.gif' />特定协议<img src='/icons/59169dou2.gif' />任何客户端都可以实现它<img src='/icons/59169dou.gif' />包括JMS API<img src='/icons/59169dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RabbitMQ是个面向消息<img src='/icons/59169de.gif' />中间件(MOM)产品<img src='/icons/59169dou.gif' />使用Erlang开发<img src='/icons/59169dou.gif' />因此能够充分利用Erlang语言优秀<img src='/icons/59169de.gif' />线程和多核能力<img src='/icons/59169dou.gif' />可以无缝地将单VM上<img src='/icons/59169de.gif' />并发代码转换为跨越多个物理节点<img src='/icons/59169de.gif' />分布式应用<img src='/icons/59169dou2.gif' />RabbitMQ并没有提供JMS客户端<img src='/icons/59169dou.gif' />但却提供了AMQP客户端<img src='/icons/59169dou2.gif' />RabbitMQ并不是唯<img src='/icons/59169yi.gif' /><img src='/icons/59169yi.gif' />个考虑到可伸缩性而使用Erlang进行开发<img src='/icons/59169de.gif' />中间件产品<img src='/icons/59169dou.gif' />ejbabberd(XMPP远程消息服务器)、CouchDB(文档数据库)以及Amazon<img src='/icons/59169de.gif' />SimpleDB(分布式数据库)都是使用Erlang进行开发<img src='/icons/59169de.gif' /><img src='/icons/59169dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 虽然JMS是Java客户端和消息中间件进行互联<img src='/icons/59169de.gif' />标准机制<img src='/icons/59169dou.gif' />使用也非常广泛<img src='/icons/59169dou.gif' />但它却并非是唯<img src='/icons/59169yi.gif' />的选<img src='/icons/59169dou2.gif' />AMQP也为Java用户提供了优秀<img src='/icons/59169de.gif' />消息解决方案<img src='/icons/59169dou2.gif' />OpenCredo<img src='/icons/59169de.gif' />声明——集成AMQP和Spring Integration框架——阐明了如何通过Spring框架将基于AMQP<img src='/icons/59169de.gif' />消息系统引入到企业当中<img src='/icons/59169dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Spring Integration构建在Spring框架的上<img src='/icons/59169dou.gif' />提供了面向消息<img src='/icons/59169de.gif' />解决方案<img src='/icons/59169dou.gif' />非常类似于ESB；它提供<img src='/icons/59169de.gif' />适配器可以让代码响应外部系统事件<img src='/icons/59169dou.gif' />这和EJB中<img src='/icons/59169de.gif' />Message Driven Bean或是Spring中<img src='/icons/59169de.gif' />Message Driven POJO非常像<img src='/icons/59169dou2.gif' />OpenCredo框架<img src='/icons/59169de.gif' />目标在于为各种区别<img src='/icons/59169de.gif' />本地Java AMQP客户端提供<img src='/icons/59169yi.gif' />致<img src='/icons/59169de.gif' />使用方式<img src='/icons/59169dou.gif' />同时将其挂接(hook)到Spring Integration总线上<img src='/icons/59169dou2.gif' />目前<img src='/icons/59169dou.gif' />该支持包装了RabbitMQ AMQP Java客户端并通过Spring Integration创建了<img src='/icons/59169yi.gif' />个间接层以将逻辑和消息系统进行解耦<img src='/icons/59169dou2.gif' />重要<img src='/icons/59169de.gif' />是<img src='/icons/59169dou.gif' />AMQP是个开放、线级协议<img src='/icons/59169dou.gif' />这样<img src='/icons/59169yi.gif' />个客户端就能和多个厂商协同工作<img src='/icons/59169dou.gif' />而JMS客户端则只能绑定到固定版本<img src='/icons/59169de.gif' />JMS服务器上<img src='/icons/59169dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenCredo和RabbitMQ CEO Alexis Richardson和RabbitMQ团队(Team)通力合作实现了该支持并计划对其进行不断升级<img src='/icons/59169dou2.gif' />其任务列表中还准备提供对事件驱动(和基于轮询<img src='/icons/59169de.gif' />方式相反)客户端<img src='/icons/59169de.gif' />支持以及为客户端提供声明式<img src='/icons/59169de.gif' />Spring事务管理支持<img src='/icons/59169dou2.gif' />最近OpenCredo宣布联合Spring Integration以提供对Esper(<img src='/icons/59169yi.gif' />个Complex Event Processing方案)<img src='/icons/59169de.gif' />支持<img src='/icons/59169dou2.gif' />OpenCredo通过和简单、以POJO为中心<img src='/icons/59169de.gif' />Spring Integration<img src='/icons/59169de.gif' />联手合作<img src='/icons/59169dou.gif' />为Esper<img src='/icons/59169de.gif' />支持提供了强大<img src='/icons/59169de.gif' />消息和监控能力<img src='/icons/59169dou2.gif' /><br/><br/>
 <a href="/mypdf/78980.pdf" title="查看 springintegration:OpenCredo宣布为Spring Integration增加AMQP支持 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>Java教程</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Java/Article78980.html</guid>
		</item>
		<item>
			<title><![CDATA[java敏捷开发:敏捷开发中编写高质量Java代码(图)]]></title>
			<link>http://CrazyCoder.cn/Java/Article78979.html</link>
			<description>
				<![CDATA[

　&nbsp;&nbsp;&nbsp; 敏捷开发<img src='/icons/65708de.gif' />理念已经流行了很长<img src='/icons/65708de.gif' />时间<img src='/icons/65708dou.gif' />在敏捷开发中<img src='/icons/65708de.gif' />开发迭代阶段中<img src='/icons/65708dou.gif' />我们可以通过 5个步骤<img src='/icons/65708dou.gif' />来有效<img src='/icons/65708de.gif' />提高整个项目<img src='/icons/65708de.gif' />代码质量<img src='/icons/65708dou2.gif' /> 
　　Java项目开发过程中<img src='/icons/65708dou.gif' />由于开发人员<img src='/icons/65708de.gif' />经验、Java代码编写习惯<img src='/icons/65708dou.gif' />以及缺乏统<img src='/icons/65708yi.gif' /><img src='/icons/65708de.gif' />标准和管理流程<img src='/icons/65708dou.gif' />往往导致整个项目<img src='/icons/65708de.gif' />代码质量较差<img src='/icons/65708dou.gif' />难于维护<img src='/icons/65708dou.gif' />需要较大<img src='/icons/65708de.gif' />测试投入和周期等问题<img src='/icons/65708dou2.gif' />这些问题在<img src='/icons/65708yi.gif' />个项目组初建、需求和设计均具有不完全可预期性和完备性<img src='/icons/65708de.gif' />全新项目中将尤为突出<img src='/icons/65708dou2.gif' /><br/><br/>
　　如图1所示<img src='/icons/65708dou.gif' />敏捷开发过程经历需求调研<img src='/icons/65708dou.gif' />用例分析和用例分解<img src='/icons/65708dou.gif' />进入开发迭代阶段<img src='/icons/65708dou2.gif' />在每个迭代过程中<img src='/icons/65708dou.gif' />可以采用以下步骤来保证和提高整个项目<img src='/icons/65708de.gif' />代码质量:统<img src='/icons/65708yi.gif' />编码规范标准、代码样式;静态代码分析(<img src='/icons/65708static.gif' />codereview);单元测试;持续集成;代码评审和重构(Review&amp;Refactor)<img src='/icons/65708dou2.gif' />下文将针对每个步骤和其所使用<img src='/icons/65708de.gif' />工具、思路方法进行详细描述<img src='/icons/65708dou2.gif' /><br/><br/>
　　<br/><br/>
<IMG src="http://CrazyCoder.cn/WebFiles/20103/9a4e4807-eaae-4daa-855a-875be98a860d.jpg" border=0><br/><br/>
<br/><br/>
　　图1.敏捷开发中<img src='/icons/65708de.gif' />Java代码质量保证步骤<br/><br/>
<STRONG>　　步骤<img src='/icons/65708yi.gif' />:统<img src='/icons/65708yi.gif' />编码规范标准、代码样式</STRONG><br/><br/>
　　规范标准统<img src='/icons/65708yi.gif' /><img src='/icons/65708de.gif' />编码会增加项目代码<img src='/icons/65708de.gif' />可读性和可维护性<img src='/icons/65708dou.gif' />但实际情况往往是项目组内<img src='/icons/65708de.gif' />Java代码开发人员<img src='/icons/65708de.gif' />编码风格常常各不相同<img src='/icons/65708dou.gif' />这可能是由于区别<img src='/icons/65708de.gif' />经验习惯或者缺乏编码规范标准方面<img src='/icons/65708de.gif' />学习造成<img src='/icons/65708de.gif' /><img src='/icons/65708dou2.gif' />这样<img src='/icons/65708yi.gif' />来<img src='/icons/65708dou.gif' />其他项目成员或者维护人员在阅读项目代码时就需要花费更多<img src='/icons/65708de.gif' />时间来理解代码作者<img src='/icons/65708de.gif' />意图<img src='/icons/65708dou.gif' />所以制定并采取统<img src='/icons/65708yi.gif' /><img src='/icons/65708de.gif' />编码规范标准就显得很重要<img src='/icons/65708dou2.gif' />编码规范标准主要应包含以下几个方面:<br/><br/>
　　◆<img src='/icons/65708yi.gif' />般规则和格式规范标准<img src='/icons/65708dou2.gif' />例如代码缩进、<img src='/icons/65708chengxu.gif' />块规范标准、每行最大代码长度等<img src='/icons/65708dou2.gif' /><br/><br/>
　　◆命名规则<img src='/icons/65708dou2.gif' />例如包名、类名、变量、思路方法、接口、参数等命名规范标准<br/><br/>
　　◆文档规范标准<img src='/icons/65708dou2.gif' />例如类文件头声明、类注释、成员变量和思路方法注释等规范标准<img src='/icons/65708dou2.gif' /><br/><br/>
　　◆编程规范标准<img src='/icons/65708dou2.gif' />例如异常、并发、多线程等方面<img src='/icons/65708de.gif' />处理方式<img src='/icons/65708dou2.gif' /><br/><br/>
　　◆其他规范标准<img src='/icons/65708dou2.gif' />例如日志格式、属性文件格式<img src='/icons/65708dou.gif' />返回值和消息格式<img src='/icons/65708dou2.gif' /><br/><br/>
　　项目<img src='/icons/65708de.gif' />编码规范标准可以参考已有<img src='/icons/65708de.gif' /><img src='/icons/65708yi.gif' />些Java编程规范标准书籍和其他相关资料并结合项目<img src='/icons/65708de.gif' />本身来制定<img src='/icons/65708dou.gif' />可供参考<img src='/icons/65708de.gif' />书籍有<img src='/icons/65708smhl.gif' />Java编程风格<img src='/icons/65708smhr.gif' />(英文书名为:TheElementsofJavaStyle)<img src='/icons/65708dou2.gif' />编码规范标准要形成文档<img src='/icons/65708dou.gif' />而且要简洁明了<img src='/icons/65708dou.gif' />并组织项目成员<img src='/icons/65708yi.gif' />起学习<img src='/icons/65708dou.gif' />确保所有成员正确理解所有条目<img src='/icons/65708dou2.gif' /><br/><br/>
　　<img src='/icons/65708yi.gif' />旦编码规范标准确定<img src='/icons/65708dou.gif' />就可以利用Eclipse自身提供<img src='/icons/65708de.gif' />功能来控制代码样式和格式<img src='/icons/65708dou2.gif' />具体做法是<img src='/icons/65708dou.gif' />点击Eclipse<img src='/icons/65708de.gif' />Windows-&gt;Preference菜单项<img src='/icons/65708dou.gif' />在打开<img src='/icons/65708de.gif' />Preferences对话框<img src='/icons/65708de.gif' />左侧栏中找到Java节点下<img src='/icons/65708de.gif' />子项CodeStyle(如图2)<img src='/icons/65708dou.gif' />该项和它<img src='/icons/65708de.gif' />子项允许您对Java代码<img src='/icons/65708de.gif' />样式进行控制<img src='/icons/65708dou2.gif' /><br/><br/>
　　<IMG style="DISPLAY: block; MARGIN: 0px auto; TEXT-ALIGN: center" height=394 alt=Eclipse代码样式设置窗口 src="http://CrazyCoder.cn/WebFiles/20103/4f0e4890-3e59-4422-871a-d1ac5c821d7e.jpg" width=498><br/><br/>
　　图2.Eclipse代码样式设置窗口<br/><br/>
　　例如<img src='/icons/65708dou.gif' />为了使用自动格式化工具<img src='/icons/65708dou.gif' />可以在Eclipse提供<img src='/icons/65708de.gif' />默认代码格式配置<img src='/icons/65708de.gif' />基础上建立自定义<img src='/icons/65708de.gif' />格式<img src='/icons/65708dou2.gif' />在Formatter面板中<img src='/icons/65708dou.gif' />点击New<img src='/icons/65708dou.gif' />输入新<img src='/icons/65708de.gif' />名字并选择<img src='/icons/65708yi.gif' />个默认<img src='/icons/65708de.gif' />配置作为<img src='/icons/65708chushi.gif' />化格式<img src='/icons/65708dou.gif' />如图3所示<img src='/icons/65708dou2.gif' /><br/><br/>
　　<IMG style="DISPLAY: block; MARGIN: 0px auto; TEXT-ALIGN: center" height=468 alt=创建新<img src='/icons/65708de.gif' />代码格式配置 src="http://CrazyCoder.cn/WebFiles/20103/a03ef57b-b18b-45a9-ba4e-3990522be8f9.jpg" width=498><br/><br/>
　　图3.创建新<img src='/icons/65708de.gif' />代码格式配置<br/><br/>
　　单击OK后就可以在新打开<img src='/icons/65708de.gif' />窗口中进行修改定制自己需要<img src='/icons/65708de.gif' />格式<img src='/icons/65708dou2.gif' />如图4所示<img src='/icons/65708dou2.gif' /><br/><br/>
　　<IMG style="DISPLAY: block; MARGIN: 0px auto; TEXT-ALIGN: center" height=515 alt=创建新<img src='/icons/65708de.gif' />代码格式配置 src="http://CrazyCoder.cn/WebFiles/20103/961e5e9c-0eff-425b-9eeb-fe37ed3c1f4d.jpg" width=498><br/><br/>
　　图4.创建新<img src='/icons/65708de.gif' />代码格式配置<br/><br/>
　　修改完成后点击Apply保存所作修改<img src='/icons/65708dou2.gif' />同时可以点击Export将当前<img src='/icons/65708de.gif' />格式定义导出成<img src='/icons/65708yi.gif' />个XML文件<img src='/icons/65708dou.gif' />这样项目组<img src='/icons/65708de.gif' />其他成员就可以很方便通过点击图3中<img src='/icons/65708de.gif' />Import按钮来导入该XML文件来使用同<img src='/icons/65708yi.gif' />个代码格式定义<img src='/icons/65708dou2.gif' /><br/><br/>
　　这样每次在提交代码到版本控制服务器前就可以通过Eclipse界面里<img src='/icons/65708de.gif' />Source-&gt;Format菜单来对代码进行格式化<img src='/icons/65708dou.gif' />从而使整个项目<img src='/icons/65708de.gif' />代码具有相同<img src='/icons/65708de.gif' />格式<img src='/icons/65708dou2.gif' />同样可以通过对CodeStyle下<img src='/icons/65708de.gif' />其他项目进行设置来帮助对Java代码<img src='/icons/65708de.gif' />样式进行控制<img src='/icons/65708dou2.gif' />将所有这些样式文件导出成XML文件后<img src='/icons/65708dou.gif' />同编码规范标准<img src='/icons/65708yi.gif' />起归档<img src='/icons/65708dou.gif' />供所有项目成员使用<img src='/icons/65708dou2.gif' /><br/><br/>
<br/><br/>
<br/>

<span <img src='/icons/65708class.gif' />="xspace-totlerecord">5</span><span <img src='/icons/65708class.gif' />="xspace-totlepages">1/5</span><span <img src='/icons/65708class.gif' />="xspace-current">1</span>2345&gt;<br/> <a href="/mypdf/78979.pdf" title="查看 java敏捷开发:敏捷开发中编写高质量Java代码(图) 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>Java教程</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Java/Article78979.html</guid>
		</item>
		<item>
			<title><![CDATA[云计算:云计算呼唤基于事件的API]]></title>
			<link>http://CrazyCoder.cn/Java/Article78978.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引自 William Vambenepe<img src='/icons/14779de.gif' />说法:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 至少从发出第<img src='/icons/14779yi.gif' />个SNMP自陷起<img src='/icons/14779dou.gif' />事件/警报/通知在IT管理领域已经成为中心<img src='/icons/14779de.gif' />概念<img src='/icons/14779dou.gif' />甚至有可能比这更旧远<img src='/icons/14779dou2.gif' />然而它们在所有<img src='/icons/14779de.gif' />云管理API/协议中神奇<img src='/icons/14779de.gif' />蒸发了<img src='/icons/14779dou2.gif' /> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然而现今大部分云管理API都是基于轮询<img src='/icons/14779de.gif' /><img src='/icons/14779dou2.gif' />按照George Reese<img src='/icons/14779de.gif' />说法<img src='/icons/14779dou.gif' />这样<img src='/icons/14779de.gif' />轮询方式:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...造成<img src='/icons/14779de.gif' />结果就是对CPU能力<img src='/icons/14779de.gif' />极大<img src='/icons/14779de.gif' />效率浪费...不仅是对云计算供应商<img src='/icons/14779dou.gif' />同时也会浪费双方<img src='/icons/14779de.gif' />带宽<img src='/icons/14779dou2.gif' />我们当然会进行各种优化以尽量避免轮询...[但]这<img src='/icons/14779yi.gif' />底线仍存在<img src='/icons/14779dou.gif' />无论如何<img src='/icons/14779dou.gif' />我们大多数<img src='/icons/14779de.gif' /><img src='/icons/14779diaoyong.gif' />白白浪费了<img src='/icons/14779dou2.gif' /> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了解决这<img src='/icons/14779yi.gif' />问题<img src='/icons/14779dou.gif' />Reeser提出<img src='/icons/14779yi.gif' />种事件驱动API<img src='/icons/14779de.gif' />解决的道<img src='/icons/14779dou.gif' />由"云计算供应商通知我们所关心<img src='/icons/14779de.gif' />资源<img src='/icons/14779de.gif' />变更"<img src='/icons/14779dou.gif' />他可以还注意了该提案可能会遇到了<img src='/icons/14779yi.gif' />些挑战:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img src='/icons/14779yi.gif' />个事件驱动<img src='/icons/14779de.gif' />API要求<img src='/icons/14779yi.gif' />定层次<img src='/icons/14779de.gif' />标准化<img src='/icons/14779dou.gif' />而这种标准化目前在云计算领域还不具备<img src='/icons/14779dou.gif' />你不能让每个消费者都设计他们自己<img src='/icons/14779de.gif' />回调API<img src='/icons/14779dou.gif' />而且就算支持跨云系统<img src='/icons/14779de.gif' /><img src='/icons/14779diaoyong.gif' /><img src='/icons/14779dou.gif' />每个云计算供应商设计其自己<img src='/icons/14779de.gif' />回调协议仍然是有问题<img src='/icons/14779de.gif' /><img src='/icons/14779dou2.gif' /> 你不能通过回调来提供数据<img src='/icons/14779dou.gif' /><img src='/icons/14779yinwei.gif' />提供数据要求逆向<img src='/icons/14779de.gif' />身份验证<img src='/icons/14779dou.gif' />这将会使整个流程复杂化<img src='/icons/14779dou2.gif' /> 最后<img src='/icons/14779dou.gif' />消费者无法完全信赖回调API<img src='/icons/14779dou2.gif' />仍然需要创建自己<img src='/icons/14779de.gif' /><img src='/icons/14779diaoyong.gif' />以验证云计算供应商在真实有效<img src='/icons/14779de.gif' />合理运作<img src='/icons/14779dou2.gif' /> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于这些挑战<img src='/icons/14779dou.gif' />Reese提出了<img src='/icons/14779yi.gif' />些简单<img src='/icons/14779de.gif' />解决方案:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引入标准<img src='/icons/14779de.gif' />回调格式(应当非常简洁<img src='/icons/14779dou.gif' />比如像这样[consumer-base]/[as<img src='/icons/14779set.gif' /> <img src='/icons/14779class.gif' />]/[id]) 将回调事件集成到现有<img src='/icons/14779de.gif' />云API中<img src='/icons/14779dou2.gif' /> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基于他在WS-Not<img src='/icons/14779if.gif' />ication系列规范标准方面<img src='/icons/14779de.gif' />工作<img src='/icons/14779dou.gif' />Vambenepe强烈支持简单API<img src='/icons/14779de.gif' />设想<img src='/icons/14779dou2.gif' />按照他<img src='/icons/14779de.gif' />观点<img src='/icons/14779dou.gif' />以云计算为中心<img src='/icons/14779de.gif' />事件协议可以通过关注于少量<img src='/icons/14779de.gif' />用例(仅针对云计算场景)而得以简化<img src='/icons/14779dou2.gif' />在Vambenepe<img src='/icons/14779de.gif' />观点中<img src='/icons/14779dou.gif' />以下<img src='/icons/14779de.gif' />元素可以被用作云计算事件实现<img src='/icons/14779de.gif' />根基:<br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 事件<img src='/icons/14779de.gif' />类型<img src='/icons/14779dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 客户端应当能够指明它所感兴趣<img src='/icons/14779de.gif' />是什么类型<img src='/icons/14779de.gif' />资源信息<img src='/icons/14779dou2.gif' /> 你如何描述你所关心<img src='/icons/14779de.gif' />变更？是否有<img src='/icons/14779yi.gif' />个达成<img src='/icons/14779yi.gif' />致<img src='/icons/14779de.gif' />状态集<img src='/icons/14779dou.gif' />而对于资源你仅需要在状态转换才收到通知？你是否能够指明<img src='/icons/14779yi.gif' />个激发<img src='/icons/14779yi.gif' />个事情<img src='/icons/14779de.gif' />最小严重性等级？...在Vambenepe看来WS-Topics展现了解决这<img src='/icons/14779yi.gif' />问题<img src='/icons/14779de.gif' />最佳方案<img src='/icons/14779dou2.gif' /> <br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *事件格式<img src='/icons/14779dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 云事件应当符合<img src='/icons/14779yi.gif' />个标准<img src='/icons/14779de.gif' />事件模型定义: 事件元数据是如何被捕捉<img src='/icons/14779de.gif' />(如<img src='/icons/14779dou.gif' />观察<img src='/icons/14779de.gif' />时间戳<img src='/icons/14779dou.gif' />也许和通知消息发出<img src='/icons/14779de.gif' />时间不<img src='/icons/14779yi.gif' />样)？如果事件<img src='/icons/14779de.gif' />负载是资源新状态<img src='/icons/14779de.gif' />表示<img src='/icons/14779dou.gif' />那么它能否指明域<img src='/icons/14779de.gif' />变更(原来<img src='/icons/14779de.gif' />值是什么)？<br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *订阅创建<img src='/icons/14779dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 需要创建<img src='/icons/14779yi.gif' />个标准<img src='/icons/14779de.gif' />订阅机制<img src='/icons/14779dou.gif' />考虑如下问题: 你需要变更订阅载体所用<img src='/icons/14779de.gif' />过滤器吗？你能更改投递<img src='/icons/14779de.gif' />端点吗？...来谁来设置过期时间？提供者能否设置最大<img src='/icons/14779de.gif' />持续时间？是否能续订<img src='/icons/14779yi.gif' />个订阅...？如果你<img src='/icons/14779de.gif' />订阅<img src='/icons/14779yinwei.gif' />投递端点下线而失效了如何办？...你订阅<img src='/icons/14779de.gif' />时候能够提供<img src='/icons/14779yi.gif' />个单独<img src='/icons/14779de.gif' />...订阅管理...端点(和事件投递端点区别开)吗？<br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *投递机制<img src='/icons/14779dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 事件投递有许多选择<img src='/icons/14779dou.gif' />从永久性<img src='/icons/14779de.gif' />开放HTTP连接(和COMET长轮询相似)到HTTP回调URL<img src='/icons/14779dou.gif' />以及AMQP,或是电子邮件<img src='/icons/14779dou2.gif' /> <br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *安全<img src='/icons/14779dou2.gif' />取决于投递机制<img src='/icons/14779dou.gif' />可能会需要区别<img src='/icons/14779de.gif' />安全实现<img src='/icons/14779dou2.gif' /> <br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *流量控制<img src='/icons/14779dou2.gif' /><img src='/icons/14779yi.gif' />个事件实现应该保证<img src='/icons/14779dou.gif' />不管是资源还是消费者都不会被发出/接收到<img src='/icons/14779de.gif' />事件洪流淹没<img src='/icons/14779dou2.gif' /> <br/><br/>
如InfoQ早前曾为你报道过<img src='/icons/14779de.gif' />那样<img src='/icons/14779dou.gif' />异步API对于云计算非常重要<img src='/icons/14779dou2.gif' />引入完整<img src='/icons/14779de.gif' />事件协议可以解决这<img src='/icons/14779yi.gif' />问题和附带<img src='/icons/14779de.gif' />问题<img src='/icons/14779dou2.gif' />希望这<img src='/icons/14779yi.gif' />规范标准<img src='/icons/14779de.gif' />作者可以吸取WS-Not<img src='/icons/14779if.gif' />ication<img src='/icons/14779de.gif' />经验<img src='/icons/14779dou.gif' />创造出<img src='/icons/14779yi.gif' />个不以牺牲覆盖性和延伸范围<img src='/icons/14779de.gif' />简单协议<img src='/icons/14779dou2.gif' /><br/><br/>
 <a href="/mypdf/78978.pdf" title="查看 云计算:云计算呼唤基于事件的API 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>Java教程</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Java/Article78978.html</guid>
		</item>
		<item>
			<title><![CDATA[基于soa:基于SOA的企业信息共享研究]]></title>
			<link>http://CrazyCoder.cn/Java/Article78977.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先分析了企业信息化建设中存在<img src='/icons/43018de.gif' />信息孤岛问题<img src='/icons/43018dou.gif' />以及采用面向服务架构<img src='/icons/43018de.gif' />优势所在<img src='/icons/43018dou.gif' />进而给出了基于SOA<img src='/icons/43018de.gif' />企业信息共享平台<img src='/icons/43018de.gif' />技术架构<img src='/icons/43018dou.gif' />该架构能有效整合企业内部<img src='/icons/43018de.gif' />信息系统<img src='/icons/43018dou.gif' />安全快捷地实现企业信息<img src='/icons/43018de.gif' />共享<img src='/icons/43018dou.gif' />并进<img src='/icons/43018yi.gif' />步扩展企业信息共享<img src='/icons/43018de.gif' />范围<img src='/icons/43018dou2.gif' />
　　<STRONG><img src='/icons/43018yi.gif' />、企业信息化建设中存在<img src='/icons/43018de.gif' />问题</STRONG><br/><br/>
　　我国企业信息化建设始于20世纪80年代<img src='/icons/43018dou.gif' />目前大部分企业已经建立了各种各样<img src='/icons/43018de.gif' />应用系统<img src='/icons/43018dou.gif' />对提高企业<img src='/icons/43018de.gif' />管理水平和市场竞争力起到了巨大<img src='/icons/43018de.gif' />作用<img src='/icons/43018dou2.gif' />然而<img src='/icons/43018dou.gif' />由于在企业信息化建设的初缺乏总体规划<img src='/icons/43018dou.gif' />导致其再实施过程中还存在如下<img src='/icons/43018yi.gif' />些问题:<br/><br/>
　　1.数据描述局部有序<img src='/icons/43018dou2.gif' />缺乏统<img src='/icons/43018yi.gif' />规范标准<img src='/icons/43018dou.gif' />严重影响资源使用和共享企业各部门多从自身业务出发来构建信息系统<img src='/icons/43018dou.gif' />信息资源单独管理<img src='/icons/43018dou.gif' />造成了业务和数据<img src='/icons/43018de.gif' />相对自我封闭<img src='/icons/43018dou2.gif' />对需要跨部门共享<img src='/icons/43018de.gif' />业务信息<img src='/icons/43018dou.gif' />因其描述格式<img src='/icons/43018dou.gif' />描述方式均不统<img src='/icons/43018yi.gif' /><img src='/icons/43018dou.gif' />导致信息孤岛<img src='/icons/43018de.gif' />普遍存在<img src='/icons/43018dou2.gif' /><br/><br/>
　　2.信息共享模式单<img src='/icons/43018yi.gif' /><img src='/icons/43018dou2.gif' />可扩展性不强基于传统技术构建而成<img src='/icons/43018de.gif' />企业信息系统<img src='/icons/43018dou.gif' />信息共享<img src='/icons/43018de.gif' />实现常以点对点<img src='/icons/43018de.gif' />模式为主<img src='/icons/43018dou.gif' />这种模式欠缺灵活<img src='/icons/43018dou.gif' />实施困难<img src='/icons/43018dou.gif' />不利于各取所需要求下<img src='/icons/43018de.gif' />业务需求<img src='/icons/43018dou2.gif' /><br/><br/>
　　3.应用系统多自成体系<img src='/icons/43018dou2.gif' />信息资源<img src='/icons/43018de.gif' />获取和使用机制僵硬<img src='/icons/43018dou2.gif' /><br/><br/>
　　应用系统受部门职能分割<img src='/icons/43018de.gif' />影响<img src='/icons/43018dou.gif' />重复管理、重复维护<img src='/icons/43018dou.gif' />使工作量大大增加<img src='/icons/43018dou2.gif' />其次<img src='/icons/43018dou.gif' />当因部门重组等原因导致网络状况变化或系统升级<img src='/icons/43018de.gif' />情况<img src='/icons/43018dou.gif' />极易引发信息资源<img src='/icons/43018de.gif' />重新组织<img src='/icons/43018dou.gif' />不可避免地需要进行重复建设<img src='/icons/43018dou2.gif' /><br/><br/>
　　面向服务架构为突破信息孤岛<img src='/icons/43018dou.gif' />整合信息资源、缩短开发周期、降低开发成本<img src='/icons/43018de.gif' />企业信息化应用带来了新<img src='/icons/43018de.gif' />曙光<img src='/icons/43018dou2.gif' /><br/><br/>
　<STRONG>　 2、SOA<img src='/icons/43018de.gif' />优势所在</STRONG><br/><br/>
　　面向服务架构(Service-OrientedArchitecture<img src='/icons/43018dou.gif' />SOA)是<img src='/icons/43018yi.gif' />种架构模型<img src='/icons/43018dou.gif' />其基本思想是以服务为核心<img src='/icons/43018dou.gif' />将企业<img src='/icons/43018de.gif' />IT资源整合成可操作<img src='/icons/43018de.gif' />、基于标准<img src='/icons/43018de.gif' />服务<img src='/icons/43018dou.gif' />使其能被重新组合和应用<img src='/icons/43018dou2.gif' />SOA<img src='/icons/43018de.gif' />应用对突破企业信息化建设过程中长期存在<img src='/icons/43018de.gif' />瓶颈<img src='/icons/43018dou.gif' />诸如信息孤岛、适应需求能力差、重复建设、新应用周期长等问题提供了有力<img src='/icons/43018de.gif' />解决手段<img src='/icons/43018dou2.gif' /><br/><br/>
　　1.统<img src='/icons/43018yi.gif' />规范标准和标准<img src='/icons/43018dou2.gif' />突破信息鸿沟制约和传统技术手段区别<img src='/icons/43018dou.gif' />SOA技术架构强调统<img src='/icons/43018yi.gif' />规划、统<img src='/icons/43018yi.gif' />标准、统<img src='/icons/43018yi.gif' />管理<img src='/icons/43018dou2.gif' />通过SOA技术架构<img src='/icons/43018de.gif' />应用<img src='/icons/43018dou.gif' />不仅辅助企业各业务部门制定科学合理<img src='/icons/43018de.gif' />整体规划<img src='/icons/43018dou.gif' />而且有效解决企业信息化建设中因缺乏统<img src='/icons/43018yi.gif' />框架而带来<img src='/icons/43018de.gif' />信息孤岛现象<img src='/icons/43018dou2.gif' />为解决企业各业务部门间<img src='/icons/43018dou.gif' />部门内<img src='/icons/43018de.gif' />互联互通难<img src='/icons/43018dou2.gif' />资源浪费、重复建设等问题提供有力支持<img src='/icons/43018dou2.gif' /><br/><br/>
　　2.创新技术理念<img src='/icons/43018dou.gif' />提升应用水平SOA以服务为理念<img src='/icons/43018dou.gif' />通过面向眼务<img src='/icons/43018de.gif' />方式组织开发<img src='/icons/43018dou.gif' />可以更准确地体现用户需求<img src='/icons/43018dou2.gif' />服务以松耦合<img src='/icons/43018de.gif' />状态存在于整个系统中<img src='/icons/43018dou.gif' />并可以随业务需求而变<img src='/icons/43018dou.gif' /><img src='/icons/43018yi.gif' />方面可以快速深度地满足用户需求<img src='/icons/43018dou2.gif' />另<img src='/icons/43018yi.gif' />方面可以减少企业各业务部门中<img src='/icons/43018de.gif' />业务冗余和重复开发<img src='/icons/43018dou2.gif' /><br/><br/>
　　3.改变建设模式<img src='/icons/43018dou.gif' />降低投资风险SOA基于全新<img src='/icons/43018de.gif' />技术架构来规划产品和组织生产<img src='/icons/43018dou.gif' />将极大地变革软件Software生产和应用模式<img src='/icons/43018dou.gif' />从而满足用户<img src='/icons/43018de.gif' />深层次需求<img src='/icons/43018dou2.gif' />SOA提供了构建IT系统<img src='/icons/43018de.gif' />全新思路方法<img src='/icons/43018dou.gif' />充分采用标准<img src='/icons/43018de.gif' />软件Software产品和服务组件<img src='/icons/43018dou.gif' />最终形成高效开发、标准规范标准、业界支撑广、技术发展快<img src='/icons/43018de.gif' />应用模式<img src='/icons/43018dou2.gif' /><br/><br/>

<br/>

<span <img src='/icons/43018class.gif' />="xspace-totlerecord">2</span><span <img src='/icons/43018class.gif' />="xspace-totlepages">1/2</span><span <img src='/icons/43018class.gif' />="xspace-current">1</span>2&gt;<br/> <a href="/mypdf/78977.pdf" title="查看 基于soa:基于SOA的企业信息共享研究 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>Java教程</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Java/Article78977.html</guid>
		</item>
		<item>
			<title><![CDATA[webspheremqjms:使用 Windows Active Directory 服务器进行 WebSphere MQ JMS 和 IBM Message Service 客户机的 JNDI 查找]]></title>
			<link>http://CrazyCoder.cn/DeveloperUtil/Article78976.html</link>
			<description>
				<![CDATA[

					
          
	  　　介绍<br/><br/>　　本文为您展示了如何配置 Microsoft&reg; Windows&reg; Active Directory Server (ADS) 及其内容<img src='/icons/19872dou.gif' />以用于 WebSphere MQ Java Messaging Service (JMS) 客户机以及 IBM Message Service Client for C/C<img src='/icons/19872jiajia.gif' /> 和 .NET <img src='/icons/19872de.gif' /> JNDI 查找<img src='/icons/19872dou2.gif' /><br/><br/>　　安装 Windows ADS 需要<img src='/icons/19872yi.gif' />个 Windows 2003 Server OS<img src='/icons/19872dou2.gif' />安装 ADS 时<img src='/icons/19872dou.gif' />经常要求您将其配置为域控制器或者作为域控制器<img src='/icons/19872de.gif' /><img src='/icons/19872yi.gif' />部分<img src='/icons/19872dou2.gif' />本文为您展示了如何配置 ADS 使其像 IBM Tivoli Directory Server 或 Open LDAP 那样作为单独<img src='/icons/19872de.gif' /> LDAP 服务器进行 LDAP 查找<img src='/icons/19872dou2.gif' /><br/><br/>　　配置 ADS 模式<br/><br/>　　目录服务成为了服务<img src='/icons/19872de.gif' /><img src='/icons/19872yi.gif' />部分<img src='/icons/19872dou.gif' />不需要显式重启<img src='/icons/19872dou2.gif' />对于 JNDI 查找<img src='/icons/19872dou.gif' />您需要添加使用 Java 模式<img src='/icons/19872de.gif' />对象<img src='/icons/19872dou.gif' />比如 Connection Factory 和 Destination 对象<img src='/icons/19872dou2.gif' />默认情况下<img src='/icons/19872dou.gif' />ADS 不支持 Java 模式<img src='/icons/19872dou.gif' />并且在您试图添加 JNDI 对象时将显示无法绑定对象<img src='/icons/19872de.gif' /><img src='/icons/19872cuowu.gif' /><img src='/icons/19872dou2.gif' />因此<img src='/icons/19872dou.gif' />需要先将 Java 模式导入到服务器 &mdash;&mdash; 可以从 Sun 公司得到 Java 模式<img src='/icons/19872dou2.gif' />可以使用 ADS 模式管理工具进行验证<img src='/icons/19872dou2.gif' />如果第<img src='/icons/19872yi.gif' />次配置 ADS<img src='/icons/19872dou.gif' />必须使用 regsvr32 schmmgmt.dll 将模式管理工具添加到 Microsoft 管理控制台 (MMC)<img src='/icons/19872dou2.gif' />使用添加/删除管理单元来检查 ADS 模式:<br/><br/>　　使用 MMC 查看 ADS 模式<br/><br/><img width="550" height="398" src="http://CrazyCoder.cn/WebFiles/20103/79c66712-2978-4eec-b818-de6e7a79c820.jpeg" _disibledevent=><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　查看原图(大图)<br/><br/>　　将 JNDI 对象添加到 ADS<br/><br/>　　为了使用方便<img src='/icons/19872dou.gif' />创建<img src='/icons/19872yi.gif' />个基目录来容纳所有必要<img src='/icons/19872de.gif' /> Connection Factory 和 Destination 对象<img src='/icons/19872dou2.gif' />使用 ADSI Editor 管理单元将 LDAP 容器添加到根域<img src='/icons/19872dou2.gif' />在安装 Windows ADS 时<img src='/icons/19872dou.gif' />上述举例使用 puppet.do<img src='/icons/19872main.gif' />.com 作为域名<img src='/icons/19872dou.gif' />这样根域将具有<img src='/icons/19872yi.gif' />个可分辨名称(Distinguished Name<img src='/icons/19872dou.gif' />DN) dc=puppet,dc=do<img src='/icons/19872main.gif' />,dc=com<img src='/icons/19872dou2.gif' />使用 ADS Editor 添加容器 XMSTEST<img src='/icons/19872dou.gif' />其 object<img src='/icons/19872class.gif' /> 名为 Organizational unit<img src='/icons/19872dou2.gif' /><br/><br/>　　将条目 (entry) 添加到 ADS<br/><br/><img width="550" height="371" src="http://CrazyCoder.cn/WebFiles/20103/15a76192-8947-4459-bd70-1e917cc1528b.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　添加内容<img src='/icons/19872de.gif' /> Base DN 为 ou=XMSTEST,dc=puppet,dc=do<img src='/icons/19872main.gif' />,dc=com<img src='/icons/19872dou2.gif' />使用 WebSphere MQ JMS Admin 或 WebSphere MQ V7 Explorer 的类<img src='/icons/19872de.gif' />工具将客户机使用<img src='/icons/19872de.gif' /> Connection Factory 和 Destination 对象(队列/主题)以及任何其他对象添加到这个 Base DN<img src='/icons/19872dou2.gif' />CN=CF1 是<img src='/icons/19872yi.gif' />个具有队列管理器<img src='/icons/19872de.gif' /> Connection Factory 对象<img src='/icons/19872dou.gif' />其主机、通道和侦听器<img src='/icons/19872de.gif' />详细信息如下:<br/><br/>　　MQ Connection Factory 对象<br/><br/><img width="550" height="399" src="http://CrazyCoder.cn/WebFiles/20103/311ea6c4-c3a1-458d-bae2-9cc9bc1b1dfe.jpeg" _disibledevent=><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　查看原图(大图)<br/><br/>　　CN=QD 是在 Windows ADS 中定义<img src='/icons/19872de.gif' /> MQ 目标对象:<br/><br/>　　MQ 目标对象<br/><br/><img width="409" height="320" src="http://CrazyCoder.cn/WebFiles/20103/81c44b7d-5f3a-4be4-840c-24569b49ab45.jpeg" _disibledevent=><br/><br/>　　配置 ADS 以用于客户机<img src='/icons/19872de.gif' /> JNDI 查找<br/><br/>　　客户机可能运行在 ADS 域内<img src='/icons/19872dou.gif' />也可能运行在域外<img src='/icons/19872dou.gif' />因此您必须启用 ADS <img src='/icons/19872de.gif' /> null bind 和匿名登录<img src='/icons/19872dou2.gif' />默认情况下<img src='/icons/19872dou.gif' />这两种情况在 ADS 上都是不允许<img src='/icons/19872de.gif' /><img src='/icons/19872dou.gif' />因此 IBM Message Service 客户机和 WebSphere MQ JMS 从 ADS 上获取对象<img src='/icons/19872de.gif' />任何连接都会生成 LDAP 搜索<img src='/icons/19872cuowu.gif' /><img src='/icons/19872dou2.gif' />所以您必须在容纳这些对象<img src='/icons/19872de.gif' /> Base DN (ou=XMSTEST,dc=puppet,dc=do<img src='/icons/19872main.gif' />,dc=com) 中启用 null bind 和匿名登录<img src='/icons/19872dou2.gif' />向 ADS 提供 null bind 和匿名登录需要两个步骤:<br/><br/>　　设置该域<img src='/icons/19872de.gif' />目录服务<img src='/icons/19872de.gif' /> dsheuritics 属性<br/><br/>　　将域条目设置为 ANONYMOUS LOGON<br/><br/>　　修改 dsheuristics<br/><br/>　　域<img src='/icons/19872de.gif' /> dsheuritics 属性<img src='/icons/19872de.gif' />第 7个<img src='/icons/19872zifu.gif' />必须被设置为 2<img src='/icons/19872dou2.gif' />如果以前设置过该值<img src='/icons/19872dou.gif' />则除第 7个<img src='/icons/19872zifu.gif' />外所有值保持不变<img src='/icons/19872dou.gif' />将第 7个<img src='/icons/19872zifu.gif' />设置为 2<img src='/icons/19872dou2.gif' /><br/><br/>　　要为某个 ADS 域设置 dsheuritics 属性:<br/><br/>　　打开 ADSI edit<img src='/icons/19872dou2.gif' /><br/><br/>　　为 Configuration[Do<img src='/icons/19872main.gif' /> name] 单击 +<img src='/icons/19872dou.gif' />例如 Configuration[puppet.do<img src='/icons/19872main.gif' />.con]<img src='/icons/19872dou2.gif' /><br/><br/>　　对 CN=Configuration 单击 +<img src='/icons/19872dou2.gif' /><br/><br/>　　在 CN=Configuration 下面找到 CN=Services 并单击 CN=Services <img src='/icons/19872de.gif' /> +<img src='/icons/19872dou2.gif' /><br/><br/>　　在 CN=Services 下面找到 CN=Windows NT 并单击 CN=Windows NT <img src='/icons/19872de.gif' /> +<img src='/icons/19872dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　在 CN=Windows NT 下面找到 CN=Directory Service<img src='/icons/19872dou.gif' />右键单击它并选择 Properties<img src='/icons/19872dou2.gif' /><br/><br/>　　在 Properties 面板中<img src='/icons/19872dou.gif' />选择 dsheuristics 属性<img src='/icons/19872dou.gif' />然后单击 Edit<img src='/icons/19872dou2.gif' /><br/><br/>　　在 String Attribute Editor 窗口中<img src='/icons/19872dou.gif' />键入 0000002<img src='/icons/19872dou2.gif' /><br/><br/>　　确认进行了更改:在每<img src='/icons/19872yi.gif' />个面板中单击 OK<img src='/icons/19872dou2.gif' /><br/><br/>　　dshueritics<br/><br/><img width="550" height="386" src="http://CrazyCoder.cn/WebFiles/20103/4805b64f-69f6-4354-858a-1144351034cc.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　提供 ANONYMOUS LOGON<br/><br/>　　授予 NT AUTHORITY\ANONYMOUS LOGON 权限以便访问要通过匿名查找启用位置<img src='/icons/19872de.gif' />对象<img src='/icons/19872dou2.gif' />使用 Active Directory users and computers 打开 Base<img src='/icons/19872dou2.gif' />例如:域 puppet.do<img src='/icons/19872main.gif' />.com 下<img src='/icons/19872de.gif' /> XMTEST:<br/><br/>　　打开 Active Directory users and computers<img src='/icons/19872dou2.gif' />确保选中了 View advanced features<img src='/icons/19872dou2.gif' /><br/><br/>　　找到要公开<img src='/icons/19872de.gif' />对象<img src='/icons/19872dou.gif' />然后右键单击它并单击 Properties<img src='/icons/19872dou2.gif' /><br/><br/>　　在 Properties 页面上<img src='/icons/19872dou.gif' />选择 Security 选项卡<img src='/icons/19872dou.gif' />单击 Add<img src='/icons/19872dou.gif' />键入 ANONYMOUS LOGON<img src='/icons/19872dou2.gif' />单击 OK<img src='/icons/19872dou2.gif' /><br/><br/>　　在 Security 选项卡中<img src='/icons/19872dou.gif' />ADS 用户和组列表显示在组或用户名下<img src='/icons/19872dou2.gif' />从该列表中<img src='/icons/19872dou.gif' />选择 ANONYMOUS LOGON<img src='/icons/19872dou.gif' />并在它下面<img src='/icons/19872de.gif' /> "Permission for ANONYMOUS LOGON" 部分选中 Allow 下面<img src='/icons/19872de.gif' /> Read 复选框<img src='/icons/19872dou2.gif' /><br/><br/>　　单击 OK:
<br/><br/>　　匿名登录 #1<br/><br/><img width="550" height="426" src="http://CrazyCoder.cn/WebFiles/20103/0eb30b57-72e2-41cb-8928-5b7642d79513.jpeg" _disibledevent=><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　查看原图(大图)<br /><br /><br/><br/>　　匿名登录 #2<br/><br/><img width="550" height="374" src="http://CrazyCoder.cn/WebFiles/20103/df0d2d93-5f2b-40ed-a3f9-74f749d3df8c.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br /><br /><br/><br/>　　下<img src='/icons/19872yi.gif' />步是为子条目提供 ANONYMOUS LOGON 查找:<br/><br/>　　在 Active Directory Users and Computers 中<img src='/icons/19872dou.gif' />右键单击 OU 对象<img src='/icons/19872dou.gif' />它承载了 Connection Factory 和 Destination 对象<img src='/icons/19872dou.gif' />并单击菜单中<img src='/icons/19872de.gif' /> Properties<img src='/icons/19872dou2.gif' />例如:ou=xmsTEST,dc=puppet,dc=do<img src='/icons/19872main.gif' />,dc=com<img src='/icons/19872dou2.gif' /><br/><br/>　　在 Security 选项卡中<img src='/icons/19872dou.gif' />单击 Advanced<img src='/icons/19872dou2.gif' /><br/><br/>　　在 "Advanced security <img src='/icons/19872set.gif' />ting" 窗口中<img src='/icons/19872dou.gif' />选择 Permission 选项卡并单击 Add<img src='/icons/19872dou2.gif' />在打开<img src='/icons/19872de.gif' />对话框中<img src='/icons/19872dou.gif' />键入 ANONYMOUS LOGON<img src='/icons/19872dou2.gif' />单击 OK<img src='/icons/19872dou2.gif' />将打开新对话框窗口<img src='/icons/19872dou2.gif' /><br/><br/>　　在这个 "Permissions entry for" 面板中<img src='/icons/19872dou.gif' />Name 字段将显示 ANONYMOUS LOGON<img src='/icons/19872dou2.gif' />从 Apply _disibledevent=><br/><br/>　　查看原图(大图)<br /><br /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　ADS 现在已经准备好了<img src='/icons/19872dou.gif' />可以使用 IBM Message Service 客户机和 WebSphere MQ JMS 客户机进行 JNDI 查找了<img src='/icons/19872dou2.gif' /><br/><br/>　　使用 IBM Message Service 客户机或 IBM WebSphere MQ JMS 客户机<br/><br/>　　以下是使用到 LDAP 服务器<img src='/icons/19872de.gif' /> JNDI 查找<img src='/icons/19872de.gif' /> IBM Message Service 客户机代码<img src='/icons/19872dou2.gif' />ADS 中 JNDI 查找<img src='/icons/19872de.gif' /> URL 是 ldap://&lt;&lt;IP address of the machine that hosts ADS&gt;&gt;/&lt;&lt;Base dn&gt;&gt;<img src='/icons/19872dou2.gif' />所以在本例中<img src='/icons/19872dou.gif' />它是:ldap://9.122.17.34/ou=xmsTEST,dc=puppet,dc=do<img src='/icons/19872main.gif' />,dc=com<img src='/icons/19872dou2.gif' /><br/><br/>清单 1. 最大宽度<img src='/icons/19872de.gif' />样例代码清单<br/><br/><code>/*　Create　an　Initial　Context　object　*/　<br /><img src='/icons/19872if.gif' />　(rc　<img src='/icons/19872dd.gif' />　xms_OK)　<br />　{　<br />　logComment("Creating　an　Initial　Context　object",　&amp;testD);　<br />　　rc　=　xmsInitialContextCreate("ldap://9.122.17.34/ou=XMSTEST,dc=puppet,　<br />　　dc=do<img src='/icons/19872main.gif' />,dc=com　",　<br />　　　&amp;hContext,　connSet.errorBlock);　<br />　checkRCError(rc,functionCall,connSet.errorBlock,&amp;testD);　<br />　}　<br />/*　Lookup　ConnectionFactoryObject　in　Initial　Context　*/　<br />　<img src='/icons/19872if.gif' />　(rc　<img src='/icons/19872dd.gif' />　xms_OK)　<br />　{　<br />　functionCall　=　"<img src='/icons/19872main.gif' />　-&gt;　xmsInitialContextLookup";　<br />　logComment("Looking　up　object　in　Initial　Context",　&amp;testD);　<br />rc　=　xmsInitialContextLookup(hContext,　"cn=CF",　(xmsHObj　*)　&amp;hConnFact,　<br />　&amp;type,　connSet.errorBlock);　<br />　checkRCError(rc,　functionCall,　connSet.errorBlock,　&amp;testD);　<br />　}　<br />　<br />　/*　Lookup　object　in　Initial　Context　*/　<br />　<img src='/icons/19872if.gif' />　(rc　<img src='/icons/19872dd.gif' />　xms_OK)　<br />　{　<br />　functionCall　=　"<img src='/icons/19872main.gif' />　-&gt;　xmsInitialContextLookup";　<br />　logComment("Looking　up　object　in　Initial　Context",　&amp;testD);　<br />　　rc　=　xmsInitialContextLookup(hContext,　"cn=QD",　(xmsHObj　*)　&amp;hDest,　<br />　　　&amp;type,　connSet.errorBlock);　<br />　checkRCError(rc,　functionCall,　connSet.errorBlock,　&amp;testD);　<br />　}　</code><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　样例代码<img src='/icons/19872de.gif' />输出<br/><br/><img width="463" height="221" src="http://CrazyCoder.cn/WebFiles/20103/eba34969-9f79-423d-baec-3651c4cf5e9e.jpeg" _disibledevent=><br/><br/>　　以下是使用到 LDAP 服务器<img src='/icons/19872de.gif' /> JNDI 查找<img src='/icons/19872de.gif' /> WebSphere MQ JMS 代码:<br/><br/>清单 2<br/><br/><code>Hashtable　htEnv　=　null;　<br />String　url　=　"ldap://9.122.17.34/ou=XMSTEST,dc=puppet,dc=do<img src='/icons/19872main.gif' />,dc=com";　<br />String　icf　=　"com.sun.jndi.ldap.LdapCtxFactory";　　<br />　<br />try{　<br />　htEnv　=　<img src='/icons/19872new.gif' />　Hashtable<img src='/icons/19872kh.gif' />;　<br />　htEnv.put(Context.INITIAL_CONTEXT_FACTORY,　icf);　<br />　htEnv.put(Context.PROVIDER_URL,　url);　<br />　ConnectionFactory　qFactory　=　null;　<br />　Connection　qConnection　=　null;　<br />　Session　qSession　=　null;　<br />　MessageProducer　sender　=　null;　<br />　InitialContext　ctx　=　<img src='/icons/19872new.gif' />　InitialDirContext(htEnv);　<br />　<br />ConnectionFactory　qcfFactory　=　(ConnectionFactory)　　　　　ctx.lookup("cn=CF");　<br />Destination　dest　=　(Destination)　ctx.lookup("cn=QD");　<br />　<img src='/icons/19872System.gif' />.out.pr<img src='/icons/19872int.gif' />ln("Creating　Connection");　<br />　qConnection　=　qcfFactory.createConnection<img src='/icons/19872kh.gif' />;　<br />　qConnection.start<img src='/icons/19872kh.gif' />;　<br />　qSession　=　qConnection.createSession(false,　Session.AUTO_ACKNOWLEDGE);　<br />　<br />sender　=　qSession.createProducer(dest);　<br />　TextMessage　txtMsg　=　null;　<br />　txtMsg　=　qSession.createTextMessage<img src='/icons/19872kh.gif' />;　<br />　txtMsg.<img src='/icons/19872set.gif' />Text("TC　-　JMS　:)");　<br />　sender.send(txtMsg);　<br />　<br />}　<br />catch(Exception　e){　<br />　e.pr<img src='/icons/19872int.gif' />StackTrace<img src='/icons/19872kh.gif' />;　<br />　((JMSException)　e).getLinkedException<img src='/icons/19872kh.gif' />.pr<img src='/icons/19872int.gif' />StackTrace<img src='/icons/19872kh.gif' />;　<br />}　</code><br/><br/><br/><br/>　　结束语<br/><br/>　　本文介绍了如何设置 Windows ADS 以用于 WebSphere MQ Java Messaging Service 客户机和 IBM Message Service Client for C/C<img src='/icons/19872jiajia.gif' /> 以及 IBM Message Service Client for .NET <img src='/icons/19872de.gif' /> JNDI 查找<img src='/icons/19872dou2.gif' /><br/><br/><br/><br/>
	  
	 <!-- 分页 -->
	 
	  <a href="/mypdf/78976.pdf" title="查看 webspheremqjms:使用 Windows Active Directory 服务器进行 WebSphere MQ JMS 和 IBM Message Service 客户机的 JNDI 查找 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>编程综合</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/DeveloperUtil/Article78976.html</guid>
		</item>
		<item>
			<title><![CDATA[rational性能测试:IBM Rational Requirements Composer 2.0 的性能和可扩展性评测结果]]></title>
			<link>http://CrazyCoder.cn/DeveloperUtil/Article78975.html</link>
			<description>
				<![CDATA[

					
          
	  　　本文涉及哪些内容<br/><br/>　　性能和可评价性在服务器基础<img src='/icons/81479de.gif' />环境中具体十分重大<img src='/icons/81479de.gif' />意义<img src='/icons/81479dou2.gif' />取决于环境<img src='/icons/81479de.gif' />复杂性<img src='/icons/81479dou.gif' />性能可以对软件Software<img src='/icons/81479de.gif' />有效性造成或大或小<img src='/icons/81479de.gif' />影响<img src='/icons/81479dou2.gif' />IBM&reg; Rational&reg; Requirements Composer Version 2.0 服务器由<img src='/icons/81479yi.gif' />些<img src='/icons/81479yi.gif' />起工作以组成工具末端<img src='/icons/81479de.gif' />模块组成<img src='/icons/81479dou2.gif' />2.0 版本服务器构件可以用区别<img src='/icons/81479de.gif' />拓扑结构和配置创建<img src='/icons/81479dou.gif' />这些结构和配置会影响到性能和可评价性<img src='/icons/81479dou2.gif' /><br/><br/>　　<img src='/icons/81479yinwei.gif' />我们已经过了<img src='/icons/81479chushi.gif' /><img src='/icons/81479de.gif' />发布阶段<img src='/icons/81479dou.gif' />对该测试<img src='/icons/81479de.gif' />主要关注点是服务器<img src='/icons/81479de.gif' />性能及其潜在<img src='/icons/81479de.gif' />基础结构<img src='/icons/81479dou2.gif' />本文描述了服务器<img src='/icons/81479de.gif' />具体内容<img src='/icons/81479dou.gif' />并解释了可以影响性能<img src='/icons/81479de.gif' />各种服务器配置和拓扑结构<img src='/icons/81479dou2.gif' />我们还描述了在区别<img src='/icons/81479de.gif' />范围和结构下用于记录性能评价和可评价性工具<img src='/icons/81479de.gif' />技术<img src='/icons/81479dou.gif' />并研究了测试<img src='/icons/81479de.gif' />结果<img src='/icons/81479dou2.gif' /><br/><br/>　　我们谈到了通过/比较区别<img src='/icons/81479de.gif' />拓扑结构、数据库及 Web <img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479de.gif' />发现<img src='/icons/81479dou.gif' />并考虑了用户数量及服务器资源<img src='/icons/81479de.gif' />效果<img src='/icons/81479dou2.gif' />另外<img src='/icons/81479dou.gif' />我们解释了怎样在您自己<img src='/icons/81479de.gif' />环境中重现测试创建工作以完成您自己<img src='/icons/81479de.gif' />性能测试<img src='/icons/81479dou2.gif' />最后<img src='/icons/81479dou.gif' />我们为优化 Rational Requirements Composer 服务器性能<img src='/icons/81479de.gif' />检查和规定提供了<img src='/icons/81479yi.gif' />些建议<img src='/icons/81479dou2.gif' /><br/><br/>　　声明<br/><br/>　　本文中<img src='/icons/81479de.gif' />信息是分布式<img src='/icons/81479de.gif' /> AS IS<img src='/icons/81479dou2.gif' />这些信息<img src='/icons/81479de.gif' />使用或者这些技术<img src='/icons/81479de.gif' />实现是客户<img src='/icons/81479de.gif' />责任<img src='/icons/81479dou.gif' />并取决于客户评价及集成到操作性环境<img src='/icons/81479de.gif' />能力<img src='/icons/81479dou2.gif' /><img src='/icons/81479yinwei.gif' /> IBM 可能会评审每<img src='/icons/81479yi.gif' />项以追求特定方案<img src='/icons/81479de.gif' />精确性<img src='/icons/81479dou.gif' />所以不能保证在其他<img src='/icons/81479de.gif' />地方获得相同<img src='/icons/81479de.gif' />或者相似<img src='/icons/81479de.gif' />结果<img src='/icons/81479dou2.gif' />客户想要在他们自己<img src='/icons/81479de.gif' />环境中采用这些技术以完成自己<img src='/icons/81479de.gif' />任务<img src='/icons/81479dou2.gif' />该版本所有对外部 Web 站点<img src='/icons/81479de.gif' />指针只是方便使用<img src='/icons/81479dou.gif' />而不是作为这些 Web 站点<img src='/icons/81479de.gif' />认证<img src='/icons/81479dou2.gif' />该文件中包含<img src='/icons/81479de.gif' />所有性能数据都在<img src='/icons/81479yi.gif' />个受控制<img src='/icons/81479de.gif' />环境中决定<img src='/icons/81479dou.gif' />因此<img src='/icons/81479dou.gif' />在其他操作环境中可能获得<img src='/icons/81479de.gif' />结果也许会发生显著<img src='/icons/81479de.gif' />变化<img src='/icons/81479dou2.gif' />该文件<img src='/icons/81479de.gif' />用户应该为指定<img src='/icons/81479de.gif' />环境确认可应用<img src='/icons/81479de.gif' />数据<img src='/icons/81479dou2.gif' /><br/><br/>　　最优性能<img src='/icons/81479de.gif' />推荐设置<br/><br/>　　拓扑结构<br/><br/>　　双边环境:<img src='/icons/81479yi.gif' />个<img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479de.gif' />服务器<img src='/icons/81479dou.gif' /><img src='/icons/81479yi.gif' />个数据库服务器<img src='/icons/81479de.gif' />服务器<br/><br/>　　数据库<br/><br/>　　IBM&reg; DB2&reg; 或者 Oracle<br/><br/>　　<img src='/icons/81479chengxu.gif' />服务器<br/><br/>　　IBM&reg; WebSphere&reg; Application Server 6.0 版本<br />最低机器规格<br/><br/>　　<img src='/icons/81479chengxu.gif' />服务器 <br/><br/>　　Quad core 2.8 GHz CPU 及 8 GB <img src='/icons/81479de.gif' /> RAM<br/><br/>　　硬盘:高性能 SAS 硬盘、RAID、SAN 或者 NAS 直接联系<img src='/icons/81479de.gif' />硬盘子系统<br/><br/>　　数据库服务器 <br/><br/>　　Dual core 2.9 GHz CPU 以及 4 GB <img src='/icons/81479de.gif' /> RAM<br/><br/>　　硬盘:高性能 SAS 硬盘、RAID、SAN 或者 NAS 直接联系<img src='/icons/81479de.gif' />硬盘子系统<br/><br/>　　整理总结<br/><br/>　　主要<img src='/icons/81479de.gif' />性能瓶颈是<img src='/icons/81479chengxu.gif' />服务器机器<img src='/icons/81479dou.gif' />它在区别<img src='/icons/81479de.gif' />运行负荷下运行区别<img src='/icons/81479de.gif' />测试<img src='/icons/81479dou2.gif' />所以最好将<img src='/icons/81479yi.gif' />个双边<img src='/icons/81479de.gif' />环境和寄主在<img src='/icons/81479chengxu.gif' />服务器上<img src='/icons/81479de.gif' />高品质机器<img src='/icons/81479yi.gif' />起使用<img src='/icons/81479dou2.gif' />在我们<img src='/icons/81479de.gif' />测试的中<img src='/icons/81479dou.gif' />IBM DB2 和 Oracle 数据库相似地处理用户负荷<img src='/icons/81479dou2.gif' />因此<img src='/icons/81479dou.gif' />使用您和您<img src='/icons/81479de.gif' />客户最愿意使用<img src='/icons/81479de.gif' />数据库软件Software<img src='/icons/81479dou2.gif' />我们还发现了对于区别<img src='/icons/81479de.gif' />用户负荷<img src='/icons/81479dou.gif' /><img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479de.gif' />性能也是相似<img src='/icons/81479de.gif' /><img src='/icons/81479dou2.gif' /><img src='/icons/81479yinwei.gif' /> Rational Requirements Composer 管理员<img src='/icons/81479de.gif' />企业需要(安全性和管理情况)<img src='/icons/81479dou.gif' />以及可定制性能调试<img src='/icons/81479de.gif' />特性<img src='/icons/81479dou.gif' />所以我们更喜欢 WebSphere 服务器<img src='/icons/81479dou2.gif' /><br/><br/>　　注意: <br />我们使用 IBM WebSphere Application Server <img src='/icons/81479de.gif' /><img src='/icons/81479yi.gif' />般配置而不进行额外<img src='/icons/81479de.gif' />调试<img src='/icons/81479dou2.gif' /><br/><br/>　　服务器构件<img src='/icons/81479de.gif' />概述<br/><br/>　　Rational Requirements Composer 服务器创建、处理并存储了 Rational Requirements Composer 客户端所使用<img src='/icons/81479de.gif' />需求资源<img src='/icons/81479dou.gif' />并提供了查询和搜索这些数据<img src='/icons/81479de.gif' />机理<img src='/icons/81479dou2.gif' />它还为创建、管理和获得文件夹、标记、评论、链接及项目快照提供了特定<img src='/icons/81479de.gif' />服务<img src='/icons/81479dou2.gif' /><br/><br/>　　还有其他<img src='/icons/81479de.gif' /><img src='/icons/81479yi.gif' />些部件组成了服务器<img src='/icons/81479dou2.gif' />在核心<img src='/icons/81479dou.gif' />Rational Requirements Composer 服务器是运行<img src='/icons/81479yi.gif' />系列<img src='/icons/81479chengxu.gif' /><img src='/icons/81479de.gif' /><img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479dou2.gif' />其中主要有两个<img src='/icons/81479chengxu.gif' />:<img src='/icons/81479yi.gif' />个 Requirements Composer 服务器<img src='/icons/81479chengxu.gif' /><img src='/icons/81479yi.gif' />个 IBM&reg; Jazz&reg; Foundation Server <img src='/icons/81479chengxu.gif' /><img src='/icons/81479dou2.gif' />还有<img src='/icons/81479yi.gif' />个额外<img src='/icons/81479de.gif' /><img src='/icons/81479chengxu.gif' /><img src='/icons/81479dou.gif' />它将 Rational Requirements Composer 资源生成 Web 上<img src='/icons/81479de.gif' />可浏览图形<img src='/icons/81479dou2.gif' /><br/><br/>图 1. Rational Requirements Composer 概述<br /><img width="500" height="446" src="http://CrazyCoder.cn/WebFiles/20103/73333d60-33d4-426f-a7de-8df44d4da66f.g<img src='/icons/81479if.gif' />" _disibledevent=><br/><br/>　　Web <img src='/icons/81479chengxu.gif' />服务器<br/><br/>　　Rational Requirements Composer 服务器由<img src='/icons/81479yi.gif' />个或者多个 Java&trade; Enterprise Edition (JEE)Web 服务器组成<img src='/icons/81479dou2.gif' />Rational Requirements Composer 服务器能够同时支持 IBM WebSphere Application Server 和 Apache Tomcat<img src='/icons/81479dou2.gif' />Jazz 技术平台和 Rational Requirements Composer 服务器<img src='/icons/81479chengxu.gif' />都是安装并运行在 Web 服务器上<img src='/icons/81479de.gif' /> Web 模块<img src='/icons/81479dou2.gif' /><img src='/icons/81479chengxu.gif' />可以根据拓扑结构来运行两个独立<img src='/icons/81479de.gif' /> Web 服务器<img src='/icons/81479dou2.gif' />在本文<img src='/icons/81479de.gif' />稍后部分中<img src='/icons/81479dou.gif' />将会涉及到每<img src='/icons/81479yi.gif' />个<img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479de.gif' />性能<img src='/icons/81479dou2.gif' /><br/><br/>　　Jazz 和 Jazz Foundation Services<br/><br/>　　Jazz 储存库构件处理了所有存储<img src='/icons/81479de.gif' /> Rational Requirements Composer 工件和信息<img src='/icons/81479dou2.gif' />Jazz Foundation Services 是<img src='/icons/81479yi.gif' />系列用于处理用户及项目管理(project management)、安全、协作、查询及其他跨工具功能<img src='/icons/81479de.gif' />功能<img src='/icons/81479dou2.gif' /><br/><br/>　　储存库末端是<img src='/icons/81479yi.gif' />个相关<img src='/icons/81479de.gif' />数据库<img src='/icons/81479dou.gif' />它用于储存所有<img src='/icons/81479de.gif' />服务器资源和工件<img src='/icons/81479dou2.gif' />Jazz Foundation Services 可以从 XML 及 Resources Description Framework(RDF)文件然后从索引<img src='/icons/81479de.gif' />信息中获得结构化<img src='/icons/81479de.gif' />数据<img src='/icons/81479dou.gif' />这样就可以更轻松地获取和查询这些属性<img src='/icons/81479dou2.gif' />另外<img src='/icons/81479dou.gif' />Jazz Foundation Services 使用<img src='/icons/81479yi.gif' />个单独<img src='/icons/81479de.gif' />文本索引来在区别<img src='/icons/81479de.gif' />资源间搜索全文本(通过 Apache Lucene)<img src='/icons/81479dou2.gif' /><br/><br/>　　为了操作或者查询数据<img src='/icons/81479dou.gif' />服务器端<img src='/icons/81479de.gif' />请求被转化为 SPARQL Query Language 声明然后在数据库上运行<img src='/icons/81479dou2.gif' /><br/><br/>　　Rational Requirements Composer 服务器<img src='/icons/81479chengxu.gif' /><br/><br/>　　除了 Jazz 技术平台提供<img src='/icons/81479de.gif' />核心功能<img src='/icons/81479dou.gif' />特定需求<img src='/icons/81479de.gif' />功能需要在服务器上进行处理<img src='/icons/81479dou2.gif' />Jazz Foundation Services 提供了<img src='/icons/81479yi.gif' />种机理以使用前端<img src='/icons/81479de.gif' /><img src='/icons/81479chengxu.gif' /><img src='/icons/81479dou.gif' />它是<img src='/icons/81479yi.gif' />个包含<img src='/icons/81479chengxu.gif' />和演示逻辑并使用 Jazz Foundation Services 以存储、查询和安全检查<img src='/icons/81479de.gif' />服务器端<img src='/icons/81479de.gif' />网络<img src='/icons/81479chengxu.gif' /><img src='/icons/81479dou2.gif' />Rational Requirements Composer 服务器是<img src='/icons/81479yi.gif' />种在 Java EE服务器上运行<img src='/icons/81479de.gif' />前端网络<img src='/icons/81479chengxu.gif' /><img src='/icons/81479dou.gif' />它和 Jazz Web <img src='/icons/81479chengxu.gif' />是隔开<img src='/icons/81479de.gif' /><img src='/icons/81479dou2.gif' /><br/><br/>　　除了提供特定需求<img src='/icons/81479de.gif' />功能<img src='/icons/81479dou.gif' />前端<img src='/icons/81479chengxu.gif' />机理使得 Rational Requirements Composer 服务器能够使用特定需求域战略来提高性能<img src='/icons/81479dou2.gif' />这个在 Jazz Foundation Services 提供<img src='/icons/81479de.gif' />标准缓存Cache的外<img src='/icons/81479dou2.gif' /><br/><br/>　　Rational Requirements Composer 网络<img src='/icons/81479chengxu.gif' /><br/><br/>　　Rational Requirements Composer 服务器包含了允许从网络浏览器访问 Rational Requirements Composer <img src='/icons/81479de.gif' />功能<img src='/icons/81479dou2.gif' />在服务器上运行<img src='/icons/81479de.gif' />额外网络<img src='/icons/81479chengxu.gif' />用于处理将 Rational Requirements Composer 资源转化为网页缩略图<img src='/icons/81479dou2.gif' /><br/><br/>　　数据库<br/><br/>　　<img src='/icons/81479yi.gif' />个关系数据库用于测试资源<img src='/icons/81479de.gif' />持续性<img src='/icons/81479dou2.gif' />我们更想在 IBM Rational Requirements Composer 2.0 支持<img src='/icons/81479de.gif' />两个企业数据库上执行我们<img src='/icons/81479de.gif' />测试:DB2 和 Oracle<img src='/icons/81479dou2.gif' />我们<img src='/icons/81479de.gif' />测试关注涉及到大量用户(在我们<img src='/icons/81479de.gif' />测试中我们并没有使用 Derby 数据库)<img src='/icons/81479de.gif' />企业场景<img src='/icons/81479dou2.gif' />Microsoft&reg; SQL Server 并没有进行测试<img src='/icons/81479dou.gif' /><img src='/icons/81479yinwei.gif' />它并不是运行测试期间支持<img src='/icons/81479de.gif' />操作系统<img src='/icons/81479de.gif' /><img src='/icons/81479yi.gif' />部分<img src='/icons/81479dou2.gif' /><br/><br/>　　用于评价性能和可评价性<img src='/icons/81479de.gif' />技术和工具 <br/><br/>　　注意本文中讨论<img src='/icons/81479de.gif' />数据<img src='/icons/81479dou.gif' />是在 Rational Requirements Composer 服务器上运行模拟用户<img src='/icons/81479de.gif' />结果<img src='/icons/81479dou2.gif' />实际<img src='/icons/81479de.gif' />客户经验可能会和的区别<img src='/icons/81479dou.gif' />这取决于客户所在<img src='/icons/81479de.gif' />环境和使用情况<img src='/icons/81479dou2.gif' /><br/><br/>　　Rational Performance Tester<br/><br/>　　IBM&reg; Rational&reg; Performance Tester 用于模拟和评价 Rational Requirements Composer 客户端/服务器交流<img src='/icons/81479dou2.gif' />测试环境得以创建以处理那些和 Rational Requirements Composer 服务器相交流<img src='/icons/81479de.gif' /> 500 个虚拟用户<img src='/icons/81479dou2.gif' /><br/><br/>图 2. Rational Performance Tester 环境<br /><img width="163" height="589" src="http://CrazyCoder.cn/WebFiles/20103/7c19a90f-c40b-4711-a8ba-e13ff4992957.g<img src='/icons/81479if.gif' />" _disibledevent=><br/><br/>　　Rational Performance Tester 主机 <br/><br/>　　主机运行 Rational Performance Tester 工作台并为分配用户负荷和收集性能数据负责<img src='/icons/81479dou2.gif' />这些是机器规格:<br/><br/>　　Lenovo ThinkCentre<img src='/icons/81479dou.gif' />Microsoft&reg; Windows Server 2003 Enterprise Edition<img src='/icons/81479dou.gif' />SP2<br/><br/>　　双核 CPU 2.66 GHz<img src='/icons/81479dou.gif' />4 GB RAM<br/><br/>　　主机会在 5个 Rational 测试代理机器的间平均地分配用户负荷<img src='/icons/81479dou2.gif' /><br/><br/>　　Rational Performance Tester 代理机器 <br/><br/>　　环境包含了 5个 Rational Performance Tester 代理机器<img src='/icons/81479dou2.gif' />每<img src='/icons/81479yi.gif' />个机器都接受<img src='/icons/81479yi.gif' />系列用户发出<img src='/icons/81479de.gif' />请求<img src='/icons/81479dou.gif' />并向 Rational Requirements Composer 服务器发送请求<img src='/icons/81479dou2.gif' />机器会记录响应时间和结果<img src='/icons/81479dou.gif' />然后向主机发送数据<img src='/icons/81479dou2.gif' />每<img src='/icons/81479yi.gif' />个代理主机都有下列<img src='/icons/81479de.gif' />规格:<br/><br/>　　Lenovo ThinkCentre<img src='/icons/81479dou.gif' />Microsoft Windows Server 2003 Enterprise Edition<img src='/icons/81479dou.gif' />SP2<br/><br/>　　Dual CPU 2.66 GHz, 4 GB RAM<br/><br/>　　对于测试数据<img src='/icons/81479dou.gif' />为了让代理机器不至成为性能<img src='/icons/81479de.gif' />瓶颈<img src='/icons/81479dou.gif' />每<img src='/icons/81479yi.gif' />个代理机器都会模拟不超过 100 个用户<img src='/icons/81479dou2.gif' /><br/><br/>　　执行<img src='/icons/81479de.gif' />测试场景<br/><br/>　　有两个每<img src='/icons/81479yi.gif' />个用户都要执行<img src='/icons/81479de.gif' />用例:<img src='/icons/81479yi.gif' />个 Author 用例以及<img src='/icons/81479yi.gif' />个 Reviewer 用例<img src='/icons/81479dou2.gif' />每<img src='/icons/81479yi.gif' />个用户都会执行<img src='/icons/81479yi.gif' />个测试用例然后等待 120 秒再去重复用例<img src='/icons/81479dou2.gif' />在用例<img src='/icons/81479de.gif' />私人操作的间没有添加<img src='/icons/81479de.gif' />额外&ldquo;研究时间&rdquo;<img src='/icons/81479dou2.gif' />资源上<img src='/icons/81479de.gif' />所有操作都是随机<img src='/icons/81479de.gif' /><img src='/icons/81479dou2.gif' />基于真实<img src='/icons/81479de.gif' />客户使用<img src='/icons/81479dou.gif' />我们<img src='/icons/81479de.gif' />测试场景由 Authors 对 Reviewers 按照 1:4 <img src='/icons/81479de.gif' />比例组成<img src='/icons/81479dou2.gif' /><img src='/icons/81479yi.gif' />个典型<img src='/icons/81479de.gif' />测试场景中有 500 个用户<img src='/icons/81479dou.gif' />产生 705 个资源<img src='/icons/81479dou.gif' />更新 2,287 个资源<img src='/icons/81479dou.gif' />并且每小时创建 5,876 个评论<img src='/icons/81479dou2.gif' />同时伴随着其他<img src='/icons/81479de.gif' />服务器交流<img src='/icons/81479dou2.gif' />请求<img src='/icons/81479de.gif' />平均数量在每小时 85,000 个请求左右<img src='/icons/81479dou2.gif' />在所有<img src='/icons/81479de.gif' />用户位于系统中的后<img src='/icons/81479dou.gif' />每<img src='/icons/81479yi.gif' />个测试都会运行 60 分钟<img src='/icons/81479dou2.gif' /><br/><br/>　　管理测试用例 <br/><br/>　　在这个用例中<img src='/icons/81479dou.gif' />用户会模拟<img src='/icons/81479yi.gif' />个典型<img src='/icons/81479de.gif' /> Rational Requirements Composer Author 应该做<img src='/icons/81479de.gif' />操作<img src='/icons/81479dou2.gif' />用户会切换至<img src='/icons/81479yi.gif' />个资源<img src='/icons/81479dou.gif' />检查资源<img src='/icons/81479dou.gif' />然后决定是否更新资源还是创建<img src='/icons/81479yi.gif' />个完全新<img src='/icons/81479de.gif' />资源<img src='/icons/81479dou2.gif' />表 1 显示了用户执行<img src='/icons/81479de.gif' />操作<img src='/icons/81479dou2.gif' /><br/><br/>表 1. Rational Performance Tester Author 脚本<br/><br/> 描述  测试脚本操作  频率 <br/> 1. 查看文件夹结构  GetAllFolders  100% <br/> 2. 为<img src='/icons/81479yi.gif' />个文件夹中<img src='/icons/81479de.gif' />资源 URLs 运行<img src='/icons/81479yi.gif' />个查询  RunFolderQuery  100% <br/> 3. 运行<img src='/icons/81479yi.gif' />条查询以获取有关资源 URLs <img src='/icons/81479de.gif' />数据  GetMultiDescribe  100% <br/> 4. 选择<img src='/icons/81479yi.gif' />条资源并获得它<img src='/icons/81479de.gif' />内容  GetArt<img src='/icons/81479if.gif' />actContents  100% <br/> 5.运行<img src='/icons/81479yi.gif' />条查询以获得有关资源<img src='/icons/81479de.gif' />数据  FetchArt<img src='/icons/81479if.gif' />actInfo  100% <br/> 6. 执行下面<img src='/icons/81479de.gif' /><img src='/icons/81479yi.gif' />条:  　  　 <br/> 　　编辑<img src='/icons/81479yi.gif' />条资源并保存  ApplyAttribute  75% <br/> 　　创建<img src='/icons/81479yi.gif' />个新<img src='/icons/81479de.gif' />用例、需求或者草图部件  CreateResource  25% <br/><br/><br/><br/>　　评审用例 <br/><br/>　　在这个用例中<img src='/icons/81479dou.gif' />用户会模拟<img src='/icons/81479yi.gif' />个典型<img src='/icons/81479de.gif' /> Rational Requirements Composer Review <img src='/icons/81479de.gif' />操作<img src='/icons/81479dou2.gif' />用户会切换以找到<img src='/icons/81479yi.gif' />条资源<img src='/icons/81479dou.gif' />然后决定是对资源添加<img src='/icons/81479yi.gif' />条评论<img src='/icons/81479dou.gif' />用相关<img src='/icons/81479de.gif' />标记来标记资源<img src='/icons/81479dou.gif' />还是移动到另<img src='/icons/81479yi.gif' />个用例上而不进行进<img src='/icons/81479yi.gif' />步<img src='/icons/81479de.gif' />操作<img src='/icons/81479dou2.gif' />表 2 显示了用户<img src='/icons/81479de.gif' />操作<img src='/icons/81479dou2.gif' /><br/><br/>表 2. Rational Performance Tester Reviewer 脚本<br/><br/> 描述  测试脚本操作  频率 <br/> 1. 查看文件夹结构  GetAllFolders  100% <br/> 2. 为文件夹中<img src='/icons/81479de.gif' />资源 URLs 运行<img src='/icons/81479yi.gif' />条查询  RunFolderQuery  100% <br/> 3. 运行<img src='/icons/81479yi.gif' />条查询以获取有关资源 URLs <img src='/icons/81479de.gif' />资源数据  GetMultiDescribe  100% <br/> 4. 选择<img src='/icons/81479yi.gif' />条资源并获取它<img src='/icons/81479de.gif' />内容  GetArt<img src='/icons/81479if.gif' />actContents  100% <br/> 5. 运行<img src='/icons/81479yi.gif' />条查询以获得有关资源<img src='/icons/81479de.gif' />数据  FetchArt<img src='/icons/81479if.gif' />actInfo  100% <br/> 6. 执行以下内容中<img src='/icons/81479de.gif' /><img src='/icons/81479yi.gif' />个:  　  　 <br/> 　　添加<img src='/icons/81479yi.gif' />条评论:  CreateComment  50% <br/> 　　标记资源  TagResource  25% <br/> 　　查看资源<img src='/icons/81479dou.gif' />但是不采取进<img src='/icons/81479yi.gif' />步<img src='/icons/81479de.gif' />操作  　  25% <br/><br/><br/><br/>　　Rational Performance Tester 性能日程安排<br/><br/>　　日程安排(图 3)由<img src='/icons/81479yi.gif' />些用于模拟 Author <img src='/icons/81479de.gif' />多个测试用例组成<img src='/icons/81479dou.gif' />并检查用例<img src='/icons/81479dou2.gif' /><br/><br/>图 3. Rational Performance Tester 日程安排<br /><img width="550" height="421" src="http://CrazyCoder.cn/WebFiles/20103/74f8794b-20f8-496f-b3c8-b1fb254c8951.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　每<img src='/icons/81479yi.gif' />个测试用例都使用 Rational Requirements Composer范例来和服务器进行交流<img src='/icons/81479dou.gif' />它是 Java 范例<img src='/icons/81479de.gif' />收集<img src='/icons/81479dou.gif' />演示了客户和合伙人怎样使用 RESTful 请求和 Rational Requirements Composer 资源进行交流<img src='/icons/81479dou2.gif' />范例<img src='/icons/81479chengxu.gif' />可以在 Jazz.net 上获得<img src='/icons/81479dou2.gif' />对于每<img src='/icons/81479yi.gif' />次服务器交流<img src='/icons/81479dou.gif' />每<img src='/icons/81479yi.gif' />个用户都重复使用两个 Apache HttpClient 对象来和服务器通过 HTTP 进行交流<img src='/icons/81479dou2.gif' /><br/><br/>　　用户操作时间和工具 <br/><br/>　　对于每<img src='/icons/81479yi.gif' />次运行<img src='/icons/81479de.gif' />测试<img src='/icons/81479dou.gif' />用户都会在<img src='/icons/81479yi.gif' />个正常<img src='/icons/81479de.gif' />设置间隔内引入<img src='/icons/81479yi.gif' />个系统；这个时间间隔就叫做&ldquo;间歇&rdquo;阶段<img src='/icons/81479dou2.gif' />这就可以确保对系统引入<img src='/icons/81479de.gif' />大量用户不会使系统超负荷运转<img src='/icons/81479dou2.gif' />间歇阶段中总共<img src='/icons/81479de.gif' />响应时间没有包含在思路方法的中<img src='/icons/81479dou2.gif' />思路方法反映了当所有用户都位于系统中时所收集<img src='/icons/81479de.gif' />数据<img src='/icons/81479dou2.gif' /><br/><br/>　　失败接受 <br/><br/>　　<img src='/icons/81479yinwei.gif' />脚本是随机<img src='/icons/81479de.gif' /><img src='/icons/81479dou.gif' />所以服务器<img src='/icons/81479de.gif' />负荷量随着时间<img src='/icons/81479de.gif' />变化而波动<img src='/icons/81479dou2.gif' />在<img src='/icons/81479yi.gif' />个大到不正常<img src='/icons/81479de.gif' />负荷量下<img src='/icons/81479dou.gif' />服务器会返回出错<img src='/icons/81479de.gif' />代码<img src='/icons/81479dou2.gif' />如果<img src='/icons/81479cuowu.gif' />率低于请求总数<img src='/icons/81479de.gif' /> 15%<img src='/icons/81479dou.gif' />那么数据就认为是有效<img src='/icons/81479de.gif' /><img src='/icons/81479dou2.gif' /><br/><br/>　　系统资源监视<br/><br/>　　VMware ESX 服务器 <br/><br/>　　在 VMware ESX 服务器上<img src='/icons/81479dou.gif' />系统资源监视是使用 VMware 基础客户端性能工具来完成<img src='/icons/81479de.gif' /><img src='/icons/81479dou.gif' />如图 4 所示<img src='/icons/81479dou2.gif' />该工具支持对 CPU、内存及硬盘使用情况<img src='/icons/81479de.gif' />监视<img src='/icons/81479dou2.gif' /><br/><br/>图 4. VMware 基础客户端性格工具<br /><img width="550" height="346" src="http://CrazyCoder.cn/WebFiles/20103/f6b73818-75ed-4e26-9c43-d800c6d7e99c.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　Windows 服务器 <br/><br/>　　在 Windows 服务器上<img src='/icons/81479dou.gif' />资源监视是通过使用 Windows 性能监视工具(perfmon)来完成<img src='/icons/81479de.gif' /><img src='/icons/81479dou.gif' />如图 5 所示<img src='/icons/81479dou2.gif' /><br/><br/>图 5. Windows 性能监视工具<br /><img width="550" height="476" src="http://CrazyCoder.cn/WebFiles/20103/3c433898-3359-42a6-88b0-2bb66cced30d.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　测试机器规格<br/><br/>　　VMware ESX 服务器<img src='/icons/81479dou.gif' />Linux 环境 <br/><br/>　　<img src='/icons/81479chengxu.gif' />服务器规格
<br/><br/>　　SuSE Linux&reg; 4.1.2 64 位 VM<br/><br/>　　WebSphere <img src='/icons/81479chengxu.gif' />服务器 7.0.0.3<br/><br/>　　3.0 GHz CPU <img src='/icons/81479de.gif' /> 4核 Intel Xeon X5365<br/><br/>　　8 GB RAM<br/><br/>　　50 GB SCSI 硬盘<br/><br/>　　数据库服务器规格
<br/><br/>　　SuSE Linux 4.1.2 64 位 VM<br/><br/>　　DB2 9.5 版本<br/><br/>　　3.0 GHz CPU <img src='/icons/81479de.gif' /> 4核 Intel Xeon X5365<br/><br/>　　8 GB RAM.<br/><br/>　　50 GB SCSI 硬盘<br/><br/>　　* 查看 ESX 服务器规格<img src='/icons/81479de.gif' />附录<br/><br/>　　Windows 环境 <br/><br/>　　<img src='/icons/81479chengxu.gif' />服务器规格
<br/><br/>　　Windows 2003 Enterprise Server<img src='/icons/81479dou.gif' />32 位<br/><br/>　　WebSphere Application Server 6.1 版本<br/><br/>　　Intel Core Duo E6750 @ 2.6 GHz CPU<br/><br/>　　4 GB RAM<br/><br/>　　232 GB SATA 硬盘<br/><br/>　　数据库服务器规格
<br/><br/>　　Windows 2003 Enterprise 服务器<img src='/icons/81479dou.gif' />32 位<br/><br/>　　DB2 9.5.1 版本<br/><br/>　　Oracle 10g<br/><br/>　　Intel&reg; Core Duo E6750<img src='/icons/81479dou.gif' />2.6 GHz CPU<br/><br/>　　4 GB RAM<br/><br/>　　232 GB SATA 硬盘<br/><br/>　　Rational Requirements Composer 创建<br/><br/>　　用户储存库 <br/><br/>　　为了估计远程用户认证<img src='/icons/81479de.gif' />变量<img src='/icons/81479dou.gif' />在本文中提到<img src='/icons/81479de.gif' /><img src='/icons/81479chengxu.gif' />服务器是本地<img src='/icons/81479de.gif' />用户储存库(并不使用 LDAP)<img src='/icons/81479dou2.gif' />WebSphere Application Server 使用<img src='/icons/81479de.gif' />是联合<img src='/icons/81479de.gif' />用户储存库<img src='/icons/81479dou.gif' />而 Tomcat 服务器使用<img src='/icons/81479de.gif' />是本地<img src='/icons/81479de.gif' /> Tomcat 用户储存库<img src='/icons/81479dou2.gif' /><br/><br/>　　项目结构 <br/><br/>　　本文中描述<img src='/icons/81479de.gif' />项目结构反映了典型<img src='/icons/81479de.gif' />客户使用<img src='/icons/81479dou.gif' />假设大多数<img src='/icons/81479de.gif' />用户并不用访问所有储存库中<img src='/icons/81479de.gif' />资源<img src='/icons/81479dou2.gif' />项目随着数据项目<img src='/icons/81479yi.gif' />起创建<img src='/icons/81479dou.gif' />它包含了储存库中占全部资源大约 80% <img src='/icons/81479de.gif' />部分<img src='/icons/81479dou2.gif' />每<img src='/icons/81479yi.gif' />个用户都可以访问测试项目<img src='/icons/81479dou.gif' />它占到了储存库中大约 20% <img src='/icons/81479de.gif' />资源<img src='/icons/81479dou2.gif' /><br/><br/>　　IBM WebSphere Application Server 设置 <br/><br/>　　在可以使用额外内存<img src='/icons/81479de.gif' /> 64 位机器上<img src='/icons/81479dou.gif' />Java&trade; Virtual Machine(JVM)最大存储规模对默认<img src='/icons/81479de.gif' /> 1536 MB 容量有所增加<img src='/icons/81479dou2.gif' />这就可以确保最大容量<img src='/icons/81479de.gif' />高效率<img src='/icons/81479dou2.gif' />在<img src='/icons/81479yi.gif' />个 32 位<img src='/icons/81479de.gif' />机器上<img src='/icons/81479dou.gif' />使用了默认<img src='/icons/81479de.gif' />设置<img src='/icons/81479dou2.gif' /><br/><br/>　　Tomcat <img src='/icons/81479chengxu.gif' />服务器设置 <br/><br/>　　Tomcat <img src='/icons/81479chengxu.gif' />服务器使用了默认<img src='/icons/81479de.gif' />设置<img src='/icons/81479dou2.gif' /><br/><br/>　　数据库优化<br/><br/>　　为了确保最优<img src='/icons/81479de.gif' />数据库性能<img src='/icons/81479dou.gif' />需要确保数据库得到了全部<img src='/icons/81479de.gif' />优化<img src='/icons/81479dou2.gif' />有了 DB2 和 Oracle<img src='/icons/81479dou.gif' />您就可以进行统计以让数据库分析方案<img src='/icons/81479de.gif' />规模并优化其内容了<img src='/icons/81479dou2.gif' /><br/><br/>　　数据库通常会自动管理统计数据<img src='/icons/81479dou2.gif' />但是<img src='/icons/81479dou.gif' />为了确保在我们<img src='/icons/81479de.gif' />测试期间数据库得到了全面<img src='/icons/81479de.gif' />优化<img src='/icons/81479dou.gif' />我们需要手动运行统计过程:<br/><br/>DB2<br/><br/><code>　　DB2　REORGCHK　UPDATE　STATISTICS　ON　TABLE　ALL</code><br/><br/>Oracle<br/><br/><code>　　EXEC　DBMS_STATS.gather_schema_stats('　JAZZDBUSER'　);</code><br/><br/>　　性能测试结果<br/><br/>　　数据库通道比较<br/><br/>　　在这个实验中<img src='/icons/81479dou.gif' />我们比较了数据库通道<img src='/icons/81479de.gif' />性能<img src='/icons/81479dou2.gif' />测试<img src='/icons/81479de.gif' />环境是相似<img src='/icons/81479de.gif' />；数据库服务器同时安装了 IBM DB2 以及 Oracle<img src='/icons/81479dou2.gif' />数据库服务器是冷是热<img src='/icons/81479dou.gif' />取决于测试<img src='/icons/81479de.gif' />通道<img src='/icons/81479dou2.gif' />数据通过 IBM&reg; Jazz&trade; 来备份以作为<img src='/icons/81479yi.gif' />个文件系统<img src='/icons/81479dou.gif' />并同时存储在两个数据库中<img src='/icons/81479dou2.gif' /><br/><br/>　　数据库通道比较是在拥有 10,000 资源以及 50 和 200 <img src='/icons/81479de.gif' />用户<img src='/icons/81479de.gif' /> Windows 环境中执行<img src='/icons/81479de.gif' /><img src='/icons/81479dou2.gif' /><br/><br/>　　将 IBM WebSphere Application Server 和 DB2 数据库服务器(Windows)隔离开来 <br/><br/>　　Windows 32 位<img src='/icons/81479de.gif' />环境配置了 IBM <img src='/icons/81479chengxu.gif' />服务器以和 DB2 数据库服务器相交流<img src='/icons/81479dou2.gif' />对于 200 个并发用户<img src='/icons/81479de.gif' />平均请求响应时间是 1,381 ms<img src='/icons/81479dou2.gif' />在 60 分钟<img src='/icons/81479de.gif' />运行时间内响应时间会发生自然<img src='/icons/81479de.gif' />波动<img src='/icons/81479dou2.gif' /><br/><br/>图 6. 拥有 10,000 资源<img src='/icons/81479de.gif' /> DB2 数据库<img src='/icons/81479de.gif' />平均请求响应时间<br /><img width="550" height="430" src="http://CrazyCoder.cn/WebFiles/20103/5034a4ba-10c2-4934-9d1f-21dad71db2a5.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　将 IBM WebSphere Application Server 和 Oracle 数据库服务器(Windows)隔离起来 <br/><br/>　　Windows 32 位环境配置了 IBM WebSphere Application Server<img src='/icons/81479dou.gif' />以和 Oracle 数据库服务器相交流<img src='/icons/81479dou2.gif' />200 个并发用户<img src='/icons/81479de.gif' />平均响应时间是 1,321 ms<img src='/icons/81479dou2.gif' />在 60 分钟<img src='/icons/81479de.gif' />运行时间内响应时间会发生自然<img src='/icons/81479de.gif' />波动<img src='/icons/81479dou2.gif' /><br/><br/>图 7. 拥有 10,000 资源<img src='/icons/81479de.gif' /> Oracle 数据库<img src='/icons/81479de.gif' />平均请求响应时间<br /><img width="550" height="429" src="http://CrazyCoder.cn/WebFiles/20103/86bb9786-ac25-460f-82c7-2bc208d44315.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　数据库比较<br/><br/>图 8. 数据库通道间平均响应时间<img src='/icons/81479de.gif' />比较<br /><img width="550" height="278" src="http://CrazyCoder.cn/WebFiles/20103/81e4ef20-00a8-4e4d-8013-2c686ad21c10.g<img src='/icons/81479if.gif' />" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　DB2、Oracle 及 SQL (2.0.0.1 版本中支持)数据库在请求响应时间(图 8)上没有多少显著<img src='/icons/81479de.gif' />差异<img src='/icons/81479dou2.gif' />和 表 4 中<img src='/icons/81479de.gif' />数据相联系<img src='/icons/81479dou.gif' />可以指示数据库服务器是系统中最少使用<img src='/icons/81479de.gif' />构件, 数据库通道也可以提供最高层次<img src='/icons/81479de.gif' />性能<img src='/icons/81479dou2.gif' />所以您可以使用您或者您所在团队(Team)最喜欢使用<img src='/icons/81479de.gif' />数据库<img src='/icons/81479dou2.gif' /><br/><br/>　　用户和资源可评价性<img src='/icons/81479de.gif' />结果<br/><br/>　　将 WebSphere Application Server 和 DB2 数据库服务器(Linux)隔离开来 <br/><br/>　　这些测试运行显示了评价储存库中并发用户<img src='/icons/81479de.gif' />数量和资源数量<img src='/icons/81479de.gif' />效果<img src='/icons/81479dou2.gif' />响应时间和服务器资源得到了监视<img src='/icons/81479dou2.gif' />Linux 环境用于这些运行<img src='/icons/81479dou.gif' />包括 200、350 和 500 个用户和 10,000、50,000 和 100,000 个资源<img src='/icons/81479dou2.gif' /><br/><br/>图 9. Linux 环境下储存库规模和用户数量对比<img src='/icons/81479de.gif' />响应时间 <br /><img width="550" height="365" src="http://CrazyCoder.cn/WebFiles/20103/8f8ff9f7-aa85-4670-99c6-67754b5666b7.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br /><br />表 3. Linux 系统上存储库规模和用户数据数量对比<img src='/icons/81479de.gif' />平均响应时间 <br/><br/> 规模   200 用户   350 用户   500 用户  <br/> 10,000 资源  97.2 ms  123.9 ms  236.2 ms <br/> 50,000 资源  101.4 ms  150.6 ms  318.5 ms <br/> 100,000 资源  115.6 ms  190.2 ms  436.2 ms <br/><br/><br/><br/>　　性能工具<img src='/icons/81479de.gif' />分析 <br/><br/>　　网络<img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479de.gif' />比较 <br/><br/>　　当我们在将 Tomcat <img src='/icons/81479chengxu.gif' />服务器和 IBM WebSphere Application Server 相比较<img src='/icons/81479de.gif' />时候<img src='/icons/81479dou.gif' />我们可以看到在性能方面<img src='/icons/81479yi.gif' />些细微<img src='/icons/81479de.gif' />差异<img src='/icons/81479dou2.gif' /><br/><br/>　　注意: <br />我们使用<img src='/icons/81479de.gif' />是默认<img src='/icons/81479de.gif' /> WebSphere Application Server 配置<img src='/icons/81479dou2.gif' />在运行我们<img src='/icons/81479de.gif' />测试时<img src='/icons/81479dou.gif' />不会在 WebSphere <img src='/icons/81479chengxu.gif' />服务器上进行额外<img src='/icons/81479de.gif' />性能调试<img src='/icons/81479dou2.gif' /><br/><br/>　　每<img src='/icons/81479yi.gif' />个用户组在评价响应时间上<img src='/icons/81479de.gif' />差异不会超过 55 ms<img src='/icons/81479dou2.gif' />对于拥有不到 300 个用户<img src='/icons/81479de.gif' />小型商店来说<img src='/icons/81479dou.gif' />选择可得到<img src='/icons/81479de.gif' />并且适合您<img src='/icons/81479de.gif' />特定需要<img src='/icons/81479de.gif' /><img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479dou2.gif' /><br/><br/>图 10. <img src='/icons/81479chengxu.gif' />服务器比较 <br /><img width="539" height="348" src="http://CrazyCoder.cn/WebFiles/20103/a6256c35-955a-4a97-a1ee-b0789cc3355c.g<img src='/icons/81479if.gif' />" _disibledevent=><br/><br/>　　用户<img src='/icons/81479de.gif' />数量 <br/><br/>　　在图 10 中<img src='/icons/81479dou.gif' />随着用户数量<img src='/icons/81479de.gif' />增长<img src='/icons/81479dou.gif' />平均<img src='/icons/81479de.gif' />响应时间也在增长<img src='/icons/81479dou2.gif' />对响应时间增长率<img src='/icons/81479de.gif' />比较并不会显示 Tomcat 和 IBM WebSphere <img src='/icons/81479chengxu.gif' />服务器的间<img src='/icons/81479de.gif' />显著差异<img src='/icons/81479dou2.gif' />当用户增长到 300 时<img src='/icons/81479dou.gif' />使用您更喜欢<img src='/icons/81479de.gif' /><img src='/icons/81479chengxu.gif' />服务器<img src='/icons/81479dou2.gif' /><br/><br/>　　可评价性<br/><br/>　　用户<img src='/icons/81479de.gif' />可评价性 <br/><br/>　　在 图 9 中<img src='/icons/81479dou.gif' />用户<img src='/icons/81479de.gif' />引入对响应时间会造成很大<img src='/icons/81479de.gif' />影响<img src='/icons/81479dou2.gif' />当用户<img src='/icons/81479de.gif' />数量从 300 增长到 500 时<img src='/icons/81479dou.gif' />性能会发生大幅度<img src='/icons/81479de.gif' />降低<img src='/icons/81479dou2.gif' />在<img src='/icons/81479yi.gif' />个拥有 100,000 资源<img src='/icons/81479de.gif' />存储库中<img src='/icons/81479dou.gif' />当用户数量从 350 增长到 500 时<img src='/icons/81479dou.gif' />响应时间会增长 130%<img src='/icons/81479dou.gif' />而用户从 200 增长到 350 时<img src='/icons/81479dou.gif' />响应时间只会增长 65%<img src='/icons/81479dou2.gif' />这种性能上<img src='/icons/81479de.gif' />降低<img src='/icons/81479dou.gif' />意味着拥有 350 个并发用户<img src='/icons/81479de.gif' />负荷<img src='/icons/81479dou.gif' />已经是<img src='/icons/81479yi.gif' />个拥有 100,000 资源<img src='/icons/81479de.gif' />存储库<img src='/icons/81479de.gif' />最佳负荷了<img src='/icons/81479dou2.gif' /><br/><br/>　　资源数量<img src='/icons/81479de.gif' />可评价性 <br/><br/>　　在 图 9 中<img src='/icons/81479dou.gif' />随着更多资源<img src='/icons/81479de.gif' />引入<img src='/icons/81479dou.gif' />当系统中有 200 个用户时响应时间会降级<img src='/icons/81479dou2.gif' />但是当系统中有 500 个用户时<img src='/icons/81479dou.gif' />资源从 50,000 增长到 100,000 会造成响应时间增长 37%；而对于<img src='/icons/81479yi.gif' />个拥有 200 个用户<img src='/icons/81479de.gif' />系统来说<img src='/icons/81479dou.gif' />响应时间只增长了 14%<img src='/icons/81479dou2.gif' />于是我们得出<img src='/icons/81479yi.gif' />个结论<img src='/icons/81479dou.gif' />对于我们所使用<img src='/icons/81479de.gif' /> Linux 环境<img src='/icons/81479dou.gif' />当系统中有 200 个用户时<img src='/icons/81479dou.gif' />更多资源<img src='/icons/81479de.gif' />引入会对性能造成显著<img src='/icons/81479de.gif' />影响<img src='/icons/81479dou2.gif' />这种增长是由于<img src='/icons/81479chengxu.gif' />服务器上所发生<img src='/icons/81479de.gif' />数据索引和搜索操作；<img src='/icons/81479yinwei.gif' /><img src='/icons/81479dou.gif' />随着资源数量<img src='/icons/81479de.gif' />增长<img src='/icons/81479dou.gif' />响应时间就会受到影响<img src='/icons/81479dou2.gif' /><br/><br/>　　可评价性分解 <br/><br/>　　让我们比较<img src='/icons/81479yi.gif' />下引入更多用户 和引入更多资源的间造成效果<img src='/icons/81479de.gif' />差异<img src='/icons/81479dou.gif' />从上面<img src='/icons/81479de.gif' />分析可以看出<img src='/icons/81479dou.gif' />更多用户<img src='/icons/81479de.gif' />引入对性能<img src='/icons/81479de.gif' />影响更加显著(见于表 3)<img src='/icons/81479dou2.gif' />但是<img src='/icons/81479dou.gif' />如果我们将数据库交流和查询交流隔离出来<img src='/icons/81479de.gif' />话<img src='/icons/81479dou.gif' />我们可以看到增加用户数量造出<img src='/icons/81479de.gif' />影响<img src='/icons/81479dou.gif' />要比增加资源造成<img src='/icons/81479de.gif' />更加显著<img src='/icons/81479dou2.gif' /><br/><br/>图 11. 评价 Linux 上储存库操作和查询<img src='/icons/81479de.gif' />影响 <br /><img width="550" height="316" src="http://CrazyCoder.cn/WebFiles/20103/af77155f-7d8f-45c6-b90b-6ede2629c35a.g<img src='/icons/81479if.gif' />" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　对于存储库<img src='/icons/81479de.gif' />交流<img src='/icons/81479dou.gif' />数据库中行<img src='/icons/81479de.gif' />数量<img src='/icons/81479dou.gif' />在 10,000 个资源和 100,000 个资源的间发生显著<img src='/icons/81479de.gif' />波动<img src='/icons/81479dou.gif' />在响应时间上会发生很大<img src='/icons/81479de.gif' />波动<img src='/icons/81479dou2.gif' />但是对于涉及到 Jena 查询库<img src='/icons/81479de.gif' />查询交流<img src='/icons/81479dou.gif' />差异就不会如此<img src='/icons/81479de.gif' />显著了<img src='/icons/81479dou2.gif' /><br/><br/>　　整理总结 <br/><br/>　　对于<img src='/icons/81479yi.gif' />个有着更好性能<img src='/icons/81479de.gif' />可评价服务器<img src='/icons/81479dou.gif' />使用双边<img src='/icons/81479de.gif' />部署<img src='/icons/81479dou.gif' /><img src='/icons/81479yi.gif' />个服务器为<img src='/icons/81479chengxu.gif' />服务器部署<img src='/icons/81479dou.gif' />另<img src='/icons/81479yi.gif' />个服务器为数据库服务器部署<img src='/icons/81479dou2.gif' />对于大规模<img src='/icons/81479de.gif' />部署<img src='/icons/81479dou.gif' />使用 NAS 或者 SAN 存储方案以得到高服务器负荷条件下<img src='/icons/81479de.gif' />性能<img src='/icons/81479dou2.gif' /><br/><br/>　　规模<br/><br/>　　系统资源使用 <br/><br/>　　对于系统资源<img src='/icons/81479dou.gif' />当所有用户在系统中都是激活状态时<img src='/icons/81479dou.gif' />我们比较了 WebSphere Application Server (接下来表 4 中<img src='/icons/81479de.gif' />&ldquo; WAS&rdquo;)机器资源使用以及 DB2 数据库服务器机器<img src='/icons/81479dou2.gif' /><br/><br/>表 4. Linux 环境资源使用<br/><br/> 　  WAS* CPU 使用百分比  WAS 使用百分比  WAS 硬盘使用(KBps)  DB2 CPU 使用百分比  DB2 内存使用百分比  DB2 硬盘使用(KBps) <br/> 10,000 资源<br />200 用户  18.00  58.6  214.7  1.16  9.67  127.70 <br/> 10,000 资源<br />500 用户  45.26  61.4  635.4  2.55  11.50  326.570 <br/> 100,000 资源<br />200 用户  18.90  63.8  827.5  1.73  10.80  302.20 <br/> 100,000 资源<br />500 用户  49.50  68.0  1795.0  2.89  10.96  435.67 <br/><br/><br/><br/>　　*WAS = 网络区域<img src='/icons/81479chengxu.gif' />服务器<br/><br/>　　增加资源<img src='/icons/81479de.gif' />数量<img src='/icons/81479dou.gif' />对 WebSphere Application Server 机器<img src='/icons/81479de.gif' /> CPU 或者内存<img src='/icons/81479de.gif' />使用情况<img src='/icons/81479de.gif' />影响很小<img src='/icons/81479dou.gif' />但是却能显著地影响硬盘<img src='/icons/81479de.gif' />使用情况<img src='/icons/81479dou2.gif' />对于 DB2 数据库服务器<img src='/icons/81479dou.gif' />增加资源<img src='/icons/81479de.gif' />数量只会影响到硬盘<img src='/icons/81479de.gif' />使用情况<img src='/icons/81479dou2.gif' />而在 WebSphere Application Server 上<img src='/icons/81479dou.gif' />增加用户<img src='/icons/81479de.gif' />数量会同时影响 CPU 及硬盘<img src='/icons/81479de.gif' />使用情况<img src='/icons/81479dou.gif' />却不会对 DB2 服务器机器产生什么影响<img src='/icons/81479dou2.gif' />当您在考虑怎样评价 Rational Requirements Composer 环境时<img src='/icons/81479dou.gif' />硬盘使用情况对 WebSphere Application Server 和 DB2 服务器机器都很重要<img src='/icons/81479dou2.gif' />特别需要指出<img src='/icons/81479de.gif' />是<img src='/icons/81479dou.gif' />对于 WebSphere Application Server 机器<img src='/icons/81479dou.gif' />注意要确保 CPU <img src='/icons/81479de.gif' />使用情况不会成为性能<img src='/icons/81479de.gif' />瓶颈问题<img src='/icons/81479dou2.gif' /><br/><br/>　　硬盘空间<img src='/icons/81479de.gif' />使用情况 <br/><br/>　　Rational Requirements Composer 服务器索引数据使用<img src='/icons/81479de.gif' />硬盘空间和数据库例子需要<img src='/icons/81479de.gif' />硬盘空间组成<img src='/icons/81479dou2.gif' />默认条件下<img src='/icons/81479dou.gif' />索引<img src='/icons/81479de.gif' />数据位于和<img src='/icons/81479chengxu.gif' />服务器相同<img src='/icons/81479de.gif' />机器上<img src='/icons/81479dou2.gif' />因此<img src='/icons/81479dou.gif' /><img src='/icons/81479yi.gif' />直要考虑保持足够<img src='/icons/81479de.gif' />硬盘空间<img src='/icons/81479dou2.gif' /><br/><br/>　　例如<img src='/icons/81479dou.gif' />对于拥有 100,000 Rational Requirements Composer 资源<img src='/icons/81479de.gif' /> Linux 存储库来说<img src='/icons/81479dou.gif' />索引<img src='/icons/81479de.gif' />数据占据了多达 10 GB <img src='/icons/81479de.gif' />硬盘空间<img src='/icons/81479dou2.gif' />数据库例子必须位于拥有合适硬盘空间<img src='/icons/81479de.gif' />服务器上<img src='/icons/81479dou2.gif' />例如<img src='/icons/81479dou.gif' />拥有 100,000 Rational Requirements Composer 资源<img src='/icons/81479de.gif' />数据库大约相当于 17 GB <img src='/icons/81479de.gif' />硬盘空间<img src='/icons/81479dou2.gif' /><br/><br/>　　注意: <br />在我们<img src='/icons/81479de.gif' />测试的中<img src='/icons/81479dou.gif' />我们使用了简化<img src='/icons/81479de.gif' />资源<img src='/icons/81479dou.gif' />以及没有优先级别<img src='/icons/81479de.gif' />资源<img src='/icons/81479dou.gif' />所以实际<img src='/icons/81479de.gif' />硬盘空间使用情况随着资源数量和内容<img src='/icons/81479de.gif' />区别而发生变化<img src='/icons/81479dou2.gif' /><br/><br/>　　网络带宽使用 <br/><br/>　　在测试期间<img src='/icons/81479dou.gif' />我们同时监视了在服务器上运行<img src='/icons/81479de.gif' /> IBM WebSphere Application Server 软件Software<img src='/icons/81479dou.gif' />以及 DB2 服务器<img src='/icons/81479de.gif' />网络使用情况<img src='/icons/81479dou2.gif' /><br/><br/>　　注意: <br />默认条件下<img src='/icons/81479dou.gif' />包括了所有我们进行<img src='/icons/81479de.gif' />测试<img src='/icons/81479dou.gif' />所有<img src='/icons/81479de.gif' />内容都会从 Rational Requirements Composer 服务器转移到使用 HTTP 压缩<img src='/icons/81479de.gif' />客户端连接上面<img src='/icons/81479dou.gif' />HTTP 压缩也就是 gzip 压缩规则<img src='/icons/81479dou2.gif' /><br/><br/>　　所有<img src='/icons/81479de.gif' />客户端连接都使用 HTTPS<img src='/icons/81479dou2.gif' />图 12 显示了使用不断增长<img src='/icons/81479de.gif' />资源和用户<img src='/icons/81479dou.gif' />在我们<img src='/icons/81479de.gif' />测试期间 WebSphere Application Server 和 DB2 服务器<img src='/icons/81479de.gif' />网络带宽<img src='/icons/81479de.gif' />使用情况<img src='/icons/81479dou2.gif' /><br/><br/>表 5. Linux 环境网络使用<br/><br/> 资源和用户  WebSphere 网络使用(KBps)  DB2 网络使用(KBps) <br/> 10,000 资源<img src='/icons/81479dou.gif' />200 个用户  209.6  145.7 <br/> 10,000资源<img src='/icons/81479dou.gif' />500 个用户  564.8  399.4 <br/> 100,000资源<img src='/icons/81479dou.gif' />200 个用户  214.9  149.6 <br/> 10,000资源<img src='/icons/81479dou.gif' />500 个用户  557.2  387.9 <br/><br/><br/><br/>　　从结果中可以看到 WebSphere Application Server 服务器网络使用要比 DB2 服务器<img src='/icons/81479de.gif' />网络使用高出 40%<img src='/icons/81479dou2.gif' />考虑到这些数量<img src='/icons/81479dou.gif' />您应该意识到在您创建服务器环境时<img src='/icons/81479dou.gif' />网络使用情况是<img src='/icons/81479yi.gif' />个考虑原因:WebSphere Application Server 要使用比 DB2 服务器更多<img src='/icons/81479de.gif' />带宽<img src='/icons/81479dou2.gif' /><br/><br/>　　硬件<img src='/icons/81479de.gif' />规模 <br/><br/>　　通过使用我们汇编<img src='/icons/81479de.gif' />测试数据<img src='/icons/81479dou.gif' />我们创建了以下<img src='/icons/81479de.gif' />表格<img src='/icons/81479dou.gif' />基于 Rational Requirements Composer 服务器最优部署<img src='/icons/81479de.gif' />各种区别<img src='/icons/81479de.gif' />硬件和软件Software配置<img src='/icons/81479dou2.gif' />在考虑规模选项时<img src='/icons/81479dou.gif' />2.0 版本同时支持单人配置以及多人配置<img src='/icons/81479dou2.gif' />您可以选择低成本<img src='/icons/81479de.gif' />单边配置<img src='/icons/81479dou.gif' />并且可以在团队(Team)规模扩增<img src='/icons/81479de.gif' />情况下添加<img src='/icons/81479yi.gif' />台机器(双边配置)<img src='/icons/81479dou2.gif' /><br/><br/>　　接下来<img src='/icons/81479de.gif' />列表显示了区别企业部署<img src='/icons/81479de.gif' />规模<img src='/icons/81479dou2.gif' /><br />小型企业配置<img src='/icons/81479dou.gif' />10,000 资源和最多 100 个用户: <br/><br/>　　2 系统: 4核 CPU 2.4 GHz 或者更高<img src='/icons/81479dou.gif' />64 位<br/><br/>　　内存:4 GB 或者更高<br/><br/>　　操作系统:Linux 或者 Windows 服务器<br/><br/>　　Web <img src='/icons/81479chengxu.gif' />服务器:Tomcat 5.5 或者 WebSphere Application Server 6.1 或者后续版本<br/><br/>　　数据库:Oracle 10GR2 或者 DB2 9.1 版本或者 DB2 9.5 版本 Fix Pack 4<br/><br/>　　中等规模企业配置<img src='/icons/81479dou.gif' />50,000 资源和最多 250 个用户: <br/><br/>　　2 系统: 4核 CPU 2.4 GHz 或者更高<img src='/icons/81479dou.gif' />64 位<br/><br/>　　内存:8 GB 或者更高<br/><br/>　　硬盘:高性能 SAS 硬盘(15K)<img src='/icons/81479dou.gif' />RAID<br/><br/>　　操作系统:Linux 或者 Windows 服务器<br/><br/>　　Web <img src='/icons/81479chengxu.gif' />服务器:Tomcat 5.5 或者 WebSphere Application Server 6.1 或者后续版本<br/><br/>　　数据库:Oracle 10GR2 或者 DB2 9.1 版本或者 DB2 9.5 版本 Fix Pack 4<br/><br/>　　大规模企业配置<img src='/icons/81479dou.gif' />100,000 资源和最多 500 用户: <br/><br/>　　2 系统: 4核 CPU 2.4 GHz 或者更高<img src='/icons/81479dou.gif' />64 位<br/><br/>　　内存:8 GB 或者更高<br/><br/>　　硬盘:高性能 SAS 硬盘(15K)、RAID、 SAN 或者 NAS 直接联系<img src='/icons/81479de.gif' />硬盘子系统<br/><br/>　　操作系统:Linux 或者 Windows 服务器<br/><br/>　　Web <img src='/icons/81479chengxu.gif' />服务器:Tomcat 5.5 或者 WebSphere Application Server 6.1 或者后续版本<br/><br/>　　数据库:Oracle 10GR2 或者 DB2 9.1 版本或者 DB2 9.5 版本 Fix Pack 4<br/><br/>　　网络连接性 <br/><br/>　　在双边配置中选择网络<img src='/icons/81479de.gif' />连接性就是降低<img src='/icons/81479chengxu.gif' />服务器和数据库服务器的间<img src='/icons/81479de.gif' />潜在问题(不超过 1-2 ms)<img src='/icons/81479dou2.gif' />当您在使用外部存储时<img src='/icons/81479dou.gif' />减少连接<img src='/icons/81479de.gif' />潜在问题(最佳<img src='/icons/81479de.gif' />配置是通过<img src='/icons/81479yi.gif' />个 Fibre Channel 进行<img src='/icons/81479de.gif' />)<img src='/icons/81479dou2.gif' /><br/><br/>　　硬盘 <br/><br/>　　基于性能测试<img src='/icons/81479de.gif' />结果<img src='/icons/81479dou.gif' />我们发现了资源<img src='/icons/81479de.gif' />增长随着并发用户<img src='/icons/81479de.gif' />增长<img src='/icons/81479dou.gif' />会导致硬盘负荷<img src='/icons/81479de.gif' />增长<img src='/icons/81479dou2.gif' />因此<img src='/icons/81479dou.gif' />对于大规模部署<img src='/icons/81479de.gif' />存储情况<img src='/icons/81479dou.gif' />考虑<img src='/icons/81479yi.gif' />下存储直接通过 Fibre Channel(FC)连接<img src='/icons/81479dou.gif' />以避免存储和服务器的间潜在情况<img src='/icons/81479de.gif' />存在<img src='/icons/81479dou2.gif' />使用这种配置<img src='/icons/81479de.gif' />好处在于允许从服务器到 NAS <img src='/icons/81479de.gif' />所有硬盘 I/O<img src='/icons/81479dou.gif' />同时提供了<img src='/icons/81479yi.gif' />个完整<img src='/icons/81479de.gif' />故障容忍硬盘子系统<img src='/icons/81479dou.gif' />它带有即时快照备份功能以及高可用性和故障恢复功能<img src='/icons/81479dou2.gif' /><br/><br/>　　可用性<br/><br/>　　我们创建了<img src='/icons/81479yi.gif' />个单独<img src='/icons/81479de.gif' />可靠性测试<img src='/icons/81479dou.gif' />以在<img src='/icons/81479yi.gif' />个扩展<img src='/icons/81479de.gif' />时期内观察服务器<img src='/icons/81479de.gif' />运转状况<img src='/icons/81479dou2.gif' />该测试环境<img src='/icons/81479de.gif' />配置和前面描述<img src='/icons/81479de.gif' />相似<img src='/icons/81479dou2.gif' />配置本身在 Appendix 中指定了:可靠性测试环境<img src='/icons/81479dou2.gif' /><br/><br/>　　可靠性测试<img src='/icons/81479de.gif' />目<img src='/icons/81479de.gif' />在于在 5 到 7 天<img src='/icons/81479de.gif' />持续使用期间<img src='/icons/81479dou.gif' />决定 Rational Requirements Composer 服务器<img src='/icons/81479de.gif' />性能和稳定性<img src='/icons/81479dou2.gif' />这种测试会在<img src='/icons/81479yi.gif' />个相当长<img src='/icons/81479de.gif' />测试时间内应用区别<img src='/icons/81479de.gif' />工作负荷<img src='/icons/81479dou.gif' />来评价 Rational Requirements Composer 服务器<img src='/icons/81479de.gif' />性能特征<img src='/icons/81479dou.gif' />除此的外<img src='/icons/81479dou.gif' />还要评价内存<img src='/icons/81479de.gif' />消费情况以及 CPU <img src='/icons/81479de.gif' />使用情况<img src='/icons/81479dou2.gif' /><br/><br/>　　在<img src='/icons/81479chushi.gif' /><img src='/icons/81479de.gif' />创建的后<img src='/icons/81479dou.gif' />内存<img src='/icons/81479de.gif' />使用会停留在<img src='/icons/81479yi.gif' />个给定<img src='/icons/81479de.gif' />范围的中<img src='/icons/81479dou.gif' />而负荷量会有<img src='/icons/81479yi.gif' />定<img src='/icons/81479de.gif' />增长(见于图 12)<img src='/icons/81479dou2.gif' />对于处理器<img src='/icons/81479de.gif' />使用也可以看到相类似<img src='/icons/81479de.gif' />情况(图 13)<img src='/icons/81479dou2.gif' />在<img src='/icons/81479yi.gif' />定<img src='/icons/81479de.gif' />负荷下<img src='/icons/81479dou.gif' />处理器使用可能会发生波动<img src='/icons/81479dou.gif' />但是并不会<img src='/icons/81479yi.gif' />直停留在很高<img src='/icons/81479de.gif' />程度上<img src='/icons/81479dou2.gif' /><br/><br/>　　在测试<img src='/icons/81479de.gif' />过程中<img src='/icons/81479dou.gif' />服务器保持了 100% <img src='/icons/81479de.gif' />负荷<img src='/icons/81479dou2.gif' /><br/><br/>图 12. Server Memory Available 图表<br /><img width="550" height="263" src="http://CrazyCoder.cn/WebFiles/20103/40a156f0-c4cf-432a-b44e-3cd7a49a60c0.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>图 13. Server Processor Time 图表<br /><img width="550" height="274" src="http://CrazyCoder.cn/WebFiles/20103/4b552279-c7b9-481e-8283-2da1333fb7b6.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　<img src='/icons/81479cuowu.gif' />容忍情况<br/><br/>　　正如在 Failure Acceptance 下面所注意<img src='/icons/81479de.gif' />那样<img src='/icons/81479dou.gif' />测试运行时<img src='/icons/81479de.gif' /><img src='/icons/81479cuowu.gif' />代码返回容忍门槛为 5%<img src='/icons/81479dou2.gif' />这些<img src='/icons/81479cuowu.gif' />通常只在高负荷<img src='/icons/81479de.gif' />情况下发生<img src='/icons/81479dou.gif' />此时大量<img src='/icons/81479de.gif' />并发用户以及大量<img src='/icons/81479de.gif' />存储数据已经接近了测试参数<img src='/icons/81479de.gif' />最高界限(500 个用户<img src='/icons/81479dou.gif' />100 KB <img src='/icons/81479de.gif' />资源)<img src='/icons/81479dou2.gif' /><br/><br/>　　对服务器<img src='/icons/81479de.gif' />观察(负荷会发生波动)显示高负荷下产生<img src='/icons/81479de.gif' /><img src='/icons/81479cuowu.gif' /><img src='/icons/81479dou.gif' />不会造成什么长时间<img src='/icons/81479de.gif' />影响<img src='/icons/81479dou.gif' />或者对其他<img src='/icons/81479de.gif' />请求造成什么负面<img src='/icons/81479de.gif' />效果<img src='/icons/81479dou2.gif' />这种行为可以归结为 Rational Requirements Composer 服务器<img src='/icons/81479de.gif' />&ldquo;无述&rdquo;结构<img src='/icons/81479dou2.gif' /><br/><br/>　　高负荷下 OAuth <img src='/icons/81479de.gif' />计时<img src='/icons/81479cuowu.gif' /> <br/><br/>　　高负荷下产生<img src='/icons/81479cuowu.gif' /><img src='/icons/81479de.gif' /><img src='/icons/81479yi.gif' />般原因仍然可以回溯到响应时间<img src='/icons/81479dou2.gif' />在本文这种条件下<img src='/icons/81479dou.gif' />这里指<img src='/icons/81479de.gif' />响应时间不是 Rational Requirements Composer 服务器和客户端的间<img src='/icons/81479de.gif' />响应时间<img src='/icons/81479dou.gif' />而是 Rational Requirements Composer 服务器和 Jazz Foundation Services 的间<img src='/icons/81479de.gif' />响应时间<img src='/icons/81479dou2.gif' /><br/><br/>　　Rational Requirements Composer 服务器对 Jazz Foundation Services 所做<img src='/icons/81479de.gif' />每<img src='/icons/81479yi.gif' />条请求都使用 OAuth 协议进行认证<img src='/icons/81479dou2.gif' />这段时间发生在 Rational Requirements Composer 服务器得到访问令牌并拥有 Jazz Foundation Services 服务<img src='/icons/81479de.gif' />请求的间<img src='/icons/81479dou2.gif' />如果这段时间要比配置<img src='/icons/81479de.gif' /> OAuth Access Token Timeout 更长<img src='/icons/81479dou.gif' />那么请求就会失败<img src='/icons/81479dou.gif' /><img src='/icons/81479yinwei.gif' /> Jazz Foundation Services 将会拒绝 Rational Requirements Composer 服务器<img src='/icons/81479de.gif' />请求<img src='/icons/81479dou2.gif' />在这种情况下<img src='/icons/81479dou.gif' />服务器日志应该报告 OAuth Access Tokens 正处于繁忙中<img src='/icons/81479dou2.gif' /><br/><br/>　　降低 OAuth 繁忙<img src='/icons/81479cuowu.gif' />
<br/><br/>　　在<img src='/icons/81479yi.gif' />个高度负荷<img src='/icons/81479de.gif' />服务器上<img src='/icons/81479dou.gif' />会产生 OAuth Access Token Timeout <img src='/icons/81479cuowu.gif' /><img src='/icons/81479dou.gif' />您可以通过使用 Jazz Foundation Services Admin Web UI 来增加 OAuth Access Timeout<img src='/icons/81479dou2.gif' />选择 Server &gt; Configuration &gt; Advanced Properties 来找到相应<img src='/icons/81479de.gif' />设置<img src='/icons/81479dou2.gif' /><br/><br/>图 14. 高级<img src='/icons/81479de.gif' />服务器属性<br /><img width="247" height="432" src="http://CrazyCoder.cn/WebFiles/20103/946c17c6-907f-4c7c-adb4-f5ca1af67943.jpeg" _disibledevent=><br/><br/>　　OAuth 设置可以在 OAuthServiceProvider 标题下面找到<img src='/icons/81479dou.gif' />如图 15 所示<img src='/icons/81479dou2.gif' /><br/><br/>图 15. OAuth Timeout 属性<br /><img width="550" height="69" src="http://CrazyCoder.cn/WebFiles/20103/19965c41-d505-438f-b1b1-ee0907414e89.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　增加访问令牌繁忙值就可以允许更多<img src='/icons/81479de.gif' />请求通过<img src='/icons/81479dou.gif' />并降低繁忙<img src='/icons/81479cuowu.gif' />产生<img src='/icons/81479de.gif' />几率<img src='/icons/81479dou.gif' />因此提高了系统整体<img src='/icons/81479de.gif' />可靠性<img src='/icons/81479dou2.gif' />当然<img src='/icons/81479dou.gif' />这样做<img src='/icons/81479de.gif' />代价是增加了 Rational Requirements Composer 客户端和服务器的间<img src='/icons/81479de.gif' />响应时间<img src='/icons/81479dou.gif' /><img src='/icons/81479yinwei.gif' />需要更长<img src='/icons/81479de.gif' />时间来完成请求<img src='/icons/81479dou2.gif' /><br/><br/>　　注意: <br />请求<img src='/icons/81479de.gif' />繁忙值会发生变化<img src='/icons/81479dou.gif' />它取决于服务器<img src='/icons/81479de.gif' />配置情况<img src='/icons/81479dou2.gif' /><br/><br/>　　性能扭曲<br/><br/>　　编辑日程安排服务器任务<img src='/icons/81479de.gif' />频率 <br/><br/>　　还有<img src='/icons/81479yi.gif' />些服务器任务会根据安排表来执行<img src='/icons/81479dou2.gif' />当这些任务发生时<img src='/icons/81479dou.gif' />会对服务器造成很重<img src='/icons/81479de.gif' />负荷<img src='/icons/81479dou2.gif' />根据 Rational Requirements Composer 资源使用<img src='/icons/81479de.gif' />情况<img src='/icons/81479dou.gif' />服务器负荷量<img src='/icons/81479de.gif' />多少可以在安排<img src='/icons/81479de.gif' />任务运行时发生变更<img src='/icons/81479dou2.gif' />您可以按照日程安排任务<img src='/icons/81479de.gif' />指导来编辑它们:<br/><br/>　　最近<img src='/icons/81479de.gif' />供给任务 <br/><br/>　　日程安排上有 4个发生更新<img src='/icons/81479de.gif' />任务:最近<img src='/icons/81479de.gif' />工件<img src='/icons/81479dou.gif' />最近<img src='/icons/81479de.gif' />需求<img src='/icons/81479dou.gif' />最近<img src='/icons/81479de.gif' />评论以及标签<img src='/icons/81479de.gif' />数量<img src='/icons/81479dou2.gif' />这些任务对于每<img src='/icons/81479yi.gif' />个Rational Requirements Composer 项目都分别运行<img src='/icons/81479dou2.gif' />取决于工件、需求和评论创建或者更新<img src='/icons/81479de.gif' />频率<img src='/icons/81479dou.gif' />也可以降低任务<img src='/icons/81479de.gif' />性能影响<img src='/icons/81479dou2.gif' />使用下面<img src='/icons/81479de.gif' />指导原则:<br/><br/>　　如果有<img src='/icons/81479yi.gif' />种特定类型<img src='/icons/81479de.gif' />操作并不是经常执行<img src='/icons/81479dou.gif' />那么其频率可以降低<img src='/icons/81479dou2.gif' /><br/><br/>　　如果有<img src='/icons/81479yi.gif' />种特定类型<img src='/icons/81479de.gif' />操作经常执行<img src='/icons/81479dou.gif' />那么相应任务<img src='/icons/81479de.gif' />频率可以增加以降低每<img src='/icons/81479yi.gif' />项任务必须执行任务<img src='/icons/81479de.gif' />数量<img src='/icons/81479dou2.gif' /><br/><br/>　　如果<img src='/icons/81479yi.gif' />种特定类型<img src='/icons/81479de.gif' />任务并不重要<img src='/icons/81479dou.gif' />那么其频率可以降低以减少工作<img src='/icons/81479de.gif' />数量<img src='/icons/81479dou2.gif' /><br/><br/>　　降低任务<img src='/icons/81479de.gif' />发生率可以阻止所有<img src='/icons/81479de.gif' />任务在同<img src='/icons/81479yi.gif' />时间执行<img src='/icons/81479dou.gif' />因此产生了<img src='/icons/81479yi.gif' />种情况<img src='/icons/81479dou.gif' />在<img src='/icons/81479yi.gif' />个给定<img src='/icons/81479de.gif' />时期内<img src='/icons/81479dou.gif' />服务器请求会得到缓慢<img src='/icons/81479de.gif' />处理<img src='/icons/81479dou2.gif' /><br/><br/>　　如果您想更改任务<img src='/icons/81479de.gif' />评论<img src='/icons/81479dou.gif' />您必须先更改 fronting.properties 文件<img src='/icons/81479dou2.gif' />该文件<img src='/icons/81479de.gif' />位置是:<br />&lt;server <img src='/icons/81479install.gif' />ation directory&gt;/conf/rdm/fronting.propreties<img src='/icons/81479dou2.gif' /><br/><br/>　　有<img src='/icons/81479yi.gif' />些相应<img src='/icons/81479de.gif' />属性(所有<img src='/icons/81479de.gif' />属性值单位都是毫秒<img src='/icons/81479dou.gif' />或者 ms):<br/><br/>　　最近<img src='/icons/81479de.gif' />评论集 <br/><br/>　　它决定了哪些评论会出现在最近<img src='/icons/81479de.gif' />评论集中<img src='/icons/81479dou2.gif' />由评论<img src='/icons/81479de.gif' />创建或者更新操作激发<img src='/icons/81479dou2.gif' /><br/><br/>　　com.ibm.rdm.fronting.server.RDMRecentCommentsUpdate.<img src='/icons/81479int.gif' />erval=360000<br/><br/>　　测试期间使用<img src='/icons/81479de.gif' />值:300,000<br/><br/>　　最近<img src='/icons/81479de.gif' />工件单 <br/><br/>　　这决定了哪些工件会出现在最近<img src='/icons/81479de.gif' />工件单种<img src='/icons/81479dou.gif' />由 Rational Requirements Composer 资源<img src='/icons/81479de.gif' />创建或者更新操作激发<img src='/icons/81479dou2.gif' /><br/><br/>　　com.ibm.rdm.fronting.server.RDMRecentArt<img src='/icons/81479if.gif' />actsUpdate.<img src='/icons/81479int.gif' />erval=420000<br/><br/>　　测试期间使用<img src='/icons/81479de.gif' />值:420,000<br/><br/>　　最近<img src='/icons/81479de.gif' />需求单 <br/><br/>　　决定哪些工件出现在最近<img src='/icons/81479de.gif' />需求单上<img src='/icons/81479dou2.gif' />由 Rational Requirements Composer 需求资源<img src='/icons/81479de.gif' />创建或者更新操作激发<br/><br/>　　com.ibm.rdm.fronting.server.RDMRecentRequirementsUpdate.<img src='/icons/81479int.gif' />erval=300000<br/><br/>　　测试期间使用<img src='/icons/81479de.gif' />值:540,000<br/><br/>　　标签统计 <br/><br/>　　决定每<img src='/icons/81479yi.gif' />个公共标签<img src='/icons/81479de.gif' />使用数量<img src='/icons/81479dou2.gif' />由资源<img src='/icons/81479de.gif' />标记和不标记而激发<img src='/icons/81479dou2.gif' /><br/><br/>　　com.ibm.rdm.fronting.server.RDMTagCountUpdate.<img src='/icons/81479int.gif' />erval=900000<br/><br/>　　测试期间使用<img src='/icons/81479de.gif' />值:900,000<br/><br/>　　Jazz 索引持续性间隔 <br/><br/>　　这个间隔值意味着了在索引任务中记录工作<img src='/icons/81479de.gif' />进展状况<img src='/icons/81479dou2.gif' />当记录保存后<img src='/icons/81479dou.gif' />这个期间所作<img src='/icons/81479de.gif' />请求将要比平常<img src='/icons/81479de.gif' />响应时间更长<img src='/icons/81479dou2.gif' />因此<img src='/icons/81479dou.gif' />通过增加持续性间隔<img src='/icons/81479dou.gif' />可以降低停滞阶段<img src='/icons/81479de.gif' />时间<img src='/icons/81479dou2.gif' />当进展是持续性<img src='/icons/81479de.gif' />时候<img src='/icons/81479dou.gif' />就可以保存更多<img src='/icons/81479de.gif' />数据了<img src='/icons/81479dou2.gif' />因此<img src='/icons/81479dou.gif' />如果有大量<img src='/icons/81479de.gif' />资源创建或者更新操作<img src='/icons/81479dou.gif' />那么您就可以降低持续性间隔<img src='/icons/81479dou2.gif' />如果存储库使用主要是只读性<img src='/icons/81479de.gif' />操作<img src='/icons/81479dou.gif' />那么您可以增加持续性间隔以提供更好<img src='/icons/81479de.gif' />性能<img src='/icons/81479dou2.gif' /><br/><br/>　　持续性属性使用 Jazz Admin 页面和所需<img src='/icons/81479de.gif' />管理员权限来进行更改<img src='/icons/81479dou2.gif' /><br/><br/>　　高级属性:每 N 秒持续索引进展<br/><br/>　　默认<img src='/icons/81479de.gif' />值是 60000 ms (1 分钟)<br/><br/>　　测试期间使用<img src='/icons/81479de.gif' />值:600,000 ms<br/><br/>图 16. 索引持续间隔高级设置<br /><img width="550" height="73" src="http://CrazyCoder.cn/WebFiles/20103/6caeffd7-f35d-4b17-8227-7f5be0c6a605.jpeg" _disibledevent=><br/><br/>　　查看原图(大图)<br/><br/>　　致谢<br/><br/>　　感谢系统确认测试团队(Team)中<img src='/icons/81479de.gif' /> Mario Maldari、Ren&eacute; Morrow、 Jim Yen、Ronald Li、Bhavin Shah 和 Li Ping Li 提供了有关可靠性测试<img src='/icons/81479de.gif' />信息<img src='/icons/81479dou2.gif' /><br/><br/>　　附录:可靠性测试环境<br/><br/>　　Availability 部分讨论了用于执行持续 5 到 7 天<img src='/icons/81479de.gif' />测试阶段<img src='/icons/81479dou2.gif' />该环境在图 17 中有详细描述<img src='/icons/81479dou2.gif' /><br/><br/>图 17. 可靠性测试环境<br /><img width="424" height="280" src="http://CrazyCoder.cn/WebFiles/20103/4ac15f51-faca-41bc-bf31-3713d7345e26.g<img src='/icons/81479if.gif' />" _disibledevent=><br/><br/>　　可靠性测试:<img src='/icons/81479chengxu.gif' />服务器 <br/><br/>　　3.00 GHz、8 GB <img src='/icons/81479de.gif' /> RAM(使用 PAE)下 XSERIES 3650<img src='/icons/81479dou.gif' />Intel&reg; Xeon<img src='/icons/81479dou.gif' />CPU 5160<img src='/icons/81479dou.gif' />Microsoft&reg; Windows&reg; Server 2003 Service Pack 2 (32 位)<br/><br/>　　IBM Rational Requirements Composer Server 2.0.0 版本(20091105 1210)<br/><br/>　　WebSphere Application Server 6.1 版本<img src='/icons/81479dou.gif' />Fix Pack 25<br/><br/>　　每个例子最大 1024 MB <img src='/icons/81479de.gif' />存储容量(只安装了<img src='/icons/81479yi.gif' />个例子)<br/><br/>　　IBM DB2 数据库服务器(JRSXML 索引数据库<img src='/icons/81479dou.gif' />在<img src='/icons/81479chengxu.gif' />服务器上运行)<br/><br/>　　DB2 9.5版本<img src='/icons/81479dou.gif' />Fix Pack 2a<br/><br/>　　可靠性测试:Rational Requirements Composer 客户端和 Rational Performance Tester <br/><br/>　　2.66 GHz、2.98 GB <img src='/icons/81479de.gif' /> RAM 下 Intel Core 2Duo CPU E6750 (使用 Physical Address Extension 或者 PAE<img src='/icons/81479dou.gif' />Microsoft&reg; Windows&reg; XP (32 位)<br/><br/>　　IBM Rational Requirements Composer Client 2.0 版本(20091105 1210 )<br/><br/>　　IBM Rational Performance Tester 8.0.1 版本<br/><br/>　　ESX 服务器规格 <br/><br/>　　IBM&reg; <img src='/icons/81479System.gif' /> x&reg; 3650 (7979MC1)<br/><br/>　　双核 Intel Xeon X5365(3.0 GHz  4核)<br/><br/>　　16 GB <img src='/icons/81479de.gif' /> RAM<br/><br/>　　RAID0 上<img src='/icons/81479de.gif' />两个 15 KB RPM SAS 驱动器<br/><br/>
	  
	 <!-- 分页 -->
	 
	 <!-- 分页end -->
 <a href="/mypdf/78975.pdf" title="查看 rational性能测试:IBM Rational Requirements Composer 2.0 的性能和可扩展性评测结果 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>编程综合</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/DeveloperUtil/Article78975.html</guid>
		</item>
		<item>
			<title><![CDATA[editplus替换:Editplus等软件Software中正则替换窍门技巧]]></title>
			<link>http://CrazyCoder.cn/DeveloperUtil/Article78974.html</link>
			<description>
				<![CDATA[

					
          
	  　　正则表达式类<br/><br/>　　【1】 正则表达式应用&mdash;&mdash;替换指定内容到行尾<br/><br/>　　【2】 正则表达式应用&mdash;&mdash;数字替换----------------------------Microshaoft@CCF,jiuk2k@CCF<br/><br/>　　【3】 正则表达式应用&mdash;&mdash;删除每<img src='/icons/49746yi.gif' />行行尾<img src='/icons/49746de.gif' />指定<img src='/icons/49746zifu.gif' /><br/><br/>　　【4】 正则表达式应用&mdash;&mdash;替换带有半角括号<img src='/icons/49746de.gif' />多行<br/><br/>　　【5】 正则表达式应用&mdash;&mdash;删除空行----------------------------江德华<br/><br/>　　软件Software窍门技巧类<br/><br/>　　------------------------------------------------------<br/><br/>　　【6】 软件Software窍门技巧&mdash;&mdash;键盘记录<img src='/icons/49746de.gif' />注意事项<br/><br/>　　【7】 软件Software窍门技巧&mdash;&mdash;关闭文档标签<img src='/icons/49746de.gif' />便捷思路方法<br/><br/>　　【8】 软件Software窍门技巧&mdash;&mdash;如何去掉 EditPlus 保存文本文件时<img src='/icons/49746de.gif' />添加后缀提示？<br/><br/>　　【9】 软件Software窍门技巧&mdash;&mdash;提示找不到语法文件<img src='/icons/49746de.gif' />解决办法<br/><br/>　　【10】软件Software窍门技巧&mdash;&mdash;设置editplus支持其它文字<img src='/icons/49746dou.gif' />如韩文 ----------jackywu1978@LJF<br/><br/>　　【11】软件Software窍门技巧&mdash;&mdash;FTP 上传<img src='/icons/49746de.gif' />设置----------------------------李应文2.11汉化版<br/><br/>　　【12】软件Software窍门技巧&mdash;&mdash;如何禁用备份文件功能？<br/><br/>　　【13】软件Software窍门技巧&mdash;&mdash;添加语法文件、自动完成文件、以及剪辑库文件<br/><br/>　　工具集成类<br/><br/>　　------------------------------------------------------<br/><br/>　　【14】工具集成&mdash;&mdash;编译器集成例子(Java、Borland C<img src='/icons/49746jiajia.gif' />、Visual C<img src='/icons/49746jiajia.gif' />、Inno Setup、nsis、C#)<br/><br/>　　【15】工具集成&mdash;&mdash;让Editplus调试PHP<img src='/icons/49746chengxu.gif' /> ----------------------avenger,aukw@CCF<br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　【16】工具集成&mdash;&mdash;打造 PHP 调试环境( 2)----------------------老 72.11汉化版<br/><br/>　　【17】在 WINPE 中集成 EDITPLUS<br/><br/>　　后续添加<br/><br/>　　------------------------------------------------------<br/><br/>　　【18】支持带UTF-8标记/不带UTF-8标记<img src='/icons/49746de.gif' />文件<br/><br/>　　每个步骤都说得很详细了<img src='/icons/49746dou.gif' />就没有必要贴图了<img src='/icons/49746dou.gif' />体积不要太大才好<img src='/icons/49746dou2.gif' /><br/><br/>　　【1】正则表达式应用&mdash;&mdash;替换指定内容到行尾<br/><br/>　　原始文本如下面两行<br/><br/>　　abc aaaaa<br/><br/>　　123 abc 444<br/><br/>　　希望每次遇到&ldquo;abc&rdquo;<img src='/icons/49746dou.gif' />则替换&ldquo;abc&rdquo;以及其后到行尾<img src='/icons/49746de.gif' />内容为&ldquo;abc efg&rdquo;<br/><br/>　　即上面<img src='/icons/49746de.gif' />文本最终替换为:<br/><br/>　　abc efg<br/><br/>　　123 abc efg<br/><br/>　　解决:<br/><br/>　　① 在替换对话框<img src='/icons/49746dou.gif' />查找内容里输入&ldquo;abc.*&rdquo;<br/><br/>　　② 同时勾选&ldquo;正则表达式&rdquo;复选框<img src='/icons/49746dou.gif' />然后点击&ldquo;全部替换&rdquo;按钮<br/><br/>　　其中<img src='/icons/49746dou.gif' />符号<img src='/icons/49746de.gif' />含义如下:<br/><br/>　　&ldquo;.&rdquo; ＝匹配任意<img src='/icons/49746zifu.gif' /><br/><br/>　　&ldquo;*&rdquo; ＝匹配0次或更多<br/><br/>　　注意:其实就是正则表达式替换<img src='/icons/49746dou.gif' />这里只是把<img src='/icons/49746yi.gif' />些曾经提出<img src='/icons/49746de.gif' />问题加以整理<img src='/icons/49746dou.gif' />单纯从正则表达式本身来说<img src='/icons/49746dou.gif' />就可以引申出成千上万种特例<img src='/icons/49746dou2.gif' /><br/><br/>　　【2】正则表达式应用&mdash;&mdash;数字替换 (Microshaoft@CCF,jiuk2k@CCF)<br/><br/>　　希望把<br/><br/>　　asdadas123asdasdas456asdasdasd789asdasd<br/><br/>　　替换为:<br/><br/>　　asdadas[123]asdasdas[456]asdasdasd[789]asdasd<br/><br/>　　在替换对话框里面<img src='/icons/49746dou.gif' />勾选&ldquo;正则表达式&rdquo;复选框；<br/><br/>　　在查找内容里面输入&ldquo;[0-9][0-9][0-9]&rdquo;<img src='/icons/49746dou.gif' />不含引号<br/><br/>　　&ldquo;替换为:&rdquo;里面输入&ldquo;[\0\1\2]&rdquo;<img src='/icons/49746dou.gif' />不含引号<br/><br/>　　范围为你所操作<img src='/icons/49746de.gif' />范围<img src='/icons/49746dou.gif' />然后选择替换即可<img src='/icons/49746dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　实际上这也是正则表达式<img src='/icons/49746de.gif' />使用特例<img src='/icons/49746dou.gif' />&ldquo;[0-9]&rdquo;表示匹配0～9的间<img src='/icons/49746de.gif' />任何特例<img src='/icons/49746dou.gif' />同样 &ldquo;[a-z]&rdquo;就表示匹配a～z的间<img src='/icons/49746de.gif' />任何特例<br/><br/>　　上面重复使用了&ldquo;[0-9]&rdquo;<img src='/icons/49746dou.gif' />表示连续出现<img src='/icons/49746de.gif' /> 3个数字<br/><br/>　　&ldquo;\0&rdquo;代表第<img src='/icons/49746yi.gif' />个&ldquo;[0-9]&rdquo;对应<img src='/icons/49746de.gif' />原型<img src='/icons/49746dou.gif' />&ldquo;\1&rdquo;代表第 2个&ldquo;[0-9]&rdquo;对应<img src='/icons/49746de.gif' />原型<img src='/icons/49746dou.gif' />依此类推<br/><br/>　　&ldquo;[&rdquo;、&ldquo;]&rdquo;为单纯<img src='/icons/49746de.gif' /><img src='/icons/49746zifu.gif' /><img src='/icons/49746dou.gif' />表示添加&ldquo;[&rdquo;或&ldquo;]&rdquo;<img src='/icons/49746dou.gif' />如果输入&ldquo;其它\0\1\2其它&rdquo;<img src='/icons/49746dou.gif' />则替换结果为:<br/><br/>　　asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd<br/><br/>　　功能增强(by jiuk2k@CCF):<br/><br/>　　如果将查找内容&ldquo;[0-9][0-9][0-9]&rdquo;改为&ldquo;[0-9]*[0-9]&rdquo;<img src='/icons/49746dou.gif' />对应1 或 123 或 12345 或 ...<br/><br/>　　大家根据需要定制<br/><br/>　　相关内容还有很多<img src='/icons/49746dou.gif' />可以自己参考正则表达式<img src='/icons/49746de.gif' />语法仔细研究<img src='/icons/49746yi.gif' />下<br/><br/>　　【3】正则表达式应用&mdash;&mdash;删除每<img src='/icons/49746yi.gif' />行行尾<img src='/icons/49746de.gif' />指定<img src='/icons/49746zifu.gif' /><br/><br/>　　<img src='/icons/49746yinwei.gif' />这几个<img src='/icons/49746zifu.gif' />在行中也是出现<img src='/icons/49746de.gif' />,所以肯定不能用简单<img src='/icons/49746de.gif' />替换实现<br/><br/>　　比如<br/><br/>　　12345 1265345<br/><br/>　　2345<br/><br/>　　需要删除每行末尾<img src='/icons/49746de.gif' />&ldquo;345&rdquo;<br/><br/>　　这个也算正则表达式<img src='/icons/49746de.gif' />使用方法<img src='/icons/49746dou.gif' />其实仔细看正则表达式应该比较简单<img src='/icons/49746dou.gif' />不过既然有这个问题提出<img src='/icons/49746dou.gif' />介绍说明对正则表达式还得有个认识过程<img src='/icons/49746dou.gif' />解决思路方法如下<br/><br/>　　解决:<br/><br/>　　在替换对话框中<img src='/icons/49746dou.gif' />启用&ldquo;正则表达式&rdquo;复选框<br/><br/>　　在查找内容里面输入&ldquo;345$&rdquo;<br/><br/>　　这里&ldquo;$&rdquo;表示从行尾匹配<br/><br/>　　如果从行首匹配<img src='/icons/49746dou.gif' />可以用&ldquo;^&rdquo;来实现<img src='/icons/49746dou.gif' />不过 EditPlus 有另<img src='/icons/49746yi.gif' />个功能可以很简单<img src='/icons/49746de.gif' />删除行首<img src='/icons/49746de.gif' /><img src='/icons/49746zifu.gif' />串<br/><br/>　　a. 选择要操作<img src='/icons/49746de.gif' />行<br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　b. 编辑－格式－删除行注释<br/><br/>　　c. 在弹出对话框里面输入要清除<img src='/icons/49746de.gif' />行首<img src='/icons/49746zifu.gif' /><img src='/icons/49746dou.gif' />确定<br/><br/>　　【4】正则表达式应用&mdash;&mdash;替换带有半角括号<img src='/icons/49746de.gif' />多行<br/><br/>　　几百个网页中都有下面<img src='/icons/49746yi.gif' />段代码:<br/><br/>　　&lt;script LANGUAGE="JavaScript1.1"&gt;<br/><br/>　　&lt;!--<br/><br/>　　htmlAdWH('93163607', '728', '90');<br/><br/>　　//--&gt;<br/><br/>　　&lt;/SCRIPT&gt;<br/><br/>　　我想把它们都去掉<img src='/icons/49746dou.gif' />可是找了很多search &amp; replace<img src='/icons/49746de.gif' />软件Software<img src='/icons/49746dou.gif' />都是只能对&ldquo;<img src='/icons/49746yi.gif' />行&rdquo;进行操作<img src='/icons/49746dou2.gif' /><br/><br/>　　EditPlus 打开几百个网页文件还是比较顺畅<img src='/icons/49746de.gif' /><img src='/icons/49746dou.gif' />所以完全可以胜任这个工作<img src='/icons/49746dou2.gif' /><br/><br/>　　具体解决思路方法<img src='/icons/49746dou.gif' />在 Editplus 中使用正则表达式<img src='/icons/49746dou.gif' />由于&ldquo;(&rdquo;、&ldquo;)&rdquo;被用做预设表达式(或者可以称作子表达式)<img src='/icons/49746de.gif' />标志<img src='/icons/49746dou.gif' />所以查找<br/><br/>　　&ldquo;&lt;script LANGUAGE="JavaScript1.1"&gt;\n&lt;!--\nhtmlAdWH('93163607', '728', '90'.);\n//--&gt;\n&lt;/SCRIPT&gt;\n&rdquo;<br/><br/>　　时会提示查找不到<img src='/icons/49746dou.gif' />所以也就无法进行替换了<img src='/icons/49746dou.gif' />这时可以把&ldquo;(&rdquo;、&ldquo;)&rdquo;使用任意<img src='/icons/49746zifu.gif' />标记替代<img src='/icons/49746dou.gif' />即半角句号:&ldquo;.&rdquo;<img src='/icons/49746dou2.gif' />替换内容为<br/><br/>　　&lt;script LANGUAGE="JavaScript1.1"&gt;\n&lt;!--\nhtmlAdWH.'93163607', '728', '90'.;\n//--&gt;\n&lt;/SCRIPT&gt;\n<br/><br/>　　在替换对话框启用&ldquo;正则表达式&rdquo;选项<img src='/icons/49746dou.gif' />这时就可以完成替换了<br/><br/>　　补充:(lucida@DRL)<br/><br/>　　对( ) 这样<img src='/icons/49746de.gif' />特殊符号<img src='/icons/49746dou.gif' />应该用\( \)来表示<img src='/icons/49746dou.gif' />这也是很标准<img src='/icons/49746de.gif' />regexp语法<img src='/icons/49746dou.gif' />可以写为<br/><br/>　　&lt;script LANGUAGE="JavaScript1.1"&gt;\n&lt;!--\nhtmlAdWH\('93163607', '728', '90'\);\n//--&gt;\n&lt;/SCRIPT&gt;\n<br/><br/>　　【5】正则表达式应用&mdash;&mdash;删除空行<br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　启动EditPlus<img src='/icons/49746dou.gif' />打开待处理<img src='/icons/49746de.gif' />文本类型文件<img src='/icons/49746dou2.gif' /><br/><br/>　　①、选择&ldquo;查找&rdquo;菜单<img src='/icons/49746de.gif' />&ldquo;替换&rdquo;命令<img src='/icons/49746dou.gif' />弹出文本替换对话框<img src='/icons/49746dou2.gif' />选中&ldquo;正则表达式&rdquo;复选框<img src='/icons/49746dou.gif' />表明我们要在查找、替换中使用正则表达式<img src='/icons/49746dou2.gif' />然后<img src='/icons/49746dou.gif' />选中&ldquo;替换范围&rdquo;中<img src='/icons/49746de.gif' />&ldquo;当前文件&rdquo;<img src='/icons/49746dou.gif' />表明对当前文件操作<img src='/icons/49746dou2.gif' /><br/><br/>　　②、单击&ldquo;查找内容&rdquo;组合框右侧<img src='/icons/49746de.gif' />按钮<img src='/icons/49746dou.gif' />出现下拉菜单<img src='/icons/49746dou2.gif' /><br/><br/>　　③、下面<img src='/icons/49746de.gif' />操作添加正则表达式<img src='/icons/49746dou.gif' />该表达式代表待查找<img src='/icons/49746de.gif' />空行<img src='/icons/49746dou2.gif' />(窍门技巧提示:空行仅包括空格符、制表符、回车符<img src='/icons/49746dou.gif' />且必须以这 3个符号的<img src='/icons/49746yi.gif' />作为<img src='/icons/49746yi.gif' />行<img src='/icons/49746de.gif' />开头<img src='/icons/49746dou.gif' />并且以回车符结尾<img src='/icons/49746dou.gif' />查找空行<img src='/icons/49746de.gif' />关键是构造代表空行<img src='/icons/49746de.gif' />正则表达式)<img src='/icons/49746dou2.gif' /><br/><br/>　　直接在"查找"中输入正则表达式&ldquo;^[ \t]*\n&rdquo;<img src='/icons/49746dou.gif' />注意\t前有空格符<img src='/icons/49746dou2.gif' /><br/><br/>　　(1)选择&ldquo;从行首开始匹配&rdquo;<img src='/icons/49746dou.gif' />&ldquo;查找内容&rdquo;组合框中出现<img src='/icons/49746zifu.gif' />&ldquo;^&rdquo;<img src='/icons/49746dou.gif' />表示待查找<img src='/icons/49746zifu.gif' />串必须出现在文本中<img src='/icons/49746yi.gif' />行<img src='/icons/49746de.gif' />行首<img src='/icons/49746dou2.gif' /><br/><br/>　　(2)选择&ldquo;<img src='/icons/49746zifu.gif' />在范围中&rdquo;<img src='/icons/49746dou.gif' />那么在&ldquo;^&rdquo;后会增加<img src='/icons/49746yi.gif' />对括号&ldquo;<img src='/icons/49746zhk2.gif' />&rdquo;<img src='/icons/49746dou.gif' />当前插入点在括号中<img src='/icons/49746dou2.gif' />括号在正则表达式中表示<img src='/icons/49746dou.gif' />文本中<img src='/icons/49746de.gif' /><img src='/icons/49746zifu.gif' />匹配括号中任意<img src='/icons/49746yi.gif' />个<img src='/icons/49746zifu.gif' />即符合查找条件<img src='/icons/49746dou2.gif' /><br/><br/>　　(3)按<img src='/icons/49746yi.gif' />下空格键<img src='/icons/49746dou.gif' />添加空格符<img src='/icons/49746dou2.gif' />空格符是空行<img src='/icons/49746de.gif' /><img src='/icons/49746yi.gif' />个组成成分<img src='/icons/49746dou2.gif' /><br/><br/>　　(4)选择&ldquo;制表符&rdquo;<img src='/icons/49746dou.gif' />添加代表制表符<img src='/icons/49746de.gif' />&ldquo;\t&rdquo;<img src='/icons/49746dou2.gif' /><br/><br/>　　(5)移动光标<img src='/icons/49746dou.gif' />将当前插入点移到&ldquo;]&rdquo;的后<img src='/icons/49746dou.gif' />然后选择&ldquo;匹配 0 次或更多&rdquo;<img src='/icons/49746dou.gif' />该操作会添加星号<img src='/icons/49746zifu.gif' />&ldquo;*&rdquo;<img src='/icons/49746dou2.gif' />星号表示<img src='/icons/49746dou.gif' />其前面<img src='/icons/49746de.gif' />括号&ldquo;<img src='/icons/49746zhk2.gif' />&rdquo;内<img src='/icons/49746de.gif' />空格符或制表符<img src='/icons/49746dou.gif' />在<img src='/icons/49746yi.gif' />行中出现0个或多个<img src='/icons/49746dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　(6)选择&ldquo;换行符&rdquo;<img src='/icons/49746dou.gif' />插入&ldquo;\n&rdquo;<img src='/icons/49746dou.gif' />表示回车符<img src='/icons/49746dou2.gif' /><br/><br/>　　④、&ldquo;替换为&rdquo;组合框保持空<img src='/icons/49746dou.gif' />表示删除查找到<img src='/icons/49746de.gif' />内容<img src='/icons/49746dou2.gif' />单击&ldquo;替换&rdquo;按钮逐个行删除空行<img src='/icons/49746dou.gif' />或单击 &ldquo;全部替换&rdquo;按钮删除全部空行(注意:EditPlus有时存在&ldquo;全部替换&rdquo;不能<img src='/icons/49746yi.gif' />次性完全删除空行<img src='/icons/49746de.gif' />问题<img src='/icons/49746dou.gif' />可能是<img src='/icons/49746chengxu.gif' />BUG<img src='/icons/49746dou.gif' />需要多按几次按钮)<img src='/icons/49746dou2.gif' /><br/><br/>　　【6】软件Software窍门技巧&mdash;&mdash;键盘记录<img src='/icons/49746de.gif' />注意事项<br/><br/>　　EditPlus <img src='/icons/49746de.gif' />键盘记录有些类似于 UltraEdit <img src='/icons/49746de.gif' />宏操作<img src='/icons/49746dou.gif' />不过功能相对单<img src='/icons/49746yi.gif' /><img src='/icons/49746dou.gif' />录制<img src='/icons/49746de.gif' />文件可编辑性较差<img src='/icons/49746dou2.gif' /><br/><br/>　　由于基本无法编辑录制<img src='/icons/49746de.gif' />文件<img src='/icons/49746dou.gif' />所以录制<img src='/icons/49746de.gif' />时候为了避免录制失败<img src='/icons/49746dou.gif' />推荐纯粹使用键盘操作<img src='/icons/49746dou.gif' />以下是比较关键<img src='/icons/49746de.gif' />几个键盘组合:<br/><br/>　　Ctrl+F ＝ 调出查找对话框<br/><br/>　　Ctrl+H ＝ 调出替换对话框<br/><br/>　　Alt+F4 ＝ 关闭作用<img src='/icons/49746dou.gif' />比如<img src='/icons/49746dou.gif' />关闭查找对话框、关闭替换对话框<img src='/icons/49746dou.gif' />等等<br/><br/>　　其它键盘快捷键在&ldquo;帮助－快捷键列表&rdquo;里面可以很容易<img src='/icons/49746de.gif' />查找到<img src='/icons/49746dou.gif' />这里就不细说了<img src='/icons/49746dou2.gif' /><br/><br/>　　【7】软件Software窍门技巧&mdash;&mdash;关闭文档标签<img src='/icons/49746de.gif' />便捷思路方法<br/><br/>　　右键单击文档标签工具条<img src='/icons/49746dou.gif' />弹出菜单中选择&ldquo;标签选项&rdquo;<img src='/icons/49746dou.gif' />选中&ldquo;用鼠标中间<img src='/icons/49746de.gif' />按钮关闭&rdquo;<img src='/icons/49746dou.gif' />这里包括鼠标<img src='/icons/49746de.gif' />滚轮<img src='/icons/49746dou2.gif' /><br/><br/>　　【8】软件Software窍门技巧&mdash;&mdash;如何去掉 EditPlus 保存文本文件时<img src='/icons/49746de.gif' />添加后缀提示？<br/><br/>　　如果你使用 EditPlus 进行文本编辑<img src='/icons/49746dou.gif' />那么每次创建文本文件<img src='/icons/49746dou.gif' />编辑后保存时<img src='/icons/49746dou.gif' />尽管文件类型下拉列表中显示<img src='/icons/49746de.gif' />是文本文件<img src='/icons/49746dou.gif' /> EditPlus 还是询问你是否添加".txt"后缀<img src='/icons/49746dou.gif' />是不是很烦？<br/><br/>　　解决思路方法:<br/><br/>　　① 在<img src='/icons/49746chengxu.gif' />目录建立<img src='/icons/49746yi.gif' />个空<img src='/icons/49746de.gif' />文件&ldquo;template.txt&rdquo;<br/><br/>　　② &ldquo;工具－参数设置－模板&rdquo;里面<img src='/icons/49746dou.gif' />单击&ldquo;添加&rdquo;按钮添加模板<img src='/icons/49746dou.gif' />&ldquo;菜单文本&rdquo;这里输入&ldquo;Text&rdquo;<img src='/icons/49746dou.gif' />浏览&ldquo;template.txt&rdquo;<img src='/icons/49746dou.gif' />的后确定即可<br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　③ &ldquo;文件－新建－text&rdquo;<img src='/icons/49746dou.gif' />就可以建立<img src='/icons/49746yi.gif' />个空<img src='/icons/49746de.gif' />文本文件<img src='/icons/49746dou.gif' />保存时<img src='/icons/49746dou.gif' />这个文件自动带有扩展名".txt"<img src='/icons/49746dou.gif' />也就避免了令人头疼<img src='/icons/49746de.gif' />确认<br/><br/>　　④ 模板设置文件名称为&ldquo;template.ini&rdquo;<img src='/icons/49746dou.gif' />如果和主<img src='/icons/49746chengxu.gif' />同<img src='/icons/49746yi.gif' />路径<img src='/icons/49746dou.gif' />可以使用相对路径<br/><br/>　　罗嗦了点<img src='/icons/49746dou.gif' />不过管用<br/><br/>　　要自动创建带有某种后缀<img src='/icons/49746de.gif' />文件<img src='/icons/49746dou.gif' />思路方法同上<img src='/icons/49746dou2.gif' /><br/><br/>　　【9】软件Software窍门技巧&mdash;&mdash;提示找不到语法文件 *.stx <img src='/icons/49746de.gif' />解决办法<br/><br/>　　原因多为设置<img src='/icons/49746de.gif' />语法文件不存在或者是路径设置不对<img src='/icons/49746dou2.gif' />这是<img src='/icons/49746yinwei.gif' /> EditPlus <img src='/icons/49746de.gif' />语法是设置文件采用<img src='/icons/49746de.gif' />是绝对路径<img src='/icons/49746dou.gif' />而在你设置了语法文件的后<img src='/icons/49746dou.gif' />再把<img src='/icons/49746chengxu.gif' />复制到其它目录<img src='/icons/49746dou.gif' />因而导致 EditPlus 无法找到该语法文件<img src='/icons/49746dou2.gif' /><br/><br/>　　解决办法:<br/><br/>　　在主<img src='/icons/49746chengxu.gif' />目录里<img src='/icons/49746dou.gif' />找到 Setting.ini 这是 EditPlus 存放语法<img src='/icons/49746de.gif' />文件<br/><br/>　　查找后缀为&ldquo;.stx&rdquo;、&ldquo;acp&rdquo;<img src='/icons/49746de.gif' />文本内容<img src='/icons/49746dou.gif' />或者查找带有驱动器符号<img src='/icons/49746de.gif' />行<img src='/icons/49746dou.gif' />比如<br/><br/>　　Syntax file=C:\Program Files\EditPlus 2\cpp.stx<br/><br/>　　那么<img src='/icons/49746dou.gif' />就把&rdquo;C:\Program Files\EditPlus 2\&ldquo;替换成你当前软件Software<img src='/icons/49746de.gif' />路径<img src='/icons/49746dou2.gif' /><br/><br/>　　其它提示找不到文件<img src='/icons/49746de.gif' />解决思路方法同上<br/><br/>　　【10】软件Software窍门技巧&mdash;&mdash;设置editplus支持其它文字<img src='/icons/49746dou.gif' />如韩文<br/><br/>　　在editplus里打开文件<img src='/icons/49746dou.gif' />出来打开文件对话框；然后点击&ldquo;转换器&rdquo;后面<img src='/icons/49746de.gif' />那个省略号<img src='/icons/49746dou.gif' />会出来自定义转换器对话框；在右边选择你需要<img src='/icons/49746de.gif' />编码方式<img src='/icons/49746dou.gif' />添加到左边<img src='/icons/49746dou.gif' />然后点确定；最后在下拉框中选择需要<img src='/icons/49746de.gif' />编码方式<img src='/icons/49746dou.gif' />然后打开文件即可<img src='/icons/49746dou2.gif' /><br/><br/>　　【11】软件Software窍门技巧&mdash;&mdash;FTP 上传<img src='/icons/49746de.gif' />设置<br/><br/>　　&ldquo;文件-&gt;远程操作-&gt;FTP 上传&rdquo;在&ldquo;设置&rdquo;选项卡中设置好参数(&ldquo;子目录&rdquo;前面应该加&ldquo;/&rdquo;如&ldquo;/web/&rdquo;)<img src='/icons/49746dou.gif' />点击&ldquo;确定&rdquo;回到&ldquo;FTP 上传&rdquo;选项卡<img src='/icons/49746dou.gif' />然后点击&ldquo;上传&rdquo;即可；&ldquo;批量上传&rdquo;<img src='/icons/49746de.gif' />设置类似<img src='/icons/49746dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　【12】软件Software窍门技巧&mdash;&mdash;如何禁用备份文件功能？<br/><br/>　　在&ldquo;参数选择&rdquo;<img src='/icons/49746de.gif' />文件选项页<img src='/icons/49746dou.gif' />禁用&ldquo;'保存时自动创建备份文件&rdquo;选项<br/><br/>　　【13】软件Software窍门技巧&mdash;&mdash;添加语法文件、自动完成文件、以及剪辑库文件<br/><br/>　　要添加 *.STX(语法文件)或 *.ACP(自动完成文件):<br/><br/>　　1. 选择&ldquo;参数选择&rarr;语法&rdquo;<br/><br/>　　2. 单击&ldquo;添加&rdquo;按钮<img src='/icons/49746dou.gif' />命名<img src='/icons/49746dou.gif' />在&ldquo;扩展名&rdquo;部分输入对应扩展名(不带&ldquo;.&rdquo;)<br/><br/>　　3. 浏览/输入 STX(语法文件部分) 以及 ACP(自动完成文件部分)<img src='/icons/49746dou2.gif' /><br/><br/>　　添加剪辑库文件(*.CTL)<br/><br/>　　复制相应 *.CTL 文件到软件Software安装目录<img src='/icons/49746dou.gif' />重新启动 EditPlus <img src='/icons/49746dou.gif' />则系统自动识别<img src='/icons/49746dou2.gif' /><br/><br/>　　作者主页有很多语法自动完成文件下载<img src='/icons/49746dou.gif' />地址<br/><br/>　　http://editplus.com/files.html<br/><br/>　　【14】工具集成&mdash;&mdash;编译器集成例子(Java、Borland C<img src='/icons/49746jiajia.gif' />、Visual C<img src='/icons/49746jiajia.gif' />、Inno Setup、nsis)<br/><br/>　　在&ldquo;工具&rarr;参数选择&rarr;用户工具&rdquo;选项页设置<img src='/icons/49746dou.gif' />设置步骤<br/><br/>　　① 设置组名称<img src='/icons/49746dou.gif' />这里也可以不设置<br/><br/>　　② 单击&ldquo;添加工具&rarr;应用<img src='/icons/49746chengxu.gif' />&rdquo;按钮并进行如下设置<br/><br/>　　③ 各种类似"$(FilePath)"<img src='/icons/49746de.gif' />参数可以在文本框右侧<img src='/icons/49746de.gif' />箭头下拉菜单中获取<img src='/icons/49746dou.gif' />具体含义如下<br/><br/>　　参数 描述<br/><br/>　　$(FilePath) 文件路径(文件全名<img src='/icons/49746dou.gif' />含目录和文件名)<br/><br/>　　$(FileDir) 文件目录(不带文件名)<br/><br/>　　$(FileName) 文件名(不带目录)<br/><br/>　　$(FileNameNoExt) 不带扩展名<img src='/icons/49746de.gif' />文件名(不带目录)<br/><br/>　　$(FileExt) 扩展名(当前文件)<br/><br/>　　$(ProjectName) 工程名称(当前工程名)<br/><br/>　　$(CurLine) 当前行号(光标位置处<img src='/icons/49746de.gif' />行号)<br/><br/>　　$(CurCol) 当前列号(光标位置处<img src='/icons/49746de.gif' />列号)<br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　$(CurSel) 当前文本(插入当前选定文本)<br/><br/>　　$(CurWord) 当前单词(插入当前单词)<br/><br/>　　$(WindowList) 显示当前窗口列表并选择特定文件<br/><br/>　　例子 1. Java 编译器<br/><br/>　　菜单文本:Java 编译器<br/><br/>　　命令:c:\java\bin\javac.exe<br/><br/>　　参数:"$(FilePath)"<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:$(FileDir)<br/><br/>　　捕获输出:开启<br/><br/>　　要运行已编译<img src='/icons/49746de.gif' /> Java 类文件<img src='/icons/49746dou.gif' />你可以进行如下设置:<br/><br/>　　菜单文本:Java<br/><br/>　　命令:c:\java\bin\java.exe<br/><br/>　　参数:$(FileNameNoExt)<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:$(FileDir)<br/><br/>　　&ldquo;命令&rdquo;部分应当替换为实际<img src='/icons/49746de.gif' /> Java 解释器<img src='/icons/49746de.gif' />路径<img src='/icons/49746dou2.gif' /><br/><br/>　　例子 2. Borland C<img src='/icons/49746jiajia.gif' /><br/><br/>　　菜单文本:Borland C<br/><br/>　　命令:c:\bc\bin\bcc32.exe<br/><br/>　　参数:-Ic:\bc\<img src='/icons/49746include.gif' /> -Lc:\bc\lib -n$(FileDir) $(FilePath)<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:c:\bc\bin<br/><br/>　　捕获输出:开启<br/><br/>　　例子 3. Visual C<img src='/icons/49746jiajia.gif' /><br/><br/>　　菜单文本:Visual C<img src='/icons/49746jiajia.gif' /><br/><br/>　　命令:c:\msdev\vc98\bin\cl.exe<br/><br/>　　参数:"$(FilePath)"<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:$(FileDir)<br/><br/>　　捕获输出:开启<br/><br/>　　例子 4. Inno Setup<br/><br/>　　菜单文本:编译 Inno<br/><br/>　　命令:C:\Program Files\Inno Setup 4\Compil32.exe&rdquo;<br/><br/>　　参数:/cc $(FileName)<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:$(FileDir)<br/><br/>　　捕获输出:开启<br/><br/>　　例子 5. nsis<br/><br/>　　菜单文本:编译 nsis<br/><br/>　　命令:C:\NSIS\makensis.exe<br/><br/>　　参数:$(FileName)<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:$(FileDir)<br/><br/>　　捕获输出:开启<br/><br/>　　例子 6. C#<br/><br/>　　菜单文本:编译 C#<br/><br/>　　命令:C:\WINDOWS\Microsoft.NET\Framework \v1.0.3705\csc.exe<br/><br/>　　参数:$(FileName)<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:$(FileDir)<br/><br/>　　捕获输出:开启<br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　在上面设置中<img src='/icons/49746dou.gif' />在命令部分<img src='/icons/49746dou.gif' />必须使用系统中各自编译器<img src='/icons/49746de.gif' />绝对路径<img src='/icons/49746dou2.gif' /><br/><br/>　　设置完毕后<img src='/icons/49746dou.gif' />你可以在&ldquo;工具&rdquo;菜单运行对应工具了<img src='/icons/49746dou.gif' />运行结果会显示在底部<img src='/icons/49746de.gif' />输出窗口<img src='/icons/49746dou.gif' />你也可以通过快捷键(Ctrl + 0-9) 运行<img src='/icons/49746dou.gif' />或者是通过&ldquo;用户工具栏&rdquo;<img src='/icons/49746de.gif' />快捷按钮运行<img src='/icons/49746dou2.gif' /><br/><br/>　　要运行已编译<img src='/icons/49746de.gif' /> *.exe 文件<img src='/icons/49746dou.gif' />你可以进行如下设置(此时可执行文件需要和编译文件同名):<br/><br/>　　菜单文本:Run<br/><br/>　　命令:$(FileNameNoExt)<br/><br/>　　参数:<br/><br/>　　<img src='/icons/49746chushi.gif' />目录:$(FileDir)<br/><br/>　　【15】工具集成&mdash;&mdash; 让Editplus调试PHP<img src='/icons/49746chengxu.gif' /><br/><br/>　　1:打开Editplus<img src='/icons/49746dou.gif' />选择"工具-&gt;配置用户工具..."菜单<img src='/icons/49746dou2.gif' /><br/><br/>　　2:在弹出<img src='/icons/49746de.gif' />窗口中选择"添加工具-&gt;应用<img src='/icons/49746chengxu.gif' />",给新<img src='/icons/49746chengxu.gif' />起<img src='/icons/49746yi.gif' />个好记<img src='/icons/49746de.gif' />名字<img src='/icons/49746dou.gif' />比如这里我们用"Debug PHP",在"菜单文本"中输入"Debug PHP"<img src='/icons/49746dou2.gif' />点击"命令行"右边<img src='/icons/49746de.gif' />按钮,找到你<img src='/icons/49746de.gif' />php.exe所在<img src='/icons/49746de.gif' />路径<img src='/icons/49746dou.gif' />例如这里是"c:\php\php.exe"<img src='/icons/49746dou2.gif' />再点击"参数"右边<img src='/icons/49746de.gif' />下拉按钮选择"文件路径",最后再把"捕获输出"前面<img src='/icons/49746de.gif' />复选框选上<img src='/icons/49746dou2.gif' /><br/><br/>　　3:现在测试<img src='/icons/49746yi.gif' />下<img src='/icons/49746dou.gif' />新建<img src='/icons/49746yi.gif' />个php文件<img src='/icons/49746dou.gif' />按快捷键Ctrl+1可以激活刚才我们设置<img src='/icons/49746de.gif' />工具(如果你设置了多个工具,快捷键可能会有所区别),现在你可以看到它已经能正常工作了<img src='/icons/49746dou2.gif' />但是还有<img src='/icons/49746yi.gif' />点不太理想:如果你<img src='/icons/49746de.gif' />PHP<img src='/icons/49746chengxu.gif' />出错,在输出窗口会提示你第几行出错 ,单击这<img src='/icons/49746yi.gif' />行提示,Editplus老是提示你找不到某某文件<img src='/icons/49746dou.gif' />是否新建<img src='/icons/49746dou2.gif' />接下下我们要修正这个功能<img src='/icons/49746dou2.gif' /><br/><br/>　　4:打开刚才用户工具设置窗口<img src='/icons/49746dou.gif' />找到刚才设置<img src='/icons/49746de.gif' />"Debug PHP"工具<img src='/icons/49746dou2.gif' />点击"捕获输出"复选框旁边<img src='/icons/49746de.gif' />"输出模式"按钮,会弹出<img src='/icons/49746yi.gif' />个定义输出模式<img src='/icons/49746de.gif' />窗体<img src='/icons/49746dou.gif' />把"使用默认输出模式"前面<img src='/icons/49746de.gif' />复选框去掉, 在"正则表达式"这<img src='/icons/49746yi.gif' />项<img src='/icons/49746de.gif' />文本框中输入" ^.+ in (.+) line ([0-9]+) "(不包括引号),细心<img src='/icons/49746de.gif' />朋友可能会发现<img src='/icons/49746dou.gif' />这里使用<img src='/icons/49746de.gif' />也正则表达式<img src='/icons/49746de.gif' />语法<img src='/icons/49746dou2.gif' />然后<img src='/icons/49746dou.gif' />在下面<img src='/icons/49746de.gif' />"文件名"下拉菜单中选择"预设表达式 1"<img src='/icons/49746dou.gif' />即上边正则表达式中<img src='/icons/49746de.gif' />第<img src='/icons/49746yi.gif' />个参数,"行"下拉菜单项选择"预设表达式 2"<img src='/icons/49746dou.gif' />"列"下拉项保持为空<img src='/icons/49746dou2.gif' />然后保存设置<img src='/icons/49746dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	  <a href="/mypdf/78974.pdf" title="查看 editplus替换:Editplus等软件Software中正则替换窍门技巧 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>编程综合</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/DeveloperUtil/Article78974.html</guid>
		</item>
		<item>
			<title><![CDATA[photoshop人物照片:Photoshop制作人物照片色彩绚丽潮流光束]]></title>
			<link>http://CrazyCoder.cn/PhotoShop/Article78973.html</link>
			<description>
				<![CDATA[

					
          
	  　　最终效果<br/><br/><img width="550" height="412" src="http://CrazyCoder.cn/WebFiles/20103/0eaf7ef2-817e-4dcf-a681-e3b1ece052be.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/>　　1、新建<img src='/icons/96739yi.gif' />个1024 * 768像素<img src='/icons/96739de.gif' />文档<img src='/icons/96739dou.gif' />如下图<img src='/icons/96739dou2.gif' />选择渐变工具<img src='/icons/96739dou.gif' />拉<img src='/icons/96739yi.gif' />个如下图所示<img src='/icons/96739de.gif' />深灰色到黑色<img src='/icons/96739de.gif' />渐变<img src='/icons/96739dou2.gif' /><br/><br/><img width="550" height="286" src="http://CrazyCoder.cn/WebFiles/20103/2d4de0df-ca09-4c11-a4d3-e074dcde187e.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/>　　2、新建<img src='/icons/96739yi.gif' />个名叫女孩<img src='/icons/96739de.gif' />组<img src='/icons/96739dou.gif' />打开下图所示<img src='/icons/96739de.gif' />人物素材<img src='/icons/96739dou.gif' />抠出来放入组内<img src='/icons/96739dou2.gif' /><br/><br/><img width="500" height="617" src="http://CrazyCoder.cn/WebFiles/20103/d14ae13f-ce55-4b4d-b4f5-8f708fce9f18.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　复制女孩图层放置在原图层上面<img src='/icons/96739dou.gif' />命名为&ldquo;去色叠加女孩&rdquo;<img src='/icons/96739dou.gif' />执行:图像 &gt; 调整 &gt; 去色<img src='/icons/96739dou.gif' />图层混合模式改为&ldquo;叠加&rdquo;<img src='/icons/96739dou2.gif' /><br/><br/>　　复制女孩原图层<img src='/icons/96739dou.gif' />放置在原图层的下<img src='/icons/96739dou.gif' />命名为&ldquo;径向模糊颜色减淡女孩&rdquo;<img src='/icons/96739dou.gif' />执行:滤镜 &gt; 模糊 &gt; 径向模糊<img src='/icons/96739dou.gif' />参数设置如下图<img src='/icons/96739dou2.gif' />确定后把图层混合模式改为&ldquo;颜色减淡&rdquo;<img src='/icons/96739dou2.gif' /><br/><br/><img width="311" height="257" src="http://CrazyCoder.cn/WebFiles/20103/ea5c1256-b945-4495-b95e-519cbcfb288a.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　把&ldquo;径向颜色减淡女孩&rdquo;图层复制<img src='/icons/96739yi.gif' />层<img src='/icons/96739dou.gif' />放置在&ldquo;径向颜色减淡女孩&rdquo;图层下面<img src='/icons/96739dou.gif' />命名为&ldquo;径向动感模式女孩&rdquo;<img src='/icons/96739dou2.gif' />执行:滤镜 &gt; 模糊 &gt; 动感模糊<img src='/icons/96739dou.gif' />参数设置如下图<img src='/icons/96739dou2.gif' /><br/><br/><img width="330" height="378" src="http://CrazyCoder.cn/WebFiles/20103/1fbba6ba-5d97-4c1f-a637-6fdb41933877.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　图层参照及效果图:<br/><br/><img width="270" height="309" src="http://CrazyCoder.cn/WebFiles/20103/515bfaad-cd68-4861-bd7a-93525503616b.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/><img width="345" height="258" src="http://CrazyCoder.cn/WebFiles/20103/87a59ef1-e5cf-4df4-b177-3122dc2ac800.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　3、在背景层上新建<img src='/icons/96739yi.gif' />层命名为&ldquo;渐变图层&rdquo;<img src='/icons/96739dou.gif' />填充任意颜色<img src='/icons/96739dou2.gif' />执行:图层 &gt; 图层样式 &gt; 渐变叠加<img src='/icons/96739dou.gif' />参数设置如下图<img src='/icons/96739dou2.gif' /><br/><br/><img width="350" height="299" src="http://CrazyCoder.cn/WebFiles/20103/8a71556c-e96d-4d48-86ba-73cccea536dd.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/><img width="369" height="308" src="http://CrazyCoder.cn/WebFiles/20103/f76de3e9-31be-43f4-a78f-7b8bc575bd5b.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　在渐变图层上新建<img src='/icons/96739yi.gif' />个图层<img src='/icons/96739dou.gif' />命名为&ldquo;云彩层&rdquo;<img src='/icons/96739dou.gif' />确保前景色<img src='/icons/96739dou.gif' />背景色为黑白色<img src='/icons/96739dou2.gif' />执行:滤镜 &gt; 渲染 &gt; 预测奶<img src='/icons/96739dou.gif' />确定后把图层混合模式改为&ldquo;颜色减淡&rdquo;<img src='/icons/96739dou.gif' />再添加图层蒙版<img src='/icons/96739dou.gif' />用黑色画笔擦出需要<img src='/icons/96739de.gif' />范围面积即可<img src='/icons/96739dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  <img width="550" height="241" src="http://CrazyCoder.cn/WebFiles/20103/d352cc1d-d1ac-4573-99a1-4e92a41983fd.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/>　　4、新建<img src='/icons/96739yi.gif' />个组命名为&ldquo;点线&rdquo;<img src='/icons/96739dou.gif' />在组内新建图层&ldquo;点1&rdquo;<img src='/icons/96739dou.gif' />设置画笔预设<img src='/icons/96739dou.gif' />参数设置如下图<img src='/icons/96739dou2.gif' /><br/><br/><img width="550" height="390" src="http://CrazyCoder.cn/WebFiles/20103/4562ddc1-5718-439d-8408-39509a587a05.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/><img width="550" height="394" src="http://CrazyCoder.cn/WebFiles/20103/4654c279-3944-4956-8d06-fb7ccee4970a.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/>　　用钢笔工具勾出如图所示<img src='/icons/96739de.gif' />线条<img src='/icons/96739dou.gif' />点右键出现描边路径<img src='/icons/96739dou.gif' />选择画笔<img src='/icons/96739dou.gif' />勾选模拟压力<img src='/icons/96739dou.gif' />效果如下图<img src='/icons/96739dou.gif' />新建图层<img src='/icons/96739dou.gif' />重复此步骤<img src='/icons/96739dou.gif' />勾勒区别<img src='/icons/96739de.gif' />线条<img src='/icons/96739dou.gif' />参考效果如下图<img src='/icons/96739dou2.gif' /><br/><br/>　　组内新建图层&ldquo;线1&rdquo;<img src='/icons/96739dou.gif' />设置画笔预设<img src='/icons/96739dou.gif' />选择<img src='/icons/96739yi.gif' />个柔角画笔<img src='/icons/96739dou.gif' />2像素<img src='/icons/96739dou2.gif' />用钢笔工具勾出路径<img src='/icons/96739dou.gif' />描边路径<img src='/icons/96739dou2.gif' />配合图层蒙版<img src='/icons/96739dou.gif' />可以用图层样式做个外发光效果<img src='/icons/96739dou2.gif' /><br/><br/>　　组内新建图层&ldquo;光圈&rdquo;<img src='/icons/96739dou.gif' />用渐变工具<img src='/icons/96739dou.gif' />白色透明渐变<img src='/icons/96739dou.gif' />画出光圈<img src='/icons/96739dou.gif' />我在人物手上画了两个<img src='/icons/96739dou2.gif' />接下来要做<img src='/icons/96739de.gif' />光条也是这种思路方法<img src='/icons/96739dou2.gif' /> <br/><br/><img width="550" height="326" src="http://CrazyCoder.cn/WebFiles/20103/fc2d68be-c52a-488e-a946-c3132da56ffc.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　查看原图(大图)<br/><br/><img width="550" height="220" src="http://CrazyCoder.cn/WebFiles/20103/d83e9c6f-8225-4683-8bff-e77ec5822a67.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/><img width="359" height="112" src="http://CrazyCoder.cn/WebFiles/20103/7d0a0f4d-a2d4-4bec-8716-a6a27ba4738f.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/><img width="550" height="278" src="http://CrazyCoder.cn/WebFiles/20103/a3040739-cd3c-4e67-858b-ad85d01089fb.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/><img width="550" height="294" src="http://CrazyCoder.cn/WebFiles/20103/fd695481-bc0b-4f5b-8367-8032b01be3cc.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/>　　5、新建<img src='/icons/96739yi.gif' />个组命名为&ldquo;光条&rdquo;在女孩组的下<img src='/icons/96739dou.gif' />在组内新建图层&ldquo;光条1&rdquo;<img src='/icons/96739dou2.gif' /><br/><br/>　　如步骤 4<img src='/icons/96739dou.gif' />用渐变工具<img src='/icons/96739dou.gif' />白色透明渐变<img src='/icons/96739dou.gif' />画出光圈<img src='/icons/96739dou.gif' />再去掉<img src='/icons/96739yi.gif' />半就是光条<img src='/icons/96739dou2.gif' />选择位置复制摆放<img src='/icons/96739dou.gif' />效果如下图: <br/><br/><img width="518" height="134" src="http://CrazyCoder.cn/WebFiles/20103/00715d20-130d-486f-be00-63d4d460b2e2.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/><br/><br/><img width="550" height="415" src="http://CrazyCoder.cn/WebFiles/20103/9824996e-285b-44a3-aa4c-b544e1d3ad38.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/>　　最后有<img src='/icons/96739yi.gif' />个步骤<img src='/icons/96739dou.gif' />复制第 3步做<img src='/icons/96739de.gif' />那个渐变图层<img src='/icons/96739dou.gif' />放到最顶端<img src='/icons/96739dou.gif' />就是下面<img src='/icons/96739de.gif' />效果: <br/><br/><img width="424" height="54" src="http://CrazyCoder.cn/WebFiles/20103/8c058c79-fd14-4aee-985b-2b4f922d9af0.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/><img width="550" height="399" src="http://CrazyCoder.cn/WebFiles/20103/c7832df1-e76c-4d31-a393-67b3d298e16a.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/>　　最终效果: <br/><br/><img width="550" height="412" src="http://CrazyCoder.cn/WebFiles/20103/0eaf7ef2-817e-4dcf-a681-e3b1ece052be.jpeg"  alt="Photoshop制作人物照片色彩绚丽潮流光束" /><br/><br/>　　查看原图(大图)<br/><br/><br/><br/>
	  
	 <!-- 分页 -->
	 
	  <a href="/mypdf/78973.pdf" title="查看 photoshop人物照片:Photoshop制作人物照片色彩绚丽潮流光束 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>PhotoShop教程</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/PhotoShop/Article78973.html</guid>
		</item>
		<item>
			<title><![CDATA[photoshop鼠绘:Photoshop鼠绘:制作超美的古树插画]]></title>
			<link>http://CrazyCoder.cn/PhotoShop/Article78972.html</link>
			<description>
				<![CDATA[

					
          
	  　　最终效果<br/><br/><img width="493" height="312" src="http://CrazyCoder.cn/WebFiles/20103/6ea1fc43-2b6e-4c64-b39d-a9e280ca1257.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　1、新建<img src='/icons/99461yi.gif' />个壁纸大小<img src='/icons/99461de.gif' />文档(1024 * 768像素)<img src='/icons/99461dou.gif' />背景填充天蓝色渐变<img src='/icons/99461dou.gif' />效果如下图<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="288" src="http://CrazyCoder.cn/WebFiles/20103/55e2db21-ba3d-4270-84b0-72b04d9fa960.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　2、新建<img src='/icons/99461yi.gif' />个图层<img src='/icons/99461dou.gif' />并创建蒙版<img src='/icons/99461dou.gif' />为了区分把近处<img src='/icons/99461de.gif' />树干填充绿色<img src='/icons/99461dou.gif' />远处<img src='/icons/99461de.gif' />填充紫色<img src='/icons/99461dou2.gif' />树干和树枝<img src='/icons/99461de.gif' />绘制需要耐心<img src='/icons/99461dou.gif' />克服在画画时<img src='/icons/99461de.gif' />主观性<img src='/icons/99461dou.gif' />并尽力营造随机感<img src='/icons/99461dou2.gif' />此处看似简单例子<img src='/icons/99461dou2.gif' />需要平时观察树木生长规律<img src='/icons/99461de.gif' />积累<img src='/icons/99461dou2.gif' />如果对这<img src='/icons/99461yi.gif' />步没有太大把握<img src='/icons/99461dou.gif' />可以在网上寻找树木<img src='/icons/99461de.gif' />照片<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="350" src="http://CrazyCoder.cn/WebFiles/20103/38202267-47f9-4c57-abf9-e4e72519ca00.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　3、如下图画出类似云朵<img src='/icons/99461de.gif' />形状；使用橡皮在边缘随机地擦除<img src='/icons/99461yi.gif' />部分；补上<img src='/icons/99461yi.gif' />些树叶<img src='/icons/99461dou.gif' />完成<img src='/icons/99461yi.gif' />团小树叶丛；利用绘制好<img src='/icons/99461de.gif' />树叶作为元素<img src='/icons/99461dou.gif' />运用复制<img src='/icons/99461dou.gif' />旋转等组合出更大<img src='/icons/99461de.gif' />树叶丛<img src='/icons/99461dou2.gif' /><br/><br/><img width="348" height="227" src="http://CrazyCoder.cn/WebFiles/20103/b90657d3-709d-4157-baf5-9397fbea9ae3.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　4、利用刚刚画好<img src='/icons/99461de.gif' />树叶丛<img src='/icons/99461dou.gif' />在原本光秃秃<img src='/icons/99461de.gif' />树枝上画出符合树枝趋势<img src='/icons/99461de.gif' />树叶<img src='/icons/99461dou2.gif' />这里可以把小树叶丛<img src='/icons/99461de.gif' />图案做成自定义笔刷然后来画<img src='/icons/99461dou.gif' />也可以直接复制<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="285" src="http://CrazyCoder.cn/WebFiles/20103/cc2c8663-1abe-4065-bc7d-4a78c8643191.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　5、复制刚刚画好<img src='/icons/99461de.gif' />树叶图层<img src='/icons/99461dou.gif' />填充为深绿色并往右上方偏移<img src='/icons/99461yi.gif' />段距离<img src='/icons/99461dou.gif' />营造出层次感<img src='/icons/99461dou2.gif' />给&ldquo;树叶 远&rdquo;图层建立选区并从选区建立蒙版<img src='/icons/99461dou2.gif' />然后把画笔设置成黑色<img src='/icons/99461dou.gif' />擦去树叶中间<img src='/icons/99461yi.gif' />些部分<img src='/icons/99461dou2.gif' />让下面<img src='/icons/99461de.gif' />深绿色显露出来<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="297" src="http://CrazyCoder.cn/WebFiles/20103/965c9d68-cefe-49f9-af00-93b695383693.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　6、据需把远处<img src='/icons/99461de.gif' />树叶图层复制<img src='/icons/99461yi.gif' />份<img src='/icons/99461dou.gif' />然后放大140%并移到图层顶部<img src='/icons/99461dou.gif' />得到近处<img src='/icons/99461de.gif' />树叶<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="299" src="http://CrazyCoder.cn/WebFiles/20103/194fa491-708b-4371-a4f3-2ca648a8f9f9.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　7、在近处树叶的上建立新图层并创建剪切蒙版<img src='/icons/99461dou.gif' />然后如图所示绘制近处<img src='/icons/99461de.gif' />树叶层次<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="322" src="http://CrazyCoder.cn/WebFiles/20103/f15dfc31-7445-492d-a23f-b31cca51d1e3.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 
					
          
	  　　查看原图(大图)<br/><br/>　　8、继续装点近处<img src='/icons/99461de.gif' />树叶<img src='/icons/99461dou.gif' />在整体明暗完成的后<img src='/icons/99461dou.gif' />用新鲜<img src='/icons/99461de.gif' />嫩绿色点缀<img src='/icons/99461dou2.gif' />最后酌情加调整层来改善<img src='/icons/99461yi.gif' />下颜色<img src='/icons/99461dou.gif' />使的和整体颜色协调<img src='/icons/99461dou2.gif' />填充&ldquo;树1&rdquo;图层为深灰色(接近黑色)<img src='/icons/99461dou.gif' />用棕色如图绘制树干纹理<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="312" src="http://CrazyCoder.cn/WebFiles/20103/61444a1d-d1fe-48bf-9832-fcb547c03137.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　9、远处<img src='/icons/99461de.gif' />树干也是用同样<img src='/icons/99461de.gif' />思路方法绘制<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="285" src="http://CrazyCoder.cn/WebFiles/20103/f64086d0-2c1c-43ed-bc6b-d041f5b4d467.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　10、同样运用蒙版<img src='/icons/99461dou.gif' />在背景图层的上绘制云彩<img src='/icons/99461dou.gif' />注意上亮下暗<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="303" src="http://CrazyCoder.cn/WebFiles/20103/439c95d6-996b-49a9-b42a-949932a16a54.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　11、给远处<img src='/icons/99461de.gif' />树叶增加<img src='/icons/99461yi.gif' />个剪贴蒙版图层<img src='/icons/99461dou.gif' />然后使用渐变工具至下而上拉出<img src='/icons/99461yi.gif' />条从深蓝色到透明<img src='/icons/99461de.gif' />渐变<img src='/icons/99461dou.gif' />为<img src='/icons/99461de.gif' />是变现地面<img src='/icons/99461de.gif' />反光<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="299" src="http://CrazyCoder.cn/WebFiles/20103/c091858e-ded8-4f86-8b14-ae24204a6ff5.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/><br/><br/>　　查看原图(大图)<br/><br/>　　12、使用同样<img src='/icons/99461de.gif' />思路方法<img src='/icons/99461dou.gif' />给远处<img src='/icons/99461de.gif' />云彩制造的下而上<img src='/icons/99461de.gif' />虚实效果<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="290" src="http://CrazyCoder.cn/WebFiles/20103/002ffd0e-e78b-47f0-bc6d-8034657de05c.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　13、绘制远处<img src='/icons/99461de.gif' />树<img src='/icons/99461dou.gif' /><img src='/icons/99461yinwei.gif' />是远处<img src='/icons/99461de.gif' />缘故<img src='/icons/99461dou.gif' />所以用很浅<img src='/icons/99461de.gif' />绿色<img src='/icons/99461dou.gif' />接近背景天空<img src='/icons/99461de.gif' />颜色<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="314" src="http://CrazyCoder.cn/WebFiles/20103/85b94b81-9204-42b8-acfd-bc56cfdcb6fa.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　14、最后在左上角添加透过树叶缝隙而下<img src='/icons/99461de.gif' />光芒<img src='/icons/99461dou2.gif' />至此完成制作<img src='/icons/99461dou2.gif' /><br/><br/><img width="550" height="349" src="http://CrazyCoder.cn/WebFiles/20103/5c51337b-0fd5-4346-a1b9-b0b475554747.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/>　　查看原图(大图)<br/><br/>　　最终效果:<br/><br/><img width="493" height="312" src="http://CrazyCoder.cn/WebFiles/20103/6ea1fc43-2b6e-4c64-b39d-a9e280ca1257.jpeg"  alt="Photoshop鼠绘:制作超美<img src='/icons/99461de.gif' />古树插画" /><br/><br/><br/><br/>
	  
	 <!-- 分页 -->
	 
	  <a href="/mypdf/78972.pdf" title="查看 photoshop鼠绘:Photoshop鼠绘:制作超美的古树插画 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>PhotoShop教程</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/PhotoShop/Article78972.html</guid>
		</item>
		<item>
			<title><![CDATA[64位office:微软建议用户避开64位Office 2010]]></title>
			<link>http://CrazyCoder.cn/Office/Article78971.html</link>
			<description>
				<![CDATA[

					
          
	  <img width="498" height="161" src="http://CrazyCoder.cn/WebFiles/20103/b774aee0-ba51-415f-972d-138b2bd4f88b.jpeg"  alt="微软建议用户避开64位Office 2010" /><br/><br/>　　据国外媒体报道<img src='/icons/76877dou.gif' />2009年10月22日<img src='/icons/76877dou.gif' />微软发布Windows 7<img src='/icons/76877dou.gif' />将PC机带进了64位操作系统<img src='/icons/76877de.gif' />&ldquo;黄金时代&rdquo;<img src='/icons/76877dou.gif' />取代了原有老旧<img src='/icons/76877de.gif' />、内存受限<img src='/icons/76877de.gif' />32位平台<img src='/icons/76877dou2.gif' />然而<img src='/icons/76877dou.gif' />就算用户运行<img src='/icons/76877de.gif' />操作系统是64位<img src='/icons/76877de.gif' /><img src='/icons/76877dou.gif' />但是也并不能保证 64位Office 2010<img src='/icons/76877de.gif' />顺利运行<img src='/icons/76877dou2.gif' /><br/><br/>　　在Office 2010技术保证常见问题页面中<img src='/icons/76877dou.gif' />微软强烈推荐用户安装使用32位<img src='/icons/76877de.gif' />Office 2010套装软件Software<img src='/icons/76877dou2.gif' />下面是微软对于这个问题给予<img src='/icons/76877de.gif' />解释:<br/><br/>　　问:64位Office 2010产品会在不久的后上市吗？<br/><br/>　　答:是<img src='/icons/76877de.gif' /><img src='/icons/76877dou.gif' />64位<img src='/icons/76877de.gif' />Office 2010产品升级即将到来<img src='/icons/76877dou.gif' />然而<img src='/icons/76877dou.gif' />我们强烈推荐用户安装使用32位<img src='/icons/76877de.gif' />Office 2010<img src='/icons/76877dou2.gif' /><br/><br/>　　由于很多常见<img src='/icons/76877de.gif' />加载插件都无法在64位版本<img src='/icons/76877de.gif' />Office 2010成功运行<img src='/icons/76877dou.gif' />因此<img src='/icons/76877dou.gif' />即使是64位<img src='/icons/76877de.gif' />Windows用户<img src='/icons/76877dou.gif' />我们也推荐他们能够使用32位Office 2010<img src='/icons/76877dou2.gif' /><br/><br/>　　此外<img src='/icons/76877dou.gif' />微软还指出<img src='/icons/76877dou.gif' /><img src='/icons/76877yi.gif' />般来讲<img src='/icons/76877dou.gif' />64位<img src='/icons/76877de.gif' />Office 2010产品适用于那些经常使用非常大<img src='/icons/76877de.gif' />文档、数据设置<img src='/icons/76877de.gif' />用户或者是需要访问内存大于2GB<img src='/icons/76877de.gif' />Excel 2010<img src='/icons/76877chengxu.gif' /><img src='/icons/76877de.gif' />用户<img src='/icons/76877dou2.gif' /><br/><br/>　　最后<img src='/icons/76877dou.gif' />值得用户注意<img src='/icons/76877de.gif' />是<img src='/icons/76877dou.gif' />如果用户想要使用64位版本<img src='/icons/76877de.gif' />Office 2010<img src='/icons/76877dou.gif' />那么计算机中就必须运行64位<img src='/icons/76877de.gif' />操作系统<img src='/icons/76877dou2.gif' />此外<img src='/icons/76877dou.gif' />在运行64位版本Office 2010<img src='/icons/76877de.gif' />时候<img src='/icons/76877dou.gif' />用户还将会遇到<img src='/icons/76877yi.gif' />些技术性<img src='/icons/76877de.gif' />问题<img src='/icons/76877dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 <!-- 分页end -->
 <a href="/mypdf/78971.pdf" title="查看 64位office:微软建议用户避开64位Office 2010 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>办公软件</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Office/Article78971.html</guid>
		</item>
		<item>
			<title><![CDATA[应知应会:Office 2010技术保障应知的 8件事]]></title>
			<link>http://CrazyCoder.cn/Office/Article78970.html</link>
			<description>
				<![CDATA[

					
          
	  <img width="498" height="161" src="http://CrazyCoder.cn/WebFiles/20103/eea95d06-9e20-438e-9535-b67ea123eadf.jpeg"  alt="Office 2010技术保障应知<img src='/icons/40997de.gif' /> 8件事" /><br/><br/>　　据资讯网站WebSitePcworld报道<img src='/icons/40997dou.gif' />微软新<img src='/icons/40997yi.gif' />代办公套装Office 2010即将在 6月份登场<img src='/icons/40997dou.gif' />近日<img src='/icons/40997dou.gif' />微软官方敲定了Offfice 2010技术保障<img src='/icons/40997de.gif' />主要内容<img src='/icons/40997dou.gif' />旨在为Office 2007用户升级到新版本时提供完善<img src='/icons/40997de.gif' />服务<img src='/icons/40997dou2.gif' />以下为其摘要<img src='/icons/40997dou.gif' />希望能对大家有所帮助:<br/><br/>　　1、技术保障受益者<img src='/icons/40997de.gif' />合法资格是什么？<br/><br/>　　答:从即日起至9月30日<img src='/icons/40997dou.gif' />所有购买Office 2007套装或单个组件<img src='/icons/40997de.gif' />用户均可参加免费升级到Office 2010<img src='/icons/40997de.gif' />活动<img src='/icons/40997dou2.gif' /><br/><br/>　　2、有哪些例外情况？<br/><br/>　　答:该项活动仅针对家庭和学生用户<img src='/icons/40997dou.gif' />如果你是批量授权<img src='/icons/40997de.gif' />方式获得<img src='/icons/40997de.gif' />Office组件<img src='/icons/40997dou.gif' />则无法享受到免费升级<img src='/icons/40997dou2.gif' /><br/><br/>　　3、我从eBay网上购买<img src='/icons/40997de.gif' />拷贝<img src='/icons/40997dou.gif' />有效吗？<br/><br/>　　答:官方明确指出:不符合<img src='/icons/40997dou2.gif' />eBay和其他网络销售商并未和官方进行合作事宜<img src='/icons/40997dou.gif' />所以排除在外<img src='/icons/40997dou2.gif' /><br/><br/>　　4、活动<img src='/icons/40997de.gif' />截止日期是多少？<br/><br/>　　答:最迟可在9月30日前参加<img src='/icons/40997dou.gif' />申请升级<img src='/icons/40997de.gif' />期限截止到2010年10月31日<img src='/icons/40997dou2.gif' /><br/><br/>　　5、Office 2010技术保障<img src='/icons/40997de.gif' />局限性？<br/><br/>　　答:需要指出<img src='/icons/40997de.gif' />是<img src='/icons/40997dou.gif' />技术保障只能升级Office 2007中相对应<img src='/icons/40997de.gif' />功能组件<img src='/icons/40997dou.gif' />而Office 2010版本中新添<img src='/icons/40997de.gif' />功能组件(比如Onenote)不在升级的列<img src='/icons/40997dou.gif' />个人申请次数最多25次<img src='/icons/40997dou2.gif' /><br/><br/>　　6、需要使用Live账号登陆吗？<br/><br/>　　答:微软需要用户<img src='/icons/40997de.gif' />Live ID用于储存激活码<img src='/icons/40997dou.gif' />避免重新下载时可能出现<img src='/icons/40997de.gif' />麻烦<img src='/icons/40997dou2.gif' /><br/><br/>　　7、如何获得Office 2010升级？<br/><br/>　　答:两种方式:1、已经激活<img src='/icons/40997de.gif' />Office 2007用户可以在第<img src='/icons/40997yi.gif' />时间访问微软&ldquo;技术保障&rdquo;网站WebSite<img src='/icons/40997dou.gif' />点击&ldquo;升级服务&rdquo;即可；2、支付少量费用索要光盘形式<img src='/icons/40997de.gif' />升级<img src='/icons/40997chengxu.gif' /><img src='/icons/40997dou2.gif' /><br/><br/>　　8、适于升级<img src='/icons/40997de.gif' />Office 2010有哪些版本？<br/><br/>　　答: 3个版本分别是Office专业版、家庭/学生版以及家庭/商业版<img src='/icons/40997dou2.gif' /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 <!-- 分页end -->
 <a href="/mypdf/78970.pdf" title="查看 应知应会:Office 2010技术保障应知的 8件事 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>办公软件</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Office/Article78970.html</guid>
		</item>
		<item>
			<title><![CDATA[微软公布Office 2010详细升级路径]]></title>
			<link>http://CrazyCoder.cn/Office/Article78969.html</link>
			<description>
				<![CDATA[

					
          
	  　　据国外媒体报道<img src='/icons/85597dou.gif' />微软证实<img src='/icons/85597dou.gif' />自2010年3月5日至9月30日期间<img src='/icons/85597dou.gif' />购买购买Office 2007<img src='/icons/85597de.gif' />用户就可免费升级到最新版本<img src='/icons/85597de.gif' />Office 2010<img src='/icons/85597dou2.gif' /><br/><br/>　　微软Office营销经理Jevon Fark指出<img src='/icons/85597dou.gif' />自3月5日起<img src='/icons/85597dou.gif' />购买Office 2007<img src='/icons/85597de.gif' />用户就可免费下载Office 2010执行新版本<img src='/icons/85597de.gif' />升级<img src='/icons/85597dou.gif' />Office 2010将于2010年6月份正式上市<img src='/icons/85597dou2.gif' /><br/><br/>　　Office 2010技术保证如下:在2010年3月5日至2010年9月30日期间购买Office 2007或预装Office 2007新PC<img src='/icons/85597de.gif' />用户<img src='/icons/85597dou.gif' />将能够免费执行Office 2010<img src='/icons/85597de.gif' />升级<img src='/icons/85597dou2.gif' /><br/><br/>　　目前<img src='/icons/85597dou.gif' />微软已经证实<img src='/icons/85597dou.gif' />该公司将于4月份将Office 2010、SharePo<img src='/icons/85597int.gif' /> 2010、Visio 2010和Project 2010发布到生产制造商<img src='/icons/85597dou2.gif' />此外<img src='/icons/85597dou.gif' />微软将于5月12日面向企业用户正式推出Office 2010 RTM<img src='/icons/85597de.gif' />零售版<img src='/icons/85597dou.gif' />不过消费者则需要等到6月中旬才能在线购买或者是到零售店购买Office 2010 RTM<img src='/icons/85597dou2.gif' /><br/><br/>　　Fark承诺<img src='/icons/85597dou.gif' />用户将能够免费在线下载Office 2010技术保证<img src='/icons/85597dou.gif' />Office 2007用户也能够直接在线下载Office 2010<img src='/icons/85597de.gif' />升级版本<img src='/icons/85597dou.gif' />无需执行任何额外<img src='/icons/85597de.gif' />费用<img src='/icons/85597dou2.gif' />众所周知<img src='/icons/85597dou.gif' />购买预装Windows Vista新PC机<img src='/icons/85597de.gif' />用户在执行免费Windows 7升级<img src='/icons/85597de.gif' />时候<img src='/icons/85597dou.gif' />需要支付高达30至40美元<img src='/icons/85597de.gif' />升级媒体费用<img src='/icons/85597dou.gif' />而Office 2007<img src='/icons/85597de.gif' />用户则可以省下这笔费用<img src='/icons/85597dou2.gif' /><br/><br/>　　以下是 Office 2007至Office 2010<img src='/icons/85597de.gif' />详细升级路径图:<br/><br/><img width="420" height="466" src="http://CrazyCoder.cn/WebFiles/20103/c71ef680-64e7-43dc-9954-20cff5f7f7c0.jpeg"  alt="微软公布Office 2010详细升级路径" /><br/><br/>
	  
	 <!-- 分页 -->
	 
	 <!-- 分页end -->
 <a href="/mypdf/78969.pdf" title="查看 微软公布Office 2010详细升级路径 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>办公软件</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/Office/Article78969.html</guid>
		</item>
		<item>
			<title><![CDATA[新的开始新的希望:新的开始新的研究(一)]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78968.html</link>
			<description>
				<![CDATA[

			<blockquote>
　　毕业已快 5年<img src='/icons/34927de.gif' />技术人,是应该好好<img src='/icons/34927de.gif' />研究和计划<img src='/icons/34927yi.gif' />下自己<img src='/icons/34927de.gif' />技术人生啦!<br/><br/>
&nbsp;<br/><br/>
　　从这篇日志开始准备把自己<img src='/icons/34927de.gif' />研究和实际中<img src='/icons/34927de.gif' />问题都<img src='/icons/34927yi.gif' />并写出来和大家分享,希望有什么不对<img src='/icons/34927de.gif' />地方大家多多指教!<br/><br/>
&nbsp;<br/><br/>
　　从学校<img src='/icons/34927yi.gif' />所普通学校<img src='/icons/34927de.gif' />非计算机专业毕业以后就走上了编程的路,开始用VB做毕业设计,项目中使用Asp做项目,还用Delphi做过Com+主要是用来做工作流<img src='/icons/34927de.gif' />解析(也就是所谓<img src='/icons/34927de.gif' />工作流引擎),记得那会客户<img src='/icons/34927de.gif' />流程变化特别大,客户需要自己绘制<img src='/icons/34927yi.gif' />些简单<img src='/icons/34927de.gif' />流程.<br/><br/>
&nbsp;<br/><br/>
　　记得2005年冬开始看到<img src='/icons/34927yi.gif' />些有关Ajax<img src='/icons/34927de.gif' />新闻和使用方法(具体时间记不太清楚了),刚毕业那会儿对技术有着很高<img src='/icons/34927de.gif' />热情,有很多很多<img src='/icons/34927de.gif' />东西想去学习, 总觉得时间总是不够用.我开始给公司介绍Ajax叫公司<img src='/icons/34927de.gif' />项目中可以使用Ajax这样来提高用户体验,在公司里用公司<img src='/icons/34927de.gif' />电脑学校Ajax和<img src='/icons/34927yi.gif' />些新<img src='/icons/34927de.gif' />东西.当有<img src='/icons/34927yi.gif' />天领导看到我在学习这些东西<img src='/icons/34927de.gif' />时候,给我说了<img src='/icons/34927yi.gif' />句"这些东西我们又用不到学这些干什么"从那以后我就按时下班了.<br/><br/>
&nbsp;<br/><br/>
　　再过了几个月的后我从公司离开了,出来后几个朋友找到我说我们<img src='/icons/34927yi.gif' />起创业吧,我<img src='/icons/34927yi.gif' />个写了<img src='/icons/34927yi.gif' />套基于Ajax办证系统,<img src='/icons/34927yi.gif' />个人从规划到项目<img src='/icons/34927de.gif' />完成到实施完只用了5个月<img src='/icons/34927de.gif' />时间,好像这<img src='/icons/34927yi.gif' />套东西卖了<img src='/icons/34927yi.gif' />个客户 5万,可到2007年春由于种种原因从<img src='/icons/34927yi.gif' />起合伙<img src='/icons/34927de.gif' />公司中出来了,也从南京来到了上海滩.<br/><br/>
那时候没有资本只能还是给别人打工,进入<img src='/icons/34927yi.gif' />家公司做做erp刚进公司<img src='/icons/34927de.gif' />时候,先从<img src='/icons/34927yi.gif' />个人搞需求并慢慢招人来做OA以及ERP中<img src='/icons/34927de.gif' />其他项目.在做OA项目<img src='/icons/34927de.gif' />过程中,发现了很多有关开发和管理方面<img src='/icons/34927de.gif' />问题,也<img src='/icons/34927yi.gif' />次<img src='/icons/34927yi.gif' />次<img src='/icons/34927de.gif' />进行改进,和想了很多提高工作效率<img src='/icons/34927de.gif' />办法,为公司提供了自己封装<img src='/icons/34927de.gif' />Ajax框架,和数据显示和快速录入<img src='/icons/34927de.gif' />DataGridControl控件.<br/><br/>
&nbsp;<br/><br/>
　　由于ERP中以前<img src='/icons/34927de.gif' />项目没有引入Ajax很多用户不停<img src='/icons/34927de.gif' />反应太慢,给老项目中引入Ajax,也不断<img src='/icons/34927de.gif' />研究如何才能提高页面<img src='/icons/34927de.gif' />执行和加载速度,在页面中尽量减少使用服务端Control控件可以减小页面生成<img src='/icons/34927de.gif' />代码,应用Ajax进行异步<img src='/icons/34927de.gif' />数据提取和处理等思路方法.<br/><br/>
于是花了几个月<img src='/icons/34927de.gif' />时间把oa项目基作完成,后期公司领导要求引入工作流,又开始继续我<img src='/icons/34927de.gif' />工作流<img src='/icons/34927de.gif' />研究,<img src='/icons/34927yinwei.gif' />项目紧,人力资源紧,时间紧工作流里要学习<img src='/icons/34927de.gif' />东西也多,于是<img src='/icons/34927yi.gif' />个人用了<img src='/icons/34927yi.gif' />个月<img src='/icons/34927de.gif' />时间完成了OA项目里<img src='/icons/34927de.gif' /><img src='/icons/34927yi.gif' />个工作流引擎.<br/><br/>
&nbsp;<br/><br/>
　　OA项目结束以后又开始了新<img src='/icons/34927de.gif' />财务,生产等ERP中其他项目<img src='/icons/34927de.gif' />设计规划,在这期间也学习了财务知识和有关生产方面<img src='/icons/34927de.gif' />流程以及管理方面<img src='/icons/34927de.gif' />知识,也不断<img src='/icons/34927de.gif' />为项目<img src='/icons/34927de.gif' />顺利完成提供和研究着高效<img src='/icons/34927de.gif' />开发模式,以及系统运行<img src='/icons/34927de.gif' />稳定和执行效率问题,在这<img src='/icons/34927yi.gif' />个<img src='/icons/34927yi.gif' />个<img src='/icons/34927de.gif' />项目中积累了很多很多<img src='/icons/34927de.gif' />经验.<br/>
 <a href="/mypdf/78968.pdf" title="查看 新的开始新的希望:新的开始新的研究(一) 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78968.html</guid>
		</item>
		<item>
			<title><![CDATA[virtualbox虚拟机:VirtualBox 虚拟机 Debian系统上安装Cassandra步骤及遇到的问题]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78967.html</link>
			<description>
				<![CDATA[

			本文记录<img src='/icons/24129yi.gif' />下我在VirtualBox 虚拟机 Debian系统上安装Cassandra步骤及遇到<img src='/icons/24129de.gif' />问题<img src='/icons/24129dou2.gif' />其它Linux系统碰到<img src='/icons/24129de.gif' />问题应该大同小异<img src='/icons/24129dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
<b><img src='/icons/24129yi.gif' />、网络问题</b><br/><br/>
Sun<img src='/icons/24129de.gif' />VirtualBox中文界面<img src='/icons/24129dou.gif' />而且开源<img src='/icons/24129dou.gif' />有什么理由不用呢？最近想看看各种Linux操作系统<img src='/icons/24129de.gif' />差异<img src='/icons/24129dou.gif' />和RHEL系列<img src='/icons/24129de.gif' />比<img src='/icons/24129dou.gif' />果然有很大<img src='/icons/24129de.gif' />差别<img src='/icons/24129dou2.gif' />下载Debian,第<img src='/icons/24129yi.gif' />张盘就行了<img src='/icons/24129dou.gif' /><img src='/icons/24129yinwei.gif' />习惯自己编译了<img src='/icons/24129dou.gif' />不用本地源<img src='/icons/24129dou.gif' />常用<img src='/icons/24129de.gif' />东西都是下载好了<img src='/icons/24129de.gif' /><img src='/icons/24129dou2.gif' />接下来<img src='/icons/24129dou.gif' />安装好Debian,无论是中文也好英文也罢<img src='/icons/24129dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
下面就是配置网络<img src='/icons/24129de.gif' />问题<img src='/icons/24129dou.gif' />由于Debian默认<img src='/icons/24129de.gif' />网段是10.10.*.*<img src='/icons/24129de.gif' /><img src='/icons/24129dou.gif' />我本机还访问不了<img src='/icons/24129dou.gif' />因此需要修改IP地址<img src='/icons/24129dou2.gif' />修改了很多次才成功<img src='/icons/24129dou2.gif' />记录下成功<img src='/icons/24129de.gif' />这次<img src='/icons/24129dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
安装完VirtualBox虚拟机后<img src='/icons/24129dou.gif' />会多<img src='/icons/24129yi.gif' />个网卡&mdash;&mdash;VirtualBox Host-Only Network<img src='/icons/24129dou.gif' />默认IP是192.168.56.1<img src='/icons/24129dou2.gif' />启动VirtualBox时<img src='/icons/24129dou.gif' />网络连接选择Host-only Adapter<img src='/icons/24129dou2.gif' />这种模式是主机和虚拟机能够互相通信<img src='/icons/24129dou.gif' />但是虚拟机不能上网<img src='/icons/24129dou2.gif' />对开发环境来说已经足够了<img src='/icons/24129dou2.gif' />至于Nat和Bridged没有去尝试<img src='/icons/24129dou.gif' />Nat<img src='/icons/24129de.gif' />要做端口映射<img src='/icons/24129dou.gif' />Bridged要占用主机网段IP<img src='/icons/24129dou.gif' />可能会抢同事<img src='/icons/24129de.gif' />IP<img src='/icons/24129dou.gif' />就不尝试了<img src='/icons/24129dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
下面是配置网络<img src='/icons/24129dou2.gif' />Debian<img src='/icons/24129de.gif' />网络设置和RHEL<img src='/icons/24129de.gif' />不<img src='/icons/24129yi.gif' />样<img src='/icons/24129dou2.gif' />设置网卡是在/etc/network/<img src='/icons/24129int.gif' />erfaces文件<img src='/icons/24129dou.gif' />设置DNS是在/etc/resolv.conf 文件<img src='/icons/24129dou2.gif' />现在设置如下:<br/><br/>
&nbsp;<br/><br/>
首先通过命令 # <img src='/icons/24129if.gif' />config -a 查看到当前外网网卡标识<img src='/icons/24129dou2.gif' />我前几次操作<img src='/icons/24129cuowu.gif' /><img src='/icons/24129dou.gif' />现在<img src='/icons/24129de.gif' />标识是eth2<img src='/icons/24129dou2.gif' /><br/><br/>
在/etc/network/<img src='/icons/24129int.gif' />erfaces 文件加入:<br/><br/>
&nbsp;<br/><br/>
auto eth2<br/>
<img src='/icons/24129if.gif' />ace eth2 inet dhcp<br/>

auto eth2<br/><br/>
<img src='/icons/24129if.gif' />ace eth2 inet dhcp<br/><br/>
&nbsp;<br/><br/>
然后通过&nbsp;<br/><br/>
#<img src='/icons/24129if.gif' />down&nbsp;eth2<br/><br/>
#<img src='/icons/24129if.gif' />up eth2<br/><br/>
重新载入设置<img src='/icons/24129dou2.gif' />现在网络就OK了<img src='/icons/24129dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
<b> 2、Java安装</b><br/><br/>
Cassandra是基于Java<img src='/icons/24129de.gif' /><img src='/icons/24129chengxu.gif' /><img src='/icons/24129dou.gif' />先去下载和Jre<img src='/icons/24129dou.gif' />我下载<img src='/icons/24129de.gif' />Jre1.6 update18&mdash;&mdash;&ldquo;jre-6u18-linux-i586.bin&rdquo;<img src='/icons/24129dou2.gif' />把文件传过去<img src='/icons/24129dou.gif' />然后在虚拟机运行:<br/><br/>
#cd ~ &nbsp; &nbsp;//我<img src='/icons/24129de.gif' />是root帐号<img src='/icons/24129dou.gif' />我<img src='/icons/24129de.gif' />文件就传到了/root目录<br/><br/>
#chmod +x&nbsp;jre-6u18-linux-i586.bin<br/><br/>
#./jre-6u18-linux-i586.bin<br/><br/>
#cp jre1.6.0_18/ /usr/local/ -r<br/><br/>
现在就把jre<img src='/icons/24129de.gif' />文件拷贝到了/usr/local/jre1.6.0_18/目录<img src='/icons/24129dou2.gif' /><br/><br/>
现在要设置Java了<img src='/icons/24129dou.gif' />在RHEL使用alternatives命令<img src='/icons/24129dou.gif' />而在Debian使用update-alternatives命令<img src='/icons/24129dou.gif' />语法<img src='/icons/24129yi.gif' />样<img src='/icons/24129de.gif' /><img src='/icons/24129dou2.gif' /><br/><br/>
Debian默认是没装Java<img src='/icons/24129de.gif' /><img src='/icons/24129dou.gif' />现在开始设置:<br/><br/>
#update-alternatives --<img src='/icons/24129install.gif' /> &nbsp;/usr/bin/java java /usr/local/jre1.6.0_18/bin/java 300 &nbsp;<br/><br/>
如果要是已经安装了java要换版本<img src='/icons/24129dou.gif' />可以用update-alternatives --display java查看当前安装<img src='/icons/24129de.gif' />java,使用update-alternatives --config java进行版本切换<img src='/icons/24129dou2.gif' /><br/><br/>
现在输入<br/><br/>
#java -version<br/><br/>

java version "1.6.0_18"<br/><br/>
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)<br/><br/>
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode)<br/><br/>
&nbsp;<br/><br/>
OK了<img src='/icons/24129dou.gif' /><img src='/icons/24129yi.gif' />切正常<img src='/icons/24129dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
&nbsp;<br/><br/>
<br/><br/>
<b> 3、安装和启动</b><br/><br/>
先到http://incubator.apache.org/cassandra/页面下载Cassandra<img src='/icons/24129dou2.gif' /><br/><br/>
我下载<img src='/icons/24129de.gif' />是&nbsp;apache-cassandra-0.5.1-bin.tar.gz<br/><br/>
然后传到虚拟机上<img src='/icons/24129dou2.gif' /><br/><br/>
执行命令<br/><br/>
#tar zxvf apache-cassandra-0.5.1-bin.tar.gz &nbsp; //解压缩<br/><br/>
#cd&nbsp;apache-cassandra-0.5.1/bin<br/><br/>
#./cassandra<br/><br/>
输出<br/><br/>

Listening for transport dt_<img src='/icons/24129socket.gif' /> at address: 8888<br/><br/>
INFO - Replaying /var/lib/cassandra/commitlog/CommitLog-1268246662083.log<br/><br/>
INFO - LocationInfo has reached its threshold; switching in a fresh Memtable<br/><br/>
INFO - Enqueuing flush of Memtable(LocationInfo)&#64;19897293<br/><br/>
INFO - Sorting Memtable(LocationInfo)&#64;19897293<br/><br/>
INFO - Writing Memtable(LocationInfo)&#64;19897293<br/><br/>
INFO - Completed flushing /var/lib/cassandra/data/system/LocationInfo-1-Data.db<br/><br/>
INFO - Log replay complete<br/><br/>
INFO - Saved Token found: 59927080841113489954773621748862915294<br/><br/>
INFO - Starting up server gossip<br/><br/>
&nbsp;<br/><br/>
成功了<img src='/icons/24129dou.gif' />呵呵<img src='/icons/24129dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
当然<img src='/icons/24129dou.gif' />要用到生产环境<img src='/icons/24129de.gif' />话可能还需要做很多工作<img src='/icons/24129dou2.gif' />比如配置啊<img src='/icons/24129dou.gif' />开发啊什么<img src='/icons/24129de.gif' /><img src='/icons/24129dou2.gif' />自己弄来看看<img src='/icons/24129de.gif' />话<img src='/icons/24129dou.gif' />这已经是第<img src='/icons/24129yi.gif' />步了<img src='/icons/24129dou.gif' />呵呵<img src='/icons/24129dou2.gif' /><br/><br/>
<br/><br/>
&nbsp;<br/><br/>
 <a href="/mypdf/78967.pdf" title="查看 virtualbox虚拟机:VirtualBox 虚拟机 Debian系统上安装Cassandra步骤及遇到的问题 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78967.html</guid>
		</item>
		<item>
			<title><![CDATA[&quot:CKEditor3.2+CKFinder1.4.3结合 打造&quot 帅&quot 的编辑器 For .Net]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78966.html</link>
			<description>
				<![CDATA[

			<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="曾祥展" border="0" alt="曾祥展" src="http://CrazyCoder.cn/WebFiles/20103/25de3981-6e84-4e37-b30f-6ca25d56261c.png" width="642" height="341" /> <br/><br/>
<strong>CKEditor 3.2 在 asp.net 下进行配置<img src='/icons/68730de.gif' />思路方法:</strong><br/><br/>
<strong>官方网站WebSite:CKEditor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CKFinder</strong><br/><br/>
<strong>1、</strong><strong>CKEditor 不具备上传功能<img src='/icons/68730dou.gif' />需要集成 CKFinder 才能实现上传功能<img src='/icons/68730dou2.gif' /></strong> <br /><strong>&nbsp;&nbsp;&nbsp;&nbsp; 下载 ckeditor 并解压到 ckeditor(在根目录下)；<br />&nbsp;&nbsp;&nbsp;&nbsp; 下载 ckfinder 并解压到 ckfinder (在根目录下)；<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 两者处于同级目录下； </strong>&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; <strong>&nbsp; 把ckfinder目录里<img src='/icons/68730de.gif' />bin下<img src='/icons/68730de.gif' />CKFinder.dll拷贝到网站WebSite目录bin下<img src='/icons/68730dou.gif' />引用就行了<img src='/icons/68730dou2.gif' /></strong> 
<strong>2、在 aspx 页面或者 master 模板页 &lt;head&gt; 标签中载入 ckeditor.js:<span style="color: blue">&lt;</span><span style="color: #a31515">script</span><span style="color: red">type</span><span style="color: blue">="text/javascript"</span><span style="color: red">src</span><span style="color: blue">="ckeditor/ckeditor.js"&gt;&lt;/</span><span style="color: #a31515">script</span><span style="color: blue">&gt;</span><br/><br/>
<strong>&nbsp;&nbsp; 在&lt;body&gt;标签中使用ckeditor:<span style="color: blue">&lt;</span><span style="color: #a31515">asp</span><span style="color: blue">:</span><span style="color: #a31515">TextBox </span><span style="color: red">ID</span><span style="color: blue">="Content" </span><span style="color: red">runat</span><span style="color: blue">="server" </span><span style="color: red">TextMode</span><span style="color: blue">="MultiLine" </span><span style="color: red">Height</span><span style="color: blue">="250px" </span><span style="color: red">Width</span><span style="color: blue">="500px"&gt;&lt;/</span><span style="color: #a31515">asp</span><span style="color: blue">:</span><span style="color: #a31515">TextBox</span><span style="color: blue">&gt;<br />和其他 .net Control控件使用思路方法相同<img src='/icons/68730dou.gif' />设置 Text='&lt;%# Bind("info") %&gt;' 可以方便和数据源进行交互<img src='/icons/68730dou2.gif' /><br/><br/><span style="color: blue"><strong>下面这段必须放在上面代码<img src='/icons/68730de.gif' />后面<img src='/icons/68730dou.gif' />否则<img src='/icons/68730chushi.gif' />化编辑器时会<img src='/icons/68730cuowu.gif' />:</span><span style="color: blue">&lt;</span><span style="color: #a31515">script </span><span style="color: red">type</span><span style="color: blue">="text/javascript"&gt;<br/><span style="color: green">// CKEDITOR.replace('&lt;%=Content.ClientID%&gt;', {});<span style="color: blue">var</span>editor = CKEDITOR.replace(<span style="color: #a31515">'&lt;%=Content.ClientID%&gt;'</span>); <br />CKFinder.SetupCKEditor(editor, <span style="color: #a31515">'/ckfinder/'</span>);&nbsp; //结合上传Control控件<br /><span style="color: blue">&lt;/</span><span style="color: #a31515">script</span><span style="color: blue">&gt; </span><br/><br/>
<strong>3. ckeditor里面<img src='/icons/68730de.gif' />config.js 配置<br />CKEDITOR.editorConfig = <span style="color: blue">function</span>( config )<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp; config.language = <span style="color: #a31515">'zh-cn'</span>;<span style="color: green">//中文<br />&nbsp;&nbsp;&nbsp;&nbsp; </span>config.uiColor = <span style="color: #a31515">'#BFEE62'</span>;<span style="color: green">//编辑器颜色&nbsp;&nbsp;&nbsp;&nbsp; config.font_names = <span style="color: #a31515">'宋体;楷体_GB2312;新宋体;黑体;隶书;幼圆;微软雅黑;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana'</span>;<br /><br />&nbsp;&nbsp;&nbsp; config.toolbar_Full =<br />&nbsp;&nbsp;&nbsp; [<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Source'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'Preview'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'Templates'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Cut'</span>,<span style="color: #a31515">'Copy'</span>,<span style="color: #a31515">'Paste'</span>,<span style="color: #a31515">'PasteText'</span>,<span style="color: #a31515">'PasteFromWord'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'Pr<img src='/icons/68730int.gif' />'</span>, <span style="color: #a31515">'SpellChecker'</span>, <span style="color: #a31515">'Scayt'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Undo'</span>,<span style="color: #a31515">'Redo'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'Find'</span>,<span style="color: #a31515">'Replace'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'SelectAll'</span>,<span style="color: #a31515">'RemoveFormat'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Form'</span>, <span style="color: #a31515">'Checkbox'</span>, <span style="color: #a31515">'Radio'</span>, <span style="color: #a31515">'TextField'</span>, <span style="color: #a31515">'Textarea'</span>, <span style="color: #a31515">'Select'</span>, <span style="color: #a31515">'Button'</span>, <span style="color: #a31515">'ImageButton'</span>, <span style="color: #a31515">'HiddenField'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #a31515">'/'</span>,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Bold'</span>,<span style="color: #a31515">'Italic'</span>,<span style="color: #a31515">'Underline'</span>,<span style="color: #a31515">'Strike'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'Subscript'</span>,<span style="color: #a31515">'Superscript'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'NumberedList'</span>,<span style="color: #a31515">'BulletedList'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'Outdent'</span>,<span style="color: #a31515">'Indent'</span>,<span style="color: #a31515">'Blockquote'</span>,<span style="color: #a31515">'CreateDiv'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Just<img src='/icons/68730if.gif' />yLeft'</span>,<span style="color: #a31515">'Just<img src='/icons/68730if.gif' />yCenter'</span>,<span style="color: #a31515">'Just<img src='/icons/68730if.gif' />yRight'</span>,<span style="color: #a31515">'Just<img src='/icons/68730if.gif' />yBlock'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Link'</span>,<span style="color: #a31515">'Unlink'</span>,<span style="color: #a31515">'Anchor'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Image'</span>,<span style="color: #a31515">'Flash'</span>,<span style="color: #a31515">'Table'</span>,<span style="color: #a31515">'HorizontalRule'</span>,<span style="color: #a31515">'Smiley'</span>,<span style="color: #a31515">'SpecialChar'</span>,<span style="color: #a31515">'PageBreak'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #a31515">'/'</span>,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Styles'</span>,<span style="color: #a31515">'Format'</span>,<span style="color: #a31515">'Font'</span>,<span style="color: #a31515">'FontSize'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'TextColor'</span>,<span style="color: #a31515">'BGColor'</span>],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Maximize'</span>, <span style="color: #a31515">'ShowBlocks'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'About'</span>]<br />&nbsp;&nbsp;&nbsp; ];<br /><br />&nbsp;&nbsp;&nbsp; config.toolbar_Basic =<br />&nbsp;&nbsp;&nbsp; [<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [<span style="color: #a31515">'Bold'</span>, <span style="color: #a31515">'Italic'</span>, <span style="color: #a31515">'-'</span>, <span style="color: #a31515">'NumberedList'</span>, <span style="color: #a31515">'BulletedList'</span>, <span style="color: #a31515">'-'</span>, <span style="color: #a31515">'Link'</span>, <span style="color: #a31515">'Unlink'</span>,<span style="color: #a31515">'-'</span>,<span style="color: #a31515">'About'</span>]<br />&nbsp;&nbsp;&nbsp; ];<br /><span style="color: green">config.width =771;<span style="color: green">//宽度</span><br/><br/>
config.height = 250;<span style="color: green">//高度&nbsp; <br />};<br/><br/>
配置完成后基本可以了<img src='/icons/68730dou.gif' />但是运行点击图片管理里面<img src='/icons/68730de.gif' />浏览服务器按钮&#8230; 出现以下提示:<br />&nbsp;<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="曾祥展" border="0" alt="曾祥展" src="http://CrazyCoder.cn/WebFiles/20103/6f7853c9-32d5-4932-8a10-03eb8a950688.png" width="562" height="180" /> <br/><br/>
解决思路方法:<br />ckfinder 里面<img src='/icons/68730de.gif' />config.ascx<img src='/icons/68730de.gif' />配置:<br /><br /><span style="color: blue">public override bool</span>CheckAuthentication<img src='/icons/68730kh.gif' /><br />{<br />&nbsp;&nbsp; <span style="color: green">&nbsp;</span><span style="color: blue"><img src='/icons/68730return.gif' /> true</span>;<span style="color: green">//(增加这句<img src='/icons/68730dou.gif' />如果你需要设置打开ckfinder访问权限可以在这里设置哦<img src='/icons/68730dou.gif' />我这里就不考虑权限了直接打开<img src='/icons/68730dou2.gif' />)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // ... where Session[ "IsAuthorized" ] is <img src='/icons/68730set.gif' /> to "true" as soon as the<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // user logs _disibledevent=>&nbsp;<br/><br/>
&nbsp;<br/><br/>
<strong><br/><br/>
<strong>为了去掉这个水印也简单 分析</strong><br/><br/>
<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="曾祥展" border="0" alt="曾祥展" src="http://CrazyCoder.cn/WebFiles/20103/6c173632-2e5d-4bf3-b1a0-66d2d5f7a08c.png" width="630" height="382" /> <br/><br/>
<strong>解决思路方法:原始加密js代码:<br/><br/>
xx=&#8217;xxxx...&#8217; 
设 qo='学无止境'&nbsp; 不能为空就行了<img src='/icons/68730dou.gif' />否则上传按钮变为不可用 哈哈 搞掂！<br/><br/>
<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="曾祥展" border="0" alt="曾祥展" src="http://CrazyCoder.cn/WebFiles/20103/cd79ecce-87df-4e74-8994-f44a5dcf21ca.png" width="845" height="299" /> <br />没有水印了<img src='/icons/68730dou.gif' />爽歪歪<img src='/icons/68730dou.gif' />最后来个图<img src='/icons/68730dou.gif' />上传成功 ok<br/><br/>
<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="曾祥展" border="0" alt="曾祥展" src="http://CrazyCoder.cn/WebFiles/20103/ef5a835e-12de-4a07-9c46-008ceb09ac68.png" width="600" height="562" /> <br/><br/>
&nbsp;<br/><br/>
&nbsp;<br/><br/>
&nbsp;<br/><br/>
注意:运行环境要在IIS下哦<img src='/icons/68730dou.gif' />不然有些页面无法显示<img src='/icons/68730de.gif' /><br/><br/>
&nbsp;<br/><br/>
插外话<img src='/icons/68730dou.gif' />昨天研究fck时<img src='/icons/68730dou.gif' />提示:<br/><br/>
<img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="曾祥展" border="0" alt="曾祥展" src="http://CrazyCoder.cn/WebFiles/20103/f5520c3a-2462-4981-b824-f545d3fc8315.png" width="592" height="391" /> <br/><br/>
解决:目录不能有中文<img src='/icons/68730dou.gif' />不然加载fck编辑器时无法运行<img src='/icons/68730dou.gif' /><img src='/icons/68730yinwei.gif' />有中文<img src='/icons/68730dou.gif' />URL没有转码导致解析抛出异常<img src='/icons/68730dou.gif' />换英文名就行了<br/><br/>Tag标签: 曾祥展,CKEditor3.2,CKFinder1.4.3,结合,打造&amp;amp;amp,quot,帅&amp;amp;amp,<img src='/icons/68730de.gif' />编辑器,.Net<br/>
 <a href="/mypdf/78966.pdf" title="查看 &quot:CKEditor3.2+CKFinder1.4.3结合 打造&quot 帅&quot 的编辑器 For .Net 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78966.html</guid>
		</item>
		<item>
			<title><![CDATA[.net类库:ESBasic 可复用的.NET类库(21) －－ 片段整合提取器 ScatteredSegmentPicker]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78965.html</link>
			<description>
				<![CDATA[

			<strong><span style="font-family: Verdana; font-size: 10pt">1.<strong><span style="font-family: Verdana; font-size: 10pt">缘起:<br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">当数据源中<img src='/icons/25869de.gif' />数据量多到<img src='/icons/25869yi.gif' />定程度时<img src='/icons/25869dou.gif' />我们在查询时就经常使用分页策略<img src='/icons/25869dou2.gif' />如果数据源是<img src='/icons/25869yi.gif' />个完整<img src='/icons/25869de.gif' />整体<img src='/icons/25869dou.gif' />这没有什么大不了<img src='/icons/25869de.gif' /><img src='/icons/25869dou.gif' />我们经常就在做类似<img src='/icons/25869de.gif' />事情<img src='/icons/25869dou2.gif' />但是<img src='/icons/25869dou.gif' />如果数据源不是<img src='/icons/25869yi.gif' />个完整<img src='/icons/25869de.gif' />整体<img src='/icons/25869dou.gif' />而是由很多有序<img src='/icons/25869de.gif' />片段构成<img src='/icons/25869de.gif' /><img src='/icons/25869dou.gif' />并且区别<img src='/icons/25869de.gif' />片段可能位于区别<img src='/icons/25869de.gif' />位置(比如<img src='/icons/25869dou.gif' />位于区别<img src='/icons/25869de.gif' />服务器节点上<img src='/icons/25869de.gif' />内存中)<img src='/icons/25869dou.gif' />甚至<img src='/icons/25869dou.gif' />每个片段内<img src='/icons/25869de.gif' />数据还会随着时间<img src='/icons/25869de.gif' />变化而变化<img src='/icons/25869de.gif' /><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: Verdana; font-size: 10pt">在这种假设<img src='/icons/25869de.gif' />情况下<img src='/icons/25869dou.gif' />来从这个&#8220;虚拟<img src='/icons/25869de.gif' />完整&#8221;数据源获取某个分页就不再是那么简单<img src='/icons/25869de.gif' />事情了<img src='/icons/25869dou2.gif' /><img src='/icons/25869yi.gif' />个分页可能位于<img src='/icons/25869yi.gif' />个片段<img src='/icons/25869de.gif' />内部<img src='/icons/25869de.gif' />某个区间<img src='/icons/25869dou.gif' />也有可能会跨越多个片段<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">我们举个例子<img src='/icons/25869dou.gif' />以更形象地介绍说明上面描述<img src='/icons/25869de.gif' />问题<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">假设<img src='/icons/25869dou.gif' />我们有如下几个包含整数<img src='/icons/25869de.gif' />有序片段:</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">片段</span><span style="font-family: Verdana; font-size: 10pt">A</span><span style="font-family: Verdana; font-size: 10pt">:</span><span style="font-family: Verdana; font-size: 10pt">2</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">3</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">5</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">8</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">片段</span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt">:</span><span style="font-family: Verdana; font-size: 10pt">33</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">34</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">45</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">51</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">56</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">78</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">86</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">片段</span><span style="font-family: Verdana; font-size: 10pt">C</span><span style="font-family: Verdana; font-size: 10pt">:</span><span style="font-family: Verdana; font-size: 10pt">9</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">12</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">14</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">15</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">18</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">23</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">片段</span><span style="font-family: Verdana; font-size: 10pt">D</span><span style="font-family: Verdana; font-size: 10pt">:</span><span style="font-family: Verdana; font-size: 10pt">90</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">92</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">97</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">108</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">127</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">&nbsp; &nbsp;&nbsp;&nbsp; A</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">C</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">D</span><span style="font-family: Verdana; font-size: 10pt"> 4个片段<img src='/icons/25869dou.gif' />每个片段内部包含<img src='/icons/25869de.gif' />元素<img src='/icons/25869de.gif' />个数都不<img src='/icons/25869yi.gif' />样<img src='/icons/25869dou.gif' />每个片段内部<img src='/icons/25869de.gif' />整数都是有序<img src='/icons/25869de.gif' /><img src='/icons/25869dou2.gif' />我们还发现<img src='/icons/25869dou.gif' />任意两个片段<img src='/icons/25869de.gif' />取值区间是没有交集<img src='/icons/25869de.gif' /><img src='/icons/25869dou.gif' />如我们可以认为</span><span style="font-family: Verdana; font-size: 10pt">A</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />区间为</span><span style="font-family: Verdana; font-size: 10pt">[2,8]</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />区间为</span><span style="font-family: Verdana; font-size: 10pt">[33,86] </span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">C</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />区间为</span><span style="font-family: Verdana; font-size: 10pt">[9,23]</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">D</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />区间为</span><span style="font-family: Verdana; font-size: 10pt">[90,127]</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' />由于任意两个片段<img src='/icons/25869de.gif' />取值区间没有交集<img src='/icons/25869dou.gif' />所以<img src='/icons/25869dou.gif' />我们可以对这些片段<img src='/icons/25869de.gif' />取值区间进行排序<img src='/icons/25869dou.gif' />排序<img src='/icons/25869de.gif' />结果是:</span><span style="font-family: Verdana; font-size: 10pt">A</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">C</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">D</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">现在我们把排序后<img src='/icons/25869de.gif' /></span><span style="font-family: Verdana; font-size: 10pt">A</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">C</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">D</span><span style="font-family: Verdana; font-size: 10pt"> 4个片段作为<img src='/icons/25869yi.gif' />个虚拟<img src='/icons/25869de.gif' />整体数据源<img src='/icons/25869dou.gif' />然后对其进行分页<img src='/icons/25869dou2.gif' />假设</span><span style="font-family: Verdana; font-size: 10pt">PageSize</span><span style="font-family: Verdana; font-size: 10pt">为</span><span style="font-family: Verdana; font-size: 10pt">5</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou.gif' />如果从小到大取第 2页<img src='/icons/25869de.gif' />数据应该是:</span><span style="font-family: Verdana; font-size: 10pt">12</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">14</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">15</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">18</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">23</span><span style="font-family: Verdana; font-size: 10pt">；如果从大到小取第 2页<img src='/icons/25869de.gif' />数据应该是:</span><span style="font-family: Verdana; font-size: 10pt">86</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">78</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">56</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">51</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">45</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">你也许会想<img src='/icons/25869dou.gif' />这个很容易啊<img src='/icons/25869dou.gif' />我把所有片段中<img src='/icons/25869de.gif' />数据取出来<img src='/icons/25869dou.gif' />按顺序排列好:</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">3</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">5</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">8</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">9</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">12</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">14</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">15</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">18</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">23</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">33</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">34</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">45</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">51</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">56</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">78</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">86</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">90</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">92</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">97</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">108</span><span style="font-family: Verdana; color: red; font-size: 10pt">、</span><span style="font-family: Verdana; color: red; font-size: 10pt">127</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">现在想取第几页就可以直接取第几页了<img src='/icons/25869dou.gif' />问题解决<img src='/icons/25869dou2.gif' />是吗？记得我们前面还有<img src='/icons/25869yi.gif' />个假设<img src='/icons/25869de.gif' />需求在这里没有考虑进来<img src='/icons/25869dou.gif' />那就是每个片段内<img src='/icons/25869de.gif' />数据还会随着时间<img src='/icons/25869de.gif' />变化而变化<img src='/icons/25869de.gif' /><img src='/icons/25869dou.gif' />当然<img src='/icons/25869dou.gif' />约定好<img src='/icons/25869de.gif' />取值区间是不会变化<img src='/icons/25869de.gif' /><img src='/icons/25869dou2.gif' />比如<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt">片段<img src='/icons/25869de.gif' />数据在下<img src='/icons/25869yi.gif' />时刻增加了几个数据变成这样:</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">片段</span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt">:</span><span style="font-family: Verdana; font-size: 10pt">33</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">34</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">40</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">42</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">45</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">50</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">51</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">56</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">62</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">78</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">83</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt">86</span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">片段</span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt">增加<img src='/icons/25869de.gif' />数据都是属于其取值区间</span><span style="font-family: Verdana; font-size: 10pt">[33,86]</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' /><img src='/icons/25869dou.gif' />所以</span><span style="font-family: Verdana; font-size: 10pt">B</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />取值区间并不会发生变化<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">上面提到<img src='/icons/25869de.gif' />把每个片段中<img src='/icons/25869de.gif' />所有<img src='/icons/25869de.gif' />数据都提取出来排列好<img src='/icons/25869de.gif' />思路方法就不好用了吧<img src='/icons/25869dou.gif' /><img src='/icons/25869yinwei.gif' />每查询某分页<img src='/icons/25869yi.gif' />次<img src='/icons/25869dou.gif' />就需要重新排序<img src='/icons/25869yi.gif' />次<img src='/icons/25869dou2.gif' />如果我们<img src='/icons/25869de.gif' />片段非常多<img src='/icons/25869dou.gif' />而且每个片段中<img src='/icons/25869de.gif' />数据也非常多<img src='/icons/25869dou.gif' />那么<img src='/icons/25869dou.gif' />其效率可想而知<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">我设计了</span><span style="font-family: Verdana; color: #008080; font-size: 10pt">ESBasic.ObjectManagement.Integration.ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt">片段整合提取器来解决类似<img src='/icons/25869de.gif' />问题<img src='/icons/25869dou2.gif' /></span><br/><br/>
&nbsp;<br/><br/>
<strong><span style="font-family: Verdana; font-size: 10pt">2.<strong><span style="font-family: Verdana; font-size: 10pt">适用场合:<br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">当满足以下条件时<img src='/icons/25869dou.gif' />你可以使用</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt">来对数据源进行分页操作<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(1)</span><span style="font-family: Verdana; font-size: 10pt">数据源由多个片段(</span><span style="font-family: Verdana; font-size: 10pt">Segment</span><span style="font-family: Verdana; font-size: 10pt">)组成<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(2)</span><span style="font-family: Verdana; font-size: 10pt">每个片段内部<img src='/icons/25869de.gif' />数据都是有序<img src='/icons/25869de.gif' /><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(3)</span><span style="font-family: Verdana; font-size: 10pt">任意两个片段<img src='/icons/25869de.gif' />取值区间<img src='/icons/25869de.gif' />交集为空<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(4)</span><span style="font-family: Verdana; font-size: 10pt">片段内<img src='/icons/25869de.gif' />数据可能发生变化<img src='/icons/25869dou.gif' />但是其最初预定<img src='/icons/25869de.gif' />取值区间<img src='/icons/25869yi.gif' />直是恒定<img src='/icons/25869de.gif' /><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(5)</span><span style="font-family: Verdana; font-size: 10pt">每个片段都有唯<img src='/icons/25869yi.gif' /><img src='/icons/25869de.gif' /></span><span style="font-family: Verdana; font-size: 10pt">ID</span><span style="font-family: Verdana; font-size: 10pt">来标志它<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(6)</span><span style="font-family: Verdana; font-size: 10pt">需要从小到大<img src='/icons/25869de.gif' />顺序或从大到小<img src='/icons/25869de.gif' />顺序对所有片段中<img src='/icons/25869de.gif' />数据作为<img src='/icons/25869yi.gif' />个整体进行分页<img src='/icons/25869dou2.gif' /></span><br/><br/>
&nbsp;<br/><br/>
<strong><span style="font-family: Verdana; font-size: 10pt">3<strong><span style="font-family: Verdana; font-size: 10pt">．设计思想和实现<br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">根据上述<img src='/icons/25869de.gif' />描述看到<img src='/icons/25869dou.gif' />片段是<img src='/icons/25869yi.gif' />个核心概念<img src='/icons/25869dou.gif' />我们使用</span><span style="font-family: Verdana; font-size: 10pt">ISegment</span><span style="font-family: Verdana; font-size: 10pt">接口来抽象它<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">ISegment</span><span style="font-family: Verdana; font-size: 10pt">定义如下:</span><strong><span style="font-family: Verdana; color: red; font-size: 10pt"><br/><br/>


<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #808080">&nbsp;&nbsp;&nbsp; ///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;ISegment&nbsp;片段<img src='/icons/25869dou.gif' /><img src='/icons/25869yi.gif' />个片段有有序<img src='/icons/25869de.gif' />多个元素TVal构成<img src='/icons/25869dou2.gif' /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;typeparam&nbsp;name="TSegmentID"&gt;</span><span style="color: #008000">片段标志<img src='/icons/25869de.gif' />类型</span><span style="color: #808080">&lt;/typeparam&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;typeparam&nbsp;name="TVal"&gt;</span><span style="color: #008000">构成片段<img src='/icons/25869de.gif' />元素<img src='/icons/25869de.gif' />类型</span><span style="color: #808080">&lt;/typeparam&gt;</span><span style="color: #808080"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff"><img src='/icons/25869int.gif' />erface</span><span style="color: #000000">&nbsp;</span><span style="color: #008080">ISegment</span><span style="color: #000000">&lt;</span><span style="color: #000000">TSegmentID,&nbsp;TVal</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;ID&nbsp;每个片段<img src='/icons/25869de.gif' />唯<img src='/icons/25869yi.gif' />标志<img src='/icons/25869dou2.gif' /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #808080"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TSegmentID&nbsp;ID&nbsp;{&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000">;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;GetContent&nbsp;获取片段中<img src='/icons/25869de.gif' />所有元素<img src='/icons/25869dou.gif' />从小到大排列<img src='/icons/25869dou2.gif' /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">IList</span><span style="color: #000000">&lt;</span><span style="color: #000000">TVal</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;GetContent<img src='/icons/25869kh.gif' />;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span><br/><br/><br/>
&nbsp;<span style="font-family: Verdana; font-size: 10pt">该接口有两个泛型参数:</span><span style="font-family: Verdana; font-size: 10pt">TSegmentID</span><span style="font-family: Verdana; font-size: 10pt">、</span><span style="font-family: Verdana; font-size: 10pt"> TVal</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' /></span><span style="font-family: Verdana; font-size: 10pt">TSegmentID</span><span style="font-family: Verdana; font-size: 10pt">是片段</span><span style="font-family: Verdana; font-size: 10pt">ID</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />类型<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">TVal</span><span style="font-family: Verdana; font-size: 10pt">是片段中包含<img src='/icons/25869de.gif' />元素<img src='/icons/25869de.gif' />类型<img src='/icons/25869dou2.gif' /></span><span style="font-family: Verdana; font-size: 10pt">GetContent</span><span style="font-family: Verdana; font-size: 10pt">思路方法返回片段中所有元素<img src='/icons/25869de.gif' />列表<img src='/icons/25869dou.gif' />并且这个列表中<img src='/icons/25869de.gif' />元素是从小到大<img src='/icons/25869de.gif' />顺序排列<img src='/icons/25869de.gif' /><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">我们设计</span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">接口来提供所有<img src='/icons/25869de.gif' />片段访问<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">接口定义如下:</span><strong><span style="font-family: Verdana; color: red; font-size: 10pt"><br/><br/>


<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #000000">&nbsp;&nbsp; &nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;ISegmentContainer&nbsp;用于存放片段ISegment<img src='/icons/25869de.gif' />容器<img src='/icons/25869dou2.gif' /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;typeparam&nbsp;name="TSegmentID"&gt;</span><span style="color: #008000">片段标志<img src='/icons/25869de.gif' />类型</span><span style="color: #808080">&lt;/typeparam&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;typeparam&nbsp;name="TVal"&gt;</span><span style="color: #008000">构成片段<img src='/icons/25869de.gif' />元素<img src='/icons/25869de.gif' />类型</span><span style="color: #808080">&lt;/typeparam&gt;</span><span style="color: #808080"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff"><img src='/icons/25869int.gif' />erface</span><span style="color: #000000">&nbsp;</span><span style="color: #008080">ISegmentContainer</span><span style="color: #000000">&lt;</span><span style="color: #000000">TSegmentID,&nbsp;TVal</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">ISegment</span><span style="color: #000000">&lt;</span><span style="color: #000000">TSegmentID,&nbsp;TVal</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;GetSmallestSegment<img src='/icons/25869kh.gif' />;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">ISegment</span><span style="color: #000000">&lt;</span><span style="color: #000000">TSegmentID,&nbsp;TVal</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;GetBiggestSegment<img src='/icons/25869kh.gif' />;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;GetNextSegment&nbsp;按照fromSmallToBig指定<img src='/icons/25869de.gif' />顺序返回下<img src='/icons/25869yi.gif' />个Segment<img src='/icons/25869dou2.gif' /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;如果返回null<img src='/icons/25869dou.gif' />则表示不再有后续<img src='/icons/25869de.gif' />Segment了<img src='/icons/25869dou2.gif' /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">ISegment</span><span style="color: #000000">&lt;</span><span style="color: #000000">TSegmentID,&nbsp;TVal</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;GetNextSegment(TSegmentID&nbsp;curSegmentID,&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;fromSmallToBig);<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span><br/><br/><br/>
&nbsp;<span style="font-family: Verdana; font-size: 10pt">这个接口也有两个和</span><span style="font-family: Verdana; font-size: 10pt">ISegment</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869yi.gif' />样<img src='/icons/25869de.gif' />泛型参数<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">GetSmallestSegment</span><span style="font-family: Verdana; font-size: 10pt">思路方法和</span><span style="font-family: Verdana; font-size: 10pt">GetBiggestSegment</span><span style="font-family: Verdana; font-size: 10pt">思路方法用于返回取值区间最小和最大<img src='/icons/25869de.gif' />片段<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">从</span><span style="font-family: Verdana; font-size: 10pt">GetNextSegment</span><span style="font-family: Verdana; font-size: 10pt">思路方法<img src='/icons/25869de.gif' />设计我们知道<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">不是<img src='/icons/25869yi.gif' />下子返回所有<img src='/icons/25869de.gif' />片段列表<img src='/icons/25869dou.gif' />而是根据当前使用<img src='/icons/25869de.gif' />片段<img src='/icons/25869de.gif' /></span><span style="font-family: Verdana; font-size: 10pt">ID</span><span style="font-family: Verdana; font-size: 10pt">返回下<img src='/icons/25869yi.gif' />个片段<img src='/icons/25869dou2.gif' />的所以这样做<img src='/icons/25869dou.gif' />是<img src='/icons/25869yinwei.gif' />我们<img src='/icons/25869yi.gif' />次性获取所有片段列表<img src='/icons/25869de.gif' />代价可能是巨大<img src='/icons/25869de.gif' /><img src='/icons/25869dou.gif' />所以<img src='/icons/25869yi.gif' />次只返回<img src='/icons/25869yi.gif' />个必需<img src='/icons/25869de.gif' />片段<img src='/icons/25869dou2.gif' /></span><span style="font-family: Verdana; font-size: 10pt">fromSmallToBig</span><span style="font-family: Verdana; font-size: 10pt">参数<img src='/icons/25869de.gif' />值取决于我们是按降序分页还是按升序分页<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">如果不再有后续分页<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">GetNextSegment</span><span style="font-family: Verdana; font-size: 10pt">思路方法将返回</span><span style="font-family: Verdana; font-size: 10pt">null</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp; </span><span style="font-family: Verdana; font-size: 10pt">在做了上述这些铺垫后<img src='/icons/25869dou.gif' />接下来我们来看本节真正<img src='/icons/25869de.gif' />主角:</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou.gif' />正是它将所有<img src='/icons/25869de.gif' />片段整合为<img src='/icons/25869yi.gif' />个虚拟<img src='/icons/25869de.gif' />完整数据源<img src='/icons/25869dou.gif' />然后对其进行分页提取<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt">类图如下所示:</span><span style="font-family: Verdana; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">&nbsp;&nbsp;&nbsp; <img border="0" alt="" src="http://CrazyCoder.cn/WebFiles/20103/8646a93d-9e81-4149-8c12-8a0d75c61ee3.jpg" width="547" height="392" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">　　PickFromSmallToBig</span><span style="font-family: Verdana; font-size: 10pt">属性表明是要按升序还是降序来提取分页数据<img src='/icons/25869dou2.gif' /></span><span style="font-family: Verdana; font-size: 10pt">Pick</span><span style="font-family: Verdana; font-size: 10pt">思路方法执行真正<img src='/icons/25869de.gif' />分页提取动作<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">startIndex</span><span style="font-family: Verdana; font-size: 10pt">参数是指要以哪条记录作为分页<img src='/icons/25869de.gif' />起始<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">pickCount</span><span style="font-family: Verdana; font-size: 10pt">参数表示要提取多少条记录<img src='/icons/25869dou.gif' />即分页<img src='/icons/25869de.gif' />大小<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp; Pick</span><span style="font-family: Verdana; font-size: 10pt">思路方法的所以传递</span><span style="font-family: Verdana; font-size: 10pt">startIndex</span><span style="font-family: Verdana; font-size: 10pt">参数和</span><span style="font-family: Verdana; font-size: 10pt">pickCount</span><span style="font-family: Verdana; font-size: 10pt">参数<img src='/icons/25869dou.gif' />而不是传递</span><span style="font-family: Verdana; font-size: 10pt">pageSize</span><span style="font-family: Verdana; font-size: 10pt">和</span><span style="font-family: Verdana; font-size: 10pt">pageIndex</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou.gif' />是为了更灵活地支持从任意位置开始<img src='/icons/25869de.gif' />连续记录<img src='/icons/25869de.gif' />提取<img src='/icons/25869dou.gif' />而且<img src='/icons/25869dou.gif' />这也兼容了分页<img src='/icons/25869de.gif' />提取<img src='/icons/25869dou2.gif' />比如<img src='/icons/25869dou.gif' />你将</span><span style="font-family: Verdana; font-size: 10pt">pageSize*pageIndex</span><span style="font-family: Verdana; font-size: 10pt">作为</span><span style="font-family: Verdana; font-size: 10pt">startIndex</span><span style="font-family: Verdana; font-size: 10pt">参数传入<img src='/icons/25869dou.gif' />将</span><span style="font-family: Verdana; font-size: 10pt">pageSize</span><span style="font-family: Verdana; font-size: 10pt">作为</span><span style="font-family: Verdana; font-size: 10pt">pickCount</span><span style="font-family: Verdana; font-size: 10pt">参数传入即是<img src='/icons/25869yi.gif' />个标准<img src='/icons/25869de.gif' />分页获取动作<img src='/icons/25869dou2.gif' /></span><br/><br/>
&nbsp;<br/><br/>
<span style="font-size: 14pt">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: Verdana; font-size: 10pt">有关</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />实现要注意以下几点:</span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(1)</span><span style="font-family: Verdana; font-size: 10pt">虽然</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt">内部实现没有使用到任何加锁机制<img src='/icons/25869dou.gif' />但是它可以被使用在多线程<img src='/icons/25869de.gif' />环境中<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(2)</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' /></span><span style="font-family: Verdana; font-size: 10pt">DoPick</span><span style="font-family: Verdana; font-size: 10pt">思路方法采用遍历策略来提取目标页<img src='/icons/25869de.gif' />数据<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">PickFromSmallToBig</span><span style="font-family: Verdana; font-size: 10pt">属性决定了遍历片段<img src='/icons/25869de.gif' />方向<img src='/icons/25869dou.gif' />是从小到大还是从大到小<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(3)</span><span style="font-family: Verdana; font-size: 10pt">如果要查询<img src='/icons/25869de.gif' />分页不存在<img src='/icons/25869dou.gif' />则将返回<img src='/icons/25869yi.gif' />个不包含任何元素<img src='/icons/25869de.gif' /></span><span style="font-family: Verdana; font-size: 10pt">List</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou.gif' />而不是返回</span><span style="font-family: Verdana; font-size: 10pt">null</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' /></span><br/><br/>
&nbsp;<br/><br/>
<strong><span style="font-family: Verdana; font-size: 10pt">4. <strong><span style="font-family: Verdana; font-size: 10pt">使用时<img src='/icons/25869de.gif' />注意事项<br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(1)</span><span style="font-family: Verdana; font-size: 10pt">在使用</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt">的前<img src='/icons/25869dou.gif' />你必须根据你<img src='/icons/25869de.gif' />应用<img src='/icons/25869de.gif' />需求实现</span><span style="font-family: Verdana; font-size: 10pt">ISegment</span><span style="font-family: Verdana; font-size: 10pt">接口和</span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">接口<img src='/icons/25869dou.gif' />然后将</span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">例子<img src='/icons/25869de.gif' />引用注入到</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(2)</span><span style="font-family: Verdana; font-size: 10pt">虽然我们使用</span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">来提供所需<img src='/icons/25869de.gif' />每个片段<img src='/icons/25869dou.gif' />但是在实现该接口时<img src='/icons/25869dou.gif' />不<img src='/icons/25869yi.gif' />定非要将所有<img src='/icons/25869de.gif' />片段都存放在</span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">这个容器中<img src='/icons/25869dou2.gif' /></span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">可以作为<img src='/icons/25869yi.gif' />个片段获取器<img src='/icons/25869de.gif' />角色从其它地方获取某个片段<img src='/icons/25869dou2.gif' />比如<img src='/icons/25869dou.gif' />某个片段可能位于另外<img src='/icons/25869yi.gif' />台服务器<img src='/icons/25869de.gif' />内存中<img src='/icons/25869dou.gif' /></span><span style="font-family: Verdana; font-size: 10pt">ISegmentContainer</span><span style="font-family: Verdana; font-size: 10pt">可以通过</span><span style="font-family: Verdana; font-size: 10pt">Remoting</span><span style="font-family: Verdana; font-size: 10pt"><img src='/icons/25869de.gif' />方式从那台服务器获取这个片段<img src='/icons/25869de.gif' />数据<img src='/icons/25869dou2.gif' /></span><br/><br/>
<span style="font-family: Verdana; font-size: 10pt">(3)</span><span style="font-family: Verdana; font-size: 10pt">也许你<img src='/icons/25869de.gif' />片段中<img src='/icons/25869de.gif' />数据不是从小到大或从大到小<img src='/icons/25869de.gif' />顺序<img src='/icons/25869dou.gif' />而是依据另外<img src='/icons/25869yi.gif' />个性质进行排序<img src='/icons/25869dou.gif' />比如由不重要到重要<img src='/icons/25869dou.gif' />由不急迫到急迫等<img src='/icons/25869dou.gif' />这个只需要和</span><span style="font-family: Verdana; font-size: 10pt">PickFromSmallToBig</span><span style="font-family: Verdana; font-size: 10pt">做正确映射就可以正常使用</span><span style="font-family: Verdana; font-size: 10pt">ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt">了<img src='/icons/25869dou2.gif' /></span><br/><br/>
&nbsp;<br/><br/>
<strong><span style="font-family: Verdana; font-size: 10pt">5.<strong><span style="font-family: Verdana; font-size: 10pt">扩展<br/><br/>
<span style="font-family: Verdana; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 片段整合提取器</span><span style="font-family: Verdana; font-size: 10pt"> ScatteredSegmentPicker</span><span style="font-family: Verdana; font-size: 10pt">暂时没有任何扩展<img src='/icons/25869dou2.gif' /></span><br/><br/>
&nbsp;<br/><br/>
<span style="font-family: Verdana; font-size: 10pt"><span style="font-family: Verdana; font-size: 10pt"><span style="font-family: Verdana; font-size: 10pt"><span style="font-size: 10pt"><span style="font-size: 10pt">注:ESBasic源码可到<span style="color: #0000ff">http://esbasic.codeplex.com/</span>下载<img src='/icons/25869dou2.gif' /><br />&nbsp;&nbsp; &nbsp;ESBasic讨论QQ群:37677395<br />&nbsp;&nbsp;&nbsp;&nbsp;ESBasic开源前言 <br/><br/>
&nbsp;<br/><br/>
 <a href="/mypdf/78965.pdf" title="查看 .net类库:ESBasic 可复用的.NET类库(21) －－ 片段整合提取器 ScatteredSegmentPicker 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78965.html</guid>
		</item>
		<item>
			<title><![CDATA[导出xml文件:用xml模块方式导出多种offcie文件]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78964.html</link>
			<description>
				<![CDATA[

			<span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span>我们在开发网站WebSite时<img src='/icons/11914dou.gif' />有很大<img src='/icons/11914yi.gif' />部分人采用<img src='/icons/11914de.gif' />是MVC模式<img src='/icons/11914dou.gif' />而V是代表视图<img src='/icons/11914dou.gif' />有关视图开发<img src='/icons/11914de.gif' />语言<img src='/icons/11914dou.gif' />都有语法简单<img src='/icons/11914dou.gif' />开发迅速<img src='/icons/11914de.gif' />特点<img src='/icons/11914dou.gif' />比如说velocity,jstl等等<img src='/icons/11914dou.gif' />而通常用这种语言写成<img src='/icons/11914de.gif' />文件我们通常称其为模板<img src='/icons/11914dou2.gif' />模板<img src='/icons/11914dou.gif' />从名字上可以得出<img src='/icons/11914dou.gif' />这是<img src='/icons/11914yi.gif' />种通用具有参照性<img src='/icons/11914de.gif' />样板<img src='/icons/11914dou.gif' />所有<img src='/icons/11914de.gif' />东西都是按照它<img src='/icons/11914de.gif' />比例剪栽而成<img src='/icons/11914de.gif' /><img src='/icons/11914dou2.gif' /></span><br />&nbsp;<br /><span>&nbsp;在采用MVC方式开发html页时<img src='/icons/11914dou.gif' /><img src='/icons/11914yinwei.gif' />html是普通文本表示<img src='/icons/11914de.gif' /><img src='/icons/11914dou.gif' />我们就会用如下形式表html</span><br />&nbsp;<br /><br />
<img id="code_img_closed_141d349a-fb66-4e2d-ac37-2b713a0512bb" <img src='/icons/11914class.gif' />="code_img_closed" src="http://CrazyCoder.cn/WebFiles/20103/f7157fd1-17cd-459c-a8a3-7b2ba5c6e2a5.g<img src='/icons/11914if.gif' />"  alt="" /><img style="display: none" id="code_img_opened_141d349a-fb66-4e2d-ac37-2b713a0512bb" <img src='/icons/11914class.gif' />="code_img_opened" _disibledevent=><span <img src='/icons/11914class.gif' />="cnblogs_code_collapse">代码</span> 

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.1//EN"&nbsp;"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="color: #ff0000">&nbsp;xml:lang</span><span style="color: #0000ff">="zh-CN"</span><span style="color: #ff0000">&nbsp;lang</span><span style="color: #0000ff">="zh-CN"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">#<img src='/icons/11914if.gif' />($title)&nbsp;$title&nbsp;-&nbsp;#end&nbsp;xxx网</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Type"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="text/html;&nbsp;char<img src='/icons/11914set.gif' />=utf-8"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">http-equiv</span><span style="color: #0000ff">="Content-Language"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="cn"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">content</span><span style="color: #0000ff">="all"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="robots"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="author"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="mailto:netcorner&#64;live.com%22/&gt;<span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #0000ff">&nbsp;&nbsp;&lt;meta&nbsp;name="</span><span style="color: #ff0000">copyright"&nbsp;content</span><span style="color: #0000ff">="http://www.xxx.com%22/&gt;<span style="color: #008080">10</span>&nbsp;<span style="color: #0000ff">&nbsp;&nbsp;&lt;meta&nbsp;name="</span><span style="color: #ff0000">description"&nbsp;content</span><span style="color: #0000ff">="$!title"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="keywords"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="$!title"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">link&nbsp;</span><span style="color: #ff0000">rel</span><span style="color: #0000ff">="icon"</span><span style="color: #ff0000">&nbsp;href</span><span style="color: #0000ff">="$applicationPath/favicon.ico"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="image/x-icon"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="$applicationPath/script/jquery1.3.2.js"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;#body<img src='/icons/11914kh.gif' /><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><br/><br/><br/>
&nbsp;<br/><br/>&nbsp;<br />&nbsp;<br /><span>&nbsp;通过上面<img src='/icons/11914de.gif' />形式<img src='/icons/11914dou.gif' />我们<img src='/icons/11914chengxu.gif' />就可以把以&#8220;${var}&#8221;形式<img src='/icons/11914de.gif' />替换成我们想要<img src='/icons/11914de.gif' />数据<img src='/icons/11914dou.gif' />而且处理起来很方便<img src='/icons/11914dou.gif' />页面和逻辑进行区分<img src='/icons/11914dou.gif' />但是对于我们<img src='/icons/11914de.gif' />office文件(如excel,word<img src='/icons/11914de.gif' />文件)应该如何处理呢？<img src='/icons/11914yinwei.gif' />他们不是文本<img src='/icons/11914de.gif' /><img src='/icons/11914dou.gif' />所以通常情况下想要以excel或word文件模板像html<img src='/icons/11914yi.gif' />样做模板处理就相当困难了！那么有什么办法处理这种情况呢？</span><br />&nbsp;<br /><span>&nbsp;在开发过程中<img src='/icons/11914dou.gif' />我们会遇到很多情况是这样<img src='/icons/11914de.gif' />:要导出数据<img src='/icons/11914dou.gif' />导出成excel、PDF、word形式<img src='/icons/11914de.gif' /><img src='/icons/11914dou.gif' />有<img src='/icons/11914de.gif' />如果想打印<img src='/icons/11914dou.gif' />也可以直接导出这几种形式<img src='/icons/11914dou.gif' />以方便用户打印<img src='/icons/11914dou2.gif' />这几种情况在开发中是经常存<img src='/icons/11914de.gif' /><img src='/icons/11914dou.gif' />对于开发OA时<img src='/icons/11914dou.gif' />这种情况遇到<img src='/icons/11914de.gif' />就更多<img src='/icons/11914yi.gif' />些了<img src='/icons/11914dou2.gif' /></span><br />&nbsp;<br /><span>&nbsp;那么有没有把像excel、word文档当成模板处理<img src='/icons/11914de.gif' />呢？</span><br />&nbsp;<br /><span>&nbsp;其实有很多方式可以实现这种情况<img src='/icons/11914de.gif' /><img src='/icons/11914dou.gif' />我知道<img src='/icons/11914de.gif' />大致有这几种情况<img src='/icons/11914dou2.gif' /></span><br />&nbsp;<br /><span>&nbsp;1.通过操作office类库<img src='/icons/11914dou.gif' />在<img src='/icons/11914chengxu.gif' />中进行操作</span><br /><span>&nbsp;&nbsp;这种情况<img src='/icons/11914dou.gif' />得<img src='/icons/11914diaoyong.gif' />office类库<img src='/icons/11914dou.gif' />而且还得写不少代码<img src='/icons/11914dou2.gif' /></span><br />&nbsp;<br /><span>&nbsp;2.用openxml代替office<img src='/icons/11914de.gif' /> 2进制代码</span><br /><span>&nbsp;&nbsp;感觉很复杂<img src='/icons/11914dou.gif' />也不知道openxml文件是否支持office早期版本<img src='/icons/11914dou2.gif' /></span><br />&nbsp;<br /><span>&nbsp;3.用office文件另存为xml形式来表示</span><br />&nbsp;<br /><span>&nbsp;例:</span><br /><span>&nbsp;&nbsp;我建立doc文件<img src='/icons/11914dou.gif' />在文档里面输入&#8220;aaaaaaaaaaaaaaaaa&#8221;<img src='/icons/11914dou.gif' />并别存为&#8220;XML文档(*.xml)&#8221;<img src='/icons/11914dou.gif' />当你直接打开这个xml文件是就是直接打开word文档了<img src='/icons/11914dou.gif' />而文档里面就是我输入<img src='/icons/11914de.gif' />数据<img src='/icons/11914dou2.gif' />用记事本打开刚才保存<img src='/icons/11914de.gif' />xml文件<img src='/icons/11914dou.gif' />发现里面就是<img src='/icons/11914yi.gif' />个文本格式<img src='/icons/11914de.gif' /><img src='/icons/11914dou2.gif' />代码如下:</span><br />&nbsp;&nbsp;<br />
<img id="code_img_closed_6998ff7c-9be1-49e6-98ec-bac0d0a1d0b3" <img src='/icons/11914class.gif' />="code_img_closed" src="http://CrazyCoder.cn/WebFiles/20103/f7157fd1-17cd-459c-a8a3-7b2ba5c6e2a5.g<img src='/icons/11914if.gif' />"  alt="" /><img style="display: none" id="code_img_opened_6998ff7c-9be1-49e6-98ec-bac0d0a1d0b3" <img src='/icons/11914class.gif' />="code_img_opened" _disibledevent=><span <img src='/icons/11914class.gif' />="cnblogs_code_collapse">代码</span> 

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;standalone="yes"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">mso-application&nbsp;progid="Word.Document"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><span style="color: #0000ff">&lt;</span><span style="color: #800000">w:wordDocument&nbsp;</span><span style="color: #ff0000">xmlns:w</span><span style="color: #0000ff">="http://schemas.microsoft.com/office/word/2003/wordml"</span><span style="color: #ff0000">&nbsp;xmlns:v</span><span style="color: #0000ff">="urn:schemas-microsoft-com:vml"</span><span style="color: #ff0000">&nbsp;xmlns:w10</span><span style="color: #0000ff">="urn:schemas-microsoft-com:office:word"</span><span style="color: #ff0000">&nbsp;xmlns:sl</span><span style="color: #0000ff">="http://schemas.microsoft.com/schemaLibrary/2003/core"</span><span style="color: #ff0000">&nbsp;xmlns:aml</span><span style="color: #0000ff">="http://schemas.microsoft.com/aml/2001/core"</span><span style="color: #ff0000">&nbsp;xmlns:wx</span><span style="color: #0000ff">="http://schemas.microsoft.com/office/word/2003/auxH<img src='/icons/11914int.gif' />"</span><span style="color: #ff0000">&nbsp;xmlns:o</span><span style="color: #0000ff">="urn:schemas-microsoft-com:office:office"</span><span style="color: #ff0000">&nbsp;xmlns:dt</span><span style="color: #0000ff">="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"</span><span style="color: #ff0000">&nbsp;w:macrosPresent</span><span style="color: #0000ff">="no"</span><span style="color: #ff0000">&nbsp;w:embeddedObjPresent</span><span style="color: #0000ff">="no"</span><span style="color: #ff0000">&nbsp;w:ocxPresent</span><span style="color: #0000ff">="no"</span><span style="color: #ff0000">&nbsp;xml:space</span><span style="color: #0000ff">="preserve"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:DocumentProperties</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; font-size: 24pt"><strong>aaaaaaaaaaaaaaaaa<span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Title</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Author</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">netcorner</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Author</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:LastAuthor</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">netcorner</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:LastAuthor</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Revision</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Revision</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:TotalTime</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">0</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:TotalTime</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Created</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2010-03-10T05:18:00Z</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Created</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:LastSaved</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2010-03-10T05:18:00Z</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:LastSaved</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Pages</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Pages</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Words</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Words</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Characters</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">16</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Characters</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Lines</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Lines</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Paragraphs</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Paragraphs</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:CharactersWithSpaces</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">17</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:CharactersWithSpaces</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">o:Version</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">11.6359</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">o:Version</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">o:DocumentProperties</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:fonts</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:defaultFonts&nbsp;</span><span style="color: #ff0000">w:ascii</span><span style="color: #0000ff">="Times&nbsp;New&nbsp;Roman"</span><span style="color: #ff0000">&nbsp;w:fareast</span><span style="color: #0000ff">="宋体"</span><span style="color: #ff0000">&nbsp;w:h-ansi</span><span style="color: #0000ff">="Times&nbsp;New&nbsp;Roman"</span><span style="color: #ff0000">&nbsp;w:cs</span><span style="color: #0000ff">="Times&nbsp;New&nbsp;Roman"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:font&nbsp;</span><span style="color: #ff0000">w:name</span><span style="color: #0000ff">="宋体"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:altName&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="SimSun"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:panose-1&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="02010600030101010101"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:char<img src='/icons/11914set.gif' />&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="86"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:family&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="Auto"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:pitch&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="variable"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:sig&nbsp;</span><span style="color: #ff0000">w:usb-0</span><span style="color: #0000ff">="00000003"</span><span style="color: #ff0000">&nbsp;w:usb-1</span><span style="color: #0000ff">="288F0000"</span><span style="color: #ff0000">&nbsp;w:usb-2</span><span style="color: #0000ff">="00000016"</span><span style="color: #ff0000">&nbsp;w:usb-3</span><span style="color: #0000ff">="00000000"</span><span style="color: #ff0000">&nbsp;w:csb-0</span><span style="color: #0000ff">="00040001"</span><span style="color: #ff0000">&nbsp;w:csb-1</span><span style="color: #0000ff">="00000000"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:font</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:font&nbsp;</span><span style="color: #ff0000">w:name</span><span style="color: #0000ff">="&#64;宋体"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:panose-1&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="02010600030101010101"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:char<img src='/icons/11914set.gif' />&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="86"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:family&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="Auto"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:pitch&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="variable"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:sig&nbsp;</span><span style="color: #ff0000">w:usb-0</span><span style="color: #0000ff">="00000003"</span><span style="color: #ff0000">&nbsp;w:usb-1</span><span style="color: #0000ff">="288F0000"</span><span style="color: #ff0000">&nbsp;w:usb-2</span><span style="color: #0000ff">="00000016"</span><span style="color: #ff0000">&nbsp;w:usb-3</span><span style="color: #0000ff">="00000000"</span><span style="color: #ff0000">&nbsp;w:csb-0</span><span style="color: #0000ff">="00040001"</span><span style="color: #ff0000">&nbsp;w:csb-1</span><span style="color: #0000ff">="00000000"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:font</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:fonts</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:styles</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:versionOfBuiltInStylenames&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="4"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:latentStyles&nbsp;</span><span style="color: #ff0000">w:defLockedState</span><span style="color: #0000ff">="off"</span><span style="color: #ff0000">&nbsp;w:latentStyleCount</span><span style="color: #0000ff">="156"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:style&nbsp;</span><span style="color: #ff0000">w:type</span><span style="color: #0000ff">="paragraph"</span><span style="color: #ff0000">&nbsp;w:default</span><span style="color: #0000ff">="on"</span><span style="color: #ff0000">&nbsp;w:styleId</span><span style="color: #0000ff">="a"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:name&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="Normal"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">wx:uiName&nbsp;</span><span style="color: #ff0000">wx:val</span><span style="color: #0000ff">="正文"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:pPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:widowControl&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="off"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:jc&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="both"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:pPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">wx:font&nbsp;</span><span style="color: #ff0000">wx:val</span><span style="color: #0000ff">="Times&nbsp;New&nbsp;Roman"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:kern&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="2"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:sz&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="21"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:sz-cs&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="24"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:lang&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="EN-US"</span><span style="color: #ff0000">&nbsp;w:fareast</span><span style="color: #0000ff">="ZH-CN"</span><span style="color: #ff0000">&nbsp;w:bidi</span><span style="color: #0000ff">="AR-SA"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:style</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:style&nbsp;</span><span style="color: #ff0000">w:type</span><span style="color: #0000ff">="character"</span><span style="color: #ff0000">&nbsp;w:default</span><span style="color: #0000ff">="on"</span><span style="color: #ff0000">&nbsp;w:styleId</span><span style="color: #0000ff">="a0"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:name&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="Default&nbsp;Paragraph&nbsp;Font"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">wx:uiName&nbsp;</span><span style="color: #ff0000">wx:val</span><span style="color: #0000ff">="默认段落字体"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:semiHidden</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:style</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:style&nbsp;</span><span style="color: #ff0000">w:type</span><span style="color: #0000ff">="table"</span><span style="color: #ff0000">&nbsp;w:default</span><span style="color: #0000ff">="on"</span><span style="color: #ff0000">&nbsp;w:styleId</span><span style="color: #0000ff">="a1"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:name&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="Normal&nbsp;Table"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">wx:uiName&nbsp;</span><span style="color: #ff0000">wx:val</span><span style="color: #0000ff">="普通表格"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:semiHidden</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">wx:font&nbsp;</span><span style="color: #ff0000">wx:val</span><span style="color: #0000ff">="Times&nbsp;New&nbsp;Roman"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:tblPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:tblInd&nbsp;</span><span style="color: #ff0000">w:w</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;w:type</span><span style="color: #0000ff">="dxa"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:tblCellMar</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:top&nbsp;</span><span style="color: #ff0000">w:w</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;w:type</span><span style="color: #0000ff">="dxa"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:left&nbsp;</span><span style="color: #ff0000">w:w</span><span style="color: #0000ff">="108"</span><span style="color: #ff0000">&nbsp;w:type</span><span style="color: #0000ff">="dxa"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:bottom&nbsp;</span><span style="color: #ff0000">w:w</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;w:type</span><span style="color: #0000ff">="dxa"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:right&nbsp;</span><span style="color: #ff0000">w:w</span><span style="color: #0000ff">="108"</span><span style="color: #ff0000">&nbsp;w:type</span><span style="color: #0000ff">="dxa"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:tblCellMar</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:tblPr</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:style</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:style&nbsp;</span><span style="color: #ff0000">w:type</span><span style="color: #0000ff">="list"</span><span style="color: #ff0000">&nbsp;w:default</span><span style="color: #0000ff">="on"</span><span style="color: #ff0000">&nbsp;w:styleId</span><span style="color: #0000ff">="a2"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:name&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="No&nbsp;List"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">wx:uiName&nbsp;</span><span style="color: #ff0000">wx:val</span><span style="color: #0000ff">="无列表"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:semiHidden</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:style</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:styles</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:docPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:view&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="pr<img src='/icons/11914int.gif' />"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:zoom&nbsp;</span><span style="color: #ff0000">w:percent</span><span style="color: #0000ff">="200"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:bordersDontSurroundHeader</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:bordersDontSurroundFooter</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:proofState&nbsp;</span><span style="color: #ff0000">w:spelling</span><span style="color: #0000ff">="clean"</span><span style="color: #ff0000">&nbsp;w:grammar</span><span style="color: #0000ff">="clean"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:attachedTemplate&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">=""</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:defaultTabStop&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="420"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:drawingGridVerticalSpacing&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="156"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:displayHorizontalDrawingGridEvery&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="0"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:displayVerticalDrawingGridEvery&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="2"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:punctuationKerning</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:characterSpacingControl&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="CompressPunctuation"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:optimizeForBrowser</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:validateAgainstSchema</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:saveInvalidXML&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="off"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:ignoreMixedContent&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="off"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:alwaysShowPlaceholderText&nbsp;</span><span style="color: #ff0000">w:val</span><span style="color: #0000ff">="off"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:compat</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:spaceForUL</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:balanceSingleByteDoubleByteWidth</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:doNotLeaveBackslashAlone</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:ulTrailSpace</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:doNotExpandSh<img src='/icons/11914if.gif' />tReturn</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:adjustLineHeightInTable</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:<img src='/icons/11914break.gif' />WrappedTables</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:snapToGridInCell</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:wrapTextWithPunct</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:useAsianBreakRules</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:dontGrowAutofit</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:useFELayout</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:compat</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:docPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:body</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">wx:sect</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:p</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:pPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:rFonts&nbsp;</span><span style="color: #ff0000">w:h<img src='/icons/11914int.gif' /></span><span style="color: #0000ff">="fareast"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:pPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:r</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:rFonts&nbsp;</span><span style="color: #ff0000">w:h<img src='/icons/11914int.gif' /></span><span style="color: #0000ff">="fareast"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:rPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:t</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">aaaaaaaaaaaaaaaaa</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">w:t</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:r</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:p</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:sectPr</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">w:pgSz&nbsp;</span><span style="color: #ff0000">w:w</span><span style="color: #0000ff">="11906"</span><span style="color: #ff0000">&nbsp;w:h</span><span style="color: #0000ff">="16838"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:pgMar&nbsp;</span><span style="color: #ff0000">w:top</span><span style="color: #0000ff">="1440"</span><span style="color: #ff0000">&nbsp;w:right</span><span style="color: #0000ff">="1800"</span><span style="color: #ff0000">&nbsp;w:bottom</span><span style="color: #0000ff">="1440"</span><span style="color: #ff0000">&nbsp;w:left</span><span style="color: #0000ff">="1800"</span><span style="color: #ff0000">&nbsp;w:header</span><span style="color: #0000ff">="851"</span><span style="color: #ff0000">&nbsp;w:footer</span><span style="color: #0000ff">="992"</span><span style="color: #ff0000">&nbsp;w:gutter</span><span style="color: #0000ff">="0"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:cols&nbsp;</span><span style="color: #ff0000">w:space</span><span style="color: #0000ff">="425"</span><span style="color: #0000ff">/&gt;&lt;</span><span style="color: #800000">w:docGrid&nbsp;</span><span style="color: #ff0000">w:type</span><span style="color: #0000ff">="lines"</span><span style="color: #ff0000">&nbsp;w:line-pitch</span><span style="color: #0000ff">="312"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">w:sectPr</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">wx:sect</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:body</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">w:wordDocument</span><span style="color: #0000ff">&gt;</span><br/><br/><br/>
<span>而刚才输入<img src='/icons/11914de.gif' />文字"aaaaaaaaaaaaaaaaa",就在其中<img src='/icons/11914dou2.gif' />如果你需用用变量<img src='/icons/11914dou.gif' />那么就可以用变量替换了<img src='/icons/11914dou2.gif' /></span><br/><br/>
<span>那么<img src='/icons/11914chengxu.gif' />应该如何处理该文档呢？</span><br/><br/>
<span>其实处理方式和MVC中处理html<img src='/icons/11914yi.gif' />样<img src='/icons/11914de.gif' /><img src='/icons/11914dou.gif' />只是把这个office<img src='/icons/11914de.gif' />xml文档当作html模板处理并<img src='/icons/11914dou.gif' />在<img src='/icons/11914chengxu.gif' />端另存为文档时也得处理<img src='/icons/11914yi.gif' />下<img src='/icons/11914dou.gif' />如下列代码:</span><br/><br/>
&nbsp;<br/><br/>
<img id="code_img_closed_7b90c2da-3b62-4da8-96ee-09b78f8f2b2e" <img src='/icons/11914class.gif' />="code_img_closed" src="http://CrazyCoder.cn/WebFiles/20103/f7157fd1-17cd-459c-a8a3-7b2ba5c6e2a5.g<img src='/icons/11914if.gif' />"  alt="" /><img style="display: none" id="code_img_opened_7b90c2da-3b62-4da8-96ee-09b78f8f2b2e" <img src='/icons/11914class.gif' />="code_img_opened" _disibledevent=><span <img src='/icons/11914class.gif' />="cnblogs_code_collapse">代码</span> 

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><span style="color: #008080">1</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.AppendHeader(</span><span style="color: #800000">"</span><span style="color: #800000">Content-Disposition</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">attachment;filename=Word.doc</span><span style="color: #800000">"</span><span style="color: #000000">);<span style="color: #008080">2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Char<img src='/icons/11914set.gif' />&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">UTF-8</span><span style="color: #800000">"</span><span style="color: #000000">;<span style="color: #008080">3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.ContentEncoding&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;<img src='/icons/11914System.gif' />.Text.Encoding.UTF8;<span style="color: #008080">4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.ContentType&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">text/xml</span><span style="color: #800000">"</span><span style="color: #000000">;<span style="color: #008080">5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(TemplateProcess.Output(MyContext,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">/layout/<img src='/icons/11914include.gif' />/</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.MethodName));</span><span style="color: #008000">//</span><span style="color: #008000">模板处理<img src='/icons/11914de.gif' />office模板文本代码</span><span style="color: #008000"><span style="color: #008080">6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.End<img src='/icons/11914kh.gif' />;</span><br/><br/><br/>
&nbsp;<br/><br/>
<span>通过上面形式<img src='/icons/11914dou.gif' />就可以把office文件当作文本模板导出office可以正常显示读取<img src='/icons/11914de.gif' />word或excel文件了<img src='/icons/11914dou2.gif' /></span><br/><br/>
&nbsp;<br/><br/>Tag标签: MVC,导出excel,导出word,报表打印<br/>
 <a href="/mypdf/78964.pdf" title="查看 导出xml文件:用xml模块方式导出多种offcie文件 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78964.html</guid>
		</item>
		<item>
			<title><![CDATA[java垃圾回收:项目优化经验&mdash &mdash 垃圾回收导致的性能问题]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78963.html</link>
			<description>
				<![CDATA[

			谈谈最近优化<img src='/icons/26199yi.gif' />个网站WebSite项目<img src='/icons/26199de.gif' />经验<img src='/icons/26199dou.gif' />首先说<img src='/icons/26199yi.gif' />下背景情况:<br/><br/>  1) 在页面后台代码中我们把页面上大部分<img src='/icons/26199de.gif' />HTML都使用<img src='/icons/26199zifu.gif' />串来拼接生成然后直接赋值给LiteralControl<img src='/icons/26199dou2.gif' /><br/><br/>  2) 网站WebSiteCPU很高<img src='/icons/26199dou.gif' />基本都在80%左右<img src='/icons/26199dou.gif' />即使使用了StringBuilder来拼接<img src='/icons/26199zifu.gif' />串性能也不理想<img src='/icons/26199dou2.gif' /><br/><br/>  3) 为了改善性能<img src='/icons/26199dou.gif' />把整个<img src='/icons/26199zifu.gif' />串保存在memcached中<img src='/icons/26199dou.gif' />性能还是不理想<img src='/icons/26199dou2.gif' /><br/><br/>  在比较了这个网站WebSite和其它网站WebSite服务器上相关性能监视器指标后发现有<img src='/icons/26199yi.gif' />个参数特别显眼:<br/><br/>  <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://CrazyCoder.cn/WebFiles/20103/3ae65a8d-00d3-49d3-a9cb-18c31b3deb61.png" width="244" height="94" /> <br/><br/>  就是其中<img src='/icons/26199de.gif' />每秒分配字节数<img src='/icons/26199dou.gif' />这个性能比较差<img src='/icons/26199de.gif' />网站WebSite每秒分配2GB<img src='/icons/26199de.gif' />内存(而且需要注意由于性能监视器是每秒更新<img src='/icons/26199yi.gif' />下<img src='/icons/26199dou.gif' />对于<img src='/icons/26199yi.gif' />个非常健康<img src='/icons/26199de.gif' />网站WebSite这个值应该经常看到是0才对)！而其它<img src='/icons/26199yi.gif' />些网站WebSite只分配200M左右<img src='/icons/26199de.gif' />内存<img src='/icons/26199dou2.gif' />服务器配备4G内存<img src='/icons/26199dou.gif' />而每秒分配2G内存<img src='/icons/26199dou.gif' />我想垃圾回收器<img src='/icons/26199yi.gif' />定需要不断运行来回收这些内存<img src='/icons/26199dou2.gif' />观察%Time in GC可以发现<img src='/icons/26199dou.gif' />这个值<img src='/icons/26199yi.gif' />直在10%左右<img src='/icons/26199dou.gif' />也就是说上次回收到这次回收间隔10秒<img src='/icons/26199de.gif' />话<img src='/icons/26199dou.gif' />这次垃圾回收1秒<img src='/icons/26199dou.gif' />由于回收<img src='/icons/26199de.gif' />时间相对固定<img src='/icons/26199dou.gif' />那么这个值可以反映回收<img src='/icons/26199de.gif' />频繁度<img src='/icons/26199dou2.gif' /><br/><br/>  知道了这个要点就知道了方向<img src='/icons/26199dou.gif' />在项目中找可能<img src='/icons/26199de.gif' />问题点:<br/><br/>  1) 是否分配了大量临时<img src='/icons/26199de.gif' />小对象<br/><br/>  2) 是否分配了数量不多但比较大<img src='/icons/26199de.gif' />大对象<br/><br/>  在经历了<img src='/icons/26199yi.gif' />番查找的后<img src='/icons/26199dou.gif' />发现<img src='/icons/26199yi.gif' />个比较大<img src='/icons/26199de.gif' />问题<img src='/icons/26199dou.gif' />虽然使用了memcached来缓存Cache整个页面<img src='/icons/26199de.gif' />HTML<img src='/icons/26199dou.gif' />但是在输出的前居然进行了几次<img src='/icons/26199string.gif' /><img src='/icons/26199de.gif' />Replace操作<img src='/icons/26199dou.gif' />这样就产生了几个大<img src='/icons/26199de.gif' /><img src='/icons/26199zifu.gif' />串<img src='/icons/26199dou.gif' />我们来做<img src='/icons/26199yi.gif' />个实验模拟这种场景:<br/><br/>  <span style="color: blue">public partial <img src='/icons/26199class.gif' /> </span><span style="color: #2b91af">_Default </span>: <img src='/icons/26199System.gif' />.Web.UI.<span style="color: #2b91af">Page
</span>{
    <span style="color: blue"><img src='/icons/26199static.gif' /> <img src='/icons/26199string.gif' /> </span>template;
    <span style="color: blue">protected void </span>Page_Load(<span style="color: blue">object </span>sender, <span style="color: #2b91af">EventArgs </span>e)
    {
        <span style="color: blue"><img src='/icons/26199if.gif' /> </span>(template <img src='/icons/26199dd.gif' /> <span style="color: blue">null</span>)
        {
            <span style="color: #2b91af">StringBuilder </span>sb = <span style="color: blue"><img src='/icons/26199new.gif' /> </span><span style="color: #2b91af">StringBuilder</span><img src='/icons/26199kh.gif' />;
            <span style="color: blue">for </span>(<span style="color: blue"><img src='/icons/26199int.gif' /> </span>i = 0; i &lt; 10000; i<img src='/icons/26199jiajia.gif' />)
                sb.Append(<span style="color: #a31515">&quot;1234567890&quot;</span>);
            template = sb.<img src='/icons/26199ToString.gif' /><img src='/icons/26199kh.gif' />; 
        }

        <span style="color: #2b91af">Stopwatch </span>sw = <span style="color: #2b91af">Stopwatch</span>.StartNew<img src='/icons/26199kh.gif' />;

        <span style="color: blue">for </span>(<span style="color: blue"><img src='/icons/26199int.gif' /> </span>i = 0; i &lt; 1; i<img src='/icons/26199jiajia.gif' />)
        {
            <span style="color: blue">long </span>mem1 = <span style="color: #2b91af">GC</span>.GetTotalMemory(<span style="color: blue">false</span>);
            <span style="color: blue"><img src='/icons/26199string.gif' /> </span>s = template + i;
            <span style="color: blue">long </span>mem2 = <span style="color: #2b91af">GC</span>.GetTotalMemory(<span style="color: blue">false</span>);
            Response.Write((mem2 - mem1).<img src='/icons/26199ToString.gif' />(<span style="color: #a31515">&quot;N0&quot;</span>));
            Response.Write(<span style="color: #a31515">&quot;&lt;br/&gt;&quot;</span>);
            <span style="color: #2b91af">GC</span>.KeepAlive(s);
        }

        <span style="color: blue">for </span>(<span style="color: blue"><img src='/icons/26199int.gif' /> </span>i = 0; i &lt; 100000; i<img src='/icons/26199jiajia.gif' />)
        {
            <span style="color: blue">double </span>d = <span style="color: #2b91af">Math</span>.Sqrt(i);
        }

        <span style="color: #2b91af">Thread</span>.Sleep(30);
        Response.Write(sw.ElapsedMilliseconds);
    }
}<br/><br/>

在这段代码中:<br/><br/>

1) 我们首先使用<img src='/icons/26199yi.gif' />个静态变量模拟缓存Cache中<img src='/icons/26199de.gif' />待输出<img src='/icons/26199de.gif' />HTML<br/><br/>

2) 我们中间<img src='/icons/26199de.gif' /><img src='/icons/26199yi.gif' />段代码测算<img src='/icons/26199yi.gif' />下这个<img src='/icons/26199zifu.gif' />串占用<img src='/icons/26199de.gif' />内存空间<br/><br/>

3) 随后我们做了<img src='/icons/26199yi.gif' />些消耗CPU<img src='/icons/26199de.gif' />运算操作来模拟页面<img src='/icons/26199de.gif' /><img src='/icons/26199yi.gif' />些计算<br/><br/>

4) 然后休眠<img src='/icons/26199yi.gif' />段时间<br/><br/>

4) 最后我们输出了页面执行时间<br/><br/>

我们这么做<img src='/icons/26199de.gif' />目<img src='/icons/26199de.gif' />是模拟<img src='/icons/26199yi.gif' />个比较“正常<img src='/icons/26199de.gif' />”ASP.NET页面需要做<img src='/icons/26199de.gif' /><img src='/icons/26199yi.gif' />些工作:<br/><br/>

1) 内存上<img src='/icons/26199de.gif' />分配<br/><br/>

2) <img src='/icons/26199yi.gif' />些计算<br/><br/>

3) 涉及到IO访问<img src='/icons/26199de.gif' /><img src='/icons/26199yi.gif' />些等待<br/><br/>

来看看输出结果:<br/><br/>

<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://CrazyCoder.cn/WebFiles/20103/c50e8cf4-d92a-4774-a533-aa4578e89733.png" width="169" height="56" /> <br/><br/>

这里可以看到<img src='/icons/26199dou.gif' />我们这个<img src='/icons/26199zifu.gif' />串占用差不多200K<img src='/icons/26199de.gif' />字节<img src='/icons/26199dou.gif' /><img src='/icons/26199zifu.gif' />串是<img src='/icons/26199zifu.gif' /><img src='/icons/26199shuzu.gif' /><img src='/icons/26199dou.gif' />CLR中<img src='/icons/26199zifu.gif' />采用Unicode双字节存储<img src='/icons/26199dou.gif' />因此10万长度<img src='/icons/26199de.gif' /><img src='/icons/26199zifu.gif' />串占用200千字节<img src='/icons/26199dou.gif' />并且也可以看到这个页面执行时间30毫秒<img src='/icons/26199dou.gif' />差不多是<img src='/icons/26199yi.gif' />个正常aspx页面<img src='/icons/26199de.gif' />时间<img src='/icons/26199dou.gif' />而200K不到<img src='/icons/26199de.gif' /><img src='/icons/26199zifu.gif' />串也差不多相当于这个页面<img src='/icons/26199de.gif' />HTML片段<img src='/icons/26199dou.gif' />现在我们来改<img src='/icons/26199yi.gif' />下其中<img src='/icons/26199de.gif' /><img src='/icons/26199yi.gif' />段代码模拟优化前进行<img src='/icons/26199de.gif' />Replace操作带来<img src='/icons/26199de.gif' />几个大<img src='/icons/26199zifu.gif' />串:<br/><br/>

<span style="color: blue">for </span>(<span style="color: blue"><img src='/icons/26199int.gif' /> </span>i = 0; i &lt; 10; i<img src='/icons/26199jiajia.gif' />)
{
    <span style="color: green">//long mem1 = GC.GetTotalMemory(false);
    </span><span style="color: blue"><img src='/icons/26199string.gif' /> </span>s = template + i;
    <span style="color: green">//long mem2 = GC.GetTotalMemory(false);
    //Response.Write((mem2 - mem1).<img src='/icons/26199ToString.gif' />(&quot;N0&quot;));
    //Response.Write(&quot;&lt;br/&gt;&quot;);
    //GC.KeepAlive(s);
</span>}<br/><br/>

然后使用IDE自带压力测试1000常量用户来测试这个页面:<br/><br/>

<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://CrazyCoder.cn/WebFiles/20103/b3d5ff33-d092-46d5-8beb-24fe1fd7c2f7.png" width="244" height="80" /> <br/><br/>

可以看到每秒分配了超过400M字节(这和我们线上环境比还差点毕竟请求少)<img src='/icons/26199dou.gif' />CPU占用基本在120-160左右(双核)<img src='/icons/26199dou.gif' />我们去掉每秒分配内存这个数值<img src='/icons/26199dou.gif' />来看看垃圾回收频率和CPU占用两个值<img src='/icons/26199de.gif' />图表:<br/><br/>

<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://CrazyCoder.cn/WebFiles/20103/fbbe467b-1498-4419-a663-cd8fa72e025e.png" width="220" height="244" /> <br/><br/>

可以看到红色<img src='/icons/26199de.gif' />CPU波动基本和蓝色<img src='/icons/26199de.gif' />垃圾回收波动保持<img src='/icons/26199yi.gif' />致(这里不太准确<img src='/icons/26199de.gif' />另外<img src='/icons/26199yi.gif' />个原因是压力测试客户端运行于本机<img src='/icons/26199dou.gif' />而为w3wp关联2个处理器)！为什么说垃圾回收会带来CPU<img src='/icons/26199de.gif' />波动<img src='/icons/26199dou.gif' />从理论上来说有以下原因:<br/><br/>

1) 垃圾回收<img src='/icons/26199de.gif' />时候会暂时挂起所有线程<img src='/icons/26199dou.gif' />然后GC会检测扫描每<img src='/icons/26199yi.gif' />个线程栈上可回收对象<img src='/icons/26199dou.gif' />然后会移动对象<img src='/icons/26199dou.gif' />并且重新设置对象指针<img src='/icons/26199dou.gif' />这整个过程首先是消耗CPU<img src='/icons/26199de.gif' /><br/><br/>

2) 而且在这个过程的后恢复线程执行<img src='/icons/26199dou.gif' />这个时候CPU往往会引起<img src='/icons/26199yi.gif' />个高峰<img src='/icons/26199yinwei.gif' />已经有更多<img src='/icons/26199de.gif' />请求等待了<br/><br/>

我们把Math.Sqrt这段代码注释掉并且把w3wp和VSTestHost关联到区别<img src='/icons/26199de.gif' />处理器来看看对于CPU计算很少<img src='/icons/26199de.gif' />页面<img src='/icons/26199dou.gif' />上图更明显<img src='/icons/26199de.gif' />对比:<br/><br/>

<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://CrazyCoder.cn/WebFiles/20103/676a1932-df3d-42db-b227-2de1ab767d88.png" width="244" height="129" />&#160;<br/><br/>

这介绍说明垃圾回收<img src='/icons/26199de.gif' />确会占用很多CPU资源<img src='/icons/26199dou.gif' />但这只是<img src='/icons/26199yi.gif' />部分<img src='/icons/26199dou.gif' />其实我觉得网站WebSite<img src='/icons/26199de.gif' />CPU压力来自于几个地方:<br/><br/>

1) 就是大量<img src='/icons/26199de.gif' />内存分配带来<img src='/icons/26199de.gif' />垃圾回收所占用<img src='/icons/26199de.gif' />CPU<img src='/icons/26199dou.gif' />对于ASP.NET框架内部<img src='/icons/26199de.gif' />很多行为无法控制<img src='/icons/26199dou.gif' />但是可以在代码中尽量避免在堆上产生很多不必要<img src='/icons/26199de.gif' />对象<br/><br/>

2) 是实际<img src='/icons/26199de.gif' />CPU运算<img src='/icons/26199dou.gif' />不涉及IO<img src='/icons/26199de.gif' />运算<img src='/icons/26199dou.gif' />这些可以通过改良算法来优化<img src='/icons/26199dou.gif' />但是优化比较有限<br/><br/>

3) 是IO操作这块<img src='/icons/26199dou.gif' />数据量<img src='/icons/26199de.gif' />多少很关键<img src='/icons/26199dou.gif' />还有要考虑memcached等外部缓存Cache对象序列化反序列化<img src='/icons/26199de.gif' />消耗<br/><br/>

4) 虽然很多IO操作不占用CPU资源<img src='/icons/26199dou.gif' />线程处于休眠状态<img src='/icons/26199dou.gif' />但是很多时候其实是依托新线程进行<img src='/icons/26199de.gif' /><img src='/icons/26199dou.gif' />带来<img src='/icons/26199de.gif' />就是线程切换和线程创建消耗<img src='/icons/26199de.gif' />消耗<img src='/icons/26199dou.gif' />这<img src='/icons/26199yi.gif' />块可以通过合理使用多线程来优化<br/><br/>

发现了这个问题的后优化就很简单了<img src='/icons/26199dou.gif' />把Replace操作放到memcached<img src='/icons/26199de.gif' />Set操作的前<img src='/icons/26199dou.gif' />取出的后不产生过多大<img src='/icons/26199zifu.gif' />串<img src='/icons/26199dou.gif' />把for循环改为<img src='/icons/26199yi.gif' />次<img src='/icons/26199dou.gif' />再来看<img src='/icons/26199yi.gif' />下:<br/><br/>

<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://CrazyCoder.cn/WebFiles/20103/371a15ef-ce8d-4b0c-bd4c-8e008db918f5.png" width="244" height="98" /><br/><br/>

<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://CrazyCoder.cn/WebFiles/20103/586227a5-2405-4690-9092-645307575b61.png" width="244" height="242" />&#160; <br/><br/>

这次内存分配明显少了很多<img src='/icons/26199dou.gif' />CPU降下来了<img src='/icons/26199dou.gif' />降<img src='/icons/26199de.gif' />不多<img src='/icons/26199dou.gif' />但从压力测试监视器中看到页面执行平均时间从5秒变为3秒了<img src='/icons/26199dou.gif' />每秒平均请求数从170到了200(最高从200到了300)<img src='/icons/26199dou2.gif' />在这里要介绍说明<img src='/icons/26199yi.gif' />点很多时候网站WebSite<img src='/icons/26199de.gif' />性能优化不能光看CPU还要对比优化前后网站WebSite<img src='/icons/26199de.gif' />负载<img src='/icons/26199dou.gif' /><img src='/icons/26199yinwei.gif' />在优化的后页面执行时间降低了<img src='/icons/26199dou.gif' />负载量就增大了CPU消耗也随的增大<img src='/icons/26199dou2.gif' />并且可以看到垃圾回收频率<img src='/icons/26199de.gif' />缩短很明显<img src='/icons/26199dou.gif' />从长期在30%到几十秒<img src='/icons/26199yi.gif' />次30%<img src='/icons/26199dou2.gif' /><br/><br/>

最后想补充几点:<br/><br/>

1) 有<img src='/icons/26199de.gif' />时候我们会使用<span style="color: #2b91af">GC</span>.GetTotalMemory(<span style="color: blue">true</span>); 来得到垃圾回收的后内存分配数<img src='/icons/26199dou.gif' />类似这样涉及到垃圾回收<img src='/icons/26199de.gif' />代码在项目上线后千万不能出现<img src='/icons/26199dou.gif' />否则很可能会% Time in GC达到80%以上大量占用CPU<img src='/icons/26199dou2.gif' /><br/><br/>

2) 对于放在缓存Cache中<img src='/icons/26199de.gif' />对象我们往往会觉得性能得到保障大量去使用<img src='/icons/26199dou.gif' />其实缓存Cache实现<img src='/icons/26199de.gif' />只是把创造这个对象过程<img src='/icons/26199de.gif' />时间转化为空间<img src='/icons/26199dou.gif' />而在拿到这个对象的后再进行很多运算带来<img src='/icons/26199de.gif' />大量空间始终会进行垃圾回收<img src='/icons/26199dou2.gif' />做网站WebSite和做应用<img src='/icons/26199chengxu.gif' />不<img src='/icons/26199yi.gif' />样<img src='/icons/26199dou.gif' /><img src='/icons/26199yi.gif' />个操作如果申请200K堆内存<img src='/icons/26199dou.gif' /><img src='/icons/26199yi.gif' />个页面执行这个操作10次<img src='/icons/26199dou.gif' /><img src='/icons/26199yi.gif' />秒200多个请求<img src='/icons/26199dou.gif' />大家可以自己算<img src='/icons/26199yi.gif' />下平均每秒需要分配多少内存<img src='/icons/26199dou.gif' />这个数值是相当可怕<img src='/icons/26199de.gif' /><img src='/icons/26199dou.gif' />网站WebSite是<img src='/icons/26199yi.gif' />个多线程<img src='/icons/26199de.gif' />环境<img src='/icons/26199dou.gif' />我们对内存<img src='/icons/26199de.gif' />使用要考虑更多<img src='/icons/26199dou2.gif' /><br/><br/>作者:lovecindywang<br/>
本文版权归作者和博客园共有<img src='/icons/26199dou.gif' />欢迎转载<img src='/icons/26199dou.gif' />但未经作者同意必须保留此段声明<img src='/icons/26199dou.gif' />且在文章页面明显位置给出原文连接<img src='/icons/26199dou.gif' />否则保留追究法律责任<img src='/icons/26199de.gif' />权利<img src='/icons/26199dou2.gif' /> <br/><br/>
 <a href="/mypdf/78963.pdf" title="查看 java垃圾回收:项目优化经验&mdash &mdash 垃圾回收导致的性能问题 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78963.html</guid>
		</item>
		<item>
			<title><![CDATA[javascript树型菜单:Javascript树型菜单(含源码)]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78962.html</link>
			<description>
				<![CDATA[

			<span style="font-size: 9pt; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'">看到园友发表了<img src='/icons/20965yi.gif' />篇有关</span><span lang="EN-US" style="font-size: 9pt; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'">JS</span><span style="font-size: 9pt; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'">树<img src='/icons/20965de.gif' />文章<img src='/icons/20965dou.gif' />看了的后<img src='/icons/20965dou.gif' />觉得应该可以精简不少代码<img src='/icons/20965dou.gif' /></span><br/><br/>
<span style="font-size: 9pt; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'">想到了以前做<img src='/icons/20965de.gif' />项目里面用到了<img src='/icons/20965yi.gif' />个</span><span lang="EN-US" style="font-size: 9pt; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'">JS</span><span style="font-size: 9pt; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'">树<img src='/icons/20965dou.gif' />于是试着修改了<img src='/icons/20965yi.gif' />下<img src='/icons/20965dou.gif' />现把代码贴出来和大家共享<img src='/icons/20965dou.gif' />还请大家多扔砖头！</span><br/><br/>
<span lang="EN-US" style="font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'"><o:p>&nbsp;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;!</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">DOCTYPE</span><span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"> <span style="color: red">html</span> <span style="color: red">PUBLIC</span> <span style="color: blue">"-//W<st1:chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="C" w:st="on">3C</st1:chmetcnv>//DTD XHTML 1.0 Transitional//EN"</span> <span style="color: blue">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><o:p>&nbsp;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">html</span><span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"> <span style="color: red">xmlns</span><span style="color: blue">="http://www.w3.org/1999/xhtml"</span> <span style="color: blue">&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">head</span><span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"> <span style="color: red">runat</span><span style="color: blue">="server"&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">title</span><span style="color: blue">&gt;&lt;/</span><span style="color: #a31515">title</span><span style="color: blue">&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">script</span> <span style="color: red">src</span><span style="color: blue">="JS/Tree.js"</span> <span style="color: red">type</span><span style="color: blue">="text/javascript"&gt;&lt;/</span><span style="color: #a31515">script</span><span style="color: blue">&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;/</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">head</span><span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&gt;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">body</span><span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&gt;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">form</span> <span style="color: red">id</span><span style="color: blue">="form1"</span> <span style="color: red">runat</span><span style="color: blue">="server"&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">div</span><span style="color: blue">&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: yellow; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: yellow; mso-no-proof: yes">&lt;%</span><span lang="EN-US" style="font-size: 9pt;background: white; color: green; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">--<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;asp:TreeView ID="TreeView1" runat="server" ShowLines="True"&gt;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: green; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span>&lt;/asp:TreeView&gt;--</span><span lang="EN-US" style="font-size: 9pt;background: yellow; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: yellow; mso-no-proof: yes">%&gt;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">div</span> <span style="color: red">id</span><span style="color: blue">="treeOrgan"&gt;&lt;/</span><span style="color: #a31515">div</span><span style="color: blue">&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">div</span><span style="color: blue">&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;/</span><span style="color: #a31515">form</span><span style="color: blue">&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">&lt;</span><span style="color: #a31515">script</span> <span style="color: red">type</span><span style="color: blue">="text/javascript"</span> <span style="color: red">language</span><span style="color: blue">="javascript"&gt;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">var</span> <span style="color: #010001">tree</span>;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">window</span>.<span style="color: #010001">onload</span> = <span style="color: blue">function</span><img src='/icons/20965kh.gif' /> </span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue"><img src='/icons/20965if.gif' /></span> (<span style="color: #010001">tree</span> != <span style="color: #a31515">""</span>) {</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">tree</span> = <span style="color: blue"><img src='/icons/20965new.gif' /></span> <span style="color: #010001">treeview</span>(<span style="color: #a31515">"treeview"</span>, <span style="color: #a31515">"../images/Tree"</span>, <span style="color: blue">false</span>, <span style="color: blue">false</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">var</span> <span style="color: #010001">parNode</span> = <span style="color: blue"><img src='/icons/20965new.gif' /></span> <span style="color: #010001">node</span>(<span style="color: #a31515">"<span style="font-size: 9pt;background: white; color: #a31515; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">人员列表</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">"</span><span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">, <span style="color: #a31515">"<span style="font-size: 9pt;background: white; color: #a31515; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">人员列表</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">"</span><span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">, <span style="color: #a31515">""</span>, <span style="color: #a31515">"0"</span>, <span style="color: #a31515">"F"</span>, <span style="color: blue">false</span>, <span style="color: #a31515">""</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: green">//caption, title, url, target, tag,check,callback<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">tree</span>.<span style="color: #010001">add</span>(<span style="color: #010001">parNode</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">tree</span>.<span style="color: #010001">create</span>(<span style="color: #010001">document</span>.<span style="color: #010001">getElementById</span>(<span style="color: #a31515">"treeOrgan"</span>));</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><o:p>&nbsp;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">InitNode</span>(0, <span style="color: #010001">parNode</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">parNode</span>.<span style="color: #010001">expand</span><img src='/icons/20965kh.gif' />;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">function</span> <span style="color: #010001">InitNode</span>(<span style="color: #010001">id</span>, <span style="color: #010001">parNode</span>) {</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue"><img src='/icons/20965if.gif' /></span> (<span style="color: #010001">parNode</span>.<span style="color: #010001">nodes</span>.<span style="color: #010001">length</span> &gt; 0) {</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">parNode</span>.<span style="color: #010001">toggle</span><img src='/icons/20965kh.gif' />;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue"><img src='/icons/20965else.gif' /></span> {</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: green">//parNode.DeleteChildren<img src='/icons/20965kh.gif' />;<br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">var</span> <span style="color: #010001">result</span> = <span style="color: #010001">WebApplicationJsTree</span>.<span style="color: #010001">_Default</span>.<span style="color: #010001">GetJson</span>(<span style="color: #010001">id</span>).<span style="color: #010001">value</span>;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue"><img src='/icons/20965if.gif' /></span> (<span style="color: #010001">result</span> != <span style="color: blue">null</span> &amp;&amp; <span style="color: #010001">result</span> != <span style="color: #a31515">""</span>) {</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">var</span> <span style="color: #010001">data</span> = <span style="color: #010001">eval</span>(<span style="color: #a31515">'('</span> + <span style="color: #010001">result</span> + <span style="color: #a31515">')'</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">for</span> (<span style="color: blue">var</span> <span style="color: #010001">i</span> = 0; <span style="color: #010001">i</span> &lt; <span style="color: #010001">data</span>.<span style="color: #010001">length</span>; <span style="color: #010001">i</span><img src='/icons/20965jiajia.gif' />) {</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue">var</span> <span style="color: #010001">pn</span> = <span style="color: blue"><img src='/icons/20965new.gif' /></span> <span style="color: #010001">node</span>(<span style="color: #010001">data</span>[<span style="color: #010001">i</span>].<span style="color: #010001">NAME</span>, <span style="color: #010001">data</span>[<span style="color: #010001">i</span>].<span style="color: #010001">NAME</span>, <span style="color: #a31515">""</span>, <span style="color: #a31515">"P"</span>, <span style="color: #010001">data</span>[<span style="color: #010001">i</span>].<span style="color: #010001">id</span>, <span style="color: blue">true</span>, <span style="color: #a31515">""</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">parNode</span>.<span style="color: #010001">add</span>(<span style="color: #010001">pn</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">treeview</span>.<span style="color: #010001">prototype</span>.<span style="color: #010001">onnodeclick</span> = <span style="color: blue">function</span>(<span style="color: #010001">sender</span>) {</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">InitNode</span>(<span style="color: #010001">sender</span>.<span style="color: #010001">tag</span>, <span style="color: #010001">sender</span>);</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">sender</span>.<span style="color: #010001">select</span><img src='/icons/20965kh.gif' />;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #010001">sender</span>.<span style="color: #010001">expand</span><img src='/icons/20965kh.gif' />;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue"><img src='/icons/20965return.gif' /></span> <span style="color: blue">false</span>;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;/</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">script</span><span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&gt;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;/</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">body</span><span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&gt;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&lt;/</span><span lang="EN-US" style="font-size: 9pt;background: white; color: #a31515; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">html</span><span lang="EN-US" style="font-size: 9pt;background: white; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">&gt;</span><br/><br/>
<span style="font-size: 9pt; color: blue; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-no-proof: yes">其实个人觉得用</span><span lang="EN-US" style="font-size: 9pt; color: blue; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-no-proof: yes">TreeView+linq to list</span><span style="font-size: 9pt; color: blue; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-no-proof: yes">也就连接<img src='/icons/20965yi.gif' />次服务器<img src='/icons/20965dou.gif' />对于小数据量性能也应该蛮高<img src='/icons/20965de.gif' /><img src='/icons/20965dou.gif' />代码也在源码包里面</span><br/><br/>
<span style="font-size: 9pt; color: blue; font-family: 宋体; mso-ascii-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-hansi-font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-no-proof: yes">在和客户端交互上面<img src='/icons/20965dou.gif' />用服务器Control控件可以加上</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: #010001; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">tn</span><span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">.<span style="color: #010001">Text</span> = <span style="color: #a31515">"&lt;span _disibledevent=> + <span style="color: #010001">tn.ID</span> + <span style="color: #a31515">")\"&gt;"</span> + <span style="color: #010001">tn</span>.<span style="color: #010001">Name</span>;</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: red; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">数据库结构截图:</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: red; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">FF下截图:</span><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><br/><br/>
<span lang="EN-US" style="font-size: 9pt;background: white; color: red; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes"><span lang="EN-US" style="font-size: 9pt;background: white; color: red; font-family: 'MS Reference Sans Ser<img src='/icons/20965if.gif' />'; mso-font-kerning: 0pt; mso-highlight: white; mso-no-proof: yes">点我下载源码<br/><br/>每天进步<img src='/icons/20965yi.gif' />点点...<img alt="" src="http://CrazyCoder.cn/WebFiles/20103/7bcdbbf3-74c1-4d48-9818-cf1cb9235f11.g<img src='/icons/20965if.gif' />" /> <br/><br/><br/>Tag标签: Javascript树型菜单<br/>
 <a href="/mypdf/78962.pdf" title="查看 javascript树型菜单:Javascript树型菜单(含源码) 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78962.html</guid>
		</item>
		<item>
			<title><![CDATA[asp.netmvc:ASP.NET MVC 路由规则XML化]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78961.html</link>
			<description>
				<![CDATA[

			&nbsp; 很久没写文章了<img src='/icons/71130dou.gif' />不是懒得写<img src='/icons/71130dou.gif' />是写不出<img src='/icons/71130dou2.gif' /><img src='/icons/71130dou2.gif' /><br/><br/>
&nbsp; 最近由于工作关系<img src='/icons/71130dou.gif' />重新回顾了ASP.NET MVC <img src='/icons/71130de.gif' /> 1.0 版本<img src='/icons/71130dou2.gif' />2.0版本还没有研究<img src='/icons/71130dou2.gif' /><br/><br/>
由于MVC框架发展不久<img src='/icons/71130dou.gif' />还有很多不足<img src='/icons/71130de.gif' />地方<img src='/icons/71130dou2.gif' />其中有关路由规则配置这<img src='/icons/71130yi.gif' />块问题比较大<img src='/icons/71130dou2.gif' />首先路由规则是在全局配置问价 Global.asax <img src='/icons/71130de.gif' /> Application_Start<img src='/icons/71130kh.gif' />事件中注册<img src='/icons/71130de.gif' /><img src='/icons/71130dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
	public <img src='/icons/71130static.gif' /> void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "User",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                <img src='/icons/71130new.gif' /> { controller = "User", action = "Show", id = "0" }  // Parameter defaults
            );
        }

        protected void Application_Start<img src='/icons/71130kh.gif' />
        {

            RegisterRoutes(RouteTable.Routes);

        }<br/><br/>
&nbsp;<br/><br/>
默认硬编码<img src='/icons/71130de.gif' />方式使得以后可维护程度大大降低<img src='/icons/71130dou2.gif' />MVC 1.0 似乎没有提供很好<img src='/icons/71130de.gif' />基于配置文件<img src='/icons/71130de.gif' />路由规则设置<img src='/icons/71130dou2.gif' />所以只好自己实现了<img src='/icons/71130dou2.gif' />直到写这篇文章时<img src='/icons/71130dou.gif' />才找到了<img src='/icons/71130yi.gif' />个比较好<img src='/icons/71130de.gif' />解决方案<img src='/icons/71130dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
以下是 自定义<img src='/icons/71130de.gif' />XML 格式<br/><br/>
&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;MapRoutes&gt;<br/><br/>
  &lt;!--默认规则--&gt;
  &lt;MapRoute name="Default" url="{controller}/{action}"&gt;
    &lt;Params&gt;
      &lt;Item key="controller" default="Article"/&gt;
      &lt;Item key="action" default="Index"/&gt;
    &lt;/Params&gt;
  &lt;/MapRoute&gt;

  &lt;!--显示新闻列表<img src='/icons/71130de.gif' />路由规则--&gt;
  &lt;MapRoute name="ShowArticleList" url="{controller}/{action}/{typeId}/{pageIndex}/{pageSize}"&gt;
    &lt;Params&gt;
      &lt;Item key="controller" default="Article"/&gt;
      &lt;Item key="action" default="Index"/&gt;
      &lt;Item key="typeId" default="1"/&gt;
      &lt;Item key="pageIndex" default="1"/&gt;
      &lt;Item key="pageSize" default="10"/&gt;
    &lt;/Params&gt;
  &lt;/MapRoute&gt;

&lt;/MapRoutes&gt;<br/><br/>
&nbsp;<br/><br/>
<img src='/icons/71130yi.gif' />下是全部代码<br/><br/>
/* ***********************************************
 * 作者 :汤晓华/tension 任何转载请务必保留此头部信息 版权所有 盗版必究
 * Email:tension1990&#64;hotmail.com 
 * 描述 :
 * 创建时间:2010-3-9 15:17:26
 * 修改历史:
 * ***********************************************/
using <img src='/icons/71130System.gif' />;
using <img src='/icons/71130System.gif' />.Collections.Generic;
using <img src='/icons/71130System.gif' />.Linq;
using <img src='/icons/71130System.gif' />.Text;
using <img src='/icons/71130System.gif' />.Web.Routing;
using <img src='/icons/71130System.gif' />.Web.Mvc;
using <img src='/icons/71130System.gif' />.Xml.Linq;
using Microsoft.CSharp;
using <img src='/icons/71130System.gif' />.CodeDom.Compiler;

<img src='/icons/71130namespace.gif' /> Tension.Mvc
{
    public <img src='/icons/71130static.gif' /> <img src='/icons/71130class.gif' /> RouteHelper
    {
        /// &lt;summary&gt;
        /// 从XML文件中注册路由规则
        /// &lt;/summary&gt;
        /// &lt;param name="routes"&gt;&lt;/param&gt;
        /// &lt;param name="cfgFile"&gt;&lt;/param&gt;
        public <img src='/icons/71130static.gif' /> void Register(this RouteCollection routes, <img src='/icons/71130string.gif' /> cfgFile)
        {

            IList&lt;Route&gt; Routes = GetRoutes(cfgFile);

            foreach (var item in Routes)
            {
                //路由规则对象
                object obj = CreateObjectFormString(item.<img src='/icons/71130ToString.gif' /><img src='/icons/71130kh.gif' />, item.Name);
                routes.MapRoute(
                       item.Name,               // Route name
                       item.Url,                // URL with parameters
                        obj                     // Parameter defaults
                   );

            }
        }

        /// &lt;summary&gt;
        ///  从XML文件中注册路由规则 默认文件为网站WebSite根目录下MapRoute.config
        /// &lt;/summary&gt;
        /// &lt;param name="routes"&gt;&lt;/param&gt;
        public <img src='/icons/71130static.gif' /> void Register(this RouteCollection routes)
        {
            Register(routes, <img src='/icons/71130string.gif' />.Format("{0}\\MapRoute.config", Tension.ServerInfo.GetRootPath<img src='/icons/71130kh.gif' />));
        }


        /// &lt;summary&gt;
        /// 从<img src='/icons/71130string.gif' />动态创建类对象
        /// &lt;/summary&gt;
        /// &lt;param name="codeString"&gt;&lt;/param&gt;
        /// &lt;param name="<img src='/icons/71130class.gif' />Name"&gt;&lt;/param&gt;
        /// &lt;<img src='/icons/71130return.gif' />s&gt;&lt;/<img src='/icons/71130return.gif' />s&gt;
        private <img src='/icons/71130static.gif' /> object CreateObjectFormString(<img src='/icons/71130string.gif' /> codeString, <img src='/icons/71130string.gif' /> <img src='/icons/71130class.gif' />Name)
        {
            CSharpCodeProvider ccp = <img src='/icons/71130new.gif' /> CSharpCodeProvider<img src='/icons/71130kh.gif' />;
            CompilerParameters param = <img src='/icons/71130new.gif' /> CompilerParameters(<img src='/icons/71130new.gif' /> <img src='/icons/71130string.gif' /><img src='/icons/71130zhk2.gif' /> { "<img src='/icons/71130System.gif' />.dll" });
            CompilerResults cr = ccp.CompileAssemblyFromSource(param, codeString);
            Type type = cr.CompiledAssembly.GetType(<img src='/icons/71130class.gif' />Name);
            <img src='/icons/71130return.gif' /> type.GetConstructor(<img src='/icons/71130System.gif' />.Type.EmptyTypes).Invoke(null);
        }

        /// &lt;summary&gt;
        /// 从XML文件中解析路由规则
        /// &lt;/summary&gt;
        /// &lt;param name="configFile"&gt;&lt;/param&gt;
        /// &lt;<img src='/icons/71130return.gif' />s&gt;&lt;/<img src='/icons/71130return.gif' />s&gt;
        private <img src='/icons/71130static.gif' /> IList&lt;Route&gt; GetRoutes(<img src='/icons/71130string.gif' /> configFile)
        {
            StringBuilder sb = <img src='/icons/71130new.gif' /> StringBuilder<img src='/icons/71130kh.gif' />;


            Console.WriteLine(sb.<img src='/icons/71130ToString.gif' /><img src='/icons/71130kh.gif' />);
            IList&lt;Route&gt; Routes = <img src='/icons/71130new.gif' /> List&lt;Route&gt;<img src='/icons/71130kh.gif' />;

            XElement xe = XElement.Load(configFile);

            #region MyRegion
            foreach (var item in xe.Elements("MapRoute"))
            {

                //名称属性
                XAttribute xaName = item.Attribute("name");
                <img src='/icons/71130if.gif' /> (xaName <img src='/icons/71130dd.gif' /> null || <img src='/icons/71130string.gif' />.IsNullOrEmpty(xaName.Value))
                {
                    throw <img src='/icons/71130new.gif' /> ArgumentNullException("name！介绍说明:路由配置文件中某规则缺少name属性或name属性<img src='/icons/71130de.gif' />值为空<img src='/icons/71130zifu.gif' />串");
                }

                //URL属性
                XAttribute urlName = item.Attribute("url");
                <img src='/icons/71130if.gif' /> (urlName <img src='/icons/71130dd.gif' /> null || <img src='/icons/71130string.gif' />.IsNullOrEmpty(urlName.Value))
                {
                    throw <img src='/icons/71130new.gif' /> ArgumentNullException("url！介绍说明:路由配置文件中某规则缺少url属性或url属性<img src='/icons/71130de.gif' />值为空<img src='/icons/71130zifu.gif' />串");
                }


                Dictionary&lt;<img src='/icons/71130string.gif' />, <img src='/icons/71130string.gif' />&gt; DictParams = <img src='/icons/71130new.gif' /> Dictionary&lt;<img src='/icons/71130string.gif' />, <img src='/icons/71130string.gif' />&gt;<img src='/icons/71130kh.gif' />;



                #region MyRegion
                foreach (var pItem in item.Element("Params").Elements("Item"))
                {
                    XAttribute itemKey = pItem.Attribute("key");
                    <img src='/icons/71130if.gif' /> (itemKey <img src='/icons/71130dd.gif' /> null || <img src='/icons/71130string.gif' />.IsNullOrEmpty(itemKey.Value))
                    {
                        throw <img src='/icons/71130new.gif' /> ArgumentNullException("Item-&gt;key！介绍说明:路由配置文件中某规则缺少Item-&gt;key属性或Item-&gt;key属性<img src='/icons/71130de.gif' />值为空<img src='/icons/71130zifu.gif' />串");
                    }

                    XAttribute itemDefault = pItem.Attribute("default");
                    <img src='/icons/71130if.gif' /> (itemDefault <img src='/icons/71130dd.gif' /> null || <img src='/icons/71130string.gif' />.IsNullOrEmpty(itemDefault.Value))
                    {
                        throw <img src='/icons/71130new.gif' /> ArgumentNullException("Item-&gt;default！介绍说明:路由配置文件中某规则缺少Item-&gt;default属性或Item-&gt;default属性<img src='/icons/71130de.gif' />值为空<img src='/icons/71130zifu.gif' />串");
                    }
                    DictParams.Add(itemKey.Value, itemDefault.Value);
                }
                #endregion

                Routes.Add(<img src='/icons/71130new.gif' /> Route<img src='/icons/71130kh.gif' /> { Name = xaName.Value, Url = urlName.Value, Params = DictParams });


            }
            #endregion

            <img src='/icons/71130return.gif' /> Routes;
        }
    }


    /// &lt;summary&gt;
    /// 路由规则
    /// &lt;/summary&gt;
    public <img src='/icons/71130class.gif' /> Route
    {
        public <img src='/icons/71130string.gif' /> Name { get; <img src='/icons/71130set.gif' />; }
        public <img src='/icons/71130string.gif' /> Url { get; <img src='/icons/71130set.gif' />; }
        public Dictionary&lt;<img src='/icons/71130string.gif' />, <img src='/icons/71130string.gif' />&gt; Params { get; <img src='/icons/71130set.gif' />; }

        /// &lt;summary&gt;
        /// 重写<img src='/icons/71130ToString.gif' /> 思路方法 产生需要动态代码段
        /// &lt;/summary&gt; 
        /// &lt;<img src='/icons/71130return.gif' />s&gt;&lt;/<img src='/icons/71130return.gif' />s&gt;
        public override <img src='/icons/71130string.gif' /> <img src='/icons/71130ToString.gif' /><img src='/icons/71130kh.gif' />
        {
            StringBuilder sb = <img src='/icons/71130new.gif' /> StringBuilder<img src='/icons/71130kh.gif' />;
            sb.AppendFormat("public <img src='/icons/71130class.gif' /> {0}", Name);
            sb.Append("{");
            foreach (var item in Params)
            {
                sb.AppendFormat("public <img src='/icons/71130string.gif' /> {0}", item.Key);
                sb.Append("{get{<img src='/icons/71130return.gif' /> \"");
                sb.Append(item.Value);
                sb.Append("\";}} ");
            }

            sb.Append("}");
            <img src='/icons/71130return.gif' /> sb.<img src='/icons/71130ToString.gif' /><img src='/icons/71130kh.gif' />;
        }
    }
}<br/><br/>
&nbsp;<br/><br/>
在实现过程中遇到<img src='/icons/71130de.gif' />最大问题就是 参数列表<img src='/icons/71130de.gif' />动态装载 看<img src='/icons/71130yi.gif' />下以下代码<br/><br/>
 routes.MapRoute(
                "User",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                <img src='/icons/71130new.gif' /> { controller = "User", action = "Show", id = "0" }  // Parameter defaults
            );<br/><br/>
&nbsp;<br/><br/>
这是硬编码实现<img src='/icons/71130de.gif' />路由规则注册 <br/><br/>
其中 第 3个参数(<img src='/icons/71130new.gif' /> { controller = "User", action = "Show", id = "0" } ) 是<img src='/icons/71130yi.gif' />个匿名对象<br/><br/>
该对象如何动态构建成了难题<img src='/icons/71130dou2.gif' />(才疏学浅) <br/><br/>
尝试着传入<img src='/icons/71130yi.gif' />个 Dictionary&lt;K,T&gt; 但是没有用<img src='/icons/71130dou.gif' />ASP.NET 解析这个参数<img src='/icons/71130de.gif' />时候是以反射形式读取<img src='/icons/71130de.gif' />对象属性<img src='/icons/71130dou2.gif' /><br/><br/>
后来想到了使用代码段 在运行时动态创建对象<img src='/icons/71130dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
我们将类似代码段<br/><br/>
public <img src='/icons/71130class.gif' /> Default{public <img src='/icons/71130string.gif' /> controller{get{<img src='/icons/71130return.gif' /> "Article";}} public str
ing action{get{<img src='/icons/71130return.gif' /> "Index";}} public <img src='/icons/71130string.gif' /> id{get{<img src='/icons/71130return.gif' /> "0";}} public strin
g page{get{<img src='/icons/71130return.gif' /> "1";}} public <img src='/icons/71130string.gif' /> size{get{<img src='/icons/71130return.gif' /> "10";}} }<br/><br/>
&nbsp;<br/><br/>
传入思路方法<br/><br/>
&nbsp;<br/><br/>
private <img src='/icons/71130static.gif' /> object CreateObjectFormString(<img src='/icons/71130string.gif' /> codeString, <img src='/icons/71130string.gif' /> <img src='/icons/71130class.gif' />Name)
        {
            CSharpCodeProvider ccp = <img src='/icons/71130new.gif' /> CSharpCodeProvider<img src='/icons/71130kh.gif' />;
            CompilerParameters param = <img src='/icons/71130new.gif' /> CompilerParameters(<img src='/icons/71130new.gif' /> <img src='/icons/71130string.gif' /><img src='/icons/71130zhk2.gif' /> { "<img src='/icons/71130System.gif' />.dll" });
            CompilerResults cr = ccp.CompileAssemblyFromSource(param, codeString);
            Type type = cr.CompiledAssembly.GetType(<img src='/icons/71130class.gif' />Name);
            <img src='/icons/71130return.gif' /> type.GetConstructor(<img src='/icons/71130System.gif' />.Type.EmptyTypes).Invoke(null);
        }<br/><br/>
&nbsp;<br/><br/>
即可有运行时动态<img src='/icons/71130de.gif' />创建我们需要<img src='/icons/71130de.gif' />参数对象<img src='/icons/71130dou2.gif' /><br/><br/>
以后就可以方便<img src='/icons/71130de.gif' />在XML注册路由了<img src='/icons/71130dou2.gif' /><br/><br/>
public <img src='/icons/71130static.gif' /> void Register(this RouteCollection routes)&nbsp; 对 RouteCollection 对象添加了扩展思路方法<br/><br/>
引入对应<img src='/icons/71130de.gif' />命名空间后就方便<img src='/icons/71130de.gif' />注册了<img src='/icons/71130dou2.gif' /><br/><br/>
&nbsp;<br/><br/>
改进后<img src='/icons/71130de.gif' />注册思路方法<br/><br/>
&nbsp;<br/><br/>
public <img src='/icons/71130static.gif' /> void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        }

        protected void Application_Start<img src='/icons/71130kh.gif' />
        {

            RegisterRoutes(RouteTable.Routes);

            //执行RouteCollection<img src='/icons/71130de.gif' />扩展思路方法 用来注册XML文件中<img src='/icons/71130de.gif' />路由配置信息
            RouteTable.Routes.Register<img src='/icons/71130kh.gif' />;
        }<br/><br/>
&nbsp;<br/><br/>
代码下载地址<br/><br/>
/tandly/MvcRouteHelper.rar<br/><br/>
&nbsp;<br/><br/>
苏州 晴 <br/><br/>
汤晓华 QQ 1881597 MSN tension1990&#64;hotmail.com<br/><br/>
2010 03 10<br/><br/>
 <a href="/mypdf/78961.pdf" title="查看 asp.netmvc:ASP.NET MVC 路由规则XML化 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78961.html</guid>
		</item>
		<item>
			<title><![CDATA[silverlightblend:silverlight 的 – Blend 的 Style for Button ( 3)]]></title>
			<link>http://CrazyCoder.cn/BlogDigest/Article78960.html</link>
			<description>
				<![CDATA[

		通过把定义<img src='/icons/13654de.gif' />样式加入资源字典(Style.xaml)<img src='/icons/13654de.gif' />思路方法大大方便<img src='/icons/13654de.gif' />我们后续<img src='/icons/13654de.gif' />工作<img src='/icons/13654dou.gif' />我们再次使用时只有选择&ldquo;样式库&rdquo;标签就可以快速设置<img src='/icons/13654dou.gif' />同时有利于设计<img src='/icons/13654de.gif' />统<img src='/icons/13654yi.gif' />性；<br/><br/>
&nbsp;<br/><br/>
但是当我们尝试用我们定义<img src='/icons/13654de.gif' />样式来填充<img src='/icons/13654yi.gif' />个按钮时<img src='/icons/13654dou.gif' />发现他还是白色<img src='/icons/13654de.gif' /><img src='/icons/13654dou.gif' />几乎没什么变化:<br/><br/>
&nbsp;<br/><br/>
	&lt;Style x:Key="BlueButtonStyle" TargetType="Button"&gt;
		&lt;Setter Property="Background" Value="#FF1F3B53"/&gt;
		&lt;Setter Property="Foreground" Value="#FFFFFFFF"/&gt;
		&lt;Setter Property="Padding" Value="3"/&gt;
		&lt;Setter Property="BorderThickness" Value="1"/&gt;
		&lt;Setter Property="BorderBrush"&gt;
			&lt;Setter.Value&gt;
				&lt;LinearGradientBrush EndPo<img src='/icons/13654int.gif' />="0.5,1" StartPo<img src='/icons/13654int.gif' />="0.5,0"&gt;
					&lt;GradientStop Color="#FFA3AEB9" Off<img src='/icons/13654set.gif' />="0"/&gt;
					&lt;GradientStop Color="#FF8399A9" Off<img src='/icons/13654set.gif' />="0.375"/&gt;
					&lt;GradientStop Color="#FF718597" Off<img src='/icons/13654set.gif' />="0.375"/&gt;
					&lt;GradientStop Color="#FF617584" Off<img src='/icons/13654set.gif' />="1"/&gt;
				&lt;/LinearGradientBrush&gt;
			&lt;/Setter.Value&gt;
		&lt;/Setter&gt;
		&lt;Setter Property="Template"&gt;
			&lt;Setter.Value&gt;
				&lt;ControlTemplate TargetType="Button"&gt;
					&lt;Grid&gt;
						&lt;VisualStateManager.VisualStateGroups&gt;
							&lt;VisualStateGroup x:Name="CommonStates"&gt;
								&lt;VisualState x:Name="Normal"/&gt;
								&lt;VisualState x:Name="MouseOver"&gt;
									&lt;Storyboard&gt;
										&lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName="BackgroundAnimation" Storyboard.TargetProperty="Opacity"&gt;
											&lt;SplineDoubleKeyFrame KeyTime="0" Value="1"/&gt;
										&lt;/DoubleAnimationUsingKeyFrames&gt;
									&lt;/Storyboard&gt;
								&lt;/VisualState&gt;
								&lt;VisualState x:Name="Pressed"&gt;
									&lt;Storyboard&gt;
										&lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName="BackgroundAnimation" Storyboard.TargetProperty="Opacity"&gt;
											&lt;SplineDoubleKeyFrame KeyTime="0" Value="1"/&gt;
										&lt;/DoubleAnimationUsingKeyFrames&gt;
									&lt;/Storyboard&gt;
								&lt;/VisualState&gt;
								&lt;VisualState x:Name="Disabled"&gt;
									&lt;Storyboard&gt;
										&lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="Opacity"&gt;
											&lt;SplineDoubleKeyFrame KeyTime="0" Value=".55"/&gt;
										&lt;/DoubleAnimationUsingKeyFrames&gt;
									&lt;/Storyboard&gt;
								&lt;/VisualState&gt;
							&lt;/VisualStateGroup&gt;
							&lt;VisualStateGroup x:Name="FocusStates"&gt;
								&lt;VisualState x:Name="Focused"&gt;
									&lt;Storyboard&gt;
										&lt;DoubleAnimationUsingKeyFrames Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Opacity"&gt;
											&lt;SplineDoubleKeyFrame KeyTime="0" Value="1"/&gt;
										&lt;/DoubleAnimationUsingKeyFrames&gt;
									&lt;/Storyboard&gt;
								&lt;/VisualState&gt;
								&lt;VisualState x:Name="Unfocused"/&gt;
							&lt;/VisualStateGroup&gt;
						&lt;/VisualStateManager.VisualStateGroups&gt;
						&lt;Border x:Name="Background" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="3" BorderBrush="{StaticResource FE}" Background="{StaticResource FF}"&gt;
							&lt;Grid Margin="1"&gt;
								&lt;Border x:Name="BackgroundAnimation" Opacity="0"&gt;
									&lt;Border.Background&gt;
										&lt;LinearGradientBrush EndPo<img src='/icons/13654int.gif' />="0.5,1" StartPo<img src='/icons/13654int.gif' />="0.5,0"&gt;
											&lt;GradientStop Color="#FF1464F3" Off<img src='/icons/13654set.gif' />="0"/&gt;
											&lt;GradientStop Color="#FF01215A" Off<img src='/icons/13654set.gif' />="1"/&gt;
											&lt;GradientStop Color="#FF064BC6" Off<img src='/icons/13654set.gif' />="0.489"/&gt;
											&lt;GradientStop Color="#FF013AA1" Off<img src='/icons/13654set.gif' />="0.557"/&gt;
										&lt;/LinearGradientBrush&gt;
									&lt;/Border.Background&gt;
								&lt;/Border&gt;
								&lt;Rectangle x:Name="BackgroundGradient" Fill="{StaticResource FF}" Opacity="0" OpacityMask="{StaticResource FE}"/&gt;
							&lt;/Grid&gt;
						&lt;/Border&gt;
						&lt;Rectangle x:Name="FocusVisualElement" StrokeThickness="2" RadiusX="2" RadiusY="2" Margin="1" IsHitTestVisible="false" Opacity="0"&gt;
							&lt;Rectangle.Fill&gt;
								&lt;LinearGradientBrush EndPo<img src='/icons/13654int.gif' />="0.5,1" StartPo<img src='/icons/13654int.gif' />="0.5,0"&gt;
									&lt;GradientStop Color="#FF085BF1" Off<img src='/icons/13654set.gif' />="0"/&gt;
									&lt;GradientStop Color="#FF022F80" Off<img src='/icons/13654set.gif' />="1"/&gt;
									&lt;GradientStop Color="#FF125BDE" Off<img src='/icons/13654set.gif' />="0.489"/&gt;
									&lt;GradientStop Color="#FF0343B6" Off<img src='/icons/13654set.gif' />="0.557"/&gt;
								&lt;/LinearGradientBrush&gt;
							&lt;/Rectangle.Fill&gt;
						&lt;/Rectangle&gt;
						&lt;Rectangle x:Name="DisabledVisualElement" Fill="{StaticResource FC}" IsHitTestVisible="false" Opacity="0" RadiusX="2" RadiusY="2"/&gt;
						&lt;ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/&gt;
					&lt;/Grid&gt;
				&lt;/ControlTemplate&gt;
			&lt;/Setter.Value&gt;
		&lt;/Setter&gt;
	&lt;/Style&gt;
<br/><br/>
&nbsp;<br/><br/>
&nbsp;<br/><br/>
谢谢收看~~~<br/><br/>
&nbsp;<br/><br/>
&nbsp;<br/><br/>
silverlight 的 &ndash; Blend <img src='/icons/13654yi.gif' />切源于Brush(<img src='/icons/13654yi.gif' />)<br/><br/>
silverlight 的 &ndash; Blend 的 LinearGradientBrush ( 2)<br/><br/>
&nbsp;<br/><br/>
&nbsp;<br/><br/>
 <a href="/mypdf/78960.pdf" title="查看 silverlightblend:silverlight 的 – Blend 的 Style for Button ( 3) 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>博文摘选</category>
			<pubDate>2010-03-10</pubDate>
			<guid>http://CrazyCoder.cn/BlogDigest/Article78960.html</guid>
		</item>
		<item>
			<title><![CDATA[项目选择方法:独家:为Studio项目选择合适的测试思路方法]]></title>
			<link>http://CrazyCoder.cn/Java/Article78959.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【IT专家网独家撰稿】应用软件Software开发完毕后<img src='/icons/57275dou.gif' />对于软件Software<img src='/icons/57275de.gif' />测试非常<img src='/icons/57275de.gif' />关键<img src='/icons/57275dou2.gif' />软件Software测试人员<img src='/icons/57275de.gif' />身价也<img src='/icons/57275yi.gif' />涨再涨<img src='/icons/57275dou.gif' />甚至有盖过<img src='/icons/57275chengxu.gif' />开发人员<img src='/icons/57275de.gif' />趋势<img src='/icons/57275dou2.gif' />从中也可以看出<img src='/icons/57275chengxu.gif' />测试人员<img src='/icons/57275de.gif' />重要性<img src='/icons/57275dou2.gif' />特别是在团队(Team)开发项目中<img src='/icons/57275dou.gif' />选择什么样<img src='/icons/57275de.gif' />测试类型、如何相互协调等等<img src='/icons/57275dou.gif' />显得尤其<img src='/icons/57275de.gif' />重要<img src='/icons/57275dou2.gif' />笔者这里就以<img src='/icons/57275yi.gif' />个团队(Team)项目为例<img src='/icons/57275dou.gif' />谈谈如何选择合适<img src='/icons/57275de.gif' />测试类型<img src='/icons/57275dou2.gif' />
　<STRONG>　<img src='/icons/57275yi.gif' />、普通测试<img src='/icons/57275dou2.gif' /></STRONG><br/><br/>
　　普通测试是指现有<img src='/icons/57275de.gif' /><img src='/icons/57275chengxu.gif' />或者来自另<img src='/icons/57275yi.gif' />个源<img src='/icons/57275de.gif' />测试<img src='/icons/57275dou2.gif' />经过<img src='/icons/57275yi.gif' />定<img src='/icons/57275de.gif' />包装的后<img src='/icons/57275dou.gif' />在Visual Studio中作为测试运行<img src='/icons/57275dou2.gif' />通常情况下<img src='/icons/57275dou.gif' />如果采用普通测试<img src='/icons/57275de.gif' />话<img src='/icons/57275dou.gif' />有<img src='/icons/57275yi.gif' />个前提条件<img src='/icons/57275dou.gif' />即需要有比较完善<img src='/icons/57275de.gif' />基础架构<img src='/icons/57275dou2.gif' />其测试效果<img src='/icons/57275de.gif' />好坏<img src='/icons/57275dou.gif' />则主要去取决于在框架外部创建<img src='/icons/57275de.gif' />自动化测试工具<img src='/icons/57275dou2.gif' />在使用<img src='/icons/57275yi.gif' />般测试<img src='/icons/57275de.gif' />时候<img src='/icons/57275dou.gif' />可以包装现有<img src='/icons/57275de.gif' />测试<img src='/icons/57275chengxu.gif' />或者第 3方工具<img src='/icons/57275dou2.gif' />在进行测试时<img src='/icons/57275dou.gif' />可以根据区别<img src='/icons/57275de.gif' />测试需要选择返回区别<img src='/icons/57275de.gif' />结果<img src='/icons/57275dou2.gif' />如有些情况下<img src='/icons/57275dou.gif' />只需要测试是否通过<img src='/icons/57275dou.gif' />那么就可以让其只返回“通过”或者“失败”<img src='/icons/57275de.gif' />结果即可<img src='/icons/57275dou.gif' />而不需要返回具体<img src='/icons/57275de.gif' />原因<img src='/icons/57275dou2.gif' />而有时候可能还需要具体<img src='/icons/57275de.gif' />结果<img src='/icons/57275dou2.gif' />如现在可能需要测试某个功能优化<img src='/icons/57275de.gif' />效果<img src='/icons/57275dou.gif' />那么就需要返回内部测试<img src='/icons/57275de.gif' />详细结果<img src='/icons/57275dou2.gif' />【IT专家网独家撰稿】<br/><br/>
　　普通测试最常用<img src='/icons/57275de.gif' /><img src='/icons/57275yi.gif' />个地方就是通过普通测试来收集代码覆盖率数据<img src='/icons/57275dou2.gif' />如通过如下步骤就可以收集到代码覆盖率<img src='/icons/57275de.gif' />相关数据<img src='/icons/57275dou2.gif' /><br/><br/>
　　第<img src='/icons/57275yi.gif' />步创建或者打开包含普通测试<img src='/icons/57275de.gif' />测试项目<img src='/icons/57275dou2.gif' />在解决方案资源管理器中<img src='/icons/57275dou.gif' />打开“解决方案项”文件夹<img src='/icons/57275dou2.gif' />然后在这个文件夹中找到<img src='/icons/57275yi.gif' />个叫做testrunconfig<img src='/icons/57275de.gif' />文件<img src='/icons/57275dou.gif' />并双击打开<img src='/icons/57275dou2.gif' />第 2步在打开<img src='/icons/57275de.gif' />对话框中<img src='/icons/57275dou.gif' />可以看到“代码覆盖率”<img src='/icons/57275de.gif' />按钮<img src='/icons/57275dou2.gif' />单击这个按钮<img src='/icons/57275dou.gif' />在“选择要检测<img src='/icons/57275de.gif' />项目”对话框中<img src='/icons/57275dou.gif' />选择要为其手机代码覆盖率数据<img src='/icons/57275de.gif' />成品代码 2进制文件<img src='/icons/57275dou2.gif' />单击应用进行测试即可<img src='/icons/57275dou2.gif' />在这个过程中需要注意<img src='/icons/57275yi.gif' />个问题<img src='/icons/57275dou2.gif' />有时候在“选择要检测<img src='/icons/57275de.gif' />项目”对话框中可能会找不到需要测试<img src='/icons/57275de.gif' /> 2进制代码文件<img src='/icons/57275dou2.gif' />这主要是需要检测<img src='/icons/57275de.gif' /> 2进制文件没有和添加<img src='/icons/57275chengxu.gif' />集关联<img src='/icons/57275de.gif' />原因<img src='/icons/57275dou2.gif' />此时需要先点击“添加<img src='/icons/57275chengxu.gif' />集”<img src='/icons/57275dou.gif' />然后再在“选择需要测试<img src='/icons/57275de.gif' /><img src='/icons/57275chengxu.gif' />集”对话框中<img src='/icons/57275dou.gif' />制定需要测试<img src='/icons/57275de.gif' /> 2进制文件<img src='/icons/57275dou2.gif' />通常情况下第<img src='/icons/57275yi.gif' />次测试是需要这么操作<img src='/icons/57275dou2.gif' />第 2次测试时可以直接打开<img src='/icons/57275dou2.gif' />另外如果测试<img src='/icons/57275de.gif' />是成品代码<img src='/icons/57275dou.gif' />那么需要注意包含成品代码<img src='/icons/57275de.gif' /> 2进制文件可能不是<img src='/icons/57275yi.gif' />般测试中所包含<img src='/icons/57275de.gif' />文件<img src='/icons/57275dou2.gif' />遇到这种情况<img src='/icons/57275de.gif' />话<img src='/icons/57275dou.gif' />测试人员需要指定普通测试将中间应用<img src='/icons/57275chengxu.gif' />作为测试来包装<img src='/icons/57275dou2.gif' />也就是说利用中间应用<img src='/icons/57275chengxu.gif' />来运行需要测试<img src='/icons/57275de.gif' />成品代码<img src='/icons/57275dou2.gif' />这往往能够取得比较好<img src='/icons/57275de.gif' />测试效果<img src='/icons/57275dou2.gif' /><br/><br/>
　　<STRONG> 2、单元测试<img src='/icons/57275dou2.gif' /></STRONG><br/><br/>
　　单元测试和普通测试有本主<img src='/icons/57275de.gif' />区别<img src='/icons/57275dou2.gif' />单元测试是编程测试中<img src='/icons/57275de.gif' /><img src='/icons/57275yi.gif' />种重要思路方法<img src='/icons/57275dou2.gif' />其主要通过<img src='/icons/57275diaoyong.gif' />带参数类<img src='/icons/57275de.gif' />思路方法<img src='/icons/57275dou.gif' />来验证返回值是否是用户所期望<img src='/icons/57275de.gif' />值<img src='/icons/57275dou2.gif' />简单<img src='/icons/57275de.gif' />说<img src='/icons/57275dou.gif' />就是测试人员输入几个参数<img src='/icons/57275dou.gif' />然后看应用<img src='/icons/57275chengxu.gif' />得到<img src='/icons/57275de.gif' />结果<img src='/icons/57275dou.gif' />是否和我们所期望<img src='/icons/57275de.gif' />值类似<img src='/icons/57275dou2.gif' />显然<img src='/icons/57275dou.gif' />对于单元测试来说<img src='/icons/57275dou.gif' />要取得比较好<img src='/icons/57275de.gif' />效果<img src='/icons/57275dou.gif' />不在于测试<img src='/icons/57275de.gif' />数量<img src='/icons/57275dou.gif' />而在于提供<img src='/icons/57275de.gif' />参数是否包含了实际应用中涵盖<img src='/icons/57275de.gif' />范围<img src='/icons/57275dou2.gif' />简单<img src='/icons/57275de.gif' />说<img src='/icons/57275dou.gif' />如果现在要测试<img src='/icons/57275yi.gif' />个单元格金额合计<img src='/icons/57275de.gif' /><img src='/icons/57275chengxu.gif' /><img src='/icons/57275dou.gif' />那么就需要提供金额为零、为负、为空(如果对输入<img src='/icons/57275de.gif' />金额没有限制<img src='/icons/57275de.gif' />话)等值<img src='/icons/57275dou.gif' />以取得在包含这些数据时会返回什么样<img src='/icons/57275de.gif' />运算结果<img src='/icons/57275dou2.gif' />【IT专家网独家撰稿】<br/><br/>
　　在Studio平台中<img src='/icons/57275dou.gif' /><img src='/icons/57275chengxu.gif' />测试人员可以选择采用平台自带<img src='/icons/57275de.gif' />单元测试模板进行测试<img src='/icons/57275dou.gif' />也可以自己手工编写代码进行测试<img src='/icons/57275dou2.gif' />在这个平台中<img src='/icons/57275dou.gif' />提供了两种专用<img src='/icons/57275de.gif' />单元测试变体<img src='/icons/57275dou.gif' />分别为数据驱动型单元测试和ASP.NET单元测试<img src='/icons/57275dou2.gif' />前者主要是针对数据源<img src='/icons/57275de.gif' />每<img src='/icons/57275yi.gif' />行反复<img src='/icons/57275diaoyong.gif' />时采用<img src='/icons/57275de.gif' /><img src='/icons/57275dou2.gif' />此时单元测试使用每<img src='/icons/57275yi.gif' />行<img src='/icons/57275de.gif' />数据作为输入数据<img src='/icons/57275dou2.gif' />后者主要用来测试Web应用<img src='/icons/57275chengxu.gif' /><img src='/icons/57275de.gif' />代码或者IIS进程中所运行<img src='/icons/57275de.gif' />代码<img src='/icons/57275dou2.gif' />【IT专家网独家撰稿】<br/><br/>
　　如果以上这两个测试模板不能够满足要求<img src='/icons/57275de.gif' />话<img src='/icons/57275dou.gif' />则就需要手工添加新<img src='/icons/57275de.gif' />单元测试代码<img src='/icons/57275dou2.gif' />手工添加测试代码时<img src='/icons/57275dou.gif' />也有两种思路方法<img src='/icons/57275dou2.gif' /><img src='/icons/57275yi.gif' />是直接添加<img src='/icons/57275dou.gif' />即使用单元测试在测试项目中添加<img src='/icons/57275yi.gif' />个源文件<img src='/icons/57275dou.gif' />该文件中包含<img src='/icons/57275yi.gif' />个有效<img src='/icons/57275de.gif' />空白单元测试思路方法<img src='/icons/57275dou.gif' />然后再手工编写这个思路方法<img src='/icons/57275de.gif' />代码<img src='/icons/57275dou2.gif' /> 2是通过向导来完成<img src='/icons/57275dou2.gif' />可以选择“使用测试向导”显示创建单元测试对话框<img src='/icons/57275dou2.gif' />测试人员可以使用这个对话框利用当前项目中<img src='/icons/57275de.gif' />思路方法来生成单元测试<img src='/icons/57275dou2.gif' />不过虽然使用向导来创建单元测试<img src='/icons/57275dou.gif' />可以节省代码编写<img src='/icons/57275de.gif' />时间<img src='/icons/57275dou2.gif' />但是生成单元测试的后<img src='/icons/57275dou.gif' />仍然需要检查并在必要<img src='/icons/57275de.gif' />时候进行手工<img src='/icons/57275de.gif' />调整<img src='/icons/57275dou2.gif' />【IT专家网独家撰稿】<br/><br/>
　<STRONG>　 3、负载测试<img src='/icons/57275dou2.gif' /></STRONG><br/><br/>
　　顾名思义<img src='/icons/57275dou.gif' />负载测试主要就是用来测试用户并发访问时应用<img src='/icons/57275chengxu.gif' /><img src='/icons/57275de.gif' />性能<img src='/icons/57275dou2.gif' />负载测试<img src='/icons/57275de.gif' />原理比较简单<img src='/icons/57275dou.gif' />就是将单元测试、普通测试等思路方法进行封装<img src='/icons/57275dou.gif' />然后使用虚拟用户同时运行应用<img src='/icons/57275chengxu.gif' /><img src='/icons/57275dou.gif' />以判断在多用户<img src='/icons/57275de.gif' />环境中应用<img src='/icons/57275chengxu.gif' /><img src='/icons/57275de.gif' />运行状态<img src='/icons/57275dou2.gif' />在负载测试下运行这些测试将生成比较多<img src='/icons/57275de.gif' />测试结果<img src='/icons/57275dou.gif' />包括以表格或者图标形式显示<img src='/icons/57275de.gif' />性能计数器等相关<img src='/icons/57275de.gif' />计数器<img src='/icons/57275dou2.gif' />现在大部分应用<img src='/icons/57275chengxu.gif' />都是服务器/客户机模式<img src='/icons/57275dou.gif' />用户数量比较多<img src='/icons/57275dou.gif' />负载测试是<img src='/icons/57275yi.gif' />种必不可少<img src='/icons/57275de.gif' />测试思路方法<img src='/icons/57275dou2.gif' /><br/><br/>
　　如现在需要使用Studio开发<img src='/icons/57275yi.gif' />个Web应用<img src='/icons/57275chengxu.gif' /><img src='/icons/57275dou2.gif' />其有可能有成千上万个用户<img src='/icons/57275dou2.gif' /><img src='/icons/57275yi.gif' />个用户使用<img src='/icons/57275de.gif' />时候<img src='/icons/57275dou.gif' />性能等方面可能没有问题<img src='/icons/57275dou2.gif' />但是如果许多用户同时访问这个应用<img src='/icons/57275chengxu.gif' /><img src='/icons/57275dou.gif' />是否会有性能上<img src='/icons/57275de.gif' />障碍呢?在测试<img src='/icons/57275de.gif' />时候<img src='/icons/57275dou.gif' />同时叫上千个人对应用<img src='/icons/57275chengxu.gif' />进行同时访问<img src='/icons/57275dou.gif' />也不如何现实<img src='/icons/57275dou2.gif' />在实际工作中<img src='/icons/57275dou.gif' />通常是通过负载测试来完成<img src='/icons/57275dou2.gif' />如可以将Web测试添加到负载测试项目中<img src='/icons/57275dou.gif' />然后可以模拟数千个用户和某个特定<img src='/icons/57275de.gif' />Web应用<img src='/icons/57275chengxu.gif' />同时进行交互访问<img src='/icons/57275dou2.gif' />负载测试可以帮助<img src='/icons/57275chengxu.gif' />开发人员判断在应用<img src='/icons/57275chengxu.gif' /><img src='/icons/57275de.gif' />访问达到最大量<img src='/icons/57275de.gif' />时候<img src='/icons/57275dou.gif' />是否否出现<img src='/icons/57275cuowu.gif' />或者性能上<img src='/icons/57275de.gif' />瓶颈<img src='/icons/57275dou2.gif' />而不是等到真<img src='/icons/57275de.gif' />出现这种情况时再去弥补<img src='/icons/57275dou2.gif' /><br/><br/>

<br/>

<span <img src='/icons/57275class.gif' />="xspace-totlerecord">2</span><span <img src='/icons/57275class.gif' />="xspace-totlepages">1/2</span><span <img src='/icons/57275class.gif' />="xspace-current">1</span>2&gt;<br/> <a href="/mypdf/78959.pdf" title="查看 项目选择方法:独家:为Studio项目选择合适的测试思路方法 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>Java教程</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Java/Article78959.html</guid>
		</item>
		<item>
			<title><![CDATA[photoshop偏色:Photoshop让偏色照片再现甜美色]]></title>
			<link>http://CrazyCoder.cn/PhotoShop/Article78958.html</link>
			<description>
				<![CDATA[

					
          
	  　　原图<br/><br/><img height="654" src="http://CrazyCoder.cn/WebFiles/20103/92b7f7b7-d522-4c74-bd7e-16b5eec59200.jpeg" width="550" /><br/><br/>　　　　查看原图(大图)<br/><br/>　　最终效果<br/><br/><img height="654" src="http://CrazyCoder.cn/WebFiles/20103/1b5cdea6-f84e-48fb-b3dd-827f7399a9aa.jpeg" width="550" /><br/><br/>　　　　查看原图(大图)<br/><br/>　　1、打开原图素材<img src='/icons/99874dou.gif' />新建<img src='/icons/99874yi.gif' />个图层填充颜色:#182418<img src='/icons/99874dou.gif' />图层混合模式改为&ldquo;柔光&rdquo;<img src='/icons/99874dou.gif' />图层不透明度改为:60%<img src='/icons/99874dou2.gif' /><br/><br/><img height="516" src="http://CrazyCoder.cn/WebFiles/20103/4b54287e-348e-4933-be84-5355069f87eb.jpeg" width="550" /><br/><br/>　　　　查看原图(大图)<br/><br/>　　&lt;图1&gt; <br/><br/>　　2、创建可选颜色调整图层<img src='/icons/99874dou.gif' />参数设置如图2 - 4<img src='/icons/99874dou.gif' />效果如图5<img src='/icons/99874dou2.gif' /><br/><br/><img height="261" src="http://CrazyCoder.cn/WebFiles/20103/cc59d881-bbad-4272-af7e-0258f8f9e176.jpeg" width="249" /><br/><br/>　　&lt;图2&gt;<br/><br/><img height="251" src="http://CrazyCoder.cn/WebFiles/20103/fc09b8cb-2506-4286-8596-a89f9a3fc745.jpeg" width="245" /><br/><br/>　　&lt;图3&gt; <br/><br/><img height="251" src="http://CrazyCoder.cn/WebFiles/20103/bf277a4b-024d-45c4-9ec3-4ac8e12102e3.jpeg" width="240" /><br/><br/>　　&lt;图4&gt;<br/><br/><img height="536" src="http://CrazyCoder.cn/WebFiles/20103/9542d345-8477-4096-9bc8-dd5dcfcb1579.jpeg" width="450" /><br/><br/>　　&lt;图5&gt; <br/><br/>　　3、创建曲线调整图层<img src='/icons/99874dou.gif' />参数设置如图6 - 8<img src='/icons/99874dou.gif' />效果如图9<img src='/icons/99874dou2.gif' /><br/><br/><img height="263" src="http://CrazyCoder.cn/WebFiles/20103/6d816656-97ed-43c4-bb9c-92cea722b186.jpeg" width="232" /><br/><br/>
	  
			
					
          
	  　　&lt;图6&gt;<br/><br/><img height="257" src="http://CrazyCoder.cn/WebFiles/20103/c40f2cbc-6599-4a32-9e8f-f74ee3595ab9.jpeg" width="228" /><br/><br/>　　&lt;图7&gt;<br/><br/><img height="260" src="http://CrazyCoder.cn/WebFiles/20103/0829facc-3fd5-4fab-817b-8f4fc118850e.jpeg" width="230" /><br/><br/>　　&lt;图8&gt;<br/><br/><img height="536" src="http://CrazyCoder.cn/WebFiles/20103/fdceada8-4175-44a4-85b9-92490780b885.jpeg" width="450" /><br/><br/>　　&lt;图9&gt; <br/><br/>　　4、把曲线调整图层复制<img src='/icons/99874yi.gif' />层<img src='/icons/99874dou.gif' />图层不透明度改为:30%<img src='/icons/99874dou.gif' />效果如下图<img src='/icons/99874dou2.gif' /><br/><br/><img height="487" src="http://CrazyCoder.cn/WebFiles/20103/771d44e5-6f6a-4c34-9eb8-deccc9a2cb5c.jpeg" width="535" /><br/><br/>　　&lt;图10&gt; <br/><br/>　　5、新建<img src='/icons/99874yi.gif' />个图层<img src='/icons/99874dou.gif' />按Ctrl + Alt + Sh<img src='/icons/99874if.gif' />t + E 盖印图层<img src='/icons/99874dou2.gif' />选择菜单:图像 &gt; 模式 &gt; Lab颜色<img src='/icons/99874dou.gif' />选择不合拼<img src='/icons/99874dou2.gif' />创建曲线调整图层<img src='/icons/99874dou.gif' />参数设置如图11<img src='/icons/99874dou.gif' />12<img src='/icons/99874dou2.gif' /><br/><br/><img height="263" src="http://CrazyCoder.cn/WebFiles/20103/c6a35f64-9c4a-4c50-82de-8574c408c1b8.jpeg" width="234" /><br/><br/>　　&lt;图11&gt; <br/><br/><img height="261" src="http://CrazyCoder.cn/WebFiles/20103/e65c78cb-9cc0-424e-a7f9-ac478961e325.jpeg" width="232" /><br/><br/>　　&lt;图12&gt; <br/><br/>　　6、新建<img src='/icons/99874yi.gif' />个图层<img src='/icons/99874dou.gif' />盖印图层<img src='/icons/99874dou2.gif' />选择菜单:图像 &gt; 模式 &gt; RGB颜色<img src='/icons/99874dou.gif' />选择不合拼<img src='/icons/99874dou2.gif' />创建可选颜色调整图层<img src='/icons/99874dou.gif' />对红色进行调整<img src='/icons/99874dou.gif' />参数设置如图13<img src='/icons/99874dou.gif' />效果如图14<img src='/icons/99874dou2.gif' /><br/><br/><img height="254" src="http://CrazyCoder.cn/WebFiles/20103/3de44066-4a50-433f-84c3-cb333517367a.jpeg" width="239" /><br/><br/>　　&lt;图13&gt; <br/><br/><img height="536" src="http://CrazyCoder.cn/WebFiles/20103/c53827e4-481e-4ac0-b5e8-de76e0ab64fe.jpeg" width="450" /><br/><br/>　　&lt;图14&gt; <br/><br/>　　7、新建<img src='/icons/99874yi.gif' />个图层<img src='/icons/99874dou.gif' />盖印图层<img src='/icons/99874dou2.gif' />简单<img src='/icons/99874de.gif' />给人物磨下皮<img src='/icons/99874dou.gif' />思路方法自选<img src='/icons/99874dou.gif' />大致效果如下图<img src='/icons/99874dou2.gif' /><br/><br/>
	  
			
					
          
	  <img height="536" src="http://CrazyCoder.cn/WebFiles/20103/831c9e7a-6c7b-4d87-ae2d-4918b2a72c8e.jpeg" width="450" /><br/><br/>　　&lt;图15&gt; <br/><br/>　　8、创建曲线调整图层<img src='/icons/99874dou.gif' />对蓝色进行调整<img src='/icons/99874dou.gif' />参数设置如图16<img src='/icons/99874dou.gif' />效果如图17<img src='/icons/99874dou2.gif' /><br/><br/><img height="262" src="http://CrazyCoder.cn/WebFiles/20103/6620d8f0-42e5-4c51-a3df-e3d5580c4dd7.jpeg" width="235" /><br/><br/>　　&lt;图16&gt; <br/><br/><img height="536" src="http://CrazyCoder.cn/WebFiles/20103/31c83229-d6ed-4dee-9e76-722e7c849bcf.jpeg" width="450" /><br/><br/>　　&lt;图17&gt; <br/><br/>　　9、创建色彩平衡调整图层<img src='/icons/99874dou.gif' />稍微调红<img src='/icons/99874yi.gif' />点<img src='/icons/99874dou.gif' />效果如下图<img src='/icons/99874dou2.gif' /><br/><br/><img height="536" src="http://CrazyCoder.cn/WebFiles/20103/dd02fcd2-7002-45f9-ae58-a3d48aee363e.jpeg" width="450" /><br/><br/>　　&lt;图18&gt; <br/><br/>　　10、用钢笔把人物嘴巴选区出来<img src='/icons/99874dou.gif' />适当羽化后创建色彩平衡调整图层<img src='/icons/99874dou.gif' />稍微调红<img src='/icons/99874yi.gif' />点<img src='/icons/99874dou.gif' />效果如下图<img src='/icons/99874dou2.gif' /><br/><br/><img height="536" src="http://CrazyCoder.cn/WebFiles/20103/064afa79-d573-4142-8e87-b49d4c3f786a.jpeg" width="450" /><br/><br/>　　&lt;图19&gt; <br/><br/>　　11、创建亮度/对比度调整图层<img src='/icons/99874dou.gif' />参数设置如图20<img src='/icons/99874dou.gif' />效果如图21<img src='/icons/99874dou2.gif' /><br/><br/><img height="118" src="http://CrazyCoder.cn/WebFiles/20103/e97455e8-91ec-4381-8614-9c3328818b9a.jpeg" width="219" /><br/><br/>　　&lt;图20&gt;<br/><br/><img height="536" src="http://CrazyCoder.cn/WebFiles/20103/aa5271f9-8baf-4259-a84a-a9bcc910b9dc.jpeg" width="450" /><br/><br/>　　&lt;图21&gt;<br/><br/>　　12、最后整体调整下细节<img src='/icons/99874dou.gif' />适当锐化<img src='/icons/99874yi.gif' />下<img src='/icons/99874dou.gif' />完成最终效果<img src='/icons/99874dou2.gif' /><br/><br/><img height="654" src="http://CrazyCoder.cn/WebFiles/20103/1b5cdea6-f84e-48fb-b3dd-827f7399a9aa.jpeg" width="550" /><br/><br/>　　　　查看原图(大图)<br/><br/><br/><br/>　　&lt;图22&gt; <br/><br/><br/><br/>
	  
			 <a href="/mypdf/78958.pdf" title="查看 photoshop偏色:Photoshop让偏色照片再现甜美色 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>PhotoShop教程</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/PhotoShop/Article78958.html</guid>
		</item>
		<item>
			<title><![CDATA[学校存在的安全隐患:国内多家软件Software公司产品存在安全隐患]]></title>
			<link>http://CrazyCoder.cn/Security/Article78957.html</link>
			<description>
				<![CDATA[

<SPAN style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" <img src='/icons/16229class.gif' />=Apple-style-span><SPAN style="LINE-HEIGHT: 26px; FONT-FAMILY: 宋体; FONT-SIZE: 14px" <img src='/icons/16229class.gif' />=Apple-style-span>
笔者从事网络管理工作<img src='/icons/16229dou.gif' />数月前<img src='/icons/16229dou.gif' />应邀对本地<img src='/icons/16229yi.gif' />家公司做了<img src='/icons/16229yi.gif' />次安全检测<img src='/icons/16229dou.gif' />在检测就要结束<img src='/icons/16229de.gif' />时候<img src='/icons/16229dou.gif' />在内网用嗅探到了<img src='/icons/16229yi.gif' />个SQLServer数据库<img src='/icons/16229de.gif' />SA密码<img src='/icons/16229dou.gif' />经该公司<img src='/icons/16229de.gif' />网络管理人员介绍说<img src='/icons/16229dou.gif' />该数据库服务器运行了<img src='/icons/16229yi.gif' />套软件Software<img src='/icons/16229dou.gif' />在互联网有固定<img src='/icons/16229de.gif' />ip地址<img src='/icons/16229dou.gif' />用于和各地子公司交换数据用<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />SA密码是软件Software安装人员设置<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />数据库服务器从来没有出现过安全问题<img src='/icons/16229dou2.gif' /><br/><br/>
尽管这个SA密码非常复杂<img src='/icons/16229dou.gif' />10多位<img src='/icons/16229zifu.gif' /><img src='/icons/16229dou.gif' />由数字和字母混合组成<img src='/icons/16229dou.gif' />但笔者<img src='/icons/16229yi.gif' />看到这个SA密码<img src='/icons/16229de.gif' />部分<img src='/icons/16229zifu.gif' /><img src='/icons/16229dou.gif' />马上想到国内<img src='/icons/16229de.gif' /><img src='/icons/16229yi.gif' />家软件Software公司<img src='/icons/16229dou.gif' />会不会这个家软件Software公司<img src='/icons/16229de.gif' />SA密码设置都是相同<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />或者大部分是这个？经过几个月<img src='/icons/16229de.gif' />测试<img src='/icons/16229dou.gif' />笔者发现了更为惊人<img src='/icons/16229de.gif' />情况<img src='/icons/16229dou.gif' />国内多个软件Software公司<img src='/icons/16229de.gif' />部分数据库软件Software产品都存在安全隐患<img src='/icons/16229dou.gif' />严重威胁到运行服务器和数据<img src='/icons/16229de.gif' />安全<img src='/icons/16229dou.gif' />入侵者可以在短时间内完全控制互联网上大量数据库服务器<img src='/icons/16229dou2.gif' />SA密码泄露会造成什么危害请参考笔者<img src='/icons/16229de.gif' />这篇文章:http://www.cnking.org/post/286.html<img src='/icons/16229dou2.gif' />由于众所周知<img src='/icons/16229de.gif' />原因<img src='/icons/16229dou.gif' />本文没有进行抓图介绍说明<img src='/icons/16229dou.gif' />下文仅以字母代表软件Software公司<img src='/icons/16229de.gif' />名称<img src='/icons/16229dou2.gif' /><br/><br/>
1、公司A<img src='/icons/16229de.gif' />某产品后台数据库使用<img src='/icons/16229de.gif' />是SQLServer数据库<img src='/icons/16229dou.gif' />在服务器端安装时会在数据库中建立<img src='/icons/16229yi.gif' />个用户<img src='/icons/16229dou.gif' />该用户和SA<img src='/icons/16229de.gif' />权限<img src='/icons/16229yi.gif' />样<img src='/icons/16229dou.gif' />尽管密码相对复杂<img src='/icons/16229yi.gif' />些<img src='/icons/16229dou.gif' />但密码都是相同<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' /><img src='/icons/16229yi.gif' />旦泄露出去<img src='/icons/16229dou.gif' />数据库服务器<img src='/icons/16229de.gif' />安全肯定会受到威胁<img src='/icons/16229dou.gif' />而且产品介绍说明书中并没有介绍说明该用户<img src='/icons/16229de.gif' />存在<img src='/icons/16229dou2.gif' />公司B和C<img src='/icons/16229de.gif' />产品同样存在这用情况<img src='/icons/16229dou2.gif' /><br/><br/>
2、还是公司A<img src='/icons/16229de.gif' />某个产品<img src='/icons/16229dou.gif' />也是使用<img src='/icons/16229de.gif' />SQLServer数据库<img src='/icons/16229dou.gif' />不知道什么原因<img src='/icons/16229dou.gif' />SA<img src='/icons/16229de.gif' />密码都是相同<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />带有很明显<img src='/icons/16229de.gif' />特征(非弱口令)<img src='/icons/16229dou.gif' />笔者怀疑是该公司进行技术人员培训时都以该密码作为例子造成<img src='/icons/16229de.gif' /><img src='/icons/16229dou2.gif' />公司D、E也存在这种情况<img src='/icons/16229dou2.gif' /><br/><br/>
3、公司F、G、H<img src='/icons/16229de.gif' />某些产品也是使用<img src='/icons/16229de.gif' />SQLServer数据库<img src='/icons/16229dou.gif' />在安装服务器端时也会在数据库中建立<img src='/icons/16229yi.gif' />个用户<img src='/icons/16229dou.gif' />好在只是普通权限<img src='/icons/16229dou.gif' />只可以对本数据库进行操作<img src='/icons/16229dou.gif' />无法执行master数据库中<img src='/icons/16229de.gif' />扩展存储过程<img src='/icons/16229dou.gif' />这些用户<img src='/icons/16229de.gif' />密码有<img src='/icons/16229de.gif' />和用户名是<img src='/icons/16229yi.gif' />样<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />有<img src='/icons/16229de.gif' />以明文<img src='/icons/16229de.gif' />形式保存在ini配置文件中<img src='/icons/16229dou.gif' />这些用户名和密码<img src='/icons/16229yi.gif' />旦泄露会对数据安全产生威胁<img src='/icons/16229dou.gif' />如果什么时候再出个数据库提权漏洞后果也是不堪设想<img src='/icons/16229dou2.gif' /><br/><br/>
4、公司I<img src='/icons/16229de.gif' />某个软件Software产品是安装在嵌入式设备中<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />后台数据库也是SQLServer<img src='/icons/16229dou.gif' />SA<img src='/icons/16229de.gif' />密码默认设置很复杂<img src='/icons/16229dou.gif' />但都是相同<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />而且该密码以明文<img src='/icons/16229de.gif' />形式保存在数据库中<img src='/icons/16229de.gif' />某个表中<img src='/icons/16229dou2.gif' />经过测试还发现在数据库中还存在<img src='/icons/16229yi.gif' />个用户<img src='/icons/16229dou.gif' />权限和SA<img src='/icons/16229yi.gif' />样<img src='/icons/16229dou.gif' />密码和SA<img src='/icons/16229de.gif' />区别<img src='/icons/16229dou.gif' />但也都是固定<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />不知道在哪个环节建立<img src='/icons/16229de.gif' />该用户<img src='/icons/16229dou2.gif' /><br/><br/>
出于安全和方便管理考虑<img src='/icons/16229dou.gif' />不少软件Software公司在安装完自己<img src='/icons/16229de.gif' />产品后<img src='/icons/16229dou.gif' />会推荐用户购买其他公司<img src='/icons/16229de.gif' />远程接入产品<img src='/icons/16229dou.gif' />单从远程接入软件Software来看<img src='/icons/16229dou.gif' />安全措施做<img src='/icons/16229de.gif' />都比较好<img src='/icons/16229dou.gif' />都有特征码绑定、KEY等安全功能选择<img src='/icons/16229dou.gif' />入侵者无法通过开启服务器<img src='/icons/16229de.gif' />远程桌面服务进行连接控制<img src='/icons/16229dou.gif' />但由于SA密码已经泄露<img src='/icons/16229dou.gif' />远程接入软件Software也都存在被攻破<img src='/icons/16229de.gif' />可能<img src='/icons/16229dou2.gif' /><br/><br/>
远程接入软件Software公司J可对接入方<img src='/icons/16229de.gif' />网卡物理地址进行认证<img src='/icons/16229dou.gif' />入侵者在获得服务器<img src='/icons/16229de.gif' />SA密码后可以通过Ipconfig /all命令获得服务器<img src='/icons/16229de.gif' />网卡物理地址<img src='/icons/16229dou.gif' />然后将自己<img src='/icons/16229de.gif' />计算机网卡物理地址修改成服务器<img src='/icons/16229de.gif' />网卡物理地址<img src='/icons/16229dou.gif' />运行远程接入<img src='/icons/16229de.gif' />客户端就可以连接上服务器<img src='/icons/16229dou.gif' />进行图形操作了<img src='/icons/16229dou.gif' />当然前提是设置中允许服务器远程接入<img src='/icons/16229dou2.gif' /><br/><br/>
远程接入软件Software公司K<img src='/icons/16229de.gif' />接入客户端可以通过服务器开启<img src='/icons/16229de.gif' />web方式下载<img src='/icons/16229dou.gif' />但需要在web页面中输入正确<img src='/icons/16229de.gif' />用户名和密码<img src='/icons/16229dou.gif' />而web页面<img src='/icons/16229de.gif' />用户名和密码保存在该远程接入软件Software<img src='/icons/16229de.gif' />安装目录下<img src='/icons/16229de.gif' />某个文件中<img src='/icons/16229dou.gif' />入侵者可以通过SA密码使用type命令获取该文件中<img src='/icons/16229de.gif' />信息<img src='/icons/16229dou.gif' />用户名是明文<img src='/icons/16229dou.gif' />密码则是经过某种(不方便透露)加密<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />入侵者破解加密密码获得明文后<img src='/icons/16229dou.gif' />就可以登陆到web管理界面<img src='/icons/16229de.gif' />后台<img src='/icons/16229dou.gif' />获得分发<img src='/icons/16229de.gif' />接入客户端<img src='/icons/16229dou.gif' />运行客户端就可以图形化管理服务器了<img src='/icons/16229dou2.gif' /><br/><br/>
说了这么多<img src='/icons/16229de.gif' />安全隐患<img src='/icons/16229dou.gif' />都和使用SQLServer数据库有关<img src='/icons/16229dou.gif' />但这不代表SQLServer数据库存在安全问题<img src='/icons/16229dou.gif' />恰恰<img src='/icons/16229yinwei.gif' />SQLServer数据库出色<img src='/icons/16229de.gif' />稳定性和安全性使其得到极为广泛<img src='/icons/16229de.gif' />应用<img src='/icons/16229dou.gif' />安全隐患只是软件Software“偷偷摸摸”建立<img src='/icons/16229de.gif' />数据库用户造成<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />使用其他数据库<img src='/icons/16229de.gif' />软件Software肯定也存在类似隐患<img src='/icons/16229dou.gif' />只是笔者没有测试过<img src='/icons/16229dou.gif' />特此介绍说明<img src='/icons/16229dou.gif' />以免引起大家<img src='/icons/16229de.gif' />误会<img src='/icons/16229dou2.gif' /><br/><br/>
在数据库中添加用户似乎是某些软件Software公司<img src='/icons/16229de.gif' />“潜规则”<img src='/icons/16229dou.gif' />我想软件Software公司<img src='/icons/16229de.gif' />目<img src='/icons/16229de.gif' />是好<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />是为了方便用户<img src='/icons/16229dou.gif' />让用户只需要把精力放在前台<img src='/icons/16229de.gif' /><img src='/icons/16229chengxu.gif' />操作上<img src='/icons/16229dou.gif' />而不需要关心后台是如何运作<img src='/icons/16229de.gif' /><img src='/icons/16229dou.gif' />却忽视了安全这个环节<img src='/icons/16229dou.gif' />如果能在安装应用<img src='/icons/16229chengxu.gif' />时让用户自己设置数据库新用户<img src='/icons/16229de.gif' />密码<img src='/icons/16229dou.gif' />并将该密码加密后保存在配置文件中<img src='/icons/16229dou.gif' />这样会更安全和灵活<img src='/icons/16229dou.gif' />相信聪明<img src='/icons/16229de.gif' /><img src='/icons/16229chengxu.gif' />员<img src='/icons/16229yi.gif' />定会解决这个问题<img src='/icons/16229dou2.gif' /><br/><br/>
在互联网上有非常多<img src='/icons/16229de.gif' />服务器运行着上面这些有安全隐患<img src='/icons/16229de.gif' />软件Software<img src='/icons/16229dou.gif' />这些服务器或拥有固定ip地址<img src='/icons/16229dou.gif' />或使用花生壳、每步等软件Software解析<img src='/icons/16229dou.gif' />谁家<img src='/icons/16229de.gif' />孩子<img src='/icons/16229dou.gif' />谁家清楚<img src='/icons/16229dou.gif' />希望这篇文章能引起所有软件Software公司对产品安全<img src='/icons/16229de.gif' />重视<img src='/icons/16229dou.gif' />不要<img src='/icons/16229yinwei.gif' />你们<img src='/icons/16229de.gif' />疏忽而让数据库服务器<img src='/icons/16229de.gif' />安全性受到威胁<img src='/icons/16229dou.gif' />让广大<img src='/icons/16229de.gif' />系统维护人员和网管员背黑锅<img src='/icons/16229dou2.gif' /> <a href="/mypdf/78957.pdf" title="查看 学校存在的安全隐患:国内多家软件Software公司产品存在安全隐患 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78957.html</guid>
		</item>
		<item>
			<title><![CDATA[企业网络安全:MP3成为企业网络安全的最大威胁]]></title>
			<link>http://CrazyCoder.cn/Security/Article78956.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 据国外媒体报道<img src='/icons/96709dou.gif' />Gartner研究公司发表报告称<img src='/icons/96709dou.gif' />琳琅满目<img src='/icons/96709de.gif' />消费电子产品大量流入企业将给公司网络带来新隐患<img src='/icons/96709dou.gif' />是企业安全<img src='/icons/96709de.gif' />最大威胁的<img src='/icons/96709yi.gif' /><img src='/icons/96709dou2.gif' /><br/>&nbsp;&nbsp;&nbsp; Gartner公司说<img src='/icons/96709dou.gif' />公司员工越来越期望在工作岗位上使用他们<img src='/icons/96709de.gif' />个人设备和服务<img src='/icons/96709dou2.gif' />和此同时<img src='/icons/96709dou.gif' />企业主管也决定在企业运营中更多地采用消费产品技术<img src='/icons/96709dou2.gif' />随着个人技术应用浪潮<img src='/icons/96709de.gif' />不断高涨<img src='/icons/96709dou.gif' />即时信息、博客和MP3播放器也正在越来越多地被用于办公室和路途中<img src='/icons/96709dou.gif' />面对这种情况<img src='/icons/96709dou.gif' />IT经理不得不应对这种因个人产品而引发<img src='/icons/96709de.gif' />网络漏洞<img src='/icons/96709dou2.gif' /><br/>&nbsp;&nbsp;&nbsp; Gartner公司研究副总裁Mogull说<img src='/icons/96709dou.gif' />虽然消费电子技术给企业带来了新<img src='/icons/96709de.gif' />安全问题<img src='/icons/96709dou.gif' />但目前<img src='/icons/96709de.gif' />情况是<img src='/icons/96709dou.gif' />公司越来越难于禁止员工使用<img src='/icons/96709dou.gif' />而且也不可行<img src='/icons/96709dou2.gif' />他还指出<img src='/icons/96709dou.gif' />通过预先<img src='/icons/96709de.gif' />安全警告和现在对基础安全技术进行投资<img src='/icons/96709dou.gif' />企业将能够应对机构内部日益增多<img src='/icons/96709de.gif' />个人设备<img src='/icons/96709dou.gif' />还有针对个人<img src='/icons/96709de.gif' />服务和网络<img src='/icons/96709dou2.gif' />Gartner公司称<img src='/icons/96709dou.gif' />消费电子产品进入企业将对传统安全模式提出挑战<img src='/icons/96709dou2.gif' />面对新<img src='/icons/96709de.gif' />挑战<img src='/icons/96709dou.gif' />针对风险<img src='/icons/96709de.gif' />安全管理工具可能还不够成熟<img src='/icons/96709dou.gif' />而且开始时价格很高<img src='/icons/96709dou2.gif' /><br/>&nbsp;&nbsp;&nbsp; 该研究公司强调指出<img src='/icons/96709dou.gif' />消费电子产品可能侵入公司网络 4个领域<img src='/icons/96709dou.gif' />具体包括:消费者电子邮件和通讯服务；Web 2.0-博客和社交网络；未受管理<img src='/icons/96709de.gif' />移动设备；个人设备<img src='/icons/96709de.gif' />远程接入<img src='/icons/96709dou2.gif' /> <a href="/mypdf/78956.pdf" title="查看 企业网络安全:MP3成为企业网络安全的最大威胁 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78956.html</guid>
		</item>
		<item>
			<title><![CDATA[上海的电子警察:目前国内的 电子警察 应用存在的问题]]></title>
			<link>http://CrazyCoder.cn/Security/Article78955.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 我国推广应用“电子警察”虽然起步较晚<img src='/icons/41311dou.gif' />但是发展迅速、普及面广、使用量大<img src='/icons/41311dou.gif' />发展趋势看好<img src='/icons/41311dou2.gif' />然而存在<img src='/icons/41311de.gif' />问题却也相当多<img src='/icons/41311dou.gif' />必须引起各方重视<img src='/icons/41311dou.gif' />并逐步加以解决<img src='/icons/41311dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 1、“电子警察”产品硬件质量有待于进<img src='/icons/41311yi.gif' />步提高<img src='/icons/41311dou2.gif' />目前全国生产、经销“电子警察”<img src='/icons/41311de.gif' />公司、厂家很多<img src='/icons/41311dou.gif' />产品质量技术水平良莠不齐<img src='/icons/41311dou.gif' />较多<img src='/icons/41311de.gif' />产品并未通过有关检测<img src='/icons/41311dou.gif' />尤其在使用安全方面存在较大隐患<img src='/icons/41311dou2.gif' />完整<img src='/icons/41311de.gif' />车辆及车牌抓拍率不高、车牌识别率不高;夜间车辆抓拍和识别率较差;安全防护措施不够完善;系统<img src='/icons/41311de.gif' />稳定性不高;全天候工作能力有限;运行维护水平不高等<img src='/icons/41311dou2.gif' />“电子警察”设备应有3个基本要求:<img src='/icons/41311yi.gif' />是违章图片或图像<img src='/icons/41311de.gif' />清晰度<img src='/icons/41311dou2.gif' />违章图片或图像是执法<img src='/icons/41311de.gif' />惟<img src='/icons/41311yi.gif' />证据<img src='/icons/41311dou.gif' />只有清晰可辩<img src='/icons/41311de.gif' />图片或图像才能成为证据<img src='/icons/41311dou2.gif' />要求该设备能够自动适应全天候环境工作<img src='/icons/41311dou.gif' />在各种光照条件下获得满意<img src='/icons/41311de.gif' />画面<img src='/icons/41311dou2.gif' />另外<img src='/icons/41311dou.gif' />要求抓拍画面上信息量和视角要足够大<img src='/icons/41311dou.gif' />并应权衡像素和文件传输<img src='/icons/41311de.gif' />矛盾<img src='/icons/41311dou2.gif' /> 2是设备<img src='/icons/41311de.gif' />可靠性、稳定性<img src='/icons/41311dou2.gif' />由于“电子警察”设备安装在室外<img src='/icons/41311dou.gif' />每天24小时、每年365天不间断运行<img src='/icons/41311dou.gif' />这就要求组成设备<img src='/icons/41311de.gif' />部件符合全天候工作要求<img src='/icons/41311dou.gif' />设备能够在较宽温度范围和较宽<img src='/icons/41311de.gif' />湿度范围工作<img src='/icons/41311dou.gif' />且不需维护或只需少量维护<img src='/icons/41311dou2.gif' /> 3是适宜<img src='/icons/41311de.gif' />价格<img src='/icons/41311dou2.gif' />适宜<img src='/icons/41311de.gif' />价格可以扩大设备<img src='/icons/41311de.gif' />使用量<img src='/icons/41311dou.gif' />满足市场<img src='/icons/41311de.gif' />潜在需求<img src='/icons/41311dou2.gif' />但目前电子抓拍系统造价较高<img src='/icons/41311dou.gif' />抓拍系统整体价格难以有效控制<img src='/icons/41311dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 2、绝大多数系统是孤立<img src='/icons/41311de.gif' /><img src='/icons/41311dou.gif' />不仅未对交通违章现象及其发生<img src='/icons/41311de.gif' />原因进行科学<img src='/icons/41311de.gif' />分析<img src='/icons/41311dou.gif' />同其他<img src='/icons/41311de.gif' />系统<img src='/icons/41311dou.gif' />如交通控制系统、交通流量数据采集系统等也未能有效地整合<img src='/icons/41311dou.gif' />造成了许多软硬件资源<img src='/icons/41311de.gif' />浪费<img src='/icons/41311dou2.gif' />尽管“电子警察”法力无边<img src='/icons/41311dou.gif' />可它对外地号牌<img src='/icons/41311de.gif' />车辆违章却无能为力<img src='/icons/41311dou.gif' />即使是率先安装“电子警察”设备<img src='/icons/41311de.gif' />北京、上海、深圳等地也仅仅是实现省、市内联动<img src='/icons/41311dou.gif' />至于省市外<img src='/icons/41311dou.gif' />还没有实现联动<img src='/icons/41311dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 3、系统虽然能够实时检测违章现象<img src='/icons/41311dou.gif' />但对事件<img src='/icons/41311de.gif' />处理却具有明显<img src='/icons/41311de.gif' />滞后性<img src='/icons/41311dou.gif' />很难适应现代化管理<img src='/icons/41311de.gif' />节奏和要求<img src='/icons/41311dou2.gif' />违章管理不能只是亡羊补牢<img src='/icons/41311dou.gif' />应从幕后走到前台<img src='/icons/41311dou.gif' />尤其是现场违章控制<img src='/icons/41311dou.gif' />需要及时发现、实时制止、防止事态恶化<img src='/icons/41311dou2.gif' />传统意义上<img src='/icons/41311de.gif' />“电子警察”仅仅是其中<img src='/icons/41311de.gif' />两个环节:现场抓获<img src='/icons/41311dou.gif' />事后处罚<img src='/icons/41311dou.gif' />且没有和其他ITS应用系统有机地整合<img src='/icons/41311dou.gif' />不能充分发挥现代科学技术发展<img src='/icons/41311de.gif' />优势<img src='/icons/41311dou2.gif' />即使是事后处罚<img src='/icons/41311dou.gif' />也存在着无法全面落实<img src='/icons/41311de.gif' />隐患<img src='/icons/41311dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 4、规范标准标准不统<img src='/icons/41311yi.gif' /><img src='/icons/41311dou2.gif' />至今国内尚没有出台相关<img src='/icons/41311de.gif' />规范标准和标准<img src='/icons/41311dou2.gif' />“电子警察”系统设计没有规范标准<img src='/icons/41311dou.gif' />标准各异<img src='/icons/41311dou.gif' />功能区别<img src='/icons/41311dou.gif' />彼此的间不能相互兼容或互联互通<img src='/icons/41311dou.gif' />各自<img src='/icons/41311de.gif' />信息无法实现共享<img src='/icons/41311dou.gif' />影响了系统整体效益<img src='/icons/41311de.gif' />全面发挥<img src='/icons/41311dou.gif' />极大地妨碍了系统规范标准、健康、有序、持续地发展和提高<img src='/icons/41311dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 5、目前<img src='/icons/41311dou.gif' />在<img src='/icons/41311yi.gif' />些设置了“电子警察”<img src='/icons/41311de.gif' />交通干道<img src='/icons/41311dou.gif' />驾驶员行车规规矩矩<img src='/icons/41311dou2.gif' />但在<img src='/icons/41311yi.gif' />些偏远路段<img src='/icons/41311dou.gif' />仍有相当<img src='/icons/41311yi.gif' />部分路口未设置“电子警察”<img src='/icons/41311dou.gif' />驾驶员超速、违章变道、乱停车等现象司空见惯<img src='/icons/41311dou.gif' />成为事故高发路段<img src='/icons/41311dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 6、个别驾驶员利用高科技手段对付“电子警察”<img src='/icons/41311dou2.gif' />如最近在上海、深圳等地<img src='/icons/41311dou.gif' /><img src='/icons/41311yi.gif' />种据称可以逃避电子警察监督<img src='/icons/41311de.gif' />报警器——“电子狗”在<img src='/icons/41311yi.gif' />些汽配店热销起来<img src='/icons/41311dou2.gif' />据说能帮助驾驶员逃避“电子警察”<img src='/icons/41311de.gif' />跟踪和监视<img src='/icons/41311dou.gif' />掩护闯红灯、超速、变道等违章行为<img src='/icons/41311dou2.gif' />“电子狗”在“前方有固定照相监测、流动照相路段、警车巡逻路段”等情况下均可出现语音提示<img src='/icons/41311dou.gif' />实现“反侦察”功能<img src='/icons/41311dou2.gif' /><br/><br/> <a href="/mypdf/78955.pdf" title="查看 上海的电子警察:目前国内的 电子警察 应用存在的问题 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78955.html</guid>
		</item>
		<item>
			<title><![CDATA[趋势科技网络安全专家:趋势科技2010年安全威胁预测报告出炉]]></title>
			<link>http://CrazyCoder.cn/Security/Article78954.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 从头条新闻到最新技术潮流<img src='/icons/85912dou.gif' />网络犯罪者都能够非常灵活地运用所有可能<img src='/icons/85912de.gif' />热门话题来从中牟利<img src='/icons/85912dou2.gif' />今日企业间兴起<img src='/icons/85912de.gif' /><img src='/icons/85912yi.gif' />股云计算和虚拟化风潮<img src='/icons/85912dou.gif' />势必也将吸引网络犯罪者<img src='/icons/85912de.gif' />目光<img src='/icons/85912dou.gif' />成为下<img src='/icons/85912yi.gif' />个热门<img src='/icons/85912de.gif' />网络犯罪领域<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 根据趋势科技 2010 年安全威胁报告指出<img src='/icons/85912dou.gif' />云计算和虚拟化虽然能够带来可观<img src='/icons/85912de.gif' />效益、节省大量成本<img src='/icons/85912dou.gif' />但将服务器迁移至传统信息安全边界的外<img src='/icons/85912dou.gif' />也扩大了网络犯罪者<img src='/icons/85912de.gif' />活动范围<img src='/icons/85912dou2.gif' />2009 年 11 月发生如Danger/Sidekick <img src='/icons/85912yinwei.gif' />云端服务器故障而导致大规模<img src='/icons/85912de.gif' />数据服务中断<img src='/icons/85912dou.gif' />让业界见识到网络犯罪者对云计算可能造成<img src='/icons/85912de.gif' />风险<img src='/icons/85912dou2.gif' />趋势科技技术专家预测<img src='/icons/85912dou.gif' />网络犯罪者可能<img src='/icons/85912de.gif' />做法<img src='/icons/85912dou.gif' />将不再去攻击用户<img src='/icons/85912de.gif' />电脑<img src='/icons/85912dou.gif' />而是直接攻击数据中心和云端本身<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 互联网基础架构<img src='/icons/85912de.gif' />变迁为网络犯罪者开启了更多<img src='/icons/85912de.gif' />机会<br/><br/>
&nbsp;&nbsp;&nbsp; 目前<img src='/icons/85912dou.gif' />由因特网工程工作小组 (Internet Engineering Task Force) 所设计<img src='/icons/85912de.gif' />「新<img src='/icons/85912yi.gif' />代」因特网标准 IPv6 (Internet Protocol v. 6) 目前仍处于实验阶段<img src='/icons/85912dou.gif' />这套标准未来将取代已有 2十年<img src='/icons/85912de.gif' />历史<img src='/icons/85912de.gif' /> IPv4<img src='/icons/85912dou2.gif' />随着使用者开始探索 IPv6<img src='/icons/85912dou.gif' />网络犯罪者也将跃跃欲试<img src='/icons/85912dou.gif' />趋势科技预计新<img src='/icons/85912de.gif' /><img src='/icons/85912yi.gif' />年将会出现<img src='/icons/85912yi.gif' />些针对 IPv6 <img src='/icons/85912de.gif' />概念验证攻击<img src='/icons/85912dou2.gif' />可能遭到滥用<img src='/icons/85912de.gif' />功能包括新<img src='/icons/85912de.gif' />命令和控制(C&amp;C)手段在内<img src='/icons/85912dou2.gif' />不过应该还不会锁定 IPv6 地址空间<img src='/icons/85912dou.gif' />至少在短期内不会<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 网络域名目前正逐渐地区化<img src='/icons/85912dou.gif' />黑客会运用长相类似<img src='/icons/85912de.gif' />域名发动网络钓鱼攻击<img src='/icons/85912dou.gif' />例如<img src='/icons/85912dou.gif' />使用俄罗斯文字来代替看起来很像<img src='/icons/85912de.gif' />拉丁<img src='/icons/85912zifu.gif' /><img src='/icons/85912dou2.gif' />趋势科技预料<img src='/icons/85912dou.gif' />如此将导致信誉问题<img src='/icons/85912dou.gif' />对信息安全厂商造成新<img src='/icons/85912de.gif' />挑战<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 网络犯罪者将利用社交媒体和社交网络混入使用者<img src='/icons/85912de.gif' />「好友圈」<br/><br/>
&nbsp;&nbsp;&nbsp; 社交工程仍将持续在威胁散播方面扮演重要角色<img src='/icons/85912dou2.gif' />但是<img src='/icons/85912dou.gif' />由于在社交媒体上<img src='/icons/85912de.gif' />互动和分享<img src='/icons/85912de.gif' />内容越来越丰富<img src='/icons/85912dou.gif' />在2010 年中<img src='/icons/85912dou.gif' />网络犯罪者必定比以往更努力渗透和入侵最热门<img src='/icons/85912de.gif' />社交群<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 此外<img src='/icons/85912dou.gif' />社交网络也已成为窃取个人身份信息 (Personally Ident<img src='/icons/85912if.gif' />iable Information<img src='/icons/85912dou.gif' />简称 PII) <img src='/icons/85912de.gif' />惯用途径的<img src='/icons/85912yi.gif' /><img src='/icons/85912dou2.gif' />毫无戒心<img src='/icons/85912de.gif' />使用者在个人数据文件页面所展示丰富<img src='/icons/85912de.gif' />信息<img src='/icons/85912dou.gif' />再加上互动内容当中所透露<img src='/icons/85912de.gif' />线索<img src='/icons/85912dou.gif' />早已足够让网络犯罪者进行身份盗窃活动以及社交工程攻击<img src='/icons/85912dou2.gif' />这样<img src='/icons/85912de.gif' />情况在 2010 年将变本加厉<img src='/icons/85912dou.gif' />知名度高<img src='/icons/85912de.gif' />个人将容易遭到冒名<img src='/icons/85912dou.gif' />或是银行账号遭窃<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 全球性疫情将逐渐绝迹<img src='/icons/85912dou.gif' />地区性或锁定特定对象<img src='/icons/85912de.gif' />攻击将成长<br/><br/>
&nbsp;&nbsp;&nbsp; 安全威胁形势已经改变<img src='/icons/85912dou.gif' />全球性<img src='/icons/85912de.gif' />疫情爆发已不复见<img src='/icons/85912dou.gif' />例如:Slammer(蓝宝石) 和 CodeRed(红色代码)<img src='/icons/85912dou2.gif' />甚至在 2008 年和 2009 年初广受瞩目<img src='/icons/85912de.gif' />Conficker 事件<img src='/icons/85912dou.gif' />也不算真正<img src='/icons/85912de.gif' />全球性疫情<img src='/icons/85912dou.gif' />而是精心策划<img src='/icons/85912de.gif' />共同攻击<img src='/icons/85912dou2.gif' />未来<img src='/icons/85912dou.gif' />区域性和锁定对象<img src='/icons/85912de.gif' />攻击<img src='/icons/85912dou.gif' />在数量和精密度上势必持续升高<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 以下是 2010 年以及未来<img src='/icons/85912de.gif' /><img src='/icons/85912yi.gif' />些主要预测:<br/><br/>
&nbsp;&nbsp;&nbsp; 「钱」是<img src='/icons/85912yi.gif' />切<img src='/icons/85912de.gif' />诱因<img src='/icons/85912dou.gif' />网络犯罪不可能消失<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; Windows 7 将会带来<img src='/icons/85912yi.gif' />些影响<img src='/icons/85912dou.gif' /><img src='/icons/85912yinwei.gif' /><img src='/icons/85912dou.gif' />其预设<img src='/icons/85912de.gif' />安全等级比 Vista 稍低<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 就算使用非主流<img src='/icons/85912de.gif' />浏览器或操作系统也无法避免风险<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 恶意<img src='/icons/85912chengxu.gif' />每几个小时就会变形<img src='/icons/85912yi.gif' />次<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 强制性感染已经成为常态<img src='/icons/85912dou.gif' />只要浏览到恶意网站WebSite就会感染<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 未来将出现针对虚拟化和云计算环境<img src='/icons/85912de.gif' />攻击方式<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; Bot <img src='/icons/85912chengxu.gif' />将永远存在<img src='/icons/85912dou.gif' />无法根除<img src='/icons/85912dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 企业网络/社交网络<img src='/icons/85912de.gif' />数据外泄事件仍将持续发生<img src='/icons/85912dou2.gif' /><br/><br/> <a href="/mypdf/78954.pdf" title="查看 趋势科技网络安全专家:趋势科技2010年安全威胁预测报告出炉 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78954.html</guid>
		</item>
		<item>
			<title><![CDATA[内网外网通信:内网通信安全的 9项技术措施]]></title>
			<link>http://CrazyCoder.cn/Security/Article78953.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 内网是网络应用中<img src='/icons/30513de.gif' /><img src='/icons/30513yi.gif' />个主要组成部分<img src='/icons/30513dou.gif' />其安全性也受到越来越多<img src='/icons/30513de.gif' />重视<img src='/icons/30513dou2.gif' />据不完全统计<img src='/icons/30513dou.gif' />国外在建设内网时<img src='/icons/30513dou.gif' />投资额<img src='/icons/30513de.gif' />15%是用于加强内网<img src='/icons/30513de.gif' />网络安全<img src='/icons/30513dou2.gif' />在我国IT市场中<img src='/icons/30513dou.gif' />安全厂商保持着旺盛<img src='/icons/30513de.gif' />增长势头<img src='/icons/30513dou2.gif' />运营商在内网安全方面<img src='/icons/30513de.gif' />投资比例不如国外多<img src='/icons/30513dou.gif' />但依然保持着持续<img src='/icons/30513de.gif' />增长态势<img src='/icons/30513dou2.gif' />要提高内网<img src='/icons/30513de.gif' />安全<img src='/icons/30513dou.gif' />可以使用<img src='/icons/30513de.gif' />思路方法很多<img src='/icons/30513dou.gif' />本文将就此做<img src='/icons/30513yi.gif' />些探讨<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 采用安全交换机<br/><br/>
&nbsp;&nbsp;&nbsp; 由于内网<img src='/icons/30513de.gif' />信息传输采用广播技术<img src='/icons/30513dou.gif' />数据包在广播域中很容易受到监听和截获<img src='/icons/30513dou.gif' />因此需要使用安全交换机<img src='/icons/30513dou.gif' />利用网络分段及VLAN<img src='/icons/30513de.gif' />思路方法从物理上或逻辑上隔离网络资源<img src='/icons/30513dou.gif' />以加强内网<img src='/icons/30513de.gif' />安全性<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 操作系统<img src='/icons/30513de.gif' />安全<br/><br/>
&nbsp;&nbsp;&nbsp; 从终端用户<img src='/icons/30513de.gif' /><img src='/icons/30513chengxu.gif' />到服务器应用服务、以及网络安全<img src='/icons/30513de.gif' />很多技术<img src='/icons/30513dou.gif' />都是运行在操作系统上<img src='/icons/30513de.gif' /><img src='/icons/30513dou.gif' />因此<img src='/icons/30513dou.gif' />保证操作系统<img src='/icons/30513de.gif' />安全是整个安全系统<img src='/icons/30513de.gif' />根本<img src='/icons/30513dou2.gif' />除了不断增加安全补丁的外<img src='/icons/30513dou.gif' />还需要建立<img src='/icons/30513yi.gif' />套对系统<img src='/icons/30513de.gif' />监控系统<img src='/icons/30513dou.gif' />并建立和实施有效<img src='/icons/30513de.gif' />用户口令和访问控制等制度<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 对重要资料进行备份<br/><br/>
&nbsp;&nbsp;&nbsp; 在内网系统中数据对用户<img src='/icons/30513de.gif' />重要性越来越大<img src='/icons/30513dou.gif' />实际上引起电脑数据流失或被损坏、篡改<img src='/icons/30513de.gif' />原因已经远超出了可知<img src='/icons/30513de.gif' />病毒或恶意<img src='/icons/30513de.gif' />攻击<img src='/icons/30513dou.gif' />用户<img src='/icons/30513de.gif' /><img src='/icons/30513yi.gif' />次<img src='/icons/30513cuowu.gif' />操作<img src='/icons/30513dou.gif' />系统<img src='/icons/30513de.gif' /><img src='/icons/30513yi.gif' />次意外断电以及其他<img src='/icons/30513yi.gif' />些更有针对性<img src='/icons/30513de.gif' />灾难可能对用户造成<img src='/icons/30513de.gif' />损失比直接<img src='/icons/30513de.gif' />病毒和黑客攻击还要大<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 为了维护企业内网<img src='/icons/30513de.gif' />安全<img src='/icons/30513dou.gif' />必须对重要资料进行备份<img src='/icons/30513dou.gif' />以防止<img src='/icons/30513yinwei.gif' />各种软硬件故障、病毒<img src='/icons/30513de.gif' />侵袭和黑客<img src='/icons/30513de.gif' />破坏等原因导致系统崩溃<img src='/icons/30513dou.gif' />进而蒙受重大损失<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 对数据<img src='/icons/30513de.gif' />保护来说<img src='/icons/30513dou.gif' />选择功能完善、使用灵活<img src='/icons/30513de.gif' />备份软件Software是必不可少<img src='/icons/30513de.gif' /><img src='/icons/30513dou2.gif' />目前应用中<img src='/icons/30513de.gif' />备份软件Software是比较多<img src='/icons/30513de.gif' /><img src='/icons/30513dou.gif' />配合各种灾难恢复软件Software<img src='/icons/30513dou.gif' />可以较为全面地保护数据<img src='/icons/30513de.gif' />安全<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 使用代理网关<br/><br/>
&nbsp;&nbsp;&nbsp; 使用代理网关<img src='/icons/30513de.gif' />好处在于<img src='/icons/30513dou.gif' />网络数据包<img src='/icons/30513de.gif' />交换不会直接在内外网络的间进行<img src='/icons/30513dou2.gif' />内部计算机必须通过代理网关<img src='/icons/30513dou.gif' />进而才能访问到Internet <img src='/icons/30513dou.gif' />这样操作者便可以比较方便地在代理服务器上对网络内部<img src='/icons/30513de.gif' />计算机访问外部网络进行限制<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 在代理服务器两端采用区别协议标准<img src='/icons/30513dou.gif' />也可以阻止外界非法访问<img src='/icons/30513de.gif' />入侵<img src='/icons/30513dou2.gif' />还有<img src='/icons/30513dou.gif' />代理服务<img src='/icons/30513de.gif' />网关可对数据封包进行验证和对密码进行确认等安全管制<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 设置防火墙<br/><br/>
&nbsp;&nbsp;&nbsp; 防火墙<img src='/icons/30513de.gif' />选择应该适当<img src='/icons/30513dou.gif' />对于微小型<img src='/icons/30513de.gif' />企业网络<img src='/icons/30513dou.gif' />可从Norton Internet Security 、 PCcillin 、天网个人防火墙等产品中选择适合于微小型企业<img src='/icons/30513de.gif' />个人防火墙<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 而对于具有内部网络<img src='/icons/30513de.gif' />企业来说<img src='/icons/30513dou.gif' />则可选择在路由器上进行相关<img src='/icons/30513de.gif' />设置或者购买更为强大<img src='/icons/30513de.gif' />防火墙产品<img src='/icons/30513dou2.gif' />对于几乎所有<img src='/icons/30513de.gif' />路由器产品而言<img src='/icons/30513dou.gif' />都可以通过内置<img src='/icons/30513de.gif' />防火墙防范部分<img src='/icons/30513de.gif' />攻击<img src='/icons/30513dou.gif' />而硬件防火墙<img src='/icons/30513de.gif' />应用<img src='/icons/30513dou.gif' />可以使安全性得到进<img src='/icons/30513yi.gif' />步加强<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 信息保密防范<br/><br/>
&nbsp;&nbsp;&nbsp; 为了保障网络<img src='/icons/30513de.gif' />安全<img src='/icons/30513dou.gif' />也可以利用网络操作系统所提供<img src='/icons/30513de.gif' />保密措施<img src='/icons/30513dou2.gif' />以Windows为例<img src='/icons/30513dou.gif' />进行用户名登录注册<img src='/icons/30513dou.gif' />设置登录密码<img src='/icons/30513dou.gif' />设置目录和文件访问权限和密码<img src='/icons/30513dou.gif' />以控制用户只能操作什么样<img src='/icons/30513de.gif' />目录和文件<img src='/icons/30513dou.gif' />或设置用户级访问控制<img src='/icons/30513dou.gif' />以及通过主机访问Internet等<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 同时<img src='/icons/30513dou.gif' />可以加强对数据库信息<img src='/icons/30513de.gif' />保密防护<img src='/icons/30513dou2.gif' />网络中<img src='/icons/30513de.gif' />数据组织形式有文件和数据库两种<img src='/icons/30513dou2.gif' />由于文件组织形式<img src='/icons/30513de.gif' />数据缺乏共享性<img src='/icons/30513dou.gif' />数据库现已成为网络存储数据<img src='/icons/30513de.gif' />主要形式<img src='/icons/30513dou2.gif' />由于操作系统对数据库没有特殊<img src='/icons/30513de.gif' />保密措施<img src='/icons/30513dou.gif' />而数据库<img src='/icons/30513de.gif' />数据以可读<img src='/icons/30513de.gif' />形式存储其中<img src='/icons/30513dou.gif' />所以数据库<img src='/icons/30513de.gif' />保密也要采取相应<img src='/icons/30513de.gif' />思路方法<img src='/icons/30513dou2.gif' />电子邮件是企业传递信息<img src='/icons/30513de.gif' />主要途径<img src='/icons/30513dou.gif' />电子邮件<img src='/icons/30513de.gif' />传递应行加密处理<img src='/icons/30513dou2.gif' />针对计算机及其外部设备和网络部件<img src='/icons/30513de.gif' />泄密渠道<img src='/icons/30513dou.gif' />如电磁泄露、非法终端、搭线窃取、介质<img src='/icons/30513de.gif' />剩磁效应等<img src='/icons/30513dou.gif' />也可以采取相应<img src='/icons/30513de.gif' />保密措施<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 从攻击角度入手<br/><br/>
&nbsp;&nbsp;&nbsp; 目前<img src='/icons/30513dou.gif' />计算机网络系统<img src='/icons/30513de.gif' />安全威胁有很大<img src='/icons/30513yi.gif' />部分来自拒绝服务(DoS)攻击和计算机病毒攻击<img src='/icons/30513dou2.gif' />为了保护网络安全<img src='/icons/30513dou.gif' />也可以从这几个方面进行<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 对付“拒绝服务”攻击有效<img src='/icons/30513de.gif' />思路方法<img src='/icons/30513dou.gif' />是只允许跟整个Web站台有关<img src='/icons/30513de.gif' />网络流量进入<img src='/icons/30513dou.gif' />就可以预防此类<img src='/icons/30513de.gif' />黑客攻击<img src='/icons/30513dou.gif' />尤其对于ICMP封包<img src='/icons/30513dou.gif' />包括ping指令等<img src='/icons/30513dou.gif' />应当进行阻绝处理<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 通过安装非法入侵侦测系统<img src='/icons/30513dou.gif' />可以提升防火墙<img src='/icons/30513de.gif' />性能<img src='/icons/30513dou.gif' />达到监控网络、执行立即拦截动作以及分析过滤封包和内容<img src='/icons/30513de.gif' />动作<img src='/icons/30513dou.gif' />当窃取者入侵时可以立刻有效终止服务<img src='/icons/30513dou.gif' />以便有效地预防企业机密信息被窃取<img src='/icons/30513dou2.gif' />同时应限制非法用户对网络<img src='/icons/30513de.gif' />访问<img src='/icons/30513dou.gif' />规定具有IP地址<img src='/icons/30513de.gif' />工作站对本地网络设备<img src='/icons/30513de.gif' />访问权限<img src='/icons/30513dou.gif' />以防止从外界对网络设备配置<img src='/icons/30513de.gif' />非法修改<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 防范计算机病毒<br/><br/>
&nbsp;&nbsp;&nbsp; 从病毒发展趋势来看<img src='/icons/30513dou.gif' />现在<img src='/icons/30513de.gif' />病毒已经由单<img src='/icons/30513yi.gif' />传播、单种行为<img src='/icons/30513dou.gif' />变成依赖互联网传播<img src='/icons/30513dou.gif' />集电子邮件、文件传染等多种传播方式<img src='/icons/30513dou.gif' />融黑客、木马等多种攻击手段为<img src='/icons/30513yi.gif' />身<img src='/icons/30513de.gif' />广义<img src='/icons/30513de.gif' />“新病毒”<img src='/icons/30513dou2.gif' />计算机病毒更多<img src='/icons/30513de.gif' />呈现出如下<img src='/icons/30513de.gif' />特点:和Internet和Intranet更加紧密地结合<img src='/icons/30513dou.gif' />利用<img src='/icons/30513yi.gif' />切可以利用<img src='/icons/30513de.gif' />方式(如邮件、局域网、远程管理、即时通信工具等)进行传播;所有<img src='/icons/30513de.gif' />病毒都具有混合型特征<img src='/icons/30513dou.gif' />集文件传染、蠕虫、木马、黑客<img src='/icons/30513chengxu.gif' /><img src='/icons/30513de.gif' />特点于<img src='/icons/30513yi.gif' />身<img src='/icons/30513dou.gif' />破坏性大大增强;<img src='/icons/30513yinwei.gif' />其扩散极快<img src='/icons/30513dou.gif' />不再追求隐藏性<img src='/icons/30513dou.gif' />而更加注重欺骗性;利用系统漏洞将成为病毒有力<img src='/icons/30513de.gif' />传播方式<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 因此<img src='/icons/30513dou.gif' />在内网考虑防病毒时选择产品需要重点考虑以下几点:防杀毒方式需要全面地和互联网结合<img src='/icons/30513dou.gif' />不仅有传统<img src='/icons/30513de.gif' />手动查杀和文件监控<img src='/icons/30513dou.gif' />还必须对网络层、邮件客户端进行实时监控<img src='/icons/30513dou.gif' />防止病毒入侵;产品应有完善<img src='/icons/30513de.gif' />在线升级服务<img src='/icons/30513dou.gif' />使用户随时拥有最新<img src='/icons/30513de.gif' />防病毒能力;对病毒经常攻击<img src='/icons/30513de.gif' />应用<img src='/icons/30513chengxu.gif' />提供重点保护;产品厂商应具备快速反应<img src='/icons/30513de.gif' />病毒检测网<img src='/icons/30513dou.gif' />在病毒爆发<img src='/icons/30513de.gif' />第<img src='/icons/30513yi.gif' />时间即能提供解决方案;厂商能提供完整、即时<img src='/icons/30513de.gif' />反病毒咨询<img src='/icons/30513dou.gif' />提高用户<img src='/icons/30513de.gif' />反病毒意识和警觉性<img src='/icons/30513dou.gif' />尽快地让用户了解到新病毒<img src='/icons/30513de.gif' />特点和解决方案<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 密钥管理<br/><br/>
&nbsp;&nbsp;&nbsp; 在现实中<img src='/icons/30513dou.gif' />入侵者攻击Intranet目标<img src='/icons/30513de.gif' />时候<img src='/icons/30513dou.gif' />90%会把破译普通用户<img src='/icons/30513de.gif' />口令作为第<img src='/icons/30513yi.gif' />步<img src='/icons/30513dou2.gif' />以Unix系统或Linux 系统为例<img src='/icons/30513dou.gif' />先用“ finger远端主机名”找出主机上<img src='/icons/30513de.gif' />用户账号<img src='/icons/30513dou.gif' />然后用字典穷举法进行攻击<img src='/icons/30513dou2.gif' />这个破译过程是由<img src='/icons/30513chengxu.gif' />来完成<img src='/icons/30513de.gif' /><img src='/icons/30513dou2.gif' />大概十几个小时就可以把字典里<img src='/icons/30513de.gif' />单词都完成<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 如果这种思路方法不能奏效<img src='/icons/30513dou.gif' />入侵者就会仔细地寻找目标<img src='/icons/30513de.gif' />薄弱环节和漏洞<img src='/icons/30513dou.gif' />伺机夺取目标中存放口令<img src='/icons/30513de.gif' />文件 shadow或者passwd <img src='/icons/30513dou2.gif' />然后用专用<img src='/icons/30513de.gif' />破解DES加密算法<img src='/icons/30513de.gif' /><img src='/icons/30513chengxu.gif' />来解析口令<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 在内网中系统管理员必须要注意所有密码<img src='/icons/30513de.gif' />管理<img src='/icons/30513dou.gif' />如口令<img src='/icons/30513de.gif' />位数尽可能<img src='/icons/30513de.gif' />要长;不要选取显而易见<img src='/icons/30513de.gif' />信息做口令;不要在区别系统上使用同<img src='/icons/30513yi.gif' />口令;输入口令时应在无人<img src='/icons/30513de.gif' />情况下进行;口令中最好要有大小写字母、<img src='/icons/30513zifu.gif' />、数字;定期改变自己<img src='/icons/30513de.gif' />口令;定期用破解口令<img src='/icons/30513chengxu.gif' />来检测shadow文件是否安全<img src='/icons/30513dou2.gif' />没有规律<img src='/icons/30513de.gif' />口令具有较好<img src='/icons/30513de.gif' />安全性<img src='/icons/30513dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 结语<br/><br/>
&nbsp;&nbsp;&nbsp; 以上 9个方面仅是多种保障内网安全措施中<img src='/icons/30513de.gif' /><img src='/icons/30513yi.gif' />部分<img src='/icons/30513dou.gif' />为了更好地解决内网<img src='/icons/30513de.gif' />安全问题<img src='/icons/30513dou.gif' />需要有更为开阔<img src='/icons/30513de.gif' />思路看待内网<img src='/icons/30513de.gif' />安全问题<img src='/icons/30513dou2.gif' />在安全<img src='/icons/30513de.gif' />方式上<img src='/icons/30513dou.gif' />为了应付比以往更严峻<img src='/icons/30513de.gif' />“安全”挑战<img src='/icons/30513dou.gif' />安全不应再仅仅停留于“堵”、“杀”或者“防”<img src='/icons/30513dou.gif' />应该以动态<img src='/icons/30513de.gif' />方式积极主动应用来自安全<img src='/icons/30513de.gif' />挑战<img src='/icons/30513dou.gif' />因而健全<img src='/icons/30513de.gif' />内网安全管理制度及措施是保障内网安全必不可少<img src='/icons/30513de.gif' />措施<img src='/icons/30513dou2.gif' /><br/><br/> <a href="/mypdf/78953.pdf" title="查看 内网外网通信:内网通信安全的 9项技术措施 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78953.html</guid>
		</item>
		<item>
			<title><![CDATA[网络购物风险:网络购物隐含风险 企业如何说不?]]></title>
			<link>http://CrazyCoder.cn/Security/Article78952.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 春节正在向我们招手<img src='/icons/75114dou.gif' />又<img src='/icons/75114yi.gif' />个购物旺季即将到来<img src='/icons/75114dou2.gif' />而许多互联网用户并未清醒<img src='/icons/75114de.gif' />认识到这样<img src='/icons/75114yi.gif' />个事实:网络犯罪分子从未放弃通过合法购物网站WebSite窃取财务机密和个人信息<img src='/icons/75114de.gif' />企图<img src='/icons/75114dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 网络风险<img src='/icons/75114de.gif' />扩张速度惊人<img src='/icons/75114dou2.gif' />已知Web恶意软件Software有2/3出现在2008年<img src='/icons/75114dou.gif' />而这种增长速度在2009年并没有减缓<img src='/icons/75114dou2.gif' />仅在2009年上半年<img src='/icons/75114dou.gif' />以超过300 个合法品牌为目标<img src='/icons/75114de.gif' />网络钓鱼诈骗行为就增长了585%<img src='/icons/75114dou2.gif' />黑客们还对常用搜索引擎上<img src='/icons/75114de.gif' />搜索结果进行优化<img src='/icons/75114dou.gif' />诱导网民在不知不觉中下载恶意软件Software<img src='/icons/75114dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 据调查<img src='/icons/75114dou.gif' />企业中超过<img src='/icons/75114yi.gif' />半<img src='/icons/75114de.gif' />员工会用他们<img src='/icons/75114de.gif' />笔记本电脑进行网上购物--这对企业信息安全来说可不是什么好消息<img src='/icons/75114dou2.gif' />如果这些员工把恶意软件Software带回到企业网络中<img src='/icons/75114dou.gif' />其后果不难想象<img src='/icons/75114dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 每天更新<img src='/icons/75114de.gif' />桌面杀毒软件Software和拥有包层监测能力<img src='/icons/75114de.gif' />防火墙能够抵御某些网络威胁<img src='/icons/75114dou2.gif' />然而面对感染人气站点<img src='/icons/75114de.gif' />动态Web攻击<img src='/icons/75114dou.gif' />或利用特定用户对合法站点、知名品牌和搜索引擎<img src='/icons/75114de.gif' />信任进行<img src='/icons/75114de.gif' />钓鱼诈骗<img src='/icons/75114dou.gif' />它们显然难以满足全面保护<img src='/icons/75114de.gif' />需求<img src='/icons/75114dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 为了在传统防御<img src='/icons/75114de.gif' />基础上进<img src='/icons/75114yi.gif' />步强化安全性<img src='/icons/75114dou.gif' />企业应当考虑Web安全解决方案<img src='/icons/75114dou2.gif' />这类解决方案结合了内容分类和深度威胁分析技术以识别不断出现和变化<img src='/icons/75114de.gif' />威胁<img src='/icons/75114dou.gif' />随时随地保护用户不受这些威胁<img src='/icons/75114de.gif' />侵害<img src='/icons/75114dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 如今<img src='/icons/75114dou.gif' /><img src='/icons/75114yi.gif' />般<img src='/icons/75114de.gif' />Web站点是由服务器上<img src='/icons/75114de.gif' />十多个子域和URL链接构成<img src='/icons/75114de.gif' /><img src='/icons/75114dou.gif' />很容易被网络犯罪分子破坏<img src='/icons/75114dou2.gif' />企业需要通过实时URL分析和归类来实现对所有新<img src='/icons/75114de.gif' />、未知<img src='/icons/75114de.gif' />Web链接<img src='/icons/75114de.gif' />全面可视性<img src='/icons/75114dou.gif' />以确保最佳安全<img src='/icons/75114dou2.gif' />相应<img src='/icons/75114de.gif' /><img src='/icons/75114dou.gif' />这些信息必须能够即时发布至所有用户<img src='/icons/75114dou.gif' />而不是通过软件Software升级或其它<img src='/icons/75114de.gif' />下载形式来提供保护<img src='/icons/75114dou2.gif' />有了这种按需安全信息<img src='/icons/75114dou.gif' />企业内<img src='/icons/75114de.gif' />用户才能在家中、路上和公司网络中得到全面保护<img src='/icons/75114dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 网络威胁无处不在<img src='/icons/75114dou2.gif' />尽快完善下<img src='/icons/75114yi.gif' />代Web防御体系<img src='/icons/75114dou.gif' />让企业有足够<img src='/icons/75114de.gif' />底气对迅速蔓延<img src='/icons/75114de.gif' />恶意软件Software和网络钓鱼说“不”<img src='/icons/75114dou2.gif' /><br/><br/> <a href="/mypdf/78952.pdf" title="查看 网络购物风险:网络购物隐含风险 企业如何说不? 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78952.html</guid>
		</item>
		<item>
			<title><![CDATA[数据泄露:加密解密探讨:大中型企业如何防止数据泄露?]]></title>
			<link>http://CrazyCoder.cn/Security/Article78951.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 随着企业信息化进程<img src='/icons/71957de.gif' />推进<img src='/icons/71957dou.gif' />有关网络内容<img src='/icons/71957de.gif' />安全<img src='/icons/71957dou.gif' />即数据<img src='/icons/71957de.gif' />安全<img src='/icons/71957dou.gif' />日益成为企业信息化建设最重要<img src='/icons/71957de.gif' />目标<img src='/icons/71957dou2.gif' />当前中国大中型企业<img src='/icons/71957de.gif' />数据安全防护还相当薄弱<img src='/icons/71957dou.gif' />各种泄密事件屡屡发生<img src='/icons/71957dou.gif' />给企业造成沉重打击<img src='/icons/71957dou2.gif' />为了避免数据泄露<img src='/icons/71957dou.gif' />企业在加强企业信息安全管理<img src='/icons/71957dou.gif' />提高安全意识<img src='/icons/71957de.gif' />同时<img src='/icons/71957dou.gif' />必须进<img src='/icons/71957yi.gif' />步加强企业网络信息安全基础建设<img src='/icons/71957dou2.gif' />用技术手段来确保信息安全<img src='/icons/71957dou.gif' />是必不可少<img src='/icons/71957de.gif' /><img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 然而<img src='/icons/71957dou.gif' />大中型企业要做到信息防泄露是比较困难<img src='/icons/71957de.gif' /><img src='/icons/71957dou2.gif' />大中型企业往往有数千台电脑<img src='/icons/71957dou.gif' />几台甚至几十台大型服务器<img src='/icons/71957dou.gif' />还有数目不详<img src='/icons/71957de.gif' />移动硬盘、U盘<img src='/icons/71957dou.gif' />以及各个分公司、外埠出差人员<img src='/icons/71957de.gif' />电脑接入内网<img src='/icons/71957dou2.gif' />信息分布存放在各个物理位置<img src='/icons/71957dou.gif' />不论是终端电脑、服务器、笔记本电脑、移动硬盘、U盘<img src='/icons/71957dou.gif' />还是数据库<img src='/icons/71957dou.gif' />都各自保存着各种文档和数据<img src='/icons/71957dou2.gif' />任何<img src='/icons/71957yi.gif' />个环节出现纰漏<img src='/icons/71957dou.gif' />都会导致数据泄露事件<img src='/icons/71957de.gif' />发生<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 如何确保大中型企业<img src='/icons/71957de.gif' />数据安全？<br/><br/>
&nbsp;&nbsp;&nbsp; 根据当前主流<img src='/icons/71957de.gif' />数据安全分域防护理论<img src='/icons/71957dou.gif' />专家建议<img src='/icons/71957dou.gif' />把整个企业网络及其存储设备<img src='/icons/71957dou.gif' />分为 5大安全域<img src='/icons/71957dou.gif' />分别控制<img src='/icons/71957dou.gif' />统<img src='/icons/71957yi.gif' />防护<img src='/icons/71957dou.gif' />实现整体<img src='/icons/71957yi.gif' />致<img src='/icons/71957de.gif' />数据泄露防护<img src='/icons/71957dou.gif' />是科学有效<img src='/icons/71957de.gif' />数据安全管理办法<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 所谓数据防泄露分域安全理论<img src='/icons/71957dou.gif' />就是把连接到企业网络<img src='/icons/71957de.gif' />各种物理设备<img src='/icons/71957dou.gif' />划分为:终端、端口、磁盘、服务器(包括数据库)和移动存储设备 5大安全区域<img src='/icons/71957dou.gif' />针对区别<img src='/icons/71957de.gif' />安全域采用对应<img src='/icons/71957de.gif' />产品进行保护<img src='/icons/71957dou2.gif' />可以侧重于对终端进行防护<img src='/icons/71957dou.gif' />也可以针对服务器和数据库进行重点防护<img src='/icons/71957dou2.gif' />根据企业自身<img src='/icons/71957de.gif' />信息安全现状<img src='/icons/71957dou.gif' />可以有针对性地选择防护重点<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; <img src='/icons/71957yi.gif' />、 终端数据防泄露<br/><br/>
&nbsp;&nbsp;&nbsp; 提到终端安全<img src='/icons/71957dou.gif' />大家<img src='/icons/71957yi.gif' />定会想到赛门铁克<img src='/icons/71957dou2.gif' />这家总部位于美国<img src='/icons/71957de.gif' />世界级信息安全公司<img src='/icons/71957de.gif' />广告口号就是:赛门铁克就是终端安全<img src='/icons/71957dou2.gif' />针对终端数据防泄露<img src='/icons/71957dou.gif' />赛门铁克以收购Vontu而来<img src='/icons/71957de.gif' />数据丢失防护(DLP<img src='/icons/71957dou.gif' />Data Loss Prevention)产品<img src='/icons/71957dou.gif' />在全球范围包括美国、欧洲、南亚等多数国家取得了极大<img src='/icons/71957de.gif' />商业成功<img src='/icons/71957dou2.gif' />其DLP产品几乎是毫无阻碍地获得各个国家<img src='/icons/71957de.gif' />认同<img src='/icons/71957dou.gif' />并得到实施<img src='/icons/71957dou2.gif' />然而<img src='/icons/71957dou.gif' />赛门铁克在日本和中国这两个对信息安全把控最严密<img src='/icons/71957de.gif' />国家<img src='/icons/71957dou.gif' />却迟迟得不到进展<img src='/icons/71957dou2.gif' />赛门铁克DLP<img src='/icons/71957de.gif' />硬伤主要在于 3个方面:1、高昂<img src='/icons/71957de.gif' />价格使其成为贵族用品;2、本地化比较差<img src='/icons/71957dou2.gif' />由于英语系国家在语言和技术交流方面<img src='/icons/71957de.gif' />通畅<img src='/icons/71957dou.gif' />所以接受DLP比较容易<img src='/icons/71957dou.gif' />但在中国<img src='/icons/71957dou.gif' />赛门铁克还有更多本地化工作要做<img src='/icons/71957dou2.gif' />3、中国政府对信息安全产品<img src='/icons/71957de.gif' />政策<img src='/icons/71957dou.gif' />使得国外信息安全产品只能局限于外企进行销售<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 不仅是赛门铁克<img src='/icons/71957dou.gif' />还有趋势科技、Websense、麦咖啡等厂家<img src='/icons/71957de.gif' />DLP产品在中国也有同样<img src='/icons/71957de.gif' />状况<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 其实<img src='/icons/71957dou.gif' />在终端数据防泄露方面<img src='/icons/71957dou.gif' />中国人是值得自豪<img src='/icons/71957de.gif' /><img src='/icons/71957dou2.gif' />以北京亿赛通为首<img src='/icons/71957de.gif' />中国DLP厂商<img src='/icons/71957dou.gif' />从2001年就开始研发<img src='/icons/71957de.gif' />加密软件Software<img src='/icons/71957dou.gif' />足以确保终端数据防泄露<img src='/icons/71957dou2.gif' />国内信息安全厂商在政府<img src='/icons/71957de.gif' />保护下<img src='/icons/71957dou.gif' />获得发展机遇<img src='/icons/71957dou.gif' />这是<img src='/icons/71957yi.gif' />个基本事实<img src='/icons/71957dou2.gif' />中国人以独有<img src='/icons/71957de.gif' />技术敏感和产品领悟力<img src='/icons/71957dou.gif' />推出<img src='/icons/71957de.gif' />文件透明加密、权限管理、外发控制等软件Software<img src='/icons/71957dou.gif' />以文档透明加密为核心<img src='/icons/71957dou.gif' />辅以权限控制<img src='/icons/71957dou.gif' />外发管理、日志审计等功能<img src='/icons/71957dou.gif' />能从源头上确保数据安全<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 不论是数千点<img src='/icons/71957de.gif' />宇龙通信、正泰科技<img src='/icons/71957dou.gif' />数万点甚至十万点<img src='/icons/71957de.gif' />比亚迪集团、中集集团、中国移动集团<img src='/icons/71957dou.gif' />还是数十万点<img src='/icons/71957de.gif' />全球性跨国公司<img src='/icons/71957dou.gif' />都已经采用亿赛通终端数据防泄露系统<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 针对终端信息安全<img src='/icons/71957dou.gif' />可以采用文档透明加密系统SmartSec、文档权限管理系统DRM文档安全管理系统CDG和文档外发控制系统ODM<img src='/icons/71957dou2.gif' />除此的外<img src='/icons/71957dou.gif' />国内也有其他加密软件Software可采用<img src='/icons/71957dou.gif' />但从产品性能来看<img src='/icons/71957dou.gif' />稍逊<img src='/icons/71957yi.gif' />筹<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;  2、 磁盘数据防泄露<br/><br/>
&nbsp;&nbsp;&nbsp; 磁盘是存储数据<img src='/icons/71957de.gif' />物理设备<img src='/icons/71957dou2.gif' />针对磁盘进行管控<img src='/icons/71957dou.gif' />就可以防止数据泄露<img src='/icons/71957dou2.gif' />当前<img src='/icons/71957dou.gif' />防止磁盘数据泄露<img src='/icons/71957dou.gif' />全球最领先<img src='/icons/71957de.gif' />技术是全磁盘加密(Full Disk Encryption)<img src='/icons/71957dou2.gif' />有关全磁盘加密(FDE)软件Software<img src='/icons/71957dou.gif' />可参阅<img src='/icons/71957smhl.gif' />全磁盘加密(FDE)软件Software性能大揭秘<img src='/icons/71957smhr.gif' />和<img src='/icons/71957smhl.gif' />全磁盘加密(FDE)软件Software概述<img src='/icons/71957smhr.gif' /><img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 通过对磁盘全盘加密来保护数据安全<img src='/icons/71957dou.gif' />是国际上主流信息安全厂商推出<img src='/icons/71957de.gif' />技术<img src='/icons/71957dou2.gif' />国外企业级用户通常会采用最著名<img src='/icons/71957de.gif' />Po<img src='/icons/71957int.gif' />sec和Safeboot<img src='/icons/71957dou2.gif' />Checkpo<img src='/icons/71957int.gif' />公司花费5.8亿美元收购Protect Data公司所获得了终端和移动设备数据安全产品Po<img src='/icons/71957int.gif' />sec<img src='/icons/71957dou.gif' />其实在此的前已在全球得到应用<img src='/icons/71957dou2.gif' />Safeboot被麦咖啡公司收购<img src='/icons/71957dou.gif' />集成到麦咖啡<img src='/icons/71957de.gif' />数据泄露防护(DLP)系统中<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 由于中国政府对企业信息安全<img src='/icons/71957de.gif' />保护<img src='/icons/71957dou.gif' />中国企业不能使用国外加密软件Software产品<img src='/icons/71957dou2.gif' />国家法律规定<img src='/icons/71957dou.gif' />凡涉及到商用密码<img src='/icons/71957de.gif' />软件Software产品<img src='/icons/71957dou.gif' />都必须由具备国家商用密码生产定点单位资格和国家商用密码销售许可单位资格<img src='/icons/71957de.gif' />企业生产和销售<img src='/icons/71957dou2.gif' />而且<img src='/icons/71957dou.gif' />还必须具备国家保密局、军队和公安部<img src='/icons/71957de.gif' />相关销售资质才可以在国内销售<img src='/icons/71957dou2.gif' />因此<img src='/icons/71957dou.gif' />国外FDE软件Software在中国不能得到广泛应用<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 可喜<img src='/icons/71957de.gif' />是<img src='/icons/71957dou.gif' />中国软件Software企业在FDE软件Software方面并不落后于国外软件Software厂商<img src='/icons/71957dou2.gif' />北京亿赛通于2008年推出<img src='/icons/71957de.gif' />DiskSec软件Software具备强大<img src='/icons/71957de.gif' />功能<img src='/icons/71957dou.gif' />有单机版和企业版可以选用<img src='/icons/71957dou2.gif' />从性能上看<img src='/icons/71957dou.gif' />比国外同类型<img src='/icons/71957de.gif' />企业级FDE软件Software要高<img src='/icons/71957dou2.gif' />DiskSec不仅是<img src='/icons/71957yi.gif' />款能保护PC、笔记本电脑、移动存储设备<img src='/icons/71957de.gif' />多功能FDE软件Software<img src='/icons/71957dou.gif' />可以用于企业级<img src='/icons/71957de.gif' />终端保护<img src='/icons/71957dou.gif' />还可和电脑生产厂家联合推出全加密硬盘电脑<img src='/icons/71957dou.gif' />具备强大<img src='/icons/71957de.gif' />适用性<img src='/icons/71957dou2.gif' />目前DiskSec在中国空军全军得到应用<img src='/icons/71957dou.gif' />部署规模为10万台笔记本终端<img src='/icons/71957dou2.gif' />除此的外<img src='/icons/71957dou.gif' />在金融、电信、电力、制造业等多个行业都已经有大量PC和笔记本电脑部署DiskSec<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;  3、 端口数据泄露防护<br/><br/>
&nbsp;&nbsp;&nbsp; 通过端口管控<img src='/icons/71957dou.gif' />来防止数据泄露<img src='/icons/71957dou.gif' />似乎中软公司<img src='/icons/71957de.gif' />防水墙已经为公众所熟知<img src='/icons/71957dou2.gif' />从技术上讲<img src='/icons/71957dou.gif' />防水墙本身<img src='/icons/71957de.gif' />门槛比较低<img src='/icons/71957dou.gif' />开发难度不大<img src='/icons/71957dou2.gif' />已经有多种品牌<img src='/icons/71957de.gif' />端口防护软件Software面世<img src='/icons/71957dou.gif' />也得到了比较广泛<img src='/icons/71957de.gif' />应用<img src='/icons/71957dou2.gif' />不论是物理端口<img src='/icons/71957dou.gif' />还是网络端口<img src='/icons/71957dou.gif' />基本上都能得到保护<img src='/icons/71957dou2.gif' />但是<img src='/icons/71957dou.gif' />从理论上说<img src='/icons/71957dou.gif' />只要数据进行了加密<img src='/icons/71957dou.gif' />就不再需要外围<img src='/icons/71957de.gif' />端口防护<img src='/icons/71957dou2.gif' />既已进行了加密<img src='/icons/71957dou.gif' />又对端口进行防护<img src='/icons/71957dou.gif' />貌似有重复建设的疑<img src='/icons/71957dou2.gif' />但是企业可以采用多重防护来保护数据<img src='/icons/71957dou.gif' />这是可以采用<img src='/icons/71957de.gif' />办法<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 当前在市面上主流<img src='/icons/71957de.gif' />端口防护软件Software比较多<img src='/icons/71957dou.gif' />其中以中软防水墙和北京亿赛通设备安全管理系统DeviceSec为主流<img src='/icons/71957dou2.gif' />后者的所以能跻身为主流<img src='/icons/71957dou.gif' />是<img src='/icons/71957yinwei.gif' />DeviceSec能结合加密软件Software形成整体防护体系<img src='/icons/71957dou2.gif' />相比较而言<img src='/icons/71957dou.gif' />DeviceSec结合加密功能<img src='/icons/71957dou.gif' />安全程度要高于单<img src='/icons/71957yi.gif' /><img src='/icons/71957de.gif' />端口防护软件Software防水墙<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;  4、 服务器(数据库)数据防泄露<br/><br/>
&nbsp;&nbsp;&nbsp; 大中型企业<img src='/icons/71957de.gif' />数据安全最重要<img src='/icons/71957de.gif' />地方<img src='/icons/71957dou.gif' />应该是保护服务器和数据库<img src='/icons/71957dou2.gif' />针对文件服务器数据<img src='/icons/71957dou.gif' />目前主要还是通过身份认证和权限控制这两种访问控制手段来确保安全<img src='/icons/71957dou2.gif' />而针对应用服务器数据安全<img src='/icons/71957dou.gif' />相应<img src='/icons/71957de.gif' />技术手段是相当孱弱<img src='/icons/71957de.gif' /><img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 数据库<img src='/icons/71957de.gif' />数据安全保护则更为复杂<img src='/icons/71957dou.gif' />有 3种主要<img src='/icons/71957de.gif' />手段:　1、基于文件<img src='/icons/71957de.gif' />数据库加密技术;2、基于记录<img src='/icons/71957de.gif' />数据库加密技术;3、子密钥数据库加密<img src='/icons/71957dou2.gif' />但是这 3种手段都会给数据库<img src='/icons/71957de.gif' />性能带来极大<img src='/icons/71957de.gif' />影响<img src='/icons/71957dou2.gif' />针对数据库防泄露<img src='/icons/71957dou.gif' />必须采用更为先进<img src='/icons/71957de.gif' />技术手段<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 针对服务器和数据库<img src='/icons/71957dou.gif' />全球最为领先<img src='/icons/71957de.gif' />技术和产品已经诞生<img src='/icons/71957dou2.gif' />北京亿赛通于2008年底推出<img src='/icons/71957de.gif' />文档安全网关系统FileNetSec<img src='/icons/71957dou.gif' />已经在国内诸多大型企业部署实施<img src='/icons/71957dou2.gif' />广发证券、宇龙通信、中信证券等企业纷纷采用FileNetSec来对核心数据进行加密保护<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;  5、 移动存储设备防泄密<br/><br/>
&nbsp;&nbsp;&nbsp; 移动存储设备主要指移动硬盘、U盘、PC储存卡、MP3、MP4、数码照相机、数码摄像机、手机、光盘和软盘等<img src='/icons/71957dou2.gif' />随着移动存储设备<img src='/icons/71957de.gif' />广泛使用<img src='/icons/71957dou.gif' />移动存储设备导致泄密<img src='/icons/71957de.gif' />现象越来越普遍<img src='/icons/71957dou2.gif' />目前针对移动设备泄密<img src='/icons/71957de.gif' />解决办法主要有两方面:<img src='/icons/71957yi.gif' />是对计算机及内部网络各种端口进行管控<img src='/icons/71957dou.gif' />对接入端口<img src='/icons/71957de.gif' />移动设备进行统<img src='/icons/71957yi.gif' />认证<img src='/icons/71957dou.gif' />硬件绑定等方式<img src='/icons/71957dou.gif' />限制移动存储设备<img src='/icons/71957de.gif' />使用; 2是对移动存储设备本身设置口令/密码进行身份识别<img src='/icons/71957dou.gif' />并且对移动存储设备内<img src='/icons/71957de.gif' />数据进行加密<img src='/icons/71957dou2.gif' />通常所谓<img src='/icons/71957de.gif' />介质管理<img src='/icons/71957dou.gif' />就是指移动存储设备管理<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 目前在市场上有关移动存储设备管理<img src='/icons/71957de.gif' />软件Software系统有很多<img src='/icons/71957dou.gif' />比如北京亿赛通、国迈、北信源、博瑞勤等<img src='/icons/71957dou2.gif' />在军工、政府等部门<img src='/icons/71957dou.gif' />有关介质管理是有严格规定<img src='/icons/71957de.gif' /><img src='/icons/71957dou.gif' />往往都是由各省级主管部门下文<img src='/icons/71957dou.gif' />强制各下属单位部署介质管理系统<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 但是<img src='/icons/71957dou.gif' /><img src='/icons/71957yi.gif' />般<img src='/icons/71957de.gif' />介质管理系统有<img src='/icons/71957yi.gif' />个致命<img src='/icons/71957de.gif' />缺陷<img src='/icons/71957dou.gif' />就是只能对移动设备进行管理<img src='/icons/71957dou2.gif' />只对移动存储设备这<img src='/icons/71957yi.gif' />个安全域进行管控<img src='/icons/71957dou.gif' />是远远不够<img src='/icons/71957de.gif' /><img src='/icons/71957dou2.gif' />根据企业<img src='/icons/71957de.gif' />信息安全需求<img src='/icons/71957dou.gif' />需要对各个区别<img src='/icons/71957de.gif' />安全域都进行管控<img src='/icons/71957dou.gif' />才能实现整体<img src='/icons/71957yi.gif' />致<img src='/icons/71957de.gif' />防护体系<img src='/icons/71957dou.gif' />实现全面<img src='/icons/71957de.gif' />数据防泄露<img src='/icons/71957dou2.gif' />因此<img src='/icons/71957dou.gif' />选择介质管理系统<img src='/icons/71957dou.gif' />要考虑和企业其他安全域兼容<img src='/icons/71957yi.gif' />体<img src='/icons/71957dou2.gif' />在这方面<img src='/icons/71957dou.gif' />北京亿赛通走在了前面<img src='/icons/71957dou.gif' />介质管理是亿赛通数据泄露防护(DLP)体系中不可缺少<img src='/icons/71957de.gif' /><img src='/icons/71957yi.gif' />环<img src='/icons/71957dou2.gif' />不仅能完全保护移动设备安全<img src='/icons/71957dou.gif' />还能和其他安全系统形成<img src='/icons/71957yi.gif' />套完整<img src='/icons/71957de.gif' />防护体系<img src='/icons/71957dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 整理总结:孙子兵法云:不谋全局者<img src='/icons/71957dou.gif' />不足谋<img src='/icons/71957yi.gif' />域<img src='/icons/71957dou2.gif' />虽然对内网系统划分为 5大安全域<img src='/icons/71957dou.gif' />但是<img src='/icons/71957dou.gif' />要做到分域安全和全面防护相统<img src='/icons/71957yi.gif' /><img src='/icons/71957dou.gif' />必须统<img src='/icons/71957yi.gif' />考虑<img src='/icons/71957dou.gif' />统<img src='/icons/71957yi.gif' />架构<img src='/icons/71957dou.gif' />统<img src='/icons/71957yi.gif' />部署<img src='/icons/71957dou2.gif' />大中型企业要实现数据防泄露<img src='/icons/71957dou.gif' />对各个安全域<img src='/icons/71957de.gif' />特点和具体需求<img src='/icons/71957dou.gif' />都要充分考虑<img src='/icons/71957dou.gif' />周密部署<img src='/icons/71957dou.gif' />以实现整体数据泄露防护(DLP)<img src='/icons/71957dou2.gif' /><br/><br/> <a href="/mypdf/78951.pdf" title="查看 数据泄露:加密解密探讨:大中型企业如何防止数据泄露? 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78951.html</guid>
		</item>
		<item>
			<title><![CDATA[中国军工网:震惊国人的中国军工所潜艇资料泄密事件]]></title>
			<link>http://CrazyCoder.cn/Security/Article78950.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 中原古都<img src='/icons/16559dou.gif' /><img src='/icons/16559yi.gif' />个参和中国海军潜艇科研项目<img src='/icons/16559de.gif' />军工科研所发生重大泄密事件<img src='/icons/16559dou2.gif' />当事人是<img src='/icons/16559yi.gif' />名彭姓科研人员<img src='/icons/16559dou2.gif' />中秋前<img src='/icons/16559dou.gif' />他用工作电脑上网查阅自己<img src='/icons/16559de.gif' />邮箱时<img src='/icons/16559dou.gif' />收到了<img src='/icons/16559yi.gif' />封“国防科工委办公厅<img src='/icons/16559de.gif' />中秋贺卡”<img src='/icons/16559dou.gif' />他信手点开<img src='/icons/16559dou.gif' />结果<img src='/icons/16559yi.gif' />下子就中了网络间谍攻击<img src='/icons/16559de.gif' />招<img src='/icons/16559dou2.gif' />那封邮件完全是伪造<img src='/icons/16559de.gif' /><img src='/icons/16559dou.gif' />捆绑着某境外情报机构特制<img src='/icons/16559de.gif' />间谍<img src='/icons/16559chengxu.gif' /><img src='/icons/16559dou.gif' /><img src='/icons/16559yi.gif' />经点击就控制了彭某<img src='/icons/16559de.gif' />工作电脑<img src='/icons/16559dou.gif' />彭某<img src='/icons/16559de.gif' />电脑中还违规存储了大量军工科研项目<img src='/icons/16559de.gif' />资料<img src='/icons/16559dou.gif' />结果<img src='/icons/16559dou.gif' />连潜艇隐身材料这样<img src='/icons/16559de.gif' />军工技术机密都被间谍<img src='/icons/16559chengxu.gif' />从网上窃走<img src='/icons/16559dou.gif' />难以估量<img src='/icons/16559de.gif' />军事情报损失就在看似平常<img src='/icons/16559de.gif' />“小疏忽”中酿成了<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; <img src='/icons/16559yi.gif' />、谍影重重<img src='/icons/16559dou.gif' />涉密信息安全岌岌可危<br/><br/>
&nbsp;&nbsp;&nbsp; 作为<img src='/icons/16559yi.gif' />个正在崛起<img src='/icons/16559de.gif' />大国<img src='/icons/16559dou.gif' />中国内部<img src='/icons/16559de.gif' />所有情报<img src='/icons/16559dou.gif' />无论涉及政治、战略、军事、外交、经济、金融<img src='/icons/16559dou.gif' />还是民族、科技、教育、卫生等等<img src='/icons/16559dou.gif' />境外情报部门无不觊觎<img src='/icons/16559dou.gif' />网络间谍工具因此也就无不搜寻、无不窃取<img src='/icons/16559dou2.gif' />中国已经处在众多境外情报机构<img src='/icons/16559de.gif' />网络围攻的中<img src='/icons/16559dou.gif' />而网络间谍围攻是全方位、全天候<img src='/icons/16559de.gif' /><img src='/icons/16559dou.gif' />攻击面极其广泛<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 国外网络间谍攻击<img src='/icons/16559de.gif' />重中的重主要军队、首脑机关、军工科研和制造单位<img src='/icons/16559dou.gif' />中国<img src='/icons/16559de.gif' />战略、国防和军工情报<img src='/icons/16559dou.gif' />像军事部署、武器装备、国防高新技术等等<img src='/icons/16559dou2.gif' />只要和党、政、军或者重要行业、重大项目沾上<img src='/icons/16559yi.gif' />点边<img src='/icons/16559de.gif' />人和单位<img src='/icons/16559dou.gif' />其电脑就可能处在境外特种部门<img src='/icons/16559de.gif' />网攻窃密威胁的中<img src='/icons/16559dou.gif' />稍有机会间谍<img src='/icons/16559chengxu.gif' />就会悄然侵入<img src='/icons/16559dou2.gif' />党政机关<img src='/icons/16559de.gif' />很多领导部门<img src='/icons/16559dou.gif' />还有参和重大国防、科研项目<img src='/icons/16559de.gif' />要害机构和保密单位<img src='/icons/16559de.gif' />电脑<img src='/icons/16559dou.gif' />都留下了境外间谍机构网络窃密<img src='/icons/16559de.gif' />痕迹<img src='/icons/16559dou2.gif' />大量涉密资料在互联网上外泄<img src='/icons/16559dou.gif' />某些单位<img src='/icons/16559de.gif' />工作电脑已经被网络间谍工具长期控制<img src='/icons/16559dou.gif' />个别重要机构<img src='/icons/16559de.gif' />工作电脑中甚至被植入了十几种境外特种机构<img src='/icons/16559de.gif' />间谍木马<img src='/icons/16559dou2.gif' />利用互联网攻击、策反和传输来获取中国情报<img src='/icons/16559dou.gif' />已是境外情报机构对中国开展间谍活动<img src='/icons/16559de.gif' /><img src='/icons/16559yi.gif' />种常规手段<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 除了国家级机密<img src='/icons/16559dou.gif' />中国许多重要企业<img src='/icons/16559de.gif' />商业机密<img src='/icons/16559dou.gif' />也是间谍下手<img src='/icons/16559de.gif' />目标<img src='/icons/16559dou.gif' />国人尽知<img src='/icons/16559de.gif' />“力拓门泄密案件”<img src='/icons/16559dou.gif' />即为明证<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;  2、中国防泄密专家分析数据泄露<img src='/icons/16559de.gif' />主要原因和途径<br/><br/>
&nbsp;&nbsp;&nbsp; 梁金千<img src='/icons/16559dou.gif' />清华大学博士、教授<img src='/icons/16559dou.gif' />国内信息安全知名专家<img src='/icons/16559dou.gif' />北京亿赛通公司研发总负责人<img src='/icons/16559dou2.gif' />亿赛通是中国第<img src='/icons/16559yi.gif' />家专业从事加密软件Software开发、生产、销售<img src='/icons/16559de.gif' />企业<img src='/icons/16559dou.gif' />目前在中国数据防泄露领域处于绝对领先地位<img src='/icons/16559dou2.gif' />梁教授亲自领导研发加密产品<img src='/icons/16559dou.gif' />并实施国内政府、军工和企业数据保护工程<img src='/icons/16559dou2.gif' />例如军队军工级项目中国空军<img src='/icons/16559dou.gif' />中国解放军 2炮<img src='/icons/16559dou.gif' />政府级项目如中国外交部项目<img src='/icons/16559dou2.gif' />企业级项目多达百余项<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 梁教授指出<img src='/icons/16559dou.gif' />数据防泄露必须结合管理手段和技术手段<img src='/icons/16559dou.gif' />两手抓<img src='/icons/16559dou.gif' />两手都要硬<img src='/icons/16559dou2.gif' />这是<img src='/icons/16559yi.gif' />项长期而复杂<img src='/icons/16559de.gif' />系统工程<img src='/icons/16559dou2.gif' />但是技术手段<img src='/icons/16559de.gif' />缺失<img src='/icons/16559dou.gif' />是当前中国数据泄露案件发生<img src='/icons/16559de.gif' />主要原因<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 梁教授进<img src='/icons/16559yi.gif' />步指出<img src='/icons/16559dou.gif' />数据泄露<img src='/icons/16559de.gif' />原因主要有 3种:窃密、泄密和失密<img src='/icons/16559dou2.gif' />结合各种实际情况<img src='/icons/16559dou.gif' />数据泄露<img src='/icons/16559de.gif' />主要途径有以下 7种:<br/><br/>
&nbsp;&nbsp;&nbsp; 1. 国外黑客和间谍窃密<br/><br/>
&nbsp;&nbsp;&nbsp; 例如本文提及<img src='/icons/16559de.gif' />中国军工研究所潜艇资料泄密案件<img src='/icons/16559dou.gif' />就是国外间谍窃取信息<img src='/icons/16559de.gif' />典型案例<img src='/icons/16559dou2.gif' />目前国际国内许多黑客和间谍<img src='/icons/16559dou.gif' />通过层出不穷<img src='/icons/16559de.gif' />技术手段<img src='/icons/16559dou.gif' />窃取国内各种重要信息<img src='/icons/16559dou.gif' />已经成为中国信息安全<img src='/icons/16559de.gif' />巨大威胁<img src='/icons/16559dou2.gif' />如果放任不管<img src='/icons/16559dou.gif' />必将造成无可估量<img src='/icons/16559de.gif' />损失<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 2. 外部竞争对手窃密<br/><br/>
&nbsp;&nbsp;&nbsp; 在企业和企业的间<img src='/icons/16559dou.gif' />由于商业竞争关系<img src='/icons/16559dou.gif' />各种商业机密<img src='/icons/16559de.gif' />保护是企业自身安全中必不可少<img src='/icons/16559de.gif' />重要内容<img src='/icons/16559dou2.gif' />如果中国企业不重视自身机密信息<img src='/icons/16559de.gif' />保护<img src='/icons/16559dou.gif' />不仅会造成商业竞争<img src='/icons/16559de.gif' />被动<img src='/icons/16559dou.gif' />直接损失造成经济损失<img src='/icons/16559dou.gif' />甚至会导致整体行业<img src='/icons/16559de.gif' />衰落和灭亡<img src='/icons/16559dou2.gif' />“力拓门”事件已经给中国钢铁企业带来巨大<img src='/icons/16559de.gif' />经济损失<img src='/icons/16559dou.gif' />为中国企业敲响了警钟<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 3. 内部人员离职拷贝带走资料泄密<br/><br/>
&nbsp;&nbsp;&nbsp; 公务员离职现象还算比较少<img src='/icons/16559dou.gif' />但是企业从业人员离职跳槽现象非常普遍<img src='/icons/16559dou2.gif' />由于中国企业不重视知识产权保护<img src='/icons/16559dou.gif' />不重视机密信息安全<img src='/icons/16559dou.gif' />所以离职人员在离职前都会大量拷贝带走核心资料<img src='/icons/16559dou2.gif' />在这些人员再次就业的时<img src='/icons/16559dou.gif' />这些被拷贝带走<img src='/icons/16559de.gif' />商业信息<img src='/icons/16559dou.gif' />就成为竞争对手打击和挤压原单位<img src='/icons/16559de.gif' />重要武器<img src='/icons/16559dou2.gif' />因此<img src='/icons/16559dou.gif' />加强企业自身数据安全保护<img src='/icons/16559dou.gif' />切身涉及到企业自身<img src='/icons/16559de.gif' />安全<img src='/icons/16559dou2.gif' />不容忽视<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 4. 内部人员无意泄密和恶意泄密<br/><br/>
&nbsp;&nbsp;&nbsp; 国家单位和企事业单位人员对于信息安全重要性<img src='/icons/16559de.gif' />认识不足<img src='/icons/16559dou.gif' />会导致涉密人员在无意中泄密<img src='/icons/16559dou2.gif' />这需要加强安全教育<img src='/icons/16559dou.gif' />增强安全意识<img src='/icons/16559dou.gif' />以避免内部人员在无意间泄密<img src='/icons/16559dou.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 而部分不良分子<img src='/icons/16559dou.gif' />出于对原就业单位<img src='/icons/16559de.gif' />报复<img src='/icons/16559dou.gif' />肆意将机密信息公的于众<img src='/icons/16559dou.gif' />甚至发布到网上任人浏览<img src='/icons/16559dou.gif' />这会导致原单位直接<img src='/icons/16559de.gif' />经济损失<img src='/icons/16559dou.gif' />也会造成单位<img src='/icons/16559de.gif' />名声受损<img src='/icons/16559dou2.gif' />作为企业单位<img src='/icons/16559dou.gif' />还将导致品牌美誉度下降<img src='/icons/16559dou.gif' />甚至是恶评如潮<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 5. 内部文档权限失控失密<br/><br/>
&nbsp;&nbsp;&nbsp; 在单位内部<img src='/icons/16559dou.gif' />往往机密信息会分为秘密、机密和绝密等区别<img src='/icons/16559de.gif' />涉密等级<img src='/icons/16559dou2.gif' /><img src='/icons/16559yi.gif' />般来说<img src='/icons/16559dou.gif' />根据人员在单位中<img src='/icons/16559de.gif' />地位和部门<img src='/icons/16559de.gif' />区别<img src='/icons/16559dou.gif' />其所接触和知悉<img src='/icons/16559de.gif' />信息也是区别<img src='/icons/16559dou2.gif' />因此多数单位都会按照区别人员<img src='/icons/16559de.gif' />区别涉密权限<img src='/icons/16559dou.gif' />分配相应<img src='/icons/16559de.gif' />涉密内容<img src='/icons/16559dou2.gif' />然而<img src='/icons/16559dou.gif' />当前多数单位<img src='/icons/16559de.gif' />涉密信息<img src='/icons/16559de.gif' />权限划分是相当粗放<img src='/icons/16559de.gif' /><img src='/icons/16559dou.gif' />很难细分到相应<img src='/icons/16559de.gif' />个人<img src='/icons/16559dou2.gif' />因此<img src='/icons/16559dou.gif' />内部数据和文档在权限管控方面<img src='/icons/16559de.gif' />失控<img src='/icons/16559dou.gif' />会导致不具备权限<img src='/icons/16559de.gif' />人员获得涉密信息<img src='/icons/16559dou.gif' />或者是低权限<img src='/icons/16559de.gif' />人员获得高涉密信息<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 6. 存储设备丢失和维修失密<br/><br/>
&nbsp;&nbsp;&nbsp; 随着移动存储设备<img src='/icons/16559de.gif' />广泛使用<img src='/icons/16559dou.gif' />家庭办公兴起<img src='/icons/16559dou.gif' />出差人员<img src='/icons/16559de.gif' />大量事物处理等等都会不可避免地使用移动存储设备<img src='/icons/16559dou2.gif' />因此<img src='/icons/16559dou.gif' />移动存储设备丢失和维修导致泄密也是当前泄密事件发生<img src='/icons/16559de.gif' />主要原因的<img src='/icons/16559yi.gif' /><img src='/icons/16559dou2.gif' />移动存储设备例如笔记本电脑、移动硬盘、手机存储卡、数码照相/摄录机等<img src='/icons/16559dou.gif' /><img src='/icons/16559yi.gif' />旦遗失、维修或者报废后<img src='/icons/16559dou.gif' />其存储数据往往暴露无遗<img src='/icons/16559dou2.gif' />“艳照门事件”就是此类事件<img src='/icons/16559de.gif' />典型<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 7. 对外信息发布失控失密<br/><br/>
&nbsp;&nbsp;&nbsp; 凡是对外交互信息<img src='/icons/16559de.gif' />单位<img src='/icons/16559dou.gif' />都可能会有涉密信息往来<img src='/icons/16559dou2.gif' />在两个或者多个合作单位的间<img src='/icons/16559dou.gif' />由于信息交互<img src='/icons/16559de.gif' />频繁发生<img src='/icons/16559dou.gif' />涉密信息也可能泄露<img src='/icons/16559dou.gif' />导致合作方不具备权限<img src='/icons/16559de.gif' />人员获得涉密信息<img src='/icons/16559dou2.gif' />甚至是涉密信息流出到处于竞争关系<img src='/icons/16559de.gif' />第 3方<img src='/icons/16559dou2.gif' />因此<img src='/icons/16559dou.gif' />对于往外部发送<img src='/icons/16559de.gif' />涉密信息<img src='/icons/16559dou.gif' />必须加以管控<img src='/icons/16559dou.gif' />防止外发信息失控而导致失密<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;  3、中国防泄密专家提供解决办法<br/><br/>
&nbsp;&nbsp;&nbsp; 要杜绝网络泄密<img src='/icons/16559dou.gif' />最有效<img src='/icons/16559de.gif' />办法就是让有保密内容<img src='/icons/16559de.gif' />电脑和互联网物理隔绝<img src='/icons/16559dou.gif' />当前在军队和军工等绝密单位基本上采用<img src='/icons/16559de.gif' />是这种手段<img src='/icons/16559dou2.gif' />除此的外<img src='/icons/16559dou.gif' />“上网不涉密<img src='/icons/16559dou.gif' />涉密不上网”<img src='/icons/16559dou.gif' />“涉密电脑不得使用移动存储介质”等管理手段也在使用<img src='/icons/16559dou2.gif' />然而<img src='/icons/16559dou.gif' />即便是通过物理隔离手段来保密<img src='/icons/16559dou.gif' />在军队和军工也会发生各种泄密事件<img src='/icons/16559dou2.gif' />而且<img src='/icons/16559dou.gif' />由于物理隔离会极大影响工作效率<img src='/icons/16559dou.gif' />只有军工军队这种比较特殊<img src='/icons/16559de.gif' />环境<img src='/icons/16559dou.gif' />才可能采用<img src='/icons/16559dou2.gif' />而对于政府单位和企事业单位<img src='/icons/16559dou.gif' />完全采用物理隔离是不可能<img src='/icons/16559de.gif' /><img src='/icons/16559dou2.gif' />因此<img src='/icons/16559dou.gif' />必须采用相应<img src='/icons/16559de.gif' />技术手段<img src='/icons/16559dou.gif' />结合管理手段来做到安全和效率的间<img src='/icons/16559de.gif' />均衡<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 梁金千教授基于对各种单位<img src='/icons/16559de.gif' />管理和技术手段<img src='/icons/16559de.gif' />充分了解<img src='/icons/16559dou.gif' />建议在加强管理<img src='/icons/16559de.gif' />同时<img src='/icons/16559dou.gif' />必须采用技术手段来共同防止泄密<img src='/icons/16559dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 因此<img src='/icons/16559dou.gif' />梁教授认为<img src='/icons/16559dou2.gif' />采用<img src='/icons/16559yi.gif' />套完整<img src='/icons/16559de.gif' />数据泄露防护(DLP)体系来对单位内部各个环节<img src='/icons/16559dou.gif' />各个物理设备和安全域进行管控<img src='/icons/16559dou.gif' />以实现整体安全<img src='/icons/16559dou.gif' />是必要<img src='/icons/16559de.gif' /><img src='/icons/16559dou2.gif' />梁教授推荐亿赛通数据泄露防护(DLP)体系<img src='/icons/16559dou.gif' />针对各个网络上连接<img src='/icons/16559de.gif' />终端(工作站、PC机等)、端口(包括各种外接设备口和网络信息传输口)、磁盘(包括PC机硬盘、服务器磁盘、移动设备磁盘等所有存储设备磁盘)、服务器(文件服务器和应用服务器)和内部网络<img src='/icons/16559dou.gif' />针对区别<img src='/icons/16559de.gif' />物理位置采用相应<img src='/icons/16559de.gif' />产品进行防护<img src='/icons/16559dou2.gif' /><br/><br/> <a href="/mypdf/78950.pdf" title="查看 中国军工网:震惊国人的中国军工所潜艇资料泄密事件 的PDF电子文档">[查看PDF电子文档]</a>				]]>
			</description>
			<author></author>
			<category>安全</category>
			<pubDate>2010-03-08</pubDate>
			<guid>http://CrazyCoder.cn/Security/Article78950.html</guid>
		</item>
		<item>
			<title><![CDATA[防泄密:中国防泄密专家解读《密战》中的十大泄密]]></title>
			<link>http://CrazyCoder.cn/Security/Article78949.html</link>
			<description>
				<![CDATA[

&nbsp;&nbsp;&nbsp; 央视<img src='/icons/25279yi.gif' />套30集热播电视连续剧<img src='/icons/25279smhl.gif' />密战<img src='/icons/25279smhr.gif' />推出的后<img src='/icons/25279dou.gif' />获得了较高<img src='/icons/25279de.gif' />收视率<img src='/icons/25279dou2.gif' />该剧取材于当代<img src='/icons/25279dou.gif' />和传统电视剧如<img src='/icons/25279smhl.gif' />潜伏<img src='/icons/25279smhr.gif' />、<img src='/icons/25279smhl.gif' />绝密1949<img src='/icons/25279smhr.gif' />等多数基于中国解放前后比较原始<img src='/icons/25279de.gif' />反特、泄密和反泄密题材完全区别<img src='/icons/25279dou.gif' /><img src='/icons/25279smhl.gif' />密战<img src='/icons/25279smhr.gif' />中运用了当前主流<img src='/icons/25279de.gif' />技术和设备<img src='/icons/25279dou2.gif' />不论是服务器、笔记本电脑、移动硬盘等大众普及用品<img src='/icons/25279dou.gif' />还是相当专业<img src='/icons/25279de.gif' />微波发射中继器、手机窃听器、安防监控系统解读器<img src='/icons/25279dou.gif' />都是泄密和窃密<img src='/icons/25279de.gif' />重要途径<img src='/icons/25279dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 为了让广大观众更为了解<img src='/icons/25279smhl.gif' />密战<img src='/icons/25279smhr.gif' />剧集中所涉及到<img src='/icons/25279de.gif' />种种窃密和反窃密途径<img src='/icons/25279dou.gif' />本文将剧情中种种窃密途径进行解析<img src='/icons/25279dou.gif' />并提出相应<img src='/icons/25279de.gif' />技术、产品或者是防范手段<img src='/icons/25279dou.gif' />防止泄密<img src='/icons/25279de.gif' />发生<img src='/icons/25279dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; <img src='/icons/25279yi.gif' />、 移动存储设备泄密<br/><br/>
&nbsp;&nbsp;&nbsp; 剧情介绍:<br/><br/>
&nbsp;&nbsp;&nbsp; <img src='/icons/25279smhl.gif' />密战<img src='/icons/25279smhr.gif' />第1集:猎豹携带<img src='/icons/25279de.gif' />数据硬盘被打开<img src='/icons/25279dou.gif' />其倒计时自毁系统同时被启动<img src='/icons/25279dou2.gif' />庞剑破解硬盘密码<img src='/icons/25279dou.gif' />发现了<img src='/icons/25279yi.gif' />份跟卫星相关<img src='/icons/25279de.gif' />秘密文件<img src='/icons/25279dou2.gif' />侦察员从猎豹<img src='/icons/25279de.gif' />微型硬盘里发现了322所罗振华教授<img src='/icons/25279de.gif' />照片<img src='/icons/25279dou2.gif' /><img src='/icons/25279smhl.gif' />密战<img src='/icons/25279smhr.gif' />第26集:罗兵潜入印刷厂<img src='/icons/25279dou.gif' />用高级解密设备打开了保险柜<img src='/icons/25279dou.gif' />取出装有数据<img src='/icons/25279de.gif' />移动硬盘进行拷贝<img src='/icons/25279dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp; 专家解读:移动存储设备主要指移动硬盘、U盘、PC储存卡、MP3、MP4、数码照相机、数码摄像机、手机、光盘和软盘等<img src='/icons/25279dou2.gif' />随着移动存储设备<img src='/icons/25279de.gif' />广泛使用<img src='/icons/25279dou.gif' />移动存储设备导致泄密<img src='/icons/25279de.gif' />现象越来越普遍<img src='/icons/25279dou2.gif' />目前针对移动设备泄密<img src='/icons/25279de.gif' />解决办法主要有两方面:<img src='/icons/25279yi.gif' />是对计算机及内部网络各种端口进行管控<img src='/icons/25279dou.gif' />对接入端口<img src='/icons/25279de.gif' />移动设备进行统<img src='/icons/25279yi.gif' />认证<img src='/icons/25279dou.gif' />硬件绑定等方式<img src='/icons/25279dou.gif' />限制移动存储设备<img src='/icons/25279de.gif' />使用; 2是对移动存储设备本身设置口令/密码进行身份识别<img src='/icons/25279dou.gif' />并且对移动存储设备内<img src='/icons/25279de.gif' />数据进行加密<img src='/icons/25279dou2.gif' /><br/><br/>
&nbsp;&nbsp;&nbsp;  2、 笔记本电脑泄密<br/><br/>
&nbsp;&nbsp;&nbsp; 剧情介绍:<br/><br/>
&nbsp;&nbsp;&nbsp; <img src='/icons/25279smhl.gif' />密战<img src='/icons/25279smhr.gif' />第2集:罗教授在国外参加学术交流会期间<img src='/icons/25279dou.gif' />蝴蝶对罗教授随身携带<img src='/icons/25279de.gif' />笔记本硬盘进行了拷贝<img src='/icons/25279dou2.gif' /><img src='/icons/25279smhl.gif' />密战<img src='/icons/25279smhr.gif' />第10集:方瑶打开谷雨生<img src='/icons/25279de.gif' />电脑<img src='/icons/25279dou.gif' />将谷雨生演算过<img src='/icons/25279de.gif' />轨道公式恢复<img s