<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>[淘尽黄沙始到金]</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/</link><description /><managingEditor>bubbleDong</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>bubbleDong</dc:creator><title>形象说明UML中的包含与扩展的区别</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/02/28/136967.html</link><pubDate>Wed, 28 Feb 2007 14:13:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/02/28/136967.html</guid><description>&lt;DIV&gt;举个网上流行的例子:比如你从1楼要去5楼,那爬楼梯是必须的,则爬楼梯是"包含关系",如果你上到2楼时,顺便去了趟卫生间,则去卫生间是"扩展关系"。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;另外转载一篇网上摘录的关于UML中关联，泛化和依赖关系比较说明。但是还有点不是很清楚，关联，泛化和依赖还有包含、扩展是一个分类体系中的吗？欢迎大家解惑。&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;类与类之间的关系对于理解面向对象具有很重要的作用，以前在面试的时候也经常被问到这个问题，在这里我就介绍一下。&lt;BR&gt;类与类之间存在以下关系:&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#3366ff&gt;(1)泛化(Generalization)&lt;BR&gt;(2)关联(Association)&lt;BR&gt;(3)依赖(Dependency)&lt;BR&gt;(4)聚合(Aggregation)&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt; 
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;UML图与应用代码例子:&lt;/STRONG&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#ff9900 size=4&gt;&lt;FONT color=#3366ff&gt;1.泛化(Generalization)&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#339966 size=3&gt;[泛化]&lt;/FONT&gt;&lt;BR&gt;&lt;/STRONG&gt;表示类与类之间的继承关系，接口与接口之间的继承关系，或类对接口的实现关系。一般化的关系是从子类指向父类的，与继承或实现的方法相反。&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[具体表现]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#ff0000&gt;父类&lt;/FONT&gt; 父类实例＝new &lt;FONT color=#ff0000&gt;子类&lt;/FONT&gt;()&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#339966 size=3&gt;[UML图](图1.1)&lt;BR&gt;&lt;/FONT&gt;&lt;IMG alt="" src="http://seagar.javaeye.com/upload/picture/pic/1320/10bfdb9d-ed2d-4226-bab2-f814d2e10a82.jpg"&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#339966&gt;&lt;STRONG&gt;图1.1&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;Animal类与Tiger类,Dog类的泛化关系&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#339966 size=3&gt;[代码表现]&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;class&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;&amp;nbsp;Animal{} &amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;class&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;Tiger&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;extends&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Animal{} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;class&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Test &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;{ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;test() &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Animal&amp;nbsp;a=&lt;/SPAN&gt;&lt;SPAN&gt;new&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Tiger(); &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;}&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&lt;FONT color=#3366ff size=4&gt;2.依赖(Dependency)&lt;/FONT&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[依赖]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;对于两个相对独立的对象，当一个对象负责构造另一个对象的实例，或者依赖另一个对象的服务时，这两个对象之间主要体现为依赖关系。&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[具体表现]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;依赖关系表现在&lt;FONT color=#ff0000&gt;局部变量&lt;/FONT&gt;，&lt;FONT color=#ff0000&gt;方法的参数&lt;/FONT&gt;，以及对&lt;FONT color=#ff0000&gt;静态方法的调用&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[现实例子]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;比如说你要去拧螺丝，你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[UML表现](图1.2)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;P align=left&gt;&lt;STRONG&gt;&lt;IMG alt="" src="http://seagar.javaeye.com/upload/picture/pic/1319/ec7bca6c-c01a-4772-a91b-3a695773ddfb.jpg"&gt;&lt;/STRONG&gt; 
&lt;P align=left&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&lt;FONT color=#339966&gt;图1.2 &lt;/FONT&gt;Person类与Screwdriver类的依赖关系&lt;/STRONG&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;&lt;BR&gt;[代码表现] &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;class&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Person{ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;/**&amp;nbsp;拧螺丝&amp;nbsp;*/&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;screw(Screwdriver&amp;nbsp;screwdriver){ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;screwdriver.screw(); &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;}&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&lt;FONT color=#3366ff size=4&gt;3.关联(Association)&lt;/FONT&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[关联]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;对于两个相对独立的对象，当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时，这两个对象之间为关联关系。&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[具体表现]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;关联关系是使用&lt;FONT color=#ff0000&gt;实例变量&lt;/FONT&gt;来实现&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[现实例子]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;比如客户和订单，每个订单对应特定的客户，每个客户对应一些特定的订单；再例如公司和员工，每个公司对应一些特定的员工，每个员工对应一特定的公司&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#339966 size=3&gt;[UML图] (图1.3)&lt;BR&gt;&lt;/FONT&gt;&lt;IMG alt="" src="http://seagar.javaeye.com/upload/picture/pic/1318/d4b10677-364d-4c34-beb7-416f8e835d8c.jpg"&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&lt;FONT color=#339966&gt;图1.3 &lt;/FONT&gt;&lt;/STRONG&gt;公司和员工的关联关系&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;[代码表现]&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;class&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Company{ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;private&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Employee&amp;nbsp;employee; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Employee&amp;nbsp;getEmployee(){ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;employee; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;setEmployee(Employee&amp;nbsp;employee){ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;this&lt;/SPAN&gt;&lt;SPAN&gt;.employee=employee; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;//公司运作 &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;run(){ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;employee.startWorking(); &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;}&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&lt;FONT color=#3366ff size=4&gt;(4)聚合（Aggregation）&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;[聚合]&lt;BR&gt;&lt;/FONT&gt;&lt;/STRONG&gt;当对象A被加入到对象B中，成为对象B的组成部分时，对象B和对象A之间为聚集关系。聚合是关联关系的一种，是较强的关联关系，强调的是&lt;FONT color=#ff0000&gt;整体&lt;/FONT&gt;与&lt;FONT color=#ff0000&gt;部分&lt;/FONT&gt;之间的关系。&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[具体表现]&lt;BR&gt;&lt;/STRONG&gt;&lt;/FONT&gt;与关联关系一样，聚合关系也是通过&lt;FONT color=#ff0000&gt;实例变量&lt;/FONT&gt;来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的，从&lt;FONT color=#ff0000&gt;语义&lt;/FONT&gt;上才能&lt;FONT color=#ff0000&gt;更好的区分&lt;/FONT&gt;两者的区别。&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[关联与聚合的区别]&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;(1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系，而不是聚合关系，因为人不是由自行车组成的。&lt;BR&gt;聚合关系涉及的两个对象处于不平等的层次上，一个代表整体，一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系，因为主板是电脑的组成部分。&lt;BR&gt;(2)对于具有聚集关系（尤其是强聚集关系）的两个对象，整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在，它的生命周期依赖于整体类的对象的生命周期，当整体消失，部分也就随之消失。比如张三的电脑被偷了，那么电脑的所有组件也不存在了，除非张三事先把一些电脑的组件（比如硬盘和内存）拆了下来。&lt;BR&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[UML图](图1.4)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;IMG alt="" src="http://seagar.javaeye.com/upload/picture/pic/1326/7032798b-36ca-4b89-a462-97ba056cbe48.jpg"&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;STRONG&gt;&lt;FONT color=#339966&gt;图1.3 &lt;/FONT&gt;&lt;FONT color=#000000&gt;电脑和组件的聚合关系&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#339966 size=3&gt;&lt;STRONG&gt;[代码表现]&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;class&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Computer{ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;private&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;CPU&amp;nbsp;cpu; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;CPU&amp;nbsp;getCPU(){ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;return&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;cpu; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;setCPU(CPU&amp;nbsp;cpu){ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;this&lt;/SPAN&gt;&lt;SPAN&gt;.cpu=cpu; &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;//开启电脑 &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;public&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;void&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;start(){ &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;//cpu运作 &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cpu.run(); &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN&gt;}&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/136967.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>MYSQL字符集</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/02/26/135573.html</link><pubDate>Mon, 26 Feb 2007 02:26:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/02/26/135573.html</guid><description>&lt;DIV class=postentry&gt;
&lt;P&gt;&lt;FONT size=2&gt;个人建议,数据库&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;尽量使用&lt;STRONG&gt;utf8&lt;/STRONG&gt;(utf-8),以使你的数据能很顺利的实现迁移,因为utf8&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;是目前最适合于实现多种不同&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;之间的转换的&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;,尽管你在命令行工具上无法正确&lt;A name=baidusnap0&gt;&lt;/A&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #ffff66"&gt;查看&lt;/B&gt;数据库中的内容,我依然强烈建议使用utf8作为默认&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;.&lt;BR&gt;接下来是完整的一个例子：&lt;BR&gt;&lt;STRONG&gt;1.创建数据库表&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;&amp;gt;CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;#注意后面这句话 &amp;#8220;&lt;STRONG&gt;COLLATE utf8_general_ci&lt;/STRONG&gt;&amp;#8220;,大致意思是在排序时根据utf8编码格式来排序&lt;BR&gt;#那么在这个数据库下创建的所有数据表的默认&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;都会是utf8了&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;&amp;gt;create table my_table (name varchar(20) not null default '')type=myisam default charset utf8;&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;#这句话就是创建一个表了,制定默认&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;为utf8&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;2.写数据&lt;/STRONG&gt;&lt;BR&gt;&lt;STRONG&gt;通过php直接插入数据:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;?php&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_connect&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;localhost&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;user&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;,&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;password&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_select_db&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;my_db&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: rgb(255,165,0)"&gt;//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: rgb(255,165,0)"&gt;//它的作用是设置本次数据库联接过程中,数据传输的默认&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_query&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;set names utf8;&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;)&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: rgb(255,165,0)"&gt;//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_query&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;mb_convet_encoding&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;insert into my_table values('测试');&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;utf-8&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;gb2312&lt;/SPAN&gt;&lt;SPAN style="COLOR: rgb(139,0,0)"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: olive"&gt;))&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;/SPAN&gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;SPAN style="COLOR: gray"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT size=2&gt;?&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;通过页面提交插入数据:&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;&amp;lt;?php &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;//输出本页编码为utf-8 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;header("content-type:text/html; charset=utf-8"); &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_connect('localhost','user','password'); &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_select_db('my_db'); &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;if(isset($_REQUEST['name')) &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;{ &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;//由于上面已经指定本页&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;为utf-8了,因此无需转换编码 &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_query(sprintf("insert into my_table values('%s');", $_REQUEST['name'])); &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;} &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;$q = &lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_query("select * from my_table"); &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;while($r = &lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt;_fetch_row($q)) &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;{ &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;print_r($r); &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;} &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;?&amp;gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&amp;lt;form action="" method="post"&amp;gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&amp;lt;input type="text" name="name" value=""&amp;gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&amp;lt;input type="submit" value='submit'&amp;gt; &lt;/FONT&gt;
&lt;LI&gt;&lt;FONT size=2&gt;&amp;lt;/form&amp;gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;自此,使用utf8&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;的完整的例子结束了.&lt;BR&gt;如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;,这样就能直接用中文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;,如果担心查询排序等问题,可以使用binary属性约束,例如:&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;附：旧数据升级办法&lt;/STRONG&gt;&lt;BR&gt;以原来的&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;为latin1为例，升级成为utf8的&lt;B style="COLOR: black; BACKGROUND-COLOR: #99ff99"&gt;字符集&lt;/B&gt;。原来的表: old_table (default charset=latin1)，新表：new_table(default charset=utf8)。&lt;BR&gt;&lt;STRONG&gt;第一步：导出旧数据&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;mysqldump &amp;#8211;default-character-set=latin1 -hlocalhost -uroot -B my_db &amp;#8211;tables old_table &amp;gt; old.sql&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;第二步：转换编码&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;iconv -t utf-8 -f gb2312 -c old.sql &amp;gt; new.sql&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;在这里，假定原来的数据默认是gb2312编码。&lt;BR&gt;&lt;STRONG&gt;第三步：导入&lt;/STRONG&gt;&lt;BR&gt;修改old.sql，增加一条sql语句： &amp;#8220;&lt;STRONG&gt;SET NAMES utf8;&lt;/STRONG&gt;&amp;#8220;，保存。&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV class=hl-surround&gt;
&lt;OL class="hl-main ln-show"&gt;
&lt;LI class=hl-firstline&gt;&lt;FONT size=2&gt;&lt;B style="COLOR: black; BACKGROUND-COLOR: #a0ffff"&gt;mysql&lt;/B&gt; -hlocalhost -uroot my_db &amp;lt; new.sql&lt;/FONT&gt; &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;大功告成！&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;!--/DOCUMENT_FRAGMENT--&gt;&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/135573.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>今年在北京过年</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/02/19/133126.html</link><pubDate>Mon, 19 Feb 2007 13:00:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/02/19/133126.html</guid><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;今年的年是在北京过的，过得很普通，年饭吃的2个菜一个汤，三个人，我，男朋友，我妈，留了我爸一人在家了。30那天和在家一样外面的鞭炮声噼噼啪啪的响了一天，不同就是地点变了，我现在在北京了，这是我在北京过得第一个年。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;生活了20几年了，过了20多个年，年年都不同。头十年是盼着过年，因为过年有好吃的，有兄弟姐妹和我玩，可以到处跑着去拜年，大人们都围着我转，因为我高兴啊、喜庆，没事逗我开心，大家也就都开心了。后10年读书去了，每年寒假都有一堆的作业做，整天惦记着升学，对过年是盼啊却又总觉得心里搁着什么不能洒脱去玩了。现在自己也长大了，马上参加工作了，对过年的感觉也慢慢的淡了，回家过年变成是一种责任了，回去也看望看望父母，希望父母能够身体健康。想想再过几年自己有了家有了小孩过年的气氛应该又会回到了20年了吧，只是大家的角色发生了改变，而在老一些，估计也在家里盼着儿女能够回来过年啰。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;年复一年啊，每年都有不同的内容，每年都有不同的心情，每年都有不同的含义。中华悠悠5000年，持续着过年的风俗，只是因为年是我们大家心中的牵挂啊，是对彼此的祝福啊。&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/133126.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>一个比较全的火车票务的论坛</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/01/25/123178.html</link><pubDate>Thu, 25 Jan 2007 08:00:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/01/25/123178.html</guid><description>http://www.&lt;A href="http://bbs.hasea.com"&gt;bbs.hasea.com&lt;/A&gt;&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/123178.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>ps 命令</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/01/08/118383.html</link><pubDate>Mon, 08 Jan 2007 07:46:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/01/08/118383.html</guid><description>&lt;STRONG&gt;
&lt;P&gt;&lt;A href="http://webtools.live2support.com/linux/ps.php"&gt;http://webtools.live2support.com/linux/ps.php&lt;/A&gt;&lt;BR&gt;ps&lt;/P&gt;
&lt;P class=bodystyle&gt;Process status, information about processes running in memory. If you want a repetitive update of this status, use top.&lt;/P&gt;&lt;PRE&gt;SYNTAX
      Display Process info
         ps &lt;I&gt;option(s)
