<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_寻雨 .NET C# Study</title><subtitle type="text">寻雨学习空间</subtitle><id>http://feed.cnblogs.com/blog/u/37284/rss</id><updated>2011-12-11T15:20:33Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/37284/rss"/><entry><id>http://www.cnblogs.com/wmw1989/archive/2011/12/11/2284310.html</id><title type="text">浅谈Javascript缓载和预载</title><summary type="text">一、缓载、预载的概念这些技术不仅限于图片加载，但我们首先讨论最常用的图片加载。1、缓载：延迟加载图片或符合某些条件时才加载某些图片。2、预载：提前加载图片，当用户需要查看时可直接从本地缓存中渲染。两种技术的本质：两者的行为是相反的，一个是提前加载，一个是迟缓甚至不加载。缓载对服务器前端有一定的缓解压力作用，预载则会增加服务器前端压力。二、缓载的意义与实现缓载的主要目的是作为服务器前端的优化，减少请求数或延迟请求数。主要体现在三种模式上：第一种是纯粹的延迟加载，使用setTimeOut或setInterval进行加载延迟，如果用户在加载前就离开了页面，那么就不会加载。第二种是条件加载，符合某些条</summary><published>2011-12-11T15:21:00Z</published><updated>2011-12-11T15:21:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2011/12/11/2284310.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2011/12/11/2284310.html"/><content type="html">&lt;p&gt;&lt;span&gt;一、&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;缓载、预载的概念&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 宋体"&gt;这些技术不仅限于图片加载，但我们首先讨论最常用的图片加载。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;1&lt;span style="font-family: 宋体"&gt;、缓载：延迟加载图片或符合某些条件时才加载某些图片。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;2&lt;span style="font-family: 宋体"&gt;、预载：提前加载图片，当用户需要查看时可直接从本地缓存中渲染。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;两种技术的本质：两者的行为是相反的，一个是提前加载，一个是迟缓甚至不加载。缓载对服务器前端有一定的缓解压力作用，预载则会增加服务器前端压力。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt"&gt;&lt;span&gt;二、&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;缓载的意义与实现&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;缓载的主要目的是作为服务器前端的优化，减少请求数或延迟请求数。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;主要体现在三种模式上：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;第一种是纯粹的延迟加载，使用&lt;/span&gt;setTimeOut&lt;span style="font-family: 宋体"&gt;或&lt;/span&gt;setInterval&lt;span style="font-family: 宋体"&gt;进行加载延迟，如果用户在加载前就离开了页面，那么就不会加载。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;第二种是条件加载，符合某些条件，或触发了某些事件才开始异步下载。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;第三种是可视区加载，即仅加载用户可以看到的区域，这个主要由监控滚动条来实现，一般会在距用户看到某图片前一定距离遍开始加载，这样能保证用户拉下时正好能看到图片。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt"&gt;&lt;span&gt;三、&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;预加载的意义与实现&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;预加载可以说是牺牲服务器前端性能，换取更好的用户体验，这样可以使用户的操作得到最快的反映。实现预载的方法非常多，可以用&lt;/span&gt;CSS(background)&lt;span style="font-family: 宋体"&gt;、&lt;/span&gt;JS(Image)&lt;span style="font-family: 宋体"&gt;、&lt;/span&gt;HTML(&amp;lt;img /&amp;gt;)&lt;span style="font-family: 宋体"&gt;都可以。常用的是&lt;/span&gt;new Image();&lt;span style="font-family: 宋体"&gt;，设置其&lt;/span&gt;src&lt;span style="font-family: 宋体"&gt;来实现预载，再使用&lt;/span&gt;onload&lt;span style="font-family: 宋体"&gt;方法回调预载完成事件。只要浏览器把图片下载到本地，同样的&lt;/span&gt;src&lt;span style="font-family: 宋体"&gt;就会使用缓存，这是最基本也是最实用的预载方法。当&lt;/span&gt;Image&lt;span style="font-family: 宋体"&gt;下载完图片头后，会得到宽和高，因此可以在预载前得到图片的大小&lt;/span&gt;(&lt;span style="font-family: 宋体"&gt;我所知的方法是用记时器轮循宽高变化&lt;/span&gt;)&lt;span style="font-family: 宋体"&gt;。一般实现预载的工具类，都实现一个&lt;/span&gt;Array&lt;span style="font-family: 宋体"&gt;来存需要预载的&lt;/span&gt;URL&lt;span style="font-family: 宋体"&gt;，然后实现&lt;/span&gt;Finish&lt;span style="font-family: 宋体"&gt;、&lt;/span&gt;Error&lt;span style="font-family: 宋体"&gt;、&lt;/span&gt;SizeChange&lt;span style="font-family: 宋体"&gt;等常用事件，可以由用户选择是顺序预载或假并发预载。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt"&gt;&lt;span&gt;四、&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;类库&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;Jquery&lt;span style="font-family: 宋体"&gt;的&lt;/span&gt;Lazy Load&lt;span style="font-family: 宋体"&gt;用于图片缓载，&lt;/span&gt;Jquery&lt;span style="font-family: 宋体"&gt;的&lt;/span&gt;PreLoad&lt;span style="font-family: 宋体"&gt;可以用于预载。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-indent: -21pt; margin: 0cm 0cm 0pt 21pt"&gt;&lt;span&gt;五、&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;扩展到非图片&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt 21pt"&gt;&lt;span style="font-family: 宋体"&gt;扩展的非图片，主要以&lt;/span&gt;DIV&lt;span style="font-family: 宋体"&gt;为例。一种实现设计模式：我们给需要缓载的&lt;/span&gt;DIV&lt;span style="font-family: 宋体"&gt;加上一个代理类，这样一旦触发其加载事件则会自动的调用代理类进行更新数据。然后将这些需要加载的&lt;/span&gt;DIV&lt;span style="font-family: 宋体"&gt;放入一个集合，计算他们的滚动量，同时设置一个偏移量，然后设置其监视浏览器滚动条，以实现动态缓载。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/2284310.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2011/12/11/2284310.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2011/11/13/2247353.html</id><title type="text">浅谈Javascript面向对象编程</title><summary type="text">Javascript是一门很灵活的语言，允许我们模拟面向对象编程中的很多机机制。在JS中充分使用面向对象设计思想，可以极大限度的提升代码重用、降低模块间的偶合、更好的逻辑分层与并行开发。下面分几个步骤简单谈下我的理解。一、数据类型与包装类包装类 …… 类型名 …… 常见值 …… 分类Number …… number …… 123.123 …… 基本数据类型Boolean …… Boolean …… true、false …… 基本数据类型String …… string …… “hello world!” …… 基本数据类型Object …… object …… {}、[] …… 复合数据类型</summary><published>2011-11-13T08:41:00Z</published><updated>2011-11-13T08:41:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2011/11/13/2247353.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2011/11/13/2247353.html"/><content type="html">&lt;p style="margin: 0cm 0cm 0pt" &gt;&lt;span lang="EN-US"&gt;&lt;font face="Calibri"&gt;&lt;span style="font-size: 12pt"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;Javascript是一门很灵活的语言，允许我们模拟面向对象编程中的很多机机制。在JS中充分使用面向对象设计思想，可以极大限度的提升代码重用、降低模块间的偶合、更好的逻辑分层与并行开发。下面分几个步骤简单谈下我的理解。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;一、数据类型与包装类&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;包装类 &amp;#8230;&amp;#8230; 类型名 &amp;#8230;&amp;#8230; 常见值 &amp;#8230;&amp;#8230; 分类&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;Number &amp;#8230;&amp;#8230; number &amp;#8230;&amp;#8230; 123.123 &amp;#8230;&amp;#8230; 基本数据类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;Boolean &amp;#8230;&amp;#8230; Boolean &amp;#8230;&amp;#8230; true、false &amp;#8230;&amp;#8230; 基本数据类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;String &amp;#8230;&amp;#8230; string &amp;#8230;&amp;#8230; &amp;#8220;hello world!&amp;#8221; &amp;#8230;&amp;#8230; 基本数据类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;Object &amp;#8230;&amp;#8230; object &amp;#8230;&amp;#8230; {}、[] &amp;#8230;&amp;#8230; 复合数据类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;Function &amp;#8230;&amp;#8230; function &amp;#8230;&amp;#8230; function(){} &amp;#8230;&amp;#8230; 特殊类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;无 &amp;#8230;&amp;#8230; undefined &amp;#8230;&amp;#8230; undefined、未定义&amp;nbsp; &amp;#8230;&amp;#8230; 小数据类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;无 &amp;#8230;&amp;#8230; null &amp;#8230;&amp;#8230; null &amp;#8230;&amp;#8230; 小数据类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 内置类型与本文关系不大，不列出。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;二、引用类型与值类型&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;引用类型：object function&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;值类型：number、boolean、string、null、undefined &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;三、new function（构造器）与prototype（原型）&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;关于prototype的设计模式就不多说了，网上很多介绍，以一个例子介绍一下js中使用new构造对象的过程。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;function classname(){this.id=0;}&amp;nbsp;&amp;nbsp; var v=new classname();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;当使用function构造对象时，进行以下流程：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;1、 查找classname的prototype，并进行浅拷贝。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;2、&amp;nbsp; 绑定this指针到拷贝来的对象。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;3、&amp;nbsp; 将this.constructor属性设置为classname。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;[注：其实classname.prototype.constructor的值也被设置为classname，第六部分会说明]&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;4、&amp;nbsp; 执行用户{}中的代码。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;5、&amp;nbsp; 返回this指针赋予左值v。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;四、实现面向对象的三个基本特征&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;1、 封装&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;封装这个大家都明白，在js中，重点在于访问权限。在其他原生支持面向对象语言中，一般支持public、protected、private三个关键字来控制访问权限，但在js中，我们只能依靠复杂的作用域关系来控制：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;function classname(a){&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var uid=a; //uin为模拟private，作用域为{}，外部无法使用&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.getuid=function(){return a;} //为uid提供一个外部只读接口 obj.getuid();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.setuid=function(val){a=val} //为uid提供一个外部可写接口obj.setuid(5);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;this.id=uid; //id为模拟public&amp;nbsp;&amp;nbsp; obj.id 使用&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;classname.prototype.func=function(){}; //模拟public方法 obj.func()调用&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;classname.stafunc=function(){}; //模拟静态方法 classname.stafunc()调用&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;var obj=new classname(1);&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;[!]非常需要注意的就是，因为function是引用类型， classname.prototype.func是所有对象共享的一个function对象（每个对象仅存着引用），因此对象规模不大。而使用this.getuid和this.setuid为定义一个function，因此每个对象实例都会存一份，如果放肆使用这种方法，会造成对象规模庞大，影响性能。个人认为模拟private变量的意义不大。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;[!]如果有需求真的需要大量使用this.xxx=function(){}这种情况，在function(){}中的this指针与最外的this指针是不同的，最好在类定义的首行加上var _this=this;，这样在this.xxx=function(){}中也可以方便使用绑定的指针。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;2、 继承&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;继承的实现，主要有2种方法：第一种是使用javascript本身的原型模型，通过给prototype赋值并改变其constructor属性来实现继承；第二种方法是不使用prototype，手动实现将父对象的所有属性方法深拷贝到子对象。比如A需要继承B，第一种写法可以：A.prototype=new B();A.prototype.constructor=A; 第二种写法可以写一个递归，或者使用jquery中的方法extend。另外，如果要实现多继承的话，prototype就真的好麻烦了（需要依次多个类，还要建空对象来接），第二种方法就比较简单，依次拷贝即可。一般这种继承为了找父类方便，可以在对象中加个属性，引用父类。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;3、 多态&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;函数重载就不说了，都会，检查参数即可，很灵活。隐藏属性就是直接赋值undefined。需要注意的是，如果是打算继承B类的prototype，一定要建一个空对象来接，否则的话，你给类写方法的话，相当于直接修改了prototype，就算不写方法，你最后修改constructor时也会造成继承链错乱，接个空对象很容易：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;function temp(){};&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;temp.prototype=B;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;var obj=new temp();&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;这样再让需要继承B.prototype的类继承obj即可，即便修改prototype也不会影响到B。而且也不像继承new B()那样浪费很多空间。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;五、深拷贝与浅拷贝&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;这个和其他语言中没什么区别，浅拷贝就是直接拷贝，遇到引用类型或类类型不再深入。深拷贝则是根据类型判断，进行递归拷贝。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;六、prototype.constructor&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;这个值主要是用于维护继承的原型链。一篇文章已经写的非常详细，请参考：&lt;/span&gt;&lt;a href="http://bbs.51js.com/thread-84148-1-1.html"&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;http://bbs.51js.com/thread-84148-1-1.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;七、JS的面向对象开发&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;由于我不是前台开发人员，见过项目有限，仅谈自己的经验。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: Arial; font-size: 12pt"&gt;我开发过的B/S，常用两种架构，一种是以CGI为主，由后台语言去生成HTML，JS仅仅做一些用户交互，ajax通信等。另外一种是使用MVC，后台语言仅仅生成JSON，View层完全由JS组件在客户端实现。后者一般大量使用面向对象的思想进行编程，将组件封装成类，将JSON传入构造函数，再由控制器或布局组件Add进来。由于组件可以重用，在开发后台管理系统、JS游戏上，效率还是很可观的。&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt" &gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/2247353.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2011/11/13/2247353.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2011/09/01/2162062.html</id><title type="text">GDB使用技巧</title><summary type="text">一、常用GDB指令l或list或l行号可以显示代码回车表示重复上一次命令break或b表示设置断点后跟行号或函数入口名infobreak查看断点信息run或r运行程序next或n单条语句执行continue或c继续运行程序print或p表示打印指定变量值后跟变量bt查看函数堆栈finish退出函数shell命令后跟指令执行shellmake命令等同于shellmake参数q退出gdb二、启动GDB方法1、gdb{程序名}2、gdb{程序名}core3、gdb{程序名}{PID}三、运行时配置1、setargs[]来指定运行时参数2、path[]可设置运行时参数3、showpath查看运行路径.</summary><published>2011-09-01T07:29:00Z</published><updated>2011-09-01T07:29:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2011/09/01/2162062.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2011/09/01/2162062.html"/><content type="html"> &#xD;
&lt;div style="layout-grid: both loose 15.6pt none;" &gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;一、常用&lt;font face="Times New Roman"&gt;GDB&lt;/font&gt;&lt;font face="宋体"&gt;指令&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;l&amp;nbsp;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;list&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;l&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;行号&amp;nbsp;可以显示代码&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;回车表示重复上一次命令&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;break&amp;nbsp;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;b&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;表示设置断点&amp;nbsp;后跟行号&amp;nbsp;或&amp;nbsp;函数入口名&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;info&amp;nbsp;break&amp;nbsp;&lt;font face="宋体"&gt;查看断点信息&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;run&amp;nbsp;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;r&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;运行程序&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;next&amp;nbsp;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;n&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;单条语句执行&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;continue&amp;nbsp;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;c&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;继续运行程序&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;print&amp;nbsp;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;p&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;表示打印指定变量值&amp;nbsp;后跟变量&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;bt&amp;nbsp;&lt;font face="宋体"&gt;查看函数堆栈&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;finish&amp;nbsp;&lt;font face="宋体"&gt;退出函数&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;shell&amp;nbsp;&lt;font face="宋体"&gt;命令&amp;nbsp;后跟指令执行&lt;/font&gt;&lt;font face="Times New Roman"&gt;shell&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;make&amp;nbsp;&lt;font face="宋体"&gt;命令&amp;nbsp;等同于&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;shell&amp;nbsp;make&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;参数&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;q&amp;nbsp;&lt;font face="宋体"&gt;退出&lt;/font&gt;&lt;font face="Times New Roman"&gt;gdb&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;二、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;启动&lt;font face="Times New Roman"&gt;GDB&lt;/font&gt;&lt;font face="宋体"&gt;方法&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;gdb&amp;nbsp;{&lt;font face="宋体"&gt;程序名&lt;/font&gt;&lt;font face="Times New Roman"&gt;}&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;gdb&amp;nbsp;{&lt;font face="宋体"&gt;程序名&lt;/font&gt;&lt;font face="Times New Roman"&gt;}&amp;nbsp;core&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;gdb&amp;nbsp;{&lt;font face="宋体"&gt;程序名&lt;/font&gt;&lt;font face="Times New Roman"&gt;}&amp;nbsp;{PID}&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;三、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;运行时配置&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;set&amp;nbsp;args&amp;nbsp;[]&amp;nbsp;&lt;font face="宋体"&gt;来指定运行时参数&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;path&amp;nbsp;[]&amp;nbsp;&lt;font face="宋体"&gt;可设置运行时参数&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;show&amp;nbsp;path&amp;nbsp;&lt;font face="宋体"&gt;查看运行路径&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;set/show&amp;nbsp;env[ironment]&amp;nbsp;varname[=]&amp;nbsp;&lt;font face="宋体"&gt;查看或设置变量的值&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;5、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;cd&lt;font face="宋体"&gt;和&lt;/font&gt;&lt;font face="Times New Roman"&gt;pwd&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;同&lt;/font&gt;&lt;font face="Times New Roman"&gt;shell&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;6、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;可以使用&amp;nbsp;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;重定向输出&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;四、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;断点的使用&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;可以直接跟&lt;font face="Times New Roman"&gt;[&lt;/font&gt;&lt;font face="宋体"&gt;文件名&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&amp;nbsp;[&lt;/font&gt;&lt;font face="宋体"&gt;函数名&lt;/font&gt;&lt;font face="Times New Roman"&gt;/&lt;/font&gt;&lt;font face="宋体"&gt;行数&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&amp;nbsp;if&amp;nbsp;[&lt;/font&gt;&lt;font face="宋体"&gt;条件&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;直接&lt;font face="Times New Roman"&gt;break&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;表示停在下一行&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;break&amp;nbsp;+/-&lt;font face="宋体"&gt;行数&amp;nbsp;可以表示当前行号与偏移&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;Break&amp;nbsp;*&lt;font face="宋体"&gt;地址&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;5、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;info&amp;nbsp;[break]points&amp;nbsp;[n]&amp;nbsp;n&lt;font face="宋体"&gt;表示断点号&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;五、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;观察点的使用&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;watch&amp;nbsp;&amp;lt;exp&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;表达式有变化时，停住程序。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;rwatch&amp;nbsp;&amp;lt;exp&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;表达式被读时，停住程序。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;awatch&amp;nbsp;&amp;lt;exp&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;表达式被读写时，停住程序。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;info&amp;nbsp;watch[points]&amp;nbsp;&lt;font face="宋体"&gt;查看所有观察点&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;六、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;捕捉点的使用&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;catch&amp;nbsp;&amp;lt;throw|catch|exec|fork|vfork|load|unload&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;发生事件时，停住程序。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;tcatch&amp;nbsp;&amp;lt;throw|catch|exec|fork|vfork|load|unload&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;只设置一次捕捉点，程序结束后消失。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;七、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;维护停止点&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;直接使用&lt;font face="Times New Roman"&gt;clear&lt;/font&gt;&lt;font face="宋体"&gt;，并非像手册中的，清除所有停止点，而是清除当前行的停止点。&lt;/font&gt;&lt;/span&gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;clear&amp;nbsp;&lt;font face="宋体"&gt;跟行号、函数名等，&lt;/font&gt;&lt;font face="Times New Roman"&gt;delete&lt;/font&gt;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;font face="Times New Roman"&gt;enable&lt;/font&gt;&lt;font face="宋体"&gt;，&lt;/font&gt;&lt;font face="Times New Roman"&gt;disenable&lt;/font&gt;&lt;font face="宋体"&gt;是跟断点号。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;condition&amp;nbsp;&amp;lt;&lt;font face="宋体"&gt;断点号&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;停止条件表达式&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;修改指定断点的中断条件。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;ignore&amp;nbsp;&amp;lt;&lt;font face="宋体"&gt;断点号&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;忽略中断次数&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;设置忽略若干次中断后停止。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;5、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;commands&amp;nbsp;[&lt;font face="宋体"&gt;断点号&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;如果无断点号，则寻找上一个断点位置，清除也是这个命令。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;command_Lists&amp;nbsp;&amp;nbsp;&lt;font face="宋体"&gt;清除则留空&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;commands&lt;font face="宋体"&gt;前可以跟&lt;/font&gt;&lt;font face="Times New Roman"&gt;break&lt;/font&gt;&lt;font face="宋体"&gt;设置断点&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;八、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;恢复及单步调试&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;continue/c/fg&amp;nbsp;[&lt;font face="宋体"&gt;继续断点数&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;继续程序执行并忽略后面若干个断点&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;set&amp;nbsp;step-mode&amp;nbsp;on&amp;nbsp;&lt;font face="宋体"&gt;打开这个模式，可以在程序没有&lt;/font&gt;&lt;font face="Times New Roman"&gt;debug&lt;/font&gt;&lt;font face="宋体"&gt;信息时，单步继续。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;step/next&amp;nbsp;[&lt;font face="宋体"&gt;指令数&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;单步跟踪，经过若干个代码。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;finish&amp;nbsp;&lt;font face="宋体"&gt;执行完当前函数，并返回函数信息（行号，文件名，函数名，返回值），无法返回&lt;/font&gt;&lt;font face="Times New Roman"&gt;main&lt;/font&gt;&lt;font face="宋体"&gt;函数。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;5、&lt;/span&gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;until&amp;nbsp;&lt;font face="宋体"&gt;或&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;u&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;类似在循环中使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;continue&lt;/font&gt;&lt;font face="宋体"&gt;，这点和完全手册上说的不太一样，我实验是无法跳出循环，和&lt;/font&gt;&lt;font face="Times New Roman"&gt;c&lt;/font&gt;&lt;font face="宋体"&gt;一样效果，继续循环。&lt;/font&gt;&lt;/span&gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;6、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;stepi/si&amp;nbsp;nexti/ni&amp;nbsp;&lt;font face="宋体"&gt;单步执行一条机械指令。单步时一般使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;display/i&amp;nbsp;$pc&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;，其中&lt;/font&gt;&lt;font face="Times New Roman"&gt;/i&lt;/font&gt;&lt;font face="宋体"&gt;是显示格式，&lt;/font&gt;&lt;font face="Times New Roman"&gt;i&lt;/font&gt;&lt;font face="宋体"&gt;是汇编，&lt;/font&gt;&lt;font face="Times New Roman"&gt;$pc&lt;/font&gt;&lt;font face="宋体"&gt;是&lt;/font&gt;&lt;font face="Times New Roman"&gt;gdb&lt;/font&gt;&lt;font face="宋体"&gt;内部变量，表示程序机械码的地址，类似寄存器&lt;/font&gt;&lt;font face="Times New Roman"&gt;SI&lt;/font&gt;&lt;font face="宋体"&gt;。设置&lt;/font&gt;&lt;font face="Times New Roman"&gt;display&lt;/font&gt;&lt;font face="宋体"&gt;后，可以用&lt;/font&gt;&lt;font face="Times New Roman"&gt;info&amp;nbsp;display&lt;/font&gt;&lt;font face="宋体"&gt;来查看，一样可以&lt;/font&gt;&lt;font face="Times New Roman"&gt;d&amp;nbsp;display&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;编号&amp;nbsp;来删除。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;九、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;信号处理&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;产生信号：&lt;font face="Times New Roman"&gt;signal&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;信号名&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;捕获信号：&lt;font face="Times New Roman"&gt;handle&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;信号名&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;处理方式&lt;/font&gt;&lt;font face="Times New Roman"&gt;|[no]stop|[no]print|[no]pass|[no]ignore&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;也可以使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;info&lt;/font&gt;&lt;font face="宋体"&gt;查询&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;十、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;线程与栈信息&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;break&amp;nbsp;&amp;lt;&lt;font face="宋体"&gt;代码行号&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;thread&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;线程号&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;if&amp;nbsp;[&lt;/font&gt;&lt;font face="宋体"&gt;条件&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;其中线程号使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;info&amp;nbsp;threads&lt;/font&gt;&lt;font face="宋体"&gt;查询&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;backtrace&lt;font face="宋体"&gt;、&lt;/font&gt;&lt;font face="Times New Roman"&gt;b&amp;nbsp;[n]&lt;/font&gt;&lt;font face="宋体"&gt;打印当前函数栈的所有信息，&lt;/font&gt;&lt;font face="Times New Roman"&gt;n&lt;/font&gt;&lt;font face="宋体"&gt;表示上&lt;/font&gt;&lt;font face="Times New Roman"&gt;/&lt;/font&gt;&lt;font face="宋体"&gt;下&lt;/font&gt;&lt;font face="Times New Roman"&gt;n&lt;/font&gt;&lt;font face="宋体"&gt;层栈信息。如果当前栈不是想要查看的，可以使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;frame&amp;nbsp;/&amp;nbsp;f&amp;nbsp;[&lt;/font&gt;&lt;font face="宋体"&gt;栈层编号&lt;/font&gt;&lt;font face="Times New Roman"&gt;]&lt;/font&gt;&lt;font face="宋体"&gt;来切换。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;使用&lt;font face="Times New Roman"&gt;info&amp;nbsp;frame/f&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;来查询栈的详细信息。使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;info&amp;nbsp;args&lt;/font&gt;&lt;font face="宋体"&gt;打印当前函数的参数信息，使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;info&amp;nbsp;locals&lt;/font&gt;&lt;font face="宋体"&gt;打印局部变量，使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;info&amp;nbsp;catch&lt;/font&gt;&lt;font face="宋体"&gt;打印出捕获的异常。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;十一、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;源代码信息&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;list&amp;nbsp;&amp;lt;funcname|linenum|+-line|+|,last|first,last&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;可以查看指定项源代码信息&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;set/show&amp;nbsp;listsize&amp;nbsp;[size_t]&amp;nbsp;&lt;font face="宋体"&gt;设置或显示&amp;nbsp;一次显示代码的行数&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;搜索代码其中&lt;font face="Times New Roman"&gt;:forward-search/search&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;正则表达式&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&lt;/font&gt;&lt;font face="宋体"&gt;是沿代码往下搜索，&lt;/font&gt;&lt;font face="Times New Roman"&gt;reverse-search&lt;/font&gt;&lt;font face="宋体"&gt;是沿代码往上搜索。此与手册中说明不符合。&lt;/font&gt;&lt;/span&gt;&lt;span style='color: rgb(255, 0, 0); font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;关于源文件目录，可以使用&lt;font face="Times New Roman"&gt;show&amp;nbsp;directories&lt;/font&gt;&lt;font face="宋体"&gt;来查看，其中包括&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;个&lt;/font&gt;&lt;font face="Times New Roman"&gt;GDB&lt;/font&gt;&lt;font face="宋体"&gt;变量：&lt;/font&gt;&lt;font face="Times New Roman"&gt;$cdir&lt;/font&gt;&lt;font face="宋体"&gt;与&lt;/font&gt;&lt;font face="Times New Roman"&gt;$cwd&lt;/font&gt;&lt;font face="宋体"&gt;，使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;p&lt;/font&gt;&lt;font face="宋体"&gt;打印这两个变量值都为&lt;/font&gt;&lt;font face="Times New Roman"&gt;void&lt;/font&gt;&lt;font face="宋体"&gt;，此处有疑问。清楚目录直接使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;directory&lt;/font&gt;&lt;font face="宋体"&gt;，设置目录使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;dir/directory&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;源码目录&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;5、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;disassemble&amp;nbsp;&amp;lt;&lt;font face="宋体"&gt;函数名&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&lt;/font&gt;&lt;font face="宋体"&gt;用于查看指定函数的汇编。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;6、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;info&amp;nbsp;line&amp;nbsp;&amp;lt;&lt;font face="宋体"&gt;函数&lt;/font&gt;&lt;font face="Times New Roman"&gt;|&lt;/font&gt;&lt;font face="宋体"&gt;行号&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;用来查询指定行或函数在运行时的内存地址&lt;/font&gt;&lt;font face="Times New Roman"&gt;start&lt;/font&gt;&lt;font face="宋体"&gt;、&lt;/font&gt;&lt;font face="Times New Roman"&gt;end&lt;/font&gt;&lt;font face="宋体"&gt;。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;十二、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;查看运行时数据&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;[p]rint&amp;nbsp;&amp;nbsp;/&amp;lt;&lt;font face="宋体"&gt;输出格式&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&amp;lt;exp&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;其中&lt;/font&gt;&lt;font face="Times New Roman"&gt;exp&lt;/font&gt;&lt;font face="宋体"&gt;为表达式：（&lt;/font&gt;&lt;font face="Times New Roman"&gt;1&lt;/font&gt;&lt;font face="宋体"&gt;）文件&lt;/font&gt;&lt;font face="Times New Roman"&gt;|&lt;/font&gt;&lt;font face="宋体"&gt;函数：：变量名&amp;nbsp;（&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;）&lt;/font&gt;&lt;font face="Times New Roman"&gt;*&lt;/font&gt;&lt;font face="宋体"&gt;首地址&lt;/font&gt;&lt;font face="Times New Roman"&gt;@&lt;/font&gt;&lt;font face="宋体"&gt;长度&amp;nbsp;&amp;nbsp;（&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;）&lt;/font&gt;&lt;font face="Times New Roman"&gt;{&lt;/font&gt;&lt;font face="宋体"&gt;类型名&lt;/font&gt;&lt;font face="Times New Roman"&gt;}&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;内存地址&lt;/font&gt;&lt;font face="Times New Roman"&gt;|&amp;amp;&lt;/font&gt;&lt;font face="宋体"&gt;变量&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;可以查看不同类型解析出来的内容&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;可以通过&amp;nbsp;&lt;font face="Times New Roman"&gt;show/set&amp;nbsp;print&amp;nbsp;[array|elements|null-stop|pretty|union|object|static-members|vtbl]&amp;nbsp;&amp;lt;on/off&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;使用&lt;font face="Times New Roman"&gt;$1&lt;/font&gt;&lt;font face="宋体"&gt;、&lt;/font&gt;&lt;font face="Times New Roman"&gt;2&lt;/font&gt;&lt;font face="宋体"&gt;、&lt;/font&gt;&lt;font face="Times New Roman"&gt;3&lt;/font&gt;&lt;font face="宋体"&gt;、&lt;/font&gt;&lt;font face="Times New Roman"&gt;4&lt;/font&gt;&lt;font face="宋体"&gt;&amp;#8230;&amp;#8230;可以表示历史记录的变量和内容。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;环境变量一定要用&lt;font face="Times New Roman"&gt;set&amp;nbsp;$[&lt;/font&gt;&lt;font face="宋体"&gt;变量名&lt;/font&gt;&lt;font face="Times New Roman"&gt;]=&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;值&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&lt;/font&gt;&lt;font face="宋体"&gt;来操作。不可以直接等于。第一次&lt;/font&gt;&lt;font face="Times New Roman"&gt;set&lt;/font&gt;&lt;font face="宋体"&gt;相当于定义变量。值可以是程序中变量、地址、结构体等。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;5、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;show&amp;nbsp;convenience&amp;nbsp;&lt;font face="宋体"&gt;表示查看所有环境变量的值。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;6、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;info&amp;nbsp;[all-]registers&amp;nbsp;&amp;lt;regName&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;可以查看所有或指定的寄存器名称。&lt;/font&gt;&lt;font face="Times New Roman"&gt;print&amp;nbsp;$&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;寄存器&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;也可以访问指定寄存器名称。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;7、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;print&amp;nbsp;&amp;lt;&lt;font face="宋体"&gt;变量名&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;=&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;变量值&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;可以给变量赋值。同样可以用&lt;/font&gt;&lt;font face="Times New Roman"&gt;set&amp;nbsp;[var]&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;变量名&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;=&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;变量值&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&lt;/font&gt;&lt;font face="宋体"&gt;。同样的效果，为了和系统变量区分，最好加&lt;/font&gt;&lt;font face="Times New Roman"&gt;var&lt;/font&gt;&lt;font face="宋体"&gt;表示你修改的是程序中的变量。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;十三、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;流程控制&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;jump&amp;nbsp;&amp;lt;&lt;font face="宋体"&gt;文件名：行号&lt;/font&gt;&lt;font face="Times New Roman"&gt;|+&lt;/font&gt;&lt;font face="宋体"&gt;行号&lt;/font&gt;&lt;font face="Times New Roman"&gt;|&lt;/font&gt;&lt;font face="宋体"&gt;地址&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;jump&lt;/font&gt;&lt;font face="宋体"&gt;不会修改程序栈中信息，因此跳转出函数时可能报错。不过跳转时会给出提示，是否跨出跳转。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;可以使用&lt;font face="Times New Roman"&gt;set&amp;nbsp;$pc=&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;跳转地址&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font face="宋体"&gt;来控制流程跳转到指定地址。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;return&amp;nbsp;&amp;lt;expr&amp;gt;&amp;nbsp;&lt;font face="宋体"&gt;取消该函数的执行并返回&lt;/font&gt;&lt;font face="Times New Roman"&gt;expr&lt;/font&gt;&lt;font face="宋体"&gt;的值作为返回值。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;4、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;使用&lt;font face="Times New Roman"&gt;call&amp;nbsp;&amp;lt;&lt;/font&gt;&lt;font face="宋体"&gt;函数名&lt;/font&gt;&lt;font face="Times New Roman"&gt;&amp;gt;&lt;/font&gt;&lt;font face="宋体"&gt;来调用函数。也可以使用&lt;/font&gt;&lt;font face="Times New Roman"&gt;print&lt;/font&gt;&lt;font face="宋体"&gt;通过求表达式的值来求函数的值，并储存在&lt;/font&gt;&lt;font face="Times New Roman"&gt;$n&lt;/font&gt;&lt;font face="宋体"&gt;变量中去。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;十四、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;杂项&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; font-weight: bold; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;1、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;set/show&amp;nbsp;language&lt;font face="宋体"&gt;设置&lt;/font&gt;&lt;font face="Times New Roman"&gt;/&lt;/font&gt;&lt;font face="宋体"&gt;显示当前的语言&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman"&gt;set&amp;nbsp;language&lt;/font&gt;&lt;font face="宋体"&gt;会显示支持的语言集合。&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;2、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;info&amp;nbsp;frame&amp;nbsp;&lt;font face="宋体"&gt;第三行&amp;nbsp;也可以显示该层的语言&lt;/font&gt;&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;3、&lt;/span&gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;info&amp;nbsp;source&amp;nbsp;&lt;font face="宋体"&gt;显示当前文档的语言&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0pt; margin-bottom: 0pt;" &gt;&lt;span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'&gt;&lt;o:p&gt;附件为GDB完全手册 &lt;a title="GDB完全手册" href="http://files.cnblogs.com/wmw1989/GDB完全手册.pdf"&gt;GDB完全手册&lt;/a&gt;&lt;a&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;!--EndFragment--&gt; &lt;img src="http://www.cnblogs.com/wmw1989/aggbug/2162062.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2011/09/01/2162062.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2011/08/09/2131813.html</id><title type="text">C++学习之重回Primer笔记（开篇）</title><summary type="text">大学一直以C#为主要语言，对C/C++的使用仅停留在写写数据结构和算法联系上，于是决定利用工作不忙的这段时间，把C++系统的过一遍。既然学C++，我想首选应该是Primer。Primer第四版特别版，正文670页左右，计划用3周时间看完，以下给出计划，并将在系列贴中写下自己的读书笔记，以督促自己学习！8月9日—8月14日 第一、二部分8月15日—8月21日 第三、四部分8月22日—8月28日 第五部分8月29、30、31日负责整理知识，及附录的查阅。本贴作为开篇，谨记严格要求自己！</summary><published>2011-08-09T02:14:00Z</published><updated>2011-08-09T02:14:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2011/08/09/2131813.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2011/08/09/2131813.html"/><content type="html">&lt;p&gt;大学一直以C#为主要语言，对C/C++的使用仅停留在写写数据结构和算法联系上，于是决定利用工作不忙的这段时间，把C++系统的过一遍。既然学C++，我想首选应该是Primer。Primer第四版特别版，正文670页左右，计划用3周时间看完，以下给出计划，并将在系列贴中写下自己的读书笔记，以督促自己学习！&lt;/p&gt;&#xD;
&lt;p&gt;8月9日&amp;#8212;8月14日 第一、二部分&lt;/p&gt;&#xD;
&lt;p&gt;8月15日&amp;#8212;8月21日 第三、四部分&lt;/p&gt;&#xD;
&lt;p&gt;8月22日&amp;#8212;8月28日 第五部分&lt;/p&gt;&#xD;
&lt;p&gt;8月29、30、31日负责整理知识，及附录的查阅。&lt;/p&gt;&#xD;
&lt;p&gt;本贴作为开篇，谨记严格要求自己！&lt;/p&gt; &lt;img src="http://www.cnblogs.com/wmw1989/aggbug/2131813.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2011/08/09/2131813.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2011/02/03/1948921.html</id><title type="text">新的一年</title><summary type="text">转眼间，大学生活已经接近尾声，最后一学期了，感觉有点舍不得。年过的还行，还是常常的坐在电脑前一天一天的过，或者通宵达旦的坐在电脑前……其实并不是不累，只是习惯了。过年的时候，才发现自己朋友原来这么多，才发现自己原来喜欢安静，回家后生活感觉少了点什么，也许是，在外想回家，在家想外出吧。家里很暖和，在电脑旁一点也不冷，可惜的就是我寄回来的书还没到手。家里充话费送了400块的书票，又买了一堆书，还是蛮开心的。技术上其实挺迷茫的，或许是学的太杂，或许是想干的太多了。新一年是得有个侧重点了，毕竟去了公司可不想被BS。现在我负责的事很多，由要更新游戏，又要开发网站，还要学新东西，感觉身心疲惫。新年后得锻炼</summary><published>2011-02-02T19:58:00Z</published><updated>2011-02-02T19:58:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2011/02/03/1948921.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2011/02/03/1948921.html"/><content type="html">&lt;p align="left"&gt;转眼间，大学生活已经接近尾声，最后一学期了，感觉有点舍不得。年过的还行，还是常常的坐在电脑前一天一天的过，或者通宵达旦的坐在电脑前&amp;#8230;&amp;#8230;其实并不是不累，只是习惯了。过年的时候，才发现自己朋友原来这么多，才发现自己原来喜欢安静，回家后生活感觉少了点什么，也许是，在外想回家，在家想外出吧。家里很暖和，在电脑旁一点也不冷，可惜的就是我寄回来的书还没到手。家里充话费送了400块的书票，又买了一堆书，还是蛮开心的。技术上其实挺迷茫的，或许是学的太杂，或许是想干的太多了。新一年是得有个侧重点了，毕竟去了公司可不想被BS。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;现在我负责的事很多，由要更新游戏，又要开发网站，还要学新东西，感觉身心疲惫。新年后得锻炼身体了。其实我对开发看的很开，只是性格太要强了，看来新的一年这点我得改改了，其实很多事不急一时的，我总想的太过完美了，改之改之。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;新年准备涉足一些底层的东西，反汇编和Linux C 网络开发之类的，另外就是SL4的开发，毕竟毕业设计还是这块的，答应的事还是要做好。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;其实时间一点也不多，感觉有点紧张，时刻都有压力。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;身体还是本钱，即使为了一口气，也得保住身体。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;今天我把憋在心里十年的话说了出来，呵呵，不知道为什么，不想再隐藏下去了。之后，就是拼命努力，夺取我要的东西。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;又一年，我离梦想还是那么远，好在思维不断在接近，眼界不断在开阔。希望明年的今天能有新的领悟。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;另外，最近喜欢上唱歌了，很好的放松手段，不是吗？&lt;/p&gt;&#xD;
&lt;p align="left"&gt;就这些了，祝福所有我爱的人和爱我的人。新的一年，我风采依然！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/1948921.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2011/02/03/1948921.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2010/12/27/1917545.html</id><title type="text">简单的文字识别</title><summary type="text">软件工程讲座其中有两节是张老师讲的，一直以来是我和小余的导师，在图形方面很有研究。他给我们留的作业就是一个简单的字母识别。通宵写了这个程序，放上来，有兴趣的可以一起研究。简单文字识别使用方法比较简单，先点输入一些学习资料，先写一个字，然后点菜单学习。学习的多了，每写一个键，右键点确定，就会自动分析匹配。</summary><published>2010-12-26T20:42:00Z</published><updated>2010-12-26T20:42:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2010/12/27/1917545.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2010/12/27/1917545.html"/><content type="html">&lt;p&gt;软件工程讲座其中有两节是张老师讲的，一直以来是我和小余的导师，在图形方面很有研究。他给我们留的作业就是一个简单的字母识别。通宵写了这个程序，放上来，有兴趣的可以一起研究。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="简单文字识别" href="http://files.cnblogs.com/wmw1989/PickPict.rar"&gt;简单文字识别&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;使用方法比较简单，先点输入一些学习资料，先写一个字，然后点菜单学习。学习的多了，每写一个键，右键点确定，就会自动分析匹配。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/1917545.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2010/12/27/1917545.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2010/08/31/1813254.html</id><title type="text">译：JamesM的内核开发教程</title><summary type="text">1.环境配置我们需要一个基础环境来设计开发我们的内核，在本教程中，我假设您使用的是*nix操作系统和GNU工具集。如果您使用的是Windows操作系统，您必须使用诸如cygwin或DJGPP这类*nux模拟环境。即便如此，本教程中的生成文件和命令仍然可能会出错。1.1目录结构我的目录布局如下：tutorial|+--src|+--docs 所有的源文件都放入src中，所有的文档都放入docs中（平...</summary><published>2010-08-30T17:14:00Z</published><updated>2010-08-30T17:14:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2010/08/31/1813254.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2010/08/31/1813254.html"/><content type="html">&lt;p&gt;1.环境配置&lt;/p&gt;&#xD;
&lt;p&gt;我们需要一个基础环境来设计开发我们的内核，在本教程中，我假设您使用的是*nix操作系统和GNU工具集。如果您使用的是Windows操作系统，您必须使用诸如cygwin或DJGPP这类*nux模拟环境。即便如此，本教程中的生成文件和命令仍然可能会出错。&lt;/p&gt;&#xD;
&lt;p&gt;1.1目录结构&lt;/p&gt;&#xD;
&lt;p&gt;我的目录布局如下：&lt;/p&gt;&#xD;
&lt;p&gt;tutorial&lt;br /&gt;&amp;nbsp;|&lt;br /&gt;&amp;nbsp;+--&amp;nbsp;src&lt;br /&gt;&amp;nbsp;|&lt;br /&gt;&amp;nbsp;+--&amp;nbsp;docs &lt;/p&gt;&#xD;
&lt;p&gt;所有的源文件都放入src中，所有的文档都放入docs中（平时开发你写文档吗？）&lt;/p&gt;&#xD;
&lt;p&gt;1.2编译&lt;/p&gt;&#xD;
&lt;p&gt;教程里的所有例子都已经通过GNU工具集成功编译&amp;nbsp;(gcc, ld, gas, etc)，所有样例代码都是用intel风格汇编书写的，因为我个人认为，使用GNU时，intel风格汇编的可读性比AT&amp;amp;T风格汇编的要好很多。我们要使用NASM来汇编程序。&lt;/p&gt;&#xD;
&lt;p&gt;本教程并不是一个内核引导教程，我们使用GRUB来加载内核。为此，我们需要让GRUB预载一个软驱映像。有很多教程可以指导我们使用GRUB，更可喜的是，你可以在我这里找到我做的一个标准软驱映像，把它放在你的教程目录下吧。&lt;/p&gt;&#xD;
&lt;p&gt;1.3运行&lt;/p&gt;&#xD;
&lt;p&gt;什么都不能替代在真机上进行内核测试，但不幸的是，真机的运行结果无法告诉你到底哪里错了（当然，你可能第一次就写出了没有问题的代码，不是吗？）。使用Bochs吧，他是一个开源的兼容32位及64位的虚拟机。当你的程序出错时，Bochs会通知你，并把一些有用的寄存器状态保存到日志中。另外，Bochs比真机启动的快很多，我的所有例子都可以在Bochs上成功运行。&lt;/p&gt;&#xD;
&lt;p&gt;1.4Bochs&lt;/p&gt;&#xD;
&lt;p&gt;为了运行Bochs，我们需要一个Bochs配置文件（bochsrc.txt），凑巧，下面有一个配置例子。&lt;/p&gt;&#xD;
&lt;p&gt;一定要注意这些BIOS文件的顺序，These seem to change between installations（不同版本可能会有不同？？？）。如果你用源代码直接编译出Bochs，很可能你没有这些文件。Google一下文件名，并从官网站上下载。&lt;/p&gt;&#xD;
&lt;p&gt;megs:&amp;nbsp;32&lt;br /&gt;romimage:&amp;nbsp;file=/usr/share/bochs/BIOS-bochs-latest,&amp;nbsp;address=0xf0000&lt;br /&gt;vgaromimage:&amp;nbsp;/usr/share/bochs/VGABIOS-elpin-2.40&lt;br /&gt;floppya:&amp;nbsp;1_44=/dev/loop0,&amp;nbsp;status=inserted&lt;br /&gt;boot:&amp;nbsp;a&lt;br /&gt;log:&amp;nbsp;bochsout.txt&lt;br /&gt;mouse:&amp;nbsp;enabled=0&lt;br /&gt;clock:&amp;nbsp;sync=realtime&lt;br /&gt;cpu:&amp;nbsp;ips=500000 &lt;/p&gt;&#xD;
&lt;p&gt;以上设置使Bochs虚拟出一个32M内存，350MHz P2的CPU。每秒都会刷过很多信息&amp;#8212;&amp;#8212;但我喜欢一个慢速的虚拟机，原因很简单，这样我可以看清很多文字在滚动。&lt;/p&gt;&#xD;
&lt;p&gt;1.5 使用脚本&lt;/p&gt;&#xD;
&lt;p&gt;我们将要频繁的做一些事&amp;#8212;&amp;#8212;编译和连接我们的项目，把生成的二进制内核写入软驱镜像。&lt;/p&gt;&#xD;
&lt;p&gt;1.5.1 生成脚本&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('be0f28fe-f6f5-4d57-87fb-d0aca51c2153')"&gt;&lt;img style="display: none" id="code_img_opened_be0f28fe-f6f5-4d57-87fb-d0aca51c2153"  onclick="cnblogs_code_hide('be0f28fe-f6f5-4d57-87fb-d0aca51c2153',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_be0f28fe-f6f5-4d57-87fb-d0aca51c2153" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;#&amp;nbsp;Makefile&amp;nbsp;for&amp;nbsp;JamesM&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;s&amp;nbsp;kernel&amp;nbsp;tutorials.&lt;br /&gt;#&amp;nbsp;The&amp;nbsp;C&amp;nbsp;and&amp;nbsp;C++&amp;nbsp;rules&amp;nbsp;are&amp;nbsp;already&amp;nbsp;setup&amp;nbsp;by&amp;nbsp;default.&lt;br /&gt;#&amp;nbsp;The&amp;nbsp;only&amp;nbsp;one&amp;nbsp;that&amp;nbsp;needs&amp;nbsp;changing&amp;nbsp;is&amp;nbsp;the&amp;nbsp;assembler&amp;nbsp;&lt;br /&gt;#&amp;nbsp;rule,&amp;nbsp;as&amp;nbsp;we&amp;nbsp;use&amp;nbsp;nasm&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;GNU&amp;nbsp;as.&lt;br /&gt;&lt;br /&gt;SOURCES=boot.o&lt;br /&gt;&lt;br /&gt;CFLAGS=&lt;br /&gt;LDFLAGS=-Tlink.ld&lt;br /&gt;ASFLAGS=-felf&lt;br /&gt;&lt;br /&gt;all:&amp;nbsp;$(SOURCES)&amp;nbsp;link&amp;nbsp;&lt;br /&gt;&lt;br /&gt;clean:&lt;br /&gt;&amp;nbsp;&amp;#187;&amp;nbsp;&amp;nbsp;-rm&amp;nbsp;*.o&amp;nbsp;kernel&lt;br /&gt;&lt;br /&gt;link:&lt;br /&gt;&amp;nbsp;&amp;#187;&amp;nbsp;&amp;nbsp;ld&amp;nbsp;$(LDFLAGS)&amp;nbsp;-o&amp;nbsp;kernel&amp;nbsp;$(SOURCES)&lt;br /&gt;&lt;br /&gt;.s.o:&lt;br /&gt;&amp;nbsp;&amp;#187;&amp;nbsp;&amp;nbsp;nasm&amp;nbsp;$(ASFLAGS)&amp;nbsp;$&amp;lt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这段生成脚本将编译SOURCES中的每个文件，并把他们连接在一起生成一个二进制内核。当然，做这些需要一个连接脚本，下面所说的link.ld就是做这个的。&lt;/p&gt;&#xD;
&lt;p&gt;1.5.2 link.ld&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('7aafa0be-6301-49b0-a3cb-d56980b9caa1')"&gt;&lt;img style="display: none" id="code_img_opened_7aafa0be-6301-49b0-a3cb-d56980b9caa1"  onclick="cnblogs_code_hide('7aafa0be-6301-49b0-a3cb-d56980b9caa1',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_7aafa0be-6301-49b0-a3cb-d56980b9caa1" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;/*&amp;nbsp;Link.ld&amp;nbsp;--&amp;nbsp;Linker&amp;nbsp;script&amp;nbsp;for&amp;nbsp;the&amp;nbsp;kernel&amp;nbsp;-&amp;nbsp;ensure&amp;nbsp;everything&amp;nbsp;goes&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;the&amp;nbsp;*/&lt;br /&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Correct&amp;nbsp;place.&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Original&amp;nbsp;file&amp;nbsp;taken&amp;nbsp;from&amp;nbsp;Bran&lt;/span&gt;&lt;span style="color: #800000"&gt;'&lt;/span&gt;&lt;span style="color: #800000"&gt;s&amp;nbsp;Kernel&amp;nbsp;Development&amp;nbsp;*/&lt;br /&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tutorials:&amp;nbsp;http://www.osdever.net/bkerndev/index.php.&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;ENTRY(start)&lt;br /&gt;SECTIONS&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;.text&amp;nbsp;0x100000&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;code&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;_code&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;__code&amp;nbsp;=&amp;nbsp;.;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(.text)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&amp;nbsp;=&amp;nbsp;ALIGN(4096);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;.data&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;_data&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;__data&amp;nbsp;=&amp;nbsp;.;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(.data)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(.rodata)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&amp;nbsp;=&amp;nbsp;ALIGN(4096);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;.bss&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bss&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;_bss&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;__bss&amp;nbsp;=&amp;nbsp;.;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*(.bss)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&amp;nbsp;=&amp;nbsp;ALIGN(4096);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;end&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;_end&amp;nbsp;=&amp;nbsp;.;&amp;nbsp;__end&amp;nbsp;=&amp;nbsp;.;&lt;br /&gt;}&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这段脚本告诉LD如何建立内核映像。首先，它告诉LD开始的位置应该在start符号的位置。之后，他告诉LD，.text （你的代码所在）将从0x100000开始执行。之后执行.data段和.bss段，这两项都是page-aligned (ALIGN(4096))，Linux GCC也增加了一个额外的数据段：fodata，这个只是用来初始化，像常数一样。为了简单起见，我们捆绑使用他们。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/1813254.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2010/08/31/1813254.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2010/08/30/1812721.html</id><title type="text">软件实训期间优秀网站赏析集合</title><summary type="text">一、http://www.oksusutea.com/index.asp源自夏网页顶头的菜单非常美妙，缓动的下拉，Hover后字体变大挤开其他字，给人一种动态的感觉。下面的自行车跑动点缀了网页的动态效果，整体页面有很多会动的小物件激活了页面。二、http://www.joseishi.net/vivi/index_pc.html源自夏缺点是网站比较冗余，图片过多使打开速度较慢。特别之处在于中间的翻...</summary><published>2010-08-30T08:40:00Z</published><updated>2010-08-30T08:40:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2010/08/30/1812721.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2010/08/30/1812721.html"/><content type="html">&lt;p&gt;一、&lt;a href="http://www.oksusutea.com/index.asp"&gt;http://www.oksusutea.com/index.asp&lt;/a&gt;&amp;nbsp;源自夏&lt;/p&gt;&#xD;
&lt;p&gt;网页顶头的菜单非常美妙，缓动的下拉，Hover后字体变大挤开其他字，给人一种动态的感觉。下面的自行车跑动点缀了网页的动态效果，整体页面有很多会动的小物件激活了页面。&lt;/p&gt;&#xD;
&lt;p&gt;二、&lt;a href="http://www.joseishi.net/vivi/index_pc.html"&gt;http://www.joseishi.net/vivi/index_pc.html&lt;/a&gt;&amp;nbsp;源自夏&lt;/p&gt;&#xD;
&lt;p&gt;缺点是网站比较冗余，图片过多使打开速度较慢。特别之处在于中间的翻页FLASH，翻页效果做的很好，还有翻页底下还有一个小的进度条，这个进度条的变化，给人一种动态的感觉。整页面的方体布局给人一种充实的感觉。&lt;/p&gt;&#xD;
&lt;p&gt;三、&lt;a href="http://shuxia.cc/"&gt;http://shuxia.cc/&lt;/a&gt;&amp;nbsp;源自珍&lt;/p&gt;&#xD;
&lt;p&gt;整体感觉美工非常优秀，背景是淡雅的颜色，上面头部的FLASH插画，可以滚动，给人一种书中插画的感觉。颜色搭配鲜艳，但都是宁静色。小物件设计的很细心，字体搭配的非常好。内容位置很合适，标题较鲜明。&lt;/p&gt;&#xD;
&lt;p&gt;四、&lt;a href="http://www.cdjsxy.com/"&gt;http://www.cdjsxy.com/&lt;/a&gt;&amp;nbsp;源自珍&lt;/p&gt;&#xD;
&lt;p&gt;暗金黄色与黑色搭配很合适，只不过中间部分做的比较粗糙。进入首页后是弹出新窗口，这点很不方便。进入首页后，是典型的观赏FLASH设计，上下结构。再有就是加载信息时的进度条，很点缀。&lt;/p&gt;&#xD;
&lt;p&gt;五、&lt;a href="http://www.aocen.net/"&gt;http://www.aocen.net/&lt;/a&gt;&amp;nbsp;源自珍&lt;/p&gt;&#xD;
&lt;p&gt;这个网站颜色选取时，绿色过偏。中间部分其实可以用圆角矩形。页面整体位置偏下，字不够明亮，上下过高，滚动条的出现很不友好。&lt;/p&gt;&#xD;
&lt;p&gt;六、&lt;a href="http://www.coca-cola.com.tw/"&gt;http://www.coca-cola.com.tw/&lt;/a&gt;&amp;nbsp;源自珍&lt;/p&gt;&#xD;
&lt;p&gt;这个网站是典型的产品站布局，上下流线布局对开，页面简洁大方，信息分类明显。下面那个FLASH的产品展示很优秀，简洁的把所有产品分类罗列了。&lt;/p&gt;&#xD;
&lt;p&gt;七、&lt;a href="http://www.pacoo.net/"&gt;http://www.pacoo.net/&lt;/a&gt;源自丁&lt;/p&gt;&#xD;
&lt;p&gt;这个站有个比较致命的缺点，就是同时出现了卡通字体和正文字体做菜单和标题头，这使得网站风格受到影响，小字给人凌乱的感觉，用户阅读起来很费力气。一般这类可爱的站点，一般都比较花哨，如果整体风格是这类可爱+花哨的，如果一旦出现了一点点不协调因素都会被放大。比如上面的几个按扭，都是背景图片+普通文字，这给视觉造成很大的影响，不仅字难看清，而且整站凌乱。另外一点，网站的宽度不协调，对于上有标头的网站，宽度不应过窄。否则会有尖尖的感觉。&lt;/p&gt;&#xD;
&lt;p&gt;八、&lt;a href="http://www.derbauer.de/"&gt;http://www.derbauer.de/&lt;/a&gt;&amp;nbsp;源自丁&lt;/p&gt;&#xD;
&lt;p&gt;欢迎界面做的很有创意思，整站设计风格挺好的，不过网速过慢&amp;#8230;&amp;#8230;悲剧&lt;/p&gt;&#xD;
&lt;p&gt;九、&lt;a href="http://milkday.xinxianwu.com/"&gt;http://milkday.xinxianwu.com/&lt;/a&gt;源自丁&lt;/p&gt;&#xD;
&lt;p&gt;动画做的好，栏目之间的横动切换设计的好。&lt;/p&gt;&#xD;
&lt;p&gt;十、&lt;a href="http://www.tonlion.com/"&gt;http://www.tonlion.com/&lt;/a&gt;源自丁&lt;/p&gt;&#xD;
&lt;p&gt;在衣服男女选择时用了中线分割，这个可以借鉴，在一般会员注册中如果选用此方法则很方便。另外，返回首页有点小，其实可以做成上一步就可以。&lt;/p&gt;&#xD;
&lt;p&gt;十一、&lt;a href="http://www.nemo-diy.com/Html/index.asp"&gt;http://www.nemo-diy.com/Html/index.asp&lt;/a&gt;源自丁&lt;/p&gt;&#xD;
&lt;p&gt;整个页面布局也是典型布局，下面使用了弧线效果很好，但纯白色显的有些刺眼，两边过于空旷，弧线的存在稍微缓解了下这个问题。整站上半部分布局太过松散，下面太过紧凑。纯白色显大气，上面的橘黄条也有大气的效果。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/1812721.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2010/08/30/1812721.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2010/08/12/1797755.html</id><title type="text">Silverlight4深蓝游戏开发学习笔记(一) 基础动画方式</title><summary type="text">SL中提供三种动画的方法:1.Storyboard 2.CompositionTarget 3.DispatcherTimer一. Storyboard这是SL首推的动画实现方法,因为Storyboard内部已经为用户进行了一些处理,用户只要一个开始状态,一个结束状态,一个动画实现.就可以组建一个完整的动画.简单步骤:1.实例化Storyboard对象.Storyboard sb = neFill...</summary><published>2010-08-11T17:41:00Z</published><updated>2010-08-11T17:41:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2010/08/12/1797755.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2010/08/12/1797755.html"/><content type="html">&lt;p&gt;SL中提供三种动画的方法:1.Storyboard 2.CompositionTarget 3.DispatcherTimer&lt;/p&gt;&#xD;
&lt;p&gt;一. Storyboard&lt;/p&gt;&#xD;
&lt;p&gt;这是SL首推的动画实现方法,因为Storyboard内部已经为用户进行了一些处理,用户只要一个开始状态,一个结束状态,一个动画实现.就可以组建一个完整的动画.简单步骤:&lt;/p&gt;&#xD;
&lt;p&gt;1.实例化Storyboard对象.&lt;/p&gt;&#xD;
&lt;p&gt;Storyboard sb = neFillBehaviorw Storyboard(); ///这里Storyboard中的board是小写...我总容易打成大写....另外SB这个缩写确实很搞笑...&lt;/p&gt;&#xD;
&lt;p&gt;2.设置一种Timeline (第二个词又是小写..我一打快就容易打成大写....).Timeline直译为时间线,是用来描述在一段时间中对象的状态,它是一个抽象类,包括&lt;/p&gt;&#xD;
&lt;p&gt;Timeline{&lt;/p&gt;&#xD;
&lt;p&gt;AutoReverse&amp;nbsp; bool 播放完后是否反转播放&lt;/p&gt;&#xD;
&lt;p&gt;BeginTime TimeSpan 开始播放时间&lt;/p&gt;&#xD;
&lt;p&gt;Duration Duration(这个类用来描述一段时间,不过重载了一些运算符,支持一些+-之类的运算,一般使用还是用它的构造函数,参数为TimeSpan) 描述动画执行的时间段&lt;/p&gt;&#xD;
&lt;p&gt;FillBehavior FillBehavior(这是个枚举,包括两个值,默认是HoldEnd:当自己这个Timeline执行完后,如果父级对象未终止,则自己保持进度跟着延续.另外一个值是Stop:当自己执行完后,立刻停止.) 这个属性指定当自己超出活动期但父级对象仍在活动时的行为方式.&lt;/p&gt;&#xD;
&lt;p&gt;RepeatBehavior RepeatBehavior(这是一个结构体,主要指定时间线的重复情况,可以用Count来指定重复执行的次数,可以用Forever来无限重复,还可以用一个Duration来设置重复播放总时间)&lt;/p&gt;&#xD;
&lt;p&gt;SpeedRatio double 这个值用来设置时间线的时间前进速度.如果是根时间线,则为设置默认速度.如果为子级时间线,则这个double值是一个比例.0.5表示父级的一半.注意,这个不是直接设置动画的移动速度,则是通过设置时间走的快慢,来调整动画状态.&lt;/p&gt;&#xD;
&lt;p&gt;Completed event 这个是时间线结束后的事件触发.&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;而抽象类Timeline的具体表现,有很多种,但这次主要讲动画方式,所以只拿其中一个DoubleAnimation做例.&lt;/p&gt;&#xD;
&lt;p&gt;DoubleAnimation{&lt;/p&gt;&#xD;
&lt;p&gt;From double?&amp;nbsp; 默认null 这个值表示的是指定属性的开始值&lt;/p&gt;&#xD;
&lt;p&gt;By double? 默认是null 这个By表示的是增量,意思是,指定的属性从From开始插值计算到From+By的和.&lt;/p&gt;&#xD;
&lt;p&gt;To double? 默认是null 这个To表示的是结束值.意思是指定属性从From开始插值计算到To的值.&lt;/p&gt;&#xD;
&lt;p&gt;EasingFunction IEasingFunction(接口,通过一个double类型的参数来表示进度,转换为一个新的表示进度的double值) 这个缓动函数.其实也好理解,就是读取当前时间线进度,通过自定义计算,输出一个计算的新进度,从而实现一些特别的效果,比如忽快忽慢,先快后慢等.&lt;/p&gt;&#xD;
&lt;p&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;3.设置好Timeline后,还要将Timeline绑定到指定属性&lt;/p&gt;&#xD;
&lt;p&gt;这主要依靠三个函数:&lt;/p&gt;&#xD;
&lt;p&gt;Storyboard.SetTargetName(Timeline,string); (时间线对象,如DoubleAnimation的实例,绑定对象的名称)&lt;/p&gt;&#xD;
&lt;p&gt;Storyboard.SetTarget(Timeline,DenpendencyObject); (时间线对象,要绑定的对象.) 注:只有依赖对象才可以进行Storyboard动画.&lt;/p&gt;&#xD;
&lt;p&gt;Storyboard.SetTargetProperty(Timeline, PropertyPath); (时间线对象,要绑定的属性的属性路径) 注:只有依赖属性才可以进行Storyboard动画.(插值引擎只负责通过计算来设置DenpendencyProperty,不负责更新显示工作,而依赖属性值改变后触发事件刷新显示区而更新显示.)&lt;/p&gt;&#xD;
&lt;p&gt;其中PropertyPath是一个密封类,我们一般通过其构造函数来设置要绑定动画的属性的路径.&lt;/p&gt;&#xD;
&lt;p&gt;4.将时间线添加到Storyboard中,并执行动画.&lt;/p&gt;&#xD;
&lt;p&gt;sb.Children.Add(Timeline); //将时间线添加到Storyboard实例&lt;br /&gt;sb.Begin();&lt;/p&gt;&#xD;
&lt;p&gt;最后贴上1-4步的代码:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('682f475a-b2d2-40e1-b3f1-d82fc96f1569')"&gt;&lt;img style="display: none" id="code_img_opened_682f475a-b2d2-40e1-b3f1-d82fc96f1569"  onclick="cnblogs_code_hide('682f475a-b2d2-40e1-b3f1-d82fc96f1569',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div id="cnblogs_code_open_682f475a-b2d2-40e1-b3f1-d82fc96f1569" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;endPoint&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;e.GetPosition(LayoutRoot);&lt;br /&gt;Storyboard&amp;nbsp;sb&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Storyboard();&lt;br /&gt;DoubleAnimation&amp;nbsp;da&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DoubleAnimation()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;From&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Canvas.GetLeft(StoryB),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;To&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endPoint.X,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Duration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Duration(TimeSpan.FromMilliseconds(&lt;/span&gt;&lt;span style="color: #800080"&gt;2000&lt;/span&gt;&lt;span style="color: #000000"&gt;))&lt;br /&gt;};&lt;br /&gt;Storyboard.SetTarget(da,&amp;nbsp;StoryB);&lt;br /&gt;Storyboard.SetTargetProperty(da,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;PropertyPath(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;(Canvas.Left)&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;sb.Children.Add(da);&lt;br /&gt;da&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DoubleAnimation()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;From&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Canvas.GetTop(StoryB),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;To&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endPoint.Y,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Duration&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Duration(TimeSpan.FromMilliseconds(&lt;/span&gt;&lt;span style="color: #800080"&gt;2000&lt;/span&gt;&lt;span style="color: #000000"&gt;))&lt;br /&gt;};&lt;br /&gt;Storyboard.SetTarget(da,&amp;nbsp;StoryB);&lt;br /&gt;Storyboard.SetTargetProperty(da,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;PropertyPath(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;(Canvas.Top)&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;sb.Children.Add(da);&lt;br /&gt;sb.Begin();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;二. CompositionTarget&lt;/p&gt;&#xD;
&lt;p&gt;这个是通过注册界面刷新每一帧的Rendering事件来实现的,是在界面刷新的固有频率中增加动画.&lt;/p&gt;&#xD;
&lt;p&gt;实现起来很简单:&lt;/p&gt;&#xD;
&lt;p&gt;CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);&amp;nbsp; //增加一个事件处理&lt;/p&gt;&#xD;
&lt;p&gt;void CompositionTarget_Rendering(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;　　//动画实现逻辑&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;这样每次界面固定刷新时，都会执行事件，在事件处理中，我们可以进行增加动画：比如按一定规律设置一些对象的DenpendencyProperty来改变对象外观，实现动画。&lt;/p&gt;&#xD;
&lt;p&gt;下面给出实验代码，先在左键单击中计算目的位置坐标，用三角函数求得Tan值，来计算物理在X，Y方向的速度，并存入一个Point中，然后在Rendering中动态设置物理的Canvas.Left和Top，实现动画。全部代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('d2004c79-0391-4d74-9ff4-f10ff7b70020')"&gt;&lt;img style="display: none" id="code_img_opened_d2004c79-0391-4d74-9ff4-f10ff7b70020"  onclick="cnblogs_code_hide('d2004c79-0391-4d74-9ff4-f10ff7b70020',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div id="cnblogs_code_open_d2004c79-0391-4d74-9ff4-f10ff7b70020" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;LayoutRoot_MouseLeftButtonDown(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;MouseButtonEventArgs&amp;nbsp;e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Abs(Canvas.GetLeft(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;e.GetPosition(LayoutRoot).X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Math.Abs(Canvas.GetTop(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;e.GetPosition(LayoutRoot).Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;double&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dXY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dX&amp;nbsp;:&amp;nbsp;dY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;speedPoint&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Point(dX&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dXY,&amp;nbsp;dY&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;dXY);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CompositionTarget_Rendering(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Canvas.GetLeft(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endPoint.X)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas.SetLeft(CompositionT,&amp;nbsp;Canvas.GetLeft(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;speedPoint.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas.SetLeft(CompositionT,&amp;nbsp;Canvas.GetLeft(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;speedPoint.X);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Canvas.GetTop(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;endPoint.Y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas.SetTop(CompositionT,&amp;nbsp;Canvas.GetTop(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;speedPoint.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas.SetTop(CompositionT,&amp;nbsp;Canvas.GetTop(CompositionT)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;speedPoint.Y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;三. DispatcherTimer&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;动画实现的方法也是计时器动画，不过优点是可以自己设置事件的触发周期。从命名空间可以看出，DispatcherTimer是在System.Windows.Threading中的类，从它名字上也看的出，Dispatcher是调度，Timer是计时器。其实就是Timer In Dispatcher Queue，Timer可以响应固定的时间间隔，通过响应固定的时间间隔来修改DependencyProperty来实现动画。&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;这个比较简单，和Timer类似，这里直接给出代码：&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;DispatcherTimer&amp;nbsp;distimer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DispatcherTimer();&lt;br /&gt;distimer.Tick&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;EventHandler(distimer_Tick);&lt;br /&gt;distimer.Interval&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;TimeSpan.FromMilliseconds(&lt;/span&gt;&lt;span style="color: #800080"&gt;50&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;distimer.Start();&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;其中 distimer_Tick 这个事件中写入与CompositionTarget的Rendering一样的处理代码即可，可以说DispatcherTimer在功能上，相当于可以设置时间间隔的CompositionTarget。（原理不同，DispatcherTimer是线程计时队列，而CompositionTarget是界面刷新）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;以上三种方法是SL中创建动画的最基本方法。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;参考文献：&lt;/p&gt;&#xD;
&lt;p&gt;深蓝色右手之动画游戏教程&lt;/p&gt;&#xD;
&lt;p&gt;TerryLee的一步一步SL2&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/1797755.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2010/08/12/1797755.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wmw1989/archive/2010/07/29/1787803.html</id><title type="text">开发兼容Win7的Ms Agent程序</title><summary type="text">有时为了提高客户体验，往往会在程序中增加帮助系统，当年OfficeXP提供了一种叫助手精灵的帮助插件，一个小老头来帮助用户使用Office。现在Win7了，直接使用以往的Ms Agent来开发老头做使用帮助的话，会出现不兼容的情况（即使安装了MS的兼容包，老头也不是透明的，会有粉色的背景。）。当然，也可以选择自己用不规则窗体开发一个精灵老头，只不过种类繁多的魔法动作就难以实现了。不过还好，国外有人...</summary><published>2010-07-29T05:20:00Z</published><updated>2010-07-29T05:20:00Z</updated><author><name>寻雨</name><uri>http://www.cnblogs.com/wmw1989/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wmw1989/archive/2010/07/29/1787803.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wmw1989/archive/2010/07/29/1787803.html"/><content type="html">&lt;p&gt;有时为了提高客户体验，往往会在程序中增加帮助系统，当年OfficeXP提供了一种叫助手精灵的帮助插件，一个小老头来帮助用户使用Office。现在Win7了，直接使用以往的Ms Agent来开发老头做使用帮助的话，会出现不兼容的情况（即使安装了MS的兼容包，老头也不是透明的，会有粉色的背景。）。当然，也可以选择自己用不规则窗体开发一个精灵老头，只不过种类繁多的魔法动作就难以实现了。不过还好，国外有人已经把Ms Agent修改了为兼容Win7的DoubleAgent。这里给出下载连接：&lt;a title="X86版的DoubleAgent" href="http://files.cnblogs.com/wmw1989/DoubleAgent_x86.rar"&gt;X86版的DoubleAgent&lt;/a&gt;。&lt;/p&gt;&#xD;
&lt;p&gt;下载后即可安装，至于那些精灵的文件，网上有很多，MS官网有4种基本精灵的文件：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=bd3c4655-79e4-4791-ab9d-abc7bbd133ef&amp;amp;displayLang=en"&gt;http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=bd3c4655-79e4-4791-ab9d-abc7bbd133ef&amp;amp;displayLang=en&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;另外还有个地址有一些用户个人开发的精灵文件：不过个人看，还是老头顺眼点。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.msagentring.org/chars.aspx"&gt;http://www.msagentring.org/chars.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;把DoubleAgent和精灵安装后，就可以在代码中使用了。首先引用DoubleAgent的组件：Double Agent ActiveX Control，拖动出来的实例为axDaControl系列。&lt;/p&gt;&#xD;
&lt;p&gt;DoubleAgent的使用方法和Ms Agent完全一样，另外安装包中还给了Doc，可以参考。&lt;/p&gt;&#xD;
&lt;p&gt;另外给出我简单写的一个DoubleAgent使用类的代码。代码中DoubleAgent的加载精灵在MainForm的单件中。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('b77cc6f3-df39-4531-a209-5097a61c775f')"&gt;&lt;img style="display: none" id="code_img_opened_b77cc6f3-df39-4531-a209-5097a61c775f"  onclick="cnblogs_code_hide('b77cc6f3-df39-4531-a209-5097a61c775f',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div id="cnblogs_code_open_b77cc6f3-df39-4531-a209-5097a61c775f" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Collections.Generic;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Linq;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Text;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;StreetControlSystem.UI&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;HelpHand&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;Roles&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Merlin&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Robby&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Genie&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Peedy&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;Actions&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;RestPose&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Wave&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;DontRecognize&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Uncertain&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Decline&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Sad&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;StopListening&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GetAttention&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GetAttentionReturn&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Blink&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle3_2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Surprised&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Congratulate_2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Reading&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Announce&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Read&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;ReadReturn&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle2_2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Writing&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Write&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;WriteReturn&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Congratulate&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Confused&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Suggest&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;MoveRight&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;MoveLeft&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle2_1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;MoveUp&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;MoveDown&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;StartListening&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;WriteContinued&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;DoMagic1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;DoMagic2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle1_1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookDown&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookDownBlink&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookDownReturn&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookLeft&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookLeftBlink&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookLeftReturn&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle1_3&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookRight&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookRightBlink&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookRightReturn&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookUp&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookUpBlink&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;LookUpReturn&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle1_2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;ReadContinued&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Pleased&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GetAttentionContinued&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Process&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Search&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Think&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle1_4&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Greet&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Idle3_1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GestureUp&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GestureDown&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GestureLeft&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;GestureRight&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Show&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hide&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hearing_4&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hearing_1&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hearing_2&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Hearin&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Alert&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Explain&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Processing&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Thinking&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Searching&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Acknowledge&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ChangeRoles(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i_role)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainForm.Character&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MainForm.Singleton.axDaControl1.Characters[Roles[i_role]];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Hide()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainForm.Character.Hide(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Show()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainForm.Character.Show(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Speak(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainForm.Character.Speak(str,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;PlayRandom()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Random&amp;nbsp;rdm&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Random(DateTime.Now.Year&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DateTime.Now.Month&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DateTime.Now.Day&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DateTime.Now.Hour&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DateTime.Now.Second&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DateTime.Now.Minute&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DateTime.Now.Millisecond);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i_rnd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;rdm.Next()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;%&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Actions.Length;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainForm.Character.Play(Actions[i_rnd]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SpeakWithAct(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Speak(str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PlayRandom();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MoveTo(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;x,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainForm.Character.MoveTo((&lt;/span&gt;&lt;span style="color: #0000ff"&gt;short&lt;/span&gt;&lt;span style="color: #000000"&gt;)x,&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;short&lt;/span&gt;&lt;span style="color: #000000"&gt;)y,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Move(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;x,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MainForm.Character.MoveTo((&lt;/span&gt;&lt;span style="color: #0000ff"&gt;short&lt;/span&gt;&lt;span style="color: #000000"&gt;)(MainForm.Character.Left&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;x),&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;short&lt;/span&gt;&lt;span style="color: #000000"&gt;)(MainForm.Character.Height&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;y),&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wmw1989/aggbug/1787803.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wmw1989/archive/2010/07/29/1787803.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