&lt;/I&gt;
      List all the &lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;keyword&lt;/A&gt; options
         ps [-L]

OPTIONS

     This version of ps accepts 3 kinds of option:

        -Unix98 options may be grouped and must be preceeded by a dash.
        BSD options may be grouped and must not be used with a dash.
        --GNU long options are preceeded by two dashes.

       Options of different types may be freely mixed. The &lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;PS_PERSONALITY&lt;/A&gt; 
       environment variable provides more detailed control  of ps behavior.

       The Options below are listed side-by-side (unless there are differences).

SIMPLE PROCESS SELECTION

       -A  a        select all processes (including those of other users)
       -a           select all with a tty except session leaders
       -d           select all, but omit session leaders
       -e           select all processes
       g            really all, even group leaders (does nothing w/o SunOS settings)       -N           negate selection
       r            restrict output to running processes
       T            select all processes on this terminal
       x            select processes without controlling ttys
       --deselect   negate selection

PROCESS SELECTION BY LIST

     -C              select by command name
     -G              select by RGID (supports names)
     -g              select by session leader OR by group name
            --Group  select by real group name or ID
            --group  select by effective group name or ID
     -p  p  --pid    select by process ID (PID)
     -s     --sid    select by session ID
     -t     --tty    select by terminal (tty)
     -u  U           select by effective user ID (supports names)
     -U              select by RUID (supports names)
            --User   select by real user name or ID
            --user   select by effective user name or ID

     -&lt;I&gt;123&lt;/I&gt;      implied --sid
     &lt;I&gt;123&lt;/I&gt;       implied --pid

OUTPUT FORMAT CONTROL

       -c         Different scheduler info for -l option
       -f         Full listing
       -j  j      Jobs format
       -l  l      Long format
       -O  O      Add the information associated with the space or comma separated
	          list of &lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;keywords&lt;/A&gt; specified, after the &lt;B&gt;process ID&lt;/B&gt;, in the default
	          information display.
       -o  o      Display information associated with the space or comma separated
	          list of &lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;keywords&lt;/A&gt; specified.
       --format   &lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;user-defined format&lt;/A&gt;
        s         display signal format
        u         display user-oriented format
        v         display virtual memory format
        X         old Linux i386 register format
       -y         do not show flags; show rss in place of addr

OUTPUT MODIFIERS
       C              use raw CPU time for %CPU instead of decaying average
       c              true command name
       e              show environment after the command
       f              ASCII-art process hierarchy (forest)
       -H             show process hierarchy (forest)
       h              do not print header lines (repeat header lines in BSD personality)
       -m  m          show all threads
       -n             set namelist file
       n              numeric output for WCHAN and USER
       N              specify namelist file
       O              &lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;sorting&lt;/A&gt; order (overloaded)
       S              include some dead child process data (as a  sum  with the parent)
       -w  w          wide output
       --cols         set screen width
       --columns      set screen width
       --forest       ASCII art process tree
       --html         HTML escaped output
       --headers      repeat header lines
       --no-headers   print no header line at all
       --lines        set screen height
       --nul          unjustified output with NULs
       --null         unjustified output with NULs
       --rows         set screen height
       --sort         specify &lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;sorting&lt;/A&gt; order
       --width        set screen width
       --zero         unjustified output with NULs

INFORMATION
       -V  V       print version
       L           list all format specifiers
       --help      print help message
       --info      print debugging info
       --version   print version

OBSOLETE
       A        increase the argument space (DecUnix)
       M        use alternate core (try -n or N instead)
       W        get swap info from ... not /dev/drum (try -n or N instead)
       k        use /vmcore as c-dumpfile (try -n or N instead)
&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN class=bodystyle&gt;NOTES&lt;BR&gt;The "-g" option can select by session leader OR by group name. Selection by session leader is specified by many standards, but selection by group is the logical behavior that several other operating systems use. This ps will select by session leader when the list is completely numeric (as sessions are). Group ID numbers will work only when some group names are also specified.&lt;BR&gt;&lt;BR&gt;The "m" option should not be used. Use "-m" or "-o" with a list. ("m" displays memory info, shows threads, or sorts by memory use)&lt;BR&gt;&lt;BR&gt;The "h" option varies between BSD personality and Linux usage (not printing the header) Regardless of the current personality, you can use the long options --headers and --no-headers&lt;BR&gt;&lt;BR&gt;Terminals (ttys, or screens of text output) can be specified in several forms: /dev/ttyS1, ttyS1, S1. Obsolete "ps t" (your own terminal) and "ps t?" (processes without a terminal) syntax is supported, but modern options ("T","-t" with list, "x", "t" with list) should be used instead.&lt;BR&gt;&lt;BR&gt;The BSD "O" option can act like "-O" (user-defined output format with some common fields predefined) or can be used to specify sort order. Heuristics are used to determine the behavior of this option. To ensure that the desired behavior is obtained, specify the other option (sorting or formatting) in some other way.&lt;BR&gt;&lt;BR&gt;For sorting, BSD "O" option syntax is O[+|-]k1[,[+|-]k2[,...]] Order the process listing according to the multilevel sort specified by the sequence of short keys from SORT KEYS, k1, k2, ... The `+' is quite optional, merely re-iterating the default direction on a key. `-' reverses direction only on the key it precedes.&lt;BR&gt;The O option must be the last option in a single command argument, but specifications in successive arguments are catenated.&lt;BR&gt;&lt;BR&gt;GNU sorting syntax is --sortX[+|-]key[,[+|-]key[,...]]&lt;BR&gt;Choose a multi-letter key from the SORT KEYS section. X may be any convenient separator character. To be GNU-ish use `='. The `+' is really optional since default direction is increasing numerical or lexicographic order. For example, ps jax --sort=uid,-ppid,+pid&lt;BR&gt;&lt;BR&gt;This ps works by reading the virtual files in /proc. This ps does not need to be suid kmem or have any privileges to run. Do not give this ps any special permissions.&lt;BR&gt;&lt;BR&gt;This ps needs access to a namelist file for proper WCHAN display. The namelist file must match the current Linux kernel exactly for correct output.&lt;BR&gt;&lt;BR&gt;To produce the WCHAN field, ps needs to read the System.map file created when the kernel is compiled. The search path is:&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;              $PS_SYSTEM_MAP
              /boot/System.map-`uname -r`
              /boot/System.map
              /lib/modules/`uname -r`/System.map
              /usr/src/linux/System.map
              /System.map&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN class=bodystyle&gt;The member used_math of task_struct is not shown, since crt0.s checks to see if math is present. This causes the math flag to be set for all processes, and so it is Programs swapped out to disk will be shown without command line arguments, and unless the c option is given, in brackets.&lt;BR&gt;&lt;BR&gt;%CPU shows the cputime/realtime percentage. It will not add up to 100% unless you are lucky. It is time used divided by the time the process has been running.&lt;BR&gt;&lt;BR&gt;The SIZE and RSS fields don't count the page tables and the task_struct of a proc; this is at least 12k of memory that is always resident. SIZE is the virtual size of the proc (code+data+stack).&lt;BR&gt;&lt;BR&gt;Processes marked &lt;DEFUNCT&gt;are dead processes (so-called"zombies") that remain because their parent has not destroyed them properly. These processes will be destroyed by init(8) if the parent process exits.&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;   PROCESS FLAGS
       ALIGNWARN    001   print alignment warning msgs
       STARTING     002   being created
       EXITING      004   getting shut down
       PTRACED      010   set if ptrace (0) has been called
       TRACESYS     020   tracing system calls
       FORKNOEXEC   040   forked but didn't exec
       SUPERPRIV    100   used super-user privileges
       DUMPCORE     200   dumped core
       SIGNALED     400   killed by a signal

   PROCESS STATE CODES
       D   uninterruptible sleep (usually IO)
       R   runnable (on run queue)
       S   sleeping
       T   traced or stopped
       Z   a defunct ("zombie") process

       For BSD formats and when the "stat" keyword is used, addi?
       tional letters may be displayed:
       W   has no resident pages
       &amp;lt;   high-priority process
       N   low-priority task
       L   has pages locked into memory (for real-time and custom IO)

&lt;A href="http://webtools.live2support.com/linux/ps_keywords.php"&gt;ENVIRONMENT VARIABLES and PERSONALITY&lt;/A&gt; (posix,linux,bsd,sun)

EXAMPLES

       To see every process on the system using standard syntax:
              ps -e

       To see every process on the system using BSD syntax:
              ps ax

       To see every process except those running as root (real &amp;amp; effective ID)
              ps -U root -u root -N

       To see every process with a user-defined format:
              ps -eo pid,tt,user,fname,tmout,f,wchan

       Odd display with AIX field descriptors:
              ps -o "%u : %U : %p : %a"

       Print only the process IDs of syslogd:
              ps -C syslogd -o pid=&lt;/PRE&gt;&lt;SPAN class=bodystyle&gt;&lt;/SPAN&gt;
&lt;P class=bodystyle&gt;Since ps cannot run faster than the system and is run as any other scheduled process, the information it displays can never be exact.&lt;/P&gt;&lt;/STRONG&gt;&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/118383.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>python的相关资源</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/01/06/118123.html</link><pubDate>Fri, 05 Jan 2007 16:26:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2007/01/06/118123.html</guid><description>&lt;A href="http://www.blogjava.net/shaofan/archive/2006/03/05/33659.html"&gt;http://www.blogjava.net/shaofan/archive/2006/03/05/33659.html&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;这个blog上面有一些Python的相关资源！~&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/118123.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>VC的相关网站</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/12/19/112893.html</link><pubDate>Tue, 19 Dec 2006 15:46:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/12/19/112893.html</guid><description>&lt;A href="http://www.vchelp.net/vchelp/last.asp?class_id=1"&gt;http://www.vchelp.net/vchelp/last.asp?class_id=1&lt;/A&gt;&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/112893.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>A Little Tip</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/12/12/107740.html</link><pubDate>Tue, 12 Dec 2006 11:09:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/12/12/107740.html</guid><description>google web toolkit的sample project制作UI&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/107740.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>关于枪打狗的面试题！~</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/11/28/99575.html</link><pubDate>Tue, 28 Nov 2006 12:08:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/11/28/99575.html</guid><description>一个大院子里住了50户人家，每家都养了一条狗，有一天他们接到通知说院子里有狗生病了，并要求所有主人在发现自己家狗生病的当天就要把狗枪杀掉。然而所有主人和他们的狗都不能够离开自己的房子，主人与主人之间也不能通过任何方式进行沟通，他们能做的只是通过窗户观察别人家的狗是否生病从而判断自己的狗病否。（就是说，每个主人只能看出其他49家的狗是不是生病，单独看自己的狗是看不出来的） 第一天没有枪声，第二天还是没有枪声，第三天传出一阵枪声，问有多少条狗被枪杀？&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/99575.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>bubbleDong</dc:creator><title>面试中常被问到的一些问题！~</title><link>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/11/28/99530.html</link><pubDate>Tue, 28 Nov 2006 05:45:00 GMT</pubDate><guid>http://www.mscenter.edu.cn/blog/lunar_solar/archive/2006/11/28/99530.html</guid><description>&lt;A href="http://www.esalestraining.com.cn/bbs/dispbbs.asp?boardID=18&amp;amp;ID=812&amp;amp;page=1"&gt;http://www.esalestraining.com.cn/bbs/dispbbs.asp?boardID=18&amp;amp;ID=812&amp;amp;page=1&lt;/A&gt;&lt;img src ="http://www.mscenter.edu.cn/blog/lunar_solar/aggbug/99530.html" width = "1" height = "1" /&gt;</description></item></channel></rss>