<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_yiki's space</title><subtitle type="text">.net 技术资料</subtitle><id>http://feed.cnblogs.com/blog/u/15278/rss</id><updated>2011-12-25T13:14:01Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/15278/rss"/><entry><id>http://www.cnblogs.com/yiki/archive/2011/12/25/2301275.html</id><title type="text">jquery sortable 插件参数详解</title><summary type="text">所有的事件回调函数都有两个参数：event和ui，浏览器自有event对象，和经过封装的ui对象 ui.helper - 表示sortable元素的JQuery对象，通常是当前元素的克隆对象 ui.position - 表示相对当前对象，鼠标的坐标值对象{top,left} ui.offset - 表示相对于当前页面，鼠标的坐标值对象{top,left} ui.item - 表示当前拖拽的元素 ui.placeholder - 占位符（如果有定义的话） ...</summary><published>2011-12-25T13:14:00Z</published><updated>2011-12-25T13:14:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2011/12/25/2301275.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2011/12/25/2301275.html"/><content type="html">&lt;div&gt;&lt;p&gt;&lt;span style="font-family: NSimsun;" face="NSimsun"&gt;所有的事件回调函数都有两个参数：event和ui，浏览器自有event对象，和经过封装的ui对象&lt;br /&gt;             ui.helper - 表示sortable元素的JQuery对象，通常是当前元素的克隆对象&lt;br /&gt;             ui.position - 表示相对当前对象，鼠标的坐标值对象{top,left}&lt;br /&gt;             ui.offset - 表示相对于当前页面，鼠标的坐标值对象{top,left}&lt;br /&gt;             ui.item - 表示当前拖拽的元素&lt;br /&gt;             ui.placeholder - 占位符（如果有定义的话）&lt;br /&gt;             ui.sender - 当前拖拽元素的所属sortable对象（仅当元素是从另一个sortable对象传递过来时有用）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&amp;#183;参数（参数名 : 参数类型 : 默认值）&lt;br /&gt;             appendTo : String : 'parent'&lt;br /&gt;             Defines where the helper that moves with the mouse is being  appended to during the drag (for example, to resolve overlap/zIndex  issues).&lt;br /&gt;             初始：$('.selector').sortable({ appendTo: 'body' });&lt;br /&gt;             获取：var appendTo = $('.selector').sortable('option', 'appendTo');&lt;br /&gt;             设置：$('.selector').sortable('option', 'appendTo', 'body');&lt;/p&gt; &lt;p&gt;axis : String : false&lt;br /&gt;             如果有设置，则元素仅能横向或纵向拖动。可选值：'x', 'y'&lt;br /&gt;             初始：$('.selector').sortable({ axis: 'x' });&lt;br /&gt;             获取：var axis = $('.selector').sortable('option', 'axis');&lt;br /&gt;             设置：$('.selector').sortable('option', 'axis', 'x');&lt;/p&gt; &lt;p&gt;cancel : Selector : ':input,button'&lt;br /&gt;             阻止排序动作在匹配的元素上发生。&lt;br /&gt;             初始：$('.selector').sortable({ cancel: 'button' });&lt;br /&gt;             获取：var cancel = $('.selector').sortable('option', 'cancel');&lt;br /&gt;             设置：$('.selector').sortable('option', 'cancel', 'button');&lt;/p&gt; &lt;p&gt;connectWith : Selector : false&lt;br /&gt;             允许sortable对象连接另一个sortable对象，可将item元素拖拽到另一个中。&lt;br /&gt;             初始：$('.selector').sortable({ connectWith: '.otherlist' });&lt;br /&gt;             获取：var connectWith = $('.selector').sortable('option', 'connectWith');&lt;br /&gt;             设置：$('.selector').sortable('option', 'connectWith', '.otherlist');&lt;/p&gt; &lt;p&gt;containment : Element, String, Selector : false&lt;br /&gt;             约束排序动作只能在一个指定的范围内发生。可选值：DOM对象, 'parent', 'document', 'window', 或jQuery对象&lt;br /&gt;             初始：$('.selector').sortable({ containment: 'parent' });&lt;br /&gt;             获取：var containment = $('.selector').sortable('option', 'containment');&lt;br /&gt;             设置：$('.selector').sortable('option', 'containment', 'parent');&lt;/p&gt; &lt;p&gt;cursor : String : 'auto'&lt;br /&gt;             定义在开始排序动作时，如果的样式。&lt;br /&gt;             初始：$('.selector').sortable({ cursor: 'crosshair' });&lt;br /&gt;             获取：var cursor = $('.selector').sortable('option', 'cursor');&lt;br /&gt;             设置：$('.selector').sortable('option', 'cursor', 'crosshair');&lt;/p&gt; &lt;p&gt;cursorAt : Object : false&lt;br /&gt;             当开始移动时，鼠标定位在的某个位置上（最多两个方向）。可选值：{ top, left, right, bottom }.&lt;br /&gt;             初始：$('.selector').sortable({ cursorAt: 'top' });&lt;br /&gt;             获取：var cursorAt = $('.selector').sortable('option', 'cursorAt');&lt;br /&gt;             设置：$('.selector').sortable('option', 'cursorAt', 'top');&lt;/p&gt; &lt;p&gt;delay : Integer : 0&lt;br /&gt;             以毫秒为单位，设置延迟多久才激活排序动作。此参数可防止误点击。&lt;br /&gt;             初始：$('.selector').sortable({ delay: 500 });&lt;br /&gt;             获取：var delay = $('.selector').sortable('option', 'delay');&lt;br /&gt;             设置：$('.selector').sortable('option', 'delay', 500);&lt;/p&gt; &lt;p&gt;distance : Integer : 1&lt;br /&gt;             决定至少要在元素上面拖动多少像素后，才正式触发排序动作。&lt;br /&gt;             初始：$('.selector').sortable({ distance: 30 });&lt;br /&gt;             获取：var distance = $('.selector').sortable('option', 'distance');&lt;br /&gt;             设置：$('.selector').sortable('option', 'distance', 30);&lt;/p&gt; &lt;p&gt;dropOnEmpty : Boolean : true&lt;br /&gt;             是否允許拖拽到一個空的sortable对象中。&lt;br /&gt;             初始：$('.selector').sortable({ dropOnEmpty: false });&lt;br /&gt;             获取：var dropOnEmpty = $('.selector').sortable('option', 'dropOnEmpty');&lt;br /&gt;             设置：$('.selector').sortable('option', 'dropOnEmpty', false);&lt;/p&gt; &lt;p&gt;forceHelperSize : Boolean : false&lt;br /&gt;             If true, forces the helper to have a size.&lt;br /&gt;             初始：$('.selector').sortable({ forceHelperSize: true });&lt;br /&gt;             获取：var forceHelperSize = $('.selector').sortable('option', 'forceHelperSize');&lt;br /&gt;             设置：$('.selector').sortable('option', 'forceHelperSize', true);&lt;/p&gt; &lt;p&gt;forcePlaceholderSize : Boolean : false&lt;br /&gt;             If true, forces the placeholder to have a size.&lt;br /&gt;             初始：$('.selector').sortable({ forcePlaceholderSize: true });&lt;br /&gt;             获取：var forcePlaceholderSize = $('.selector').sortable('option', 'forcePlaceholderSize');&lt;br /&gt;             设置：$('.selector').sortable('option', 'forcePlaceholderSize', true);&lt;/p&gt; &lt;p&gt;grid : Array : false&lt;br /&gt;             将排序对象的item元素视为一个格子处理，每次移动都按一个格子大小移动，数组值：[x,y]&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ grid: [50, 20] });&lt;br /&gt;             获取：var grid = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;grid&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;grid&amp;#8217;, [50, 20]);&lt;/p&gt; &lt;p&gt;handle : Selector, Element : false&lt;br /&gt;             限制排序的动作只能在item元素中的某个元素开始。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ handle: &amp;#8216;h2&amp;#8242; });&lt;br /&gt;             获取：var handle = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;handle&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;handle&amp;#8217;, &amp;#8216;h2&amp;#8242;);&lt;/p&gt; &lt;p&gt;helper : String, Function : &amp;#8216;original&amp;#8217;&lt;br /&gt;             设置是否在拖拽元素时，显示一个辅助的元素。可选值：&amp;#8217;original&amp;#8217;, &amp;#8216;clone&amp;#8217;&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ helper: &amp;#8216;clone&amp;#8217; });&lt;br /&gt;             获取：var helper = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;helper&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;helper&amp;#8217;, &amp;#8216;clone&amp;#8217;);&lt;/p&gt; &lt;p&gt;items : Selector : &amp;#8216;&amp;gt; *&amp;#8217;&lt;br /&gt;             指定在排序对象中，哪些元素是可以进行拖拽排序的。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ items: &amp;#8216;li&amp;#8217; });&lt;br /&gt;             获取：var items = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;items&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;items&amp;#8217;, &amp;#8216;li&amp;#8217;);&lt;/p&gt; &lt;p&gt;opacity : Float : false&lt;br /&gt;             定义当排序时，辅助元素(helper)显示的透明度。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ opacity: 0.6 });&lt;br /&gt;             获取：var opacity = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;opacity&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;opacity&amp;#8217;, 0.6);&lt;/p&gt; &lt;p&gt;placeholderType: StringDefault: false&lt;br /&gt;             设置当排序动作发生时，空白占位符的CSS样式。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ placeholder: &amp;#8216;ui-state-highlight&amp;#8217; });&lt;br /&gt;             获取：var placeholder = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;placeholder&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;placeholder&amp;#8217;, &amp;#8216;ui-state-highlight&amp;#8217;);&lt;/p&gt; &lt;p&gt;revert : Boolean : false&lt;br /&gt;             如果设置成true，则被拖拽的元素在返回新位置时，会有一个动画效果。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ revert: true });&lt;br /&gt;             获取：var revert = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;revert&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;revert&amp;#8217;, true);&lt;/p&gt; &lt;p&gt;scroll : Boolean : true&lt;br /&gt;             如果设置成true，则元素被拖动到页面边缘时，会自动滚动。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ scroll: false });&lt;br /&gt;             获取：var scroll = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8217;scroll&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8217;scroll&amp;#8217;, false);&lt;/p&gt; &lt;p&gt;scrollSensitivity : Integer : 20&lt;br /&gt;             设置当元素移动至边缘多少像素时，便开始滚动页面。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ scrollSensitivity: 40 });&lt;br /&gt;             获取：var scrollSensitivity = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8217;scrollSensitivity&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8217;scrollSensitivity&amp;#8217;, 40);&lt;/p&gt; &lt;p&gt;scrollSpeed : Integer : 20&lt;br /&gt;             设置页面滚动的速度。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ scrollSpeed: 40 });&lt;br /&gt;             获取：var scrollSpeed = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8217;scrollSpeed&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8217;scrollSpeed&amp;#8217;, 40);&lt;/p&gt; &lt;p&gt;tolerance : String : &amp;#8216;intersect&amp;#8217;&lt;br /&gt;             设置当拖动元素越过其它元素多少时便对元素进行重新排序。可选值：&amp;#8217;intersect&amp;#8217;, &amp;#8216;pointer&amp;#8217;&lt;br /&gt;             intersect：至少重叠50%&lt;br /&gt;             pointer：鼠标指针重叠元素&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ tolerance: &amp;#8216;pointer&amp;#8217; });&lt;br /&gt;             获取：var tolerance = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;tolerance&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;tolerance&amp;#8217;, &amp;#8216;pointer&amp;#8217;);&lt;/p&gt; &lt;p&gt;zIndex : Integer : 1000&lt;br /&gt;             设置在排序动作发生时，元素的z-index值。&lt;br /&gt;             初始：$(&amp;#8217;.selector&amp;#8217;).sortable({ zIndex: 5 });&lt;br /&gt;             获取：var zIndex = $(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;zIndex&amp;#8217;);&lt;br /&gt;             设置：$(&amp;#8217;.selector&amp;#8217;).sortable(&amp;#8217;option&amp;#8217;, &amp;#8216;zIndex&amp;#8217;, 5);&lt;/p&gt; &lt;p&gt;&amp;#183;事件&lt;/p&gt; &lt;p&gt;start&lt;br /&gt;             当排序动作开始时触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ start: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortstart&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;sort&lt;br /&gt;             当元素发生排序时触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ sort: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sort&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;change&lt;br /&gt;             当元素发生排序且坐标已发生改变时触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ change: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortchange&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;beforeStop&lt;br /&gt;             当排序动作结束之前触发此事件。此时占位符元素和辅助元素仍有效。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ beforeStop: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortbeforeStop&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;stop&lt;br /&gt;             当排序动作结束时触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ stop: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortstop&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;update&lt;br /&gt;             当排序动作结束时且元素坐标已经发生改变时触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ update: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortupdate&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;receive&lt;br /&gt;             当一个已连接的sortable对象接收到另一个sortable对象的元素后触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ receive: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortreceive&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;over&lt;br /&gt;             当一个元素拖拽移入另一个sortable对象后触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ over: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortover&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;out&lt;br /&gt;             当一个元素拖拽移出sortable对象移出并进入另一个sortable对象后触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ out: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortout&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;activate&lt;br /&gt;             当一个有使用连接的sortable对象开始排序动作时，所有允许的sortable触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ activate: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortactivate&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;deactivate&lt;br /&gt;             当一个有使用连接的sortable对象结束排序动作时，所有允许的sortable触发此事件。&lt;br /&gt;             定义：$(&amp;#8217;.selector&amp;#8217;).sortable({ deactivate: function(event, ui) { &amp;#8230; } });&lt;br /&gt;             绑定：$(&amp;#8217;.selector&amp;#8217;).bind(&amp;#8217;sortdeactivate&amp;#8217;, function(event, ui) { &amp;#8230; });&lt;/p&gt; &lt;p&gt;&amp;#183;方法&lt;br /&gt;             destory&lt;br /&gt;             从元素中移除拖拽功能。&lt;br /&gt;             用法：.sortable( &amp;#8216;destroy&amp;#8217; )&lt;/p&gt; &lt;p&gt;disable&lt;br /&gt;             禁用元素的拖拽功能。&lt;br /&gt;             用法：.sortable( &amp;#8216;disable&amp;#8217; )&lt;/p&gt; &lt;p&gt;enable&lt;br /&gt;             启用元素的拖拽功能。&lt;br /&gt;             用法：.sortable( &amp;#8216;enable&amp;#8217; )&lt;/p&gt; &lt;p&gt;option&lt;br /&gt;             获取或设置元素的参数。&lt;br /&gt;             用法：.sortable( &amp;#8216;option&amp;#8217; , optionName , [value] )&lt;/p&gt; &lt;p&gt;serialize&lt;br /&gt;             获取或设置序列化后的每个item元素的id属性。&lt;br /&gt;             用法：.sortable( &amp;#8217;serialize&amp;#8217; , [options] )&lt;/p&gt; &lt;p&gt;toArray&lt;br /&gt;             获取序列化后的每个item元素的id属性的数组。&lt;br /&gt;             用法：.sortable( &amp;#8216;toArray&amp;#8217; ）&lt;/p&gt; &lt;p&gt;refresh&lt;br /&gt;             手动重新刷新当前sortable对象的item元素的排序。&lt;br /&gt;             用法：.sortable( &amp;#8216;refresh&amp;#8217; )&lt;/p&gt; &lt;p&gt;refreshPositions&lt;br /&gt;             手动重新刷新当前sortable对象的item元素的坐标，此方法可能会降低性能。&lt;br /&gt;             用法：.sortable( &amp;#8216;refreshPositions&amp;#8217; )&lt;/p&gt; &lt;p&gt;cancel&lt;br /&gt;             取消当前sortable对象中item元素的排序改变。&lt;br /&gt;             用法：.sortable( &amp;#8216;cancel&amp;#8217; )&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/2301275.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2011/12/25/2301275.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2011/11/01/2231167.html</id><title type="text">linux环境apache多端口配置虚拟主机的方法</title><summary type="text">Linux(Ubuntu) 默认情况下，linux上apache使用的 默认文档目录是：/var/www 默认端口是：80 如果想发布自己的一个系统资源目录，可以使用下面的方法,执行如下命令： (1)添加监听端口 #cd /etc/apache2 #vim ports.conf 文件添加： NameVirtualHost *:8000 Listen 8000 (2)配置虚拟目录 #cd /etc/apache2/sites-available #cp default default-me #vim default-me 文件内容如下： &amp;lt;VirtualHost *:8000&amp;gt; Se</summary><published>2011-11-01T02:47:00Z</published><updated>2011-11-01T02:47:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2011/11/01/2231167.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2011/11/01/2231167.html"/><content type="html">&lt;div&gt;Linux(Ubuntu)&lt;br /&gt; 默认情况下，linux上apache使用的&lt;br /&gt; 默认文档目录是：/var/www&lt;br /&gt; 默认端口是：80&lt;br /&gt; &lt;br /&gt; 如果想发布自己的一个系统资源目录，可以使用下面的方法,执行如下命令：&lt;br /&gt; &lt;br /&gt; (1)添加监听端口&lt;br /&gt; #cd /etc/apache2&lt;br /&gt; #vim ports.conf&lt;br /&gt; 文件添加：&lt;br /&gt; &lt;strong&gt;NameVirtualHost *:8000&lt;br /&gt; Listen 8000&lt;br /&gt; &lt;/strong&gt;&lt;br /&gt; (2)配置虚拟目录&lt;br /&gt; #cd /etc/apache2/sites-available&lt;br /&gt; #cp default default-me&lt;br /&gt; #vim default-me&lt;br /&gt; 文件内容如下：&lt;br /&gt; &lt;br /&gt; &amp;lt;VirtualHost *:&lt;strong&gt;8000&lt;/strong&gt;&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ServerAdmin webmaster@localhost&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentRoot &lt;strong&gt;/wwwroot&lt;/strong&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory &lt;strong&gt;/&lt;/strong&gt;&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Options FollowSymLinks&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory &lt;strong&gt;/wwwroot/&lt;/strong&gt;&amp;gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Options Indexes FollowSymLinks MultiViews&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; allow from all&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorLog /var/log/apache2/error.log&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; # alert, emerg.&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; LogLevel warn&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; CustomLog /var/log/apache2/access.log combined&lt;br /&gt; &lt;br /&gt; &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt; 粗体部分是关键点。&lt;br /&gt; &lt;br /&gt; (3)发布站点&lt;br /&gt; &lt;br /&gt; # ln -s /etc/apache2/sites-available/default-me /etc/apache2/sites-enabled/001-default&lt;br /&gt; &lt;br /&gt; (4)重启服务&lt;br /&gt; &lt;br /&gt; #/etc/init.d/apache2 restart&lt;br /&gt; &lt;br /&gt; (5)测试&lt;br /&gt; http://localhost:8000/&lt;br /&gt; 如果能够正常访问就说明配置正确了。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;来源：http://www.blogjava.net/zhyiwww/archive/2010/05/24/321742.html &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/2231167.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2011/11/01/2231167.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2011/11/01/2231160.html</id><title type="text">apache 虚拟主机详细配置：http.conf配置详解</title><summary type="text">Apache的配置文件http.conf参数含义详解Apache的配置由httpd.conf文件配置，因此下面的配置指令都是在httpd.conf文件中修改。主站点的配置(基本配置)(1) 基本配置:ServerRoot &amp;quot;/mnt/software/apache2&amp;quot; #你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径，则目录是相对于该目录。PidFile logs/httpd.pid #第一个httpd进程(所有其他进程的父进程)的进程号文件位置。Listen 80 #服务器监听的端口号。ServerName www.clusting.com:80 #主</summary><published>2011-11-01T02:44:00Z</published><updated>2011-11-01T02:44:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2011/11/01/2231160.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2011/11/01/2231160.html"/><content type="html">&lt;div&gt;&lt;div id="cnblogs_post_body"&gt;&lt;div&gt;&lt;span style="font-family: Verdana, Arial, sans-serif; color: #545454; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #003300; "&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #003300; "&gt;Apache的配置文件http.conf参数含义详解&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Apache的配置由httpd.conf文件配置，因此下面的配置指令都是在httpd.conf文件中修改。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;主站点的配置(基本配置)&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(1) 基本配置:&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerRoot "/mnt/software/apache2" #你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径，则目录是相对于该目录。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;PidFile logs/httpd.pid #第一个httpd进程(所有其他进程的父进程)的进程号文件位置。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Listen 80 #服务器监听的端口号。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;ServerName www.clusting.com:80 #主站点名称（网站的主机名）。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;ServerAdmin admin@clusting.com #管理员的邮件地址。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;DocumentRoot "/mnt/web/clusting" #主站点的网页存储位置。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;以下是对主站点的目录进行访问控制：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;Directory "/mnt/web/clusting"&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Options FollowSymLinks&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AllowOverride None&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Order allow,deny&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Allow from all&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/Directory&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;在上面这段目录属性配置中，主要有下面的选项：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Options：配置在特定目录使用哪些特性，常用的值和基本含义如下：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;ExecCGI: 在该目录下允许执行CGI脚本。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;FollowSymLinks: 在该目录下允许文件系统使用符号连接。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Indexes: 当用户访问该目录时，如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;SymLinksIfOwnerMatch: 当使用符号连接时，只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;其它可用值和含义请参阅：http://www.clusting.com/Apache/ApacheManual/mod/core.html#options&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;AllowOverride：允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的，其文件名由AccessFileName指令决定)：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;None: 当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件（可以减小服务器开销）。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;All: 在.htaccess文件中可以使用所有的指令。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;其他的可用值及含义(如：Options FileInfo AuthConfig Limit等)，请参看： http://www.clusting.com/Apache/ApacheManual/mod/core.html#AllowOverride&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Order：控制在访问时Allow和Deny两个访问规则哪个优先：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Allow：允许访问的主机列表(可用域名或子网，例如：Allow from 192.168.0.0/16)。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Deny：拒绝访问的主机列表。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;更详细的用法可参看：http://www.clusting.com/Apache/ApacheManual/mod/mod_access.html#order&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;DirectoryIndex index.html index.htm index.&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;a href="http://www.demi.cn/c/php_site_builder" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #0066cc; text-decoration: none; "&gt;PHP&lt;/a&gt;&lt;/span&gt;&amp;nbsp;#主页文件的设置（本例将主页文件设置为：index.html,index.htm和index.php）&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(2) 服务器的优化 (MPM: Multi-Processing Modules)&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;apache2主要的优势就是对多处理器的支持更好，在编译时同过使用&amp;#8211;with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制，可以通过httpd -l命令列出apache的所有模块，就可以知道其工作方式：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;prefork：如果httpd -l列出prefork.c，则需要对下面的段进行配置：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;IfModule prefork.c&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;StartServers 5 #启动apache时启动的httpd进程个数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MinSpareServers 5 #服务器保持的最小空闲进程数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxSpareServers 10 #服务器保持的最大空闲进程数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxClients 150 #最大并发连接数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后被kill掉。0表示不限制，推荐设置为1000。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;在 该工作模式下，服务器启动后起动5个httpd进程(加父进程共6个，通过ps -ax|grep  httpd命令可以看到)。当有用户连接时，apache会使用一个空闲进程为该连接服务，同时父进程会fork一个子进程。直到内存中的空闲进程达到 MaxSpareServers。该模式是为了兼容一些旧版本的程序。我缺省编译时的选项。&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;worker：如果httpd -l列出worker.c，则需要对下面的段进行配置：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;IfModule worker.c&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;StartServers 2 #启动apache时启动的httpd进程个数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxClients 150 #最大并发连接数。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;IXDBA.NET社区论坛&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MinSpareThreads 25 #服务器保持的最小空闲线程数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxSpareThreads 75 #服务器保持的最大空闲线程数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;ThreadsPerChild 25 #每个子进程的产生的线程数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill掉。0表示不限制，推荐设置为1000。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;该 模式是由线程来监听客户的连接。当有新客户连接时，由其中的一个空闲线程接受连接。服务器在启动时启动两个进程，每个进程产生的线程数是固定的 (ThreadsPerChild决定)，因此启动时有50个线程。当50个线程不够用时，服务器自动fork一个进程，再产生25个线程。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;perchild：如果httpd -l列出perchild.c，则需要对下面的段进行配置：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;IfModule perchild.c&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;NumServers 5 #服务器启动时启动的子进程数&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;StartThreads 5 #每个子进程启动时启动的线程数&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MinSpareThreads 5 #内存中的最小空闲线程数&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxSpareThreads 10 #最大空闲线程数&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxThreadsPerChild 2000 #每个线程最多被请求多少次后退出。0不受限制。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxRequestsPerChild 10000 #每个子进程服务多少次后被重新fork。0表示不受限制。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;/IfModule&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;该模式下，子进程的数量是固定的，线程数不受限制。当客户端连接到服务器时，又空闲的线程提供服务。 如果空闲线程数不够，子进程自动产生线程来为新的连接服务。该模式用于多站点服务器。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;(3) HTTP返头回信息配置:&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;ServerTokens Prod #该参数设置http头部返回的apache版本信息，可用的值和含义如下：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Prod：仅软件名称，例如：apache&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Major：包括主版本号，例如：apache/2&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Minor：包括次版本号，例如：apache/2.0&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Min：仅apache的完整版本号，例如：apache/2.0.54&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;OS：包括操作系统类型，例如：apache/2.0.54（Unix）&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Full：包括apache支持的模块及模块版本号，例如：Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerSignature Off #在页面产生错误时是否出现服务器版本信息。推荐设置为Off&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(4) 持久性连接设置&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;KeepAlive On #开启持久性连接功能。即当客户端连接到服务器，下载完数据后仍然保持连接状态。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;MaxKeepAliveRequests 100 #一个连接服务的最多请求次数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;KeepAliveTimeout 30 #持续连接多长时间，该连接没有再请求数据，则断开该连接。缺省为15秒。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;别名设置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;对于不在DocumentRoot指定的目录内的页面，既可以使用符号连接，也可以使用别名。别名的设置如下：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Alias /download/ "/var/www/download/" #访问时可以输入:http://www.custing.com/download/&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;Directory "/var/www/download"&amp;gt; #对该目录进行访问控制设置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Options Indexes MultiViews&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AllowOverride AuthConfig&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Order allow,deny&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Allow from all&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/Directory&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;CGI设置&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;scrīptAlias /cgi-bin/ "/mnt/software/apache2/cgi-bin/" # 访问时可以：http://www.clusting.com/cgi-bin/ 。但是该目录下的CGI脚本文件要加可执行权限！&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;Directory "/usr/local/apache2/cgi-bin"&amp;gt; #设置目录属性&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AllowOverride None&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Options None&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Order allow,deny&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Allow from all&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/Directory&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;个人主页的设置 (public_html)&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;UserDir  public_html (间用户的主页存储在用户主目录下的public_html目录下 URL  http://www.clusting.com/~bearzhang/file.html 将读取  /home/bearzhang/public_html/file.html 文件)&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;chmod 755 /home/bearzhang #&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;使其它用户能够读取该文件。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;UserDir /var/html (the URL http://www.clusting.com/~bearzhang/file.html 将读取 /var/html/bearzhang/file.html)&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;UserDir /var/www/*/docs (the URL http://www.clusting.com/~bearzhang/file.html 将读取 /var/www/bearzhang/docs/file.html)&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;日志的设置&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(1)错误日志的设置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ErrorLog logs/error_log #日志的保存位置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;IXDBA.NET社区论坛&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;LogLevel warn #日志的级别&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;显示的格式日下：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;[Mon Oct 10 15:54:29 2005] [error] [client 192.168.10.22] access to /download/ failed, reason: user admin not allowed access&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(2)访问日志设置&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;日志的缺省格式有如下几种：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;LogFormat "%h %l %u %t "%r" %&amp;gt;s %b "%{Referer}i" "%{User-Agent}i"" combined&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;LogFormat "%h %l %u %t "%r" %&amp;gt;s %b" common #common为日志格式名称&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;LogFormat "%{Referer}i -&amp;gt; %U" referer&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;LogFormat "%{User-agent}i" agent&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;CustomLog logs/access_log common&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;格式中的各个参数如下：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;%h &amp;#8211;客户端的ip地址或主机名&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;%l &amp;#8211;The 这是由客户端 identd 判断的RFC 1413身份，输出中的符号 "-" 表示此处信息无效。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;%u &amp;#8211;由HTTP认证系统得到的访问该网页的客户名。有认证时才有效，输出中的符号 "-" 表示此处信息无效。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;%t &amp;#8211;服务器完成对请求的处理时的时间。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;"%r" &amp;#8211;引号中是客户发出的包含了许多有用信息的请求内容。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;%&amp;gt;s &amp;#8211;这个是服务器返回给客户端的状态码。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;%b &amp;#8211;最后这项是返回给客户端的不包括响应头的字节数。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;"%{Referer}i" &amp;#8211;此项指明了该请求是从被哪个网页提交过来的。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;"%{User-Agent}i" &amp;#8211;此项是客户浏览器提供的浏览器识别信息。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;下面是一段访问日志的实例：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;192.168.10.22 &amp;#8211; bearzhang [10/Oct/2005:16:53:06 +0800] "GET /download/ HTTP/1.1" 200 1228&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;192.168.10.22 &amp;#8211; - [10/Oct/2005:16:53:06 +0800] "GET /icons/blank.gif HTTP/1.1" 304 -&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;192.168.10.22 &amp;#8211; - [10/Oct/2005:16:53:06 +0800] "GET /icons/back.gif HTTP/1.1" 304 -&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;各参数的详细解释，请参阅：http://www.clusting.com/Apache/ApacheManual/logs.html&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;用户认证的配置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;(1)in the httpd.conf:&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AccessFileName .htaccess&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;#8230;&amp;#8230;&amp;#8230;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Alias /download/ "/var/www/download/"&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;Directory "/var/www/download"&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Options Indexes&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AllowOverride AuthConfig&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/Directory&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;(2) create a password file:&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;/usr/local/apache2/bin/htpasswd -c /var/httpuser/passwords bearzhang&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(3)onfigure the server to request a password and tell the server which users are allowed access.&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;vi /var/www/download/.htaccess:&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AuthType Basic&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AuthName "Restricted Files"&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;AuthUserFile /var/httpuser/passwords&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Require user bearzhang&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;#Require valid-user #all valid user&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;虚拟主机的配置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;(1)基于IP地址的虚拟主机配置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;VirtualHost 172.20.30.40&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example1&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;VirtualHost 172.20.30.50&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example2&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example2.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(2) 基于IP和多端口的虚拟主机配置&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 172.20.30.40:80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 172.20.30.40:8080&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 172.20.30.50:80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 172.20.30.50:8080&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40:80&amp;gt;&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example1-80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40:8080&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example1-8080&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.50:80&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example2-80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.50:8080&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example2-8080&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example2.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(3)单个IP地址的服务器上基于域名的虚拟主机配置：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;# Ensure that Apache listens on port 80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 80&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;# Listen for virtual host requests on all IP addresses&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;NameVirtualHost *:80&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example1&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerAlias example1.com. *.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;# Other directives here&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example2&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example2.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;# Other directives here&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(4)在多个IP地址的服务器上配置基于域名的虚拟主机：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 80&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;# This is the "main" server running on 172.20.30.40&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName server.domain.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/mainserver&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;# This is the other address&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;NameVirtualHost 172.20.30.50&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.50&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example1&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;# Other directives here &amp;#8230;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;IXDBA.NET社区论坛&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.50&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example2&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example2.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;# Other directives here &amp;#8230;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(5)在不同的端口上运行不同的站点(基于多端口的服务器上配置基于域名的虚拟主机)：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 8080&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;NameVirtualHost 172.20.30.40:80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;NameVirtualHost 172.20.30.40:8080&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40:80&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/domain-80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40:8080&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/domain-8080&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40:80&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example2.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/otherdomain-80&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40:8080&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example2.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/otherdomain-8080&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(6)基于域名和基于IP的混合虚拟主机的配置:&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;Listen 80&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;NameVirtualHost 172.20.30.40&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example1&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example1.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example2&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example2.org&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost 172.20.30.40&amp;gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot /www/example3&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example3.net&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;SSL加密的配置&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;首先在配置之前先来了解一些基本概念：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;证 书的概念：首先要有一个根证书，然后用根证书来签发服务器证书和客户证书，一般理解：服务器证书和客户证书是平级关系。SSL必须安装服务器证书来认证。  因此：在此环境中，至少必须有三个证书：根证书，服务器证书，客户端证书。  在生成证书之前，一般会有一个私钥，同时用私钥生成证书请求，再利用证书服务器的根证来签发证书。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;SSL所使用的证书可以自己生成，也可以通过一个商业性&amp;nbsp;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;CA（如Verisign 或 Thawte）签署证书。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;签发证书的问题：如果使用的是商业证书，具体的签署方法请查看相关销售商的说明；如果是知己签发的证书，可以使用openssl自带的CA.sh脚本工具。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;IXDBA.NET社区论坛&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;如果不为单独的客户端签发证书，客户端证书可以不用生成，客户端与服务器端使用相同的证书。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;(1) conf/ssl.conf 配置文件中的主要参数配置如下：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Listen 443&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;SSLPassPhraseDialog buildin&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;#SSLPassPhraseDialog exec:/path/to/program&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;SSLSessionCacheTimeout 300&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;SSLMutex file:/usr/local/apache2/logs/ssl_mutex&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;VirtualHost _default_:443&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;# General setup for the virtual host&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;DocumentRoot "/usr/local/apache2/htdocs"&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerName www.example.com:443&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ServerAdmin you@example.com&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;ErrorLog /usr/local/apache2/logs/error_log&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;TransferLog /usr/local/apache2/logs/access_log&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;SSLEngine on&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(2) 创建和使用自签署的证书：&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;a.Create a RSA private key for your Apache server&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;/usr/local/openssl/bin/openssl genrsa -des3 -out /usr/local/apache2/conf/ssl.key/server.key 1024&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;b. Create a Certificate Signing Request (CSR)&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;/usr/local/openssl/bin/openssl  req -new -key /usr/local/apache2/conf/ssl.key/server.key -out  /usr/local/apache2/conf/ssl.key/server.csr&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;c. Create a self-signed CA Certificate (X509 structure) with the RSA key of the CA&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;/usr/local/openssl/bin/openssl  req -x509 -days 365 -key /usr/local/apache2/conf/ssl.key/server.key -in  /usr/local/apache2/conf/ssl.key/server.csr -out  /usr/local/apache2/conf/ssl.crt/server.crt&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;/usr/local/openssl/bin/openssl genrsa 1024 -out server.key&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;/usr/local/openssl/bin/openssl req -new -key server.key -out server.csr&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;/usr/local/openssl/bin/openssl req -x509 -days 365 -key server.key -in server.csr -out server.crt&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;(3) 创建自己的CA（认证证书），并使用该CA来签署服务器的证书。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;mkdir /CA&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;cd /CA&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;cp openssl-0.9.7g/apps/CA.sh /CA&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;./CA.sh -newca&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;openssl genrsa -des3 -out server.key 1024&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;openssl req -new -key server.key -out server.csr&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;cp server.csr newreq.pem&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;./CA.sh -sign&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.crt&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;cp server.key /usr/local/apache2/conf/ssl.key/&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/2231160.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2011/11/01/2231160.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2010/11/22/1883855.html</id><title type="text">GetType和typeof的区别</title><summary type="text">typeof: The typeof operator is used to obtain the System.Type object for a type. 运算符，获得某一类型的 System.Type 对象。  Type t = typeof(int); GetType: Gets the Type of the current instance. 方法，获取当前实例的类型。 int i ...</summary><published>2010-11-22T02:17:00Z</published><updated>2010-11-22T02:17:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2010/11/22/1883855.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2010/11/22/1883855.html"/><content type="html">&lt;p style="text-align: left; text-indent: -50.2pt; margin: 0cm 0cm 0pt 50.2pt;" align="left"&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;typeof&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;: The typeof operator is used to obtain the System.Type object for a &lt;/span&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;type&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p style="text-align: left; text-indent: 5pt; margin: 0cm 0cm 0pt 39.9pt;" align="left"&gt;&lt;span style="color: red; font-size: 10pt;"&gt;运算符&lt;/span&gt;&lt;span style="color: black; font-size: 9pt;"&gt;，获得某一类型的&lt;/span&gt; &lt;strong&gt;&lt;span style="color: black; font-size: 8pt;"&gt;System.Type&lt;/span&gt;&lt;/strong&gt; &lt;span style="color: black; font-size: 10pt;"&gt;对象。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p style="text-align: left; text-indent: 45pt;" align="left"&gt;&lt;span style="color: gray; font-size: 10pt;"&gt;Type t = typeof(int);&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;p style="text-align: left; text-indent: -50.2pt; margin: 0cm 0cm 0pt 50.2pt;" align="left"&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;GetType&lt;/span&gt;&lt;/strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;: Gets the Type of the current instance. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p style="text-align: left; text-indent: -50.2pt; margin: 0cm 0cm 0pt 50.2pt;" align="left"&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: red; font-size: 10pt;"&gt;方法&lt;/span&gt;&lt;span style="color: black; font-size: 10pt;"&gt;，获取当前实例的类型&lt;/span&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 10pt;"&gt;。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p style="text-align: left; text-indent: -50.2pt; margin: 0cm 0cm 0pt 50.2pt;" align="left"&gt;&lt;strong&gt;&lt;span style="color: black; font-size: 10pt;"&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;/strong&gt;&lt;span style="color: gray; font-size: 10pt;"&gt;int i = 10;&lt;br /&gt;Console.WriteLine(i.GetType());&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-size: 10pt;"&gt;区别：&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;ul type="disc"&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Typeof()&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;是运算符而&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;GetType&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;是方法&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;GetType()&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;是基类&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;System.Object&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;的方法，因此只有建立一个实例之后才能够被调用（初始化以后）&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;Typeof()&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;的参数只能是&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;int,string,String,&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;自定义类型，且不能是实例&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;  &lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 10pt;"&gt;GetType() &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;和&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;typeof()&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;都返回&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;System.Type&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;的引用。&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;  &lt;p&gt;&lt;/p&gt; &lt;p&gt;TypeOf() 和GetType()的区别:&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;(1)TypeOf():得到一个Class的Type &lt;/p&gt; &lt;p&gt;(2)GetType():得到一个Class的实例的Type&lt;/p&gt; &lt;p&gt;override 一个方法的前担是这个方法在父类中：abstract or&amp;nbsp; virtual, override&lt;/p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;原文： http://www.cnblogs.com/tangself/archive/2009/12/06/1617885.html&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/1883855.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2010/11/22/1883855.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2010/11/21/1883064.html</id><title type="text">MySQL：日期函数、时间函数总结（MySQL 5.X）</title><summary type="text">一、MySQL 获得当前日期时间 函数1.1 获得当前日期+时间（date + time）函数：now()mysql&amp;gt; select now();+---------------------+| now() |+---------------------+| 2008-08-08 22:20:46 |+---------------------+除了 now() 函数能获得当前的日期时间外，...</summary><published>2010-11-21T04:55:00Z</published><updated>2010-11-21T04:55:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2010/11/21/1883064.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2010/11/21/1883064.html"/><content type="html">一、MySQL 获得当前日期时间 函数&lt;br /&gt;1.1 获得当前日期+时间（date + time）函数：now()&lt;br /&gt;mysql&amp;gt; select now();&lt;br /&gt;&lt;br /&gt;+---------------------+&lt;br /&gt;| now() |&lt;br /&gt;+---------------------+&lt;br /&gt;| 2008-08-08 22:20:46 |&lt;br /&gt;+---------------------+&lt;br /&gt;&lt;br /&gt;除了 now() 函数能获得当前的日期时间外，MySQL 中还有下面的函数：&lt;br /&gt;current_timestamp()&lt;br /&gt;,current_timestamp&lt;br /&gt;,localtime()&lt;br /&gt;,localtime&lt;br /&gt;,localtimestamp -- (v4.0.6)&lt;br /&gt;,localtimestamp() -- (v4.0.6)&lt;br /&gt;&lt;br /&gt;这些日期时间函数，都等同于 now()。鉴于 now() 函数简短易记，建议总是使用 now() 来替代上面列出的函数。&lt;br /&gt;1.2 获得当前日期+时间（date + time）函数：sysdate()&lt;br /&gt;sysdate() 日期时间函数跟 now() 类似，不同之处在于：now() 在执行开始时值就得到了， sysdate() 在函数执行时动态得到值。看下面的例子就明白了：&lt;br /&gt;mysql&amp;gt; select now(), sleep(3), now();&lt;br /&gt;&lt;br /&gt;+---------------------+----------+---------------------+&lt;br /&gt;| now() | sleep(3) | now() |&lt;br /&gt;+---------------------+----------+---------------------+&lt;br /&gt;| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |&lt;br /&gt;+---------------------+----------+---------------------+&lt;br /&gt;&lt;br /&gt;mysql&amp;gt; select sysdate(), sleep(3), sysdate();&lt;br /&gt;&lt;br /&gt;+---------------------+----------+---------------------+&lt;br /&gt;| sysdate() | sleep(3) | sysdate() |&lt;br /&gt;+---------------------+----------+---------------------+&lt;br /&gt;| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |&lt;br /&gt;+---------------------+----------+---------------------+&lt;br /&gt;&lt;br /&gt;可 以看到，虽然中途 sleep 3 秒，但 now() 函数两次的时间值是相同的； sysdate() 函数两次得到的时间值相差 3  秒。MySQL Manual 中是这样描述 sysdate() 的：Return the time at which the function  executes。&lt;br /&gt;sysdate() 日期时间函数，一般情况下很少用到。&lt;br /&gt;2. 获得当前日期（date）函数：curdate()&lt;br /&gt;mysql&amp;gt; select curdate();&lt;br /&gt;&lt;br /&gt;+------------+&lt;br /&gt;| curdate() |&lt;br /&gt;+------------+&lt;br /&gt;| 2008-08-08 |&lt;br /&gt;+------------+&lt;br /&gt;&lt;br /&gt;其中，下面的两个日期函数等同于 curdate()：&lt;br /&gt;current_date()&lt;br /&gt;,current_date&lt;br /&gt;&lt;br /&gt;3. 获得当前时间（time）函数：curtime()&lt;br /&gt;mysql&amp;gt; select curtime();&lt;br /&gt;&lt;br /&gt;+-----------+&lt;br /&gt;| curtime() |&lt;br /&gt;+-----------+&lt;br /&gt;| 22:41:30 |&lt;br /&gt;+-----------+&lt;br /&gt;&lt;br /&gt;其中，下面的两个时间函数等同于 curtime()：&lt;br /&gt;current_time()&lt;br /&gt;,current_time&lt;br /&gt;&lt;br /&gt;4. 获得当前 UTC 日期时间函数：utc_date(), utc_time(), utc_timestamp()&lt;br /&gt;mysql&amp;gt; select utc_timestamp(), utc_date(), utc_time(), now()&lt;br /&gt;&lt;br /&gt;+---------------------+------------+------------+---------------------+&lt;br /&gt;| utc_timestamp() | utc_date() | utc_time() | now() |&lt;br /&gt;+---------------------+------------+------------+---------------------+&lt;br /&gt;| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |&lt;br /&gt;+---------------------+------------+------------+---------------------+&lt;br /&gt;&lt;br /&gt;因为我国位于东八时区，所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候，非常有用。&lt;br /&gt;&lt;br /&gt;二、MySQL 日期时间 Extract（选取） 函数。&lt;br /&gt;1. 选取日期时间的各个部分：日期、时间、年、季度、月、日、小时、分钟、秒、微秒&lt;br /&gt;set @dt = '2008-09-10 07:15:30.123456';&lt;br /&gt;&lt;br /&gt;select date(@dt); -- 2008-09-10&lt;br /&gt;select time(@dt); -- 07:15:30.123456&lt;br /&gt;select year(@dt); -- 2008&lt;br /&gt;select quarter(@dt); -- 3&lt;br /&gt;select month(@dt); -- 9&lt;br /&gt;select week(@dt); -- 36&lt;br /&gt;select day(@dt); -- 10&lt;br /&gt;select hour(@dt); -- 7&lt;br /&gt;select minute(@dt); -- 15&lt;br /&gt;select second(@dt); -- 30&lt;br /&gt;select microsecond(@dt); -- 123456&lt;br /&gt;&lt;br /&gt;2. MySQL Extract() 函数，可以上面实现类似的功能：&lt;br /&gt;set @dt = '2008-09-10 07:15:30.123456';&lt;br /&gt;&lt;br /&gt;select extract(year from @dt); -- 2008&lt;br /&gt;select extract(quarter from @dt); -- 3&lt;br /&gt;select extract(month from @dt); -- 9&lt;br /&gt;select extract(week from @dt); -- 36&lt;br /&gt;select extract(day from @dt); -- 10&lt;br /&gt;select extract(hour from @dt); -- 7&lt;br /&gt;select extract(minute from @dt); -- 15&lt;br /&gt;select extract(second from @dt); -- 30&lt;br /&gt;select extract(microsecond from @dt); -- 123456&lt;br /&gt;&lt;br /&gt;select extract(year_month from @dt); -- 200809&lt;br /&gt;select extract(day_hour from @dt); -- 1007&lt;br /&gt;select extract(day_minute from @dt); -- 100715&lt;br /&gt;select extract(day_second from @dt); -- 10071530&lt;br /&gt;select extract(day_microsecond from @dt); -- 10071530123456&lt;br /&gt;select extract(hour_minute from @dt); -- 715&lt;br /&gt;select extract(hour_second from @dt); -- 71530&lt;br /&gt;select extract(hour_microsecond from @dt); -- 71530123456&lt;br /&gt;select extract(minute_second from @dt); -- 1530&lt;br /&gt;select extract(minute_microsecond from @dt); -- 1530123456&lt;br /&gt;select extract(second_microsecond from @dt); -- 30123456&lt;br /&gt;&lt;br /&gt;MySQL  Extract() 函数除了没有date(),time() 的功能外，其他功能一应具全。并且还具有选取&amp;#8216;day_microsecond&amp;#8217;  等功能。注意这里不是只选取 day 和 microsecond，而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧！&lt;br /&gt;MySQL Extract() 函数唯一不好的地方在于：你需要多敲几次键盘。&lt;br /&gt;3. MySQL dayof... 函数：dayofweek(), dayofmonth(), dayofyear()&lt;br /&gt;分别返回日期参数，在一周、一月、一年中的位置。&lt;br /&gt;set @dt = '2008-08-08';&lt;br /&gt;&lt;br /&gt;select dayofweek(@dt); -- 6&lt;br /&gt;select dayofmonth(@dt); -- 8&lt;br /&gt;select dayofyear(@dt); -- 221&lt;br /&gt;&lt;br /&gt;日期 '2008-08-08' 是一周中的第 6 天（1 = Sunday, 2 = Monday, ..., 7 = Saturday）；一月中的第 8 天；一年中的第 221 天。&lt;br /&gt;4. MySQL week... 函数：week(), weekofyear(), dayofweek(), weekday(), yearweek()&lt;br /&gt;set @dt = '2008-08-08';&lt;br /&gt;&lt;br /&gt;select week(@dt); -- 31&lt;br /&gt;select week(@dt,3); -- 32&lt;br /&gt;select weekofyear(@dt); -- 32&lt;br /&gt;&lt;br /&gt;select dayofweek(@dt); -- 6&lt;br /&gt;select weekday(@dt); -- 4&lt;br /&gt;&lt;br /&gt;select yearweek(@dt); -- 200831&lt;br /&gt;&lt;br /&gt;MySQL week() 函数，可以有两个参数，具体可看手册。 weekofyear() 和 week() 一样，都是计算&amp;#8220;某天&amp;#8221;是位于一年中的第几周。 weekofyear(@dt) 等价于 week(@dt,3)。&lt;br /&gt;MySQL  weekday() 函数和 dayofweek() 类似，都是返回&amp;#8220;某天&amp;#8221;在一周中的位置。不同点在于参考的标准， weekday：(0 =  Monday, 1 = Tuesday, ..., 6 = Sunday)； dayofweek：（1 = Sunday, 2 =  Monday, ..., 7 = Saturday）&lt;br /&gt;MySQL yearweek() 函数，返回 year(2008) + week 位置(31)。&lt;br /&gt;5. MySQL 返回星期和月份名称函数：dayname(), monthname()&lt;br /&gt;set @dt = '2008-08-08';&lt;br /&gt;&lt;br /&gt;select dayname(@dt); -- Friday&lt;br /&gt;select monthname(@dt); -- August&lt;br /&gt;&lt;br /&gt;思考，如何返回中文的名称呢？&lt;br /&gt;6. MySQL last_day() 函数：返回月份中的最后一天。&lt;br /&gt;select last_day('2008-02-01'); -- 2008-02-29&lt;br /&gt;select last_day('2008-08-08'); -- 2008-08-31&lt;br /&gt;&lt;br /&gt;MySQL last_day() 函数非常有用，比如我想得到当前月份中有多少天，可以这样来计算：&lt;br /&gt;mysql&amp;gt; select now(), day(last_day(now())) as days;&lt;br /&gt;&lt;br /&gt;+---------------------+------+&lt;br /&gt;| now() | days |&lt;br /&gt;+---------------------+------+&lt;br /&gt;| 2008-08-09 11:45:45 | 31 |&lt;br /&gt;+---------------------+------+&lt;br /&gt;&lt;br /&gt;三、MySQL 日期时间计算函数&lt;br /&gt;1. MySQL 为日期增加一个时间间隔：date_add()&lt;br /&gt;set @dt = now();&lt;br /&gt;&lt;br /&gt;select date_add(@dt, interval 1 day); -- add 1 day&lt;br /&gt;select date_add(@dt, interval 1 hour); -- add 1 hour&lt;br /&gt;select date_add(@dt, interval 1 minute); -- ...&lt;br /&gt;select date_add(@dt, interval 1 second);&lt;br /&gt;select date_add(@dt, interval 1 microsecond);&lt;br /&gt;select date_add(@dt, interval 1 week);&lt;br /&gt;select date_add(@dt, interval 1 month);&lt;br /&gt;select date_add(@dt, interval 1 quarter);&lt;br /&gt;select date_add(@dt, interval 1 year);&lt;br /&gt;&lt;br /&gt;select date_add(@dt, interval -1 day); -- sub 1 day&lt;br /&gt;&lt;br /&gt;MySQL adddate(), addtime()函数，可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例：&lt;br /&gt;mysql&amp;gt; set @dt = '2008-08-09 12:12:33';&lt;br /&gt;&lt;br /&gt;mysql&amp;gt;&lt;br /&gt;mysql&amp;gt; select date_add(@dt, interval '01:15:30' hour_second);&lt;br /&gt;&lt;br /&gt;+------------------------------------------------+&lt;br /&gt;| date_add(@dt, interval '01:15:30' hour_second) |&lt;br /&gt;+------------------------------------------------+&lt;br /&gt;| 2008-08-09 13:28:03 |&lt;br /&gt;+------------------------------------------------+&lt;br /&gt;&lt;br /&gt;mysql&amp;gt; select date_add(@dt, interval '1 01:15:30' day_second);&lt;br /&gt;&lt;br /&gt;+-------------------------------------------------+&lt;br /&gt;| date_add(@dt, interval '1 01:15:30' day_second) |&lt;br /&gt;+-------------------------------------------------+&lt;br /&gt;| 2008-08-10 13:28:03 |&lt;br /&gt;+-------------------------------------------------+&lt;br /&gt;&lt;br /&gt;date_add() 函数，分别为 @dt 增加了&amp;#8220;1小时 15分 30秒&amp;#8221; 和 &amp;#8220;1天 1小时 15分 30秒&amp;#8221;。建议：总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。&lt;br /&gt;2. MySQL 为日期减去一个时间间隔：date_sub()&lt;br /&gt;mysql&amp;gt; select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);&lt;br /&gt;&lt;br /&gt;+----------------------------------------------------------------+&lt;br /&gt;| date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |&lt;br /&gt;+----------------------------------------------------------------+&lt;br /&gt;| 1997-12-30 22:58:59 |&lt;br /&gt;+----------------------------------------------------------------+&lt;br /&gt;&lt;br /&gt;MySQL date_sub() 日期时间函数 和 date_add() 用法一致，不再赘述。另外，MySQL 中还有两个函数 subdate(), subtime()，建议，用 date_sub() 来替代。&lt;br /&gt;3. MySQL 另类日期函数：period_add(P,N), period_diff(P1,P2)&lt;br /&gt;函数参数&amp;#8220;P&amp;#8221; 的格式为&amp;#8220;YYYYMM&amp;#8221; 或者 &amp;#8220;YYMM&amp;#8221;，第二个参数&amp;#8220;N&amp;#8221; 表示增加或减去 N month（月）。&lt;br /&gt;MySQL period_add(P,N)：日期加/减去N月。&lt;br /&gt;mysql&amp;gt; select period_add(200808,2), period_add(20080808,-2)&lt;br /&gt;&lt;br /&gt;+----------------------+-------------------------+&lt;br /&gt;| period_add(200808,2) | period_add(20080808,-2) |&lt;br /&gt;+----------------------+-------------------------+&lt;br /&gt;| 200810 | 20080806 |&lt;br /&gt;+----------------------+-------------------------+&lt;br /&gt;&lt;br /&gt;MySQL period_diff(P1,P2)：日期 P1-P2，返回 N 个月。&lt;br /&gt;mysql&amp;gt; select period_diff(200808, 200801);&lt;br /&gt;&lt;br /&gt;+-----------------------------+&lt;br /&gt;| period_diff(200808, 200801) |&lt;br /&gt;+-----------------------------+&lt;br /&gt;| 7 |&lt;br /&gt;+-----------------------------+&lt;br /&gt;&lt;br /&gt;在 MySQL 中，这两个日期函数，一般情况下很少用到。&lt;br /&gt;4. MySQL 日期、时间相减函数：datediff(date1,date2), timediff(time1,time2)&lt;br /&gt;MySQL datediff(date1,date2)：两个日期相减 date1 - date2，返回天数。&lt;br /&gt;select datediff('2008-08-08', '2008-08-01'); -- 7&lt;br /&gt;select datediff('2008-08-01', '2008-08-08'); -- -7&lt;br /&gt;&lt;br /&gt;MySQL timediff(time1,time2)：两个日期相减 time1 - time2，返回 time 差值。&lt;br /&gt;select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08&lt;br /&gt;select timediff('08:08:08', '00:00:00'); -- 08:08:08&lt;br /&gt;&lt;br /&gt;注意：timediff(time1,time2) 函数的两个参数类型必须相同。&lt;br /&gt;&lt;br /&gt;四、MySQL 日期转换函数、时间转换函数&lt;br /&gt;1. MySQL （时间、秒）转换函数：time_to_sec(time), sec_to_time(seconds)&lt;br /&gt;select time_to_sec('01:00:05'); -- 3605&lt;br /&gt;select sec_to_time(3605); -- '01:00:05'&lt;br /&gt;&lt;br /&gt;2. MySQL （日期、天数）转换函数：to_days(date), from_days(days)&lt;br /&gt;select to_days('0000-00-00'); -- 0&lt;br /&gt;select to_days('2008-08-08'); -- 733627&lt;br /&gt;&lt;br /&gt;select from_days(0); -- '0000-00-00'&lt;br /&gt;select from_days(733627); -- '2008-08-08'&lt;br /&gt;&lt;br /&gt;3. MySQL Str to Date （字符串转换为日期）函数：str_to_date(str, format)&lt;br /&gt;select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09&lt;br /&gt;select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09&lt;br /&gt;select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09&lt;br /&gt;select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30&lt;br /&gt;select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30&lt;br /&gt;&lt;br /&gt;可以看到，str_to_date(str,format) 转换函数，可以把一些杂乱无章的字符串转换为日期格式。另外，它也可以转换为时间。&amp;#8220;format&amp;#8221; 可以参看 MySQL 手册。&lt;br /&gt;4. MySQL Date/Time to Str（日期/时间转换为字符串）函数：date_format(date,format), time_format(time,format)&lt;br /&gt;mysql&amp;gt; select date_format('2008-08-08 22:23:00', '%W %M %Y');&lt;br /&gt;&lt;br /&gt;+------------------------------------------------+&lt;br /&gt;| date_format('2008-08-08 22:23:00', '%W %M %Y') |&lt;br /&gt;+------------------------------------------------+&lt;br /&gt;| Friday August 2008 |&lt;br /&gt;+------------------------------------------------+&lt;br /&gt;&lt;br /&gt;mysql&amp;gt; select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s');&lt;br /&gt;&lt;br /&gt;+----------------------------------------------------+&lt;br /&gt;| date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') |&lt;br /&gt;+----------------------------------------------------+&lt;br /&gt;| 20080808222301 |&lt;br /&gt;+----------------------------------------------------+&lt;br /&gt;&lt;br /&gt;mysql&amp;gt; select time_format('22:23:01', '%H.%i.%s');&lt;br /&gt;&lt;br /&gt;+-------------------------------------+&lt;br /&gt;| time_format('22:23:01', '%H.%i.%s') |&lt;br /&gt;+-------------------------------------+&lt;br /&gt;| 22.23.01 |&lt;br /&gt;+-------------------------------------+&lt;br /&gt;&lt;br /&gt;MySQL 日期、时间转换函数：date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。&lt;br /&gt;5. MySQL 获得国家地区时间格式函数：get_format()&lt;br /&gt;MySQL get_format() 语法：&lt;br /&gt;get_format(date|time|datetime, 'eur'|'usa'|'jis'|'iso'|'internal'&lt;br /&gt;&lt;br /&gt;MySQL get_format() 用法的全部示例：&lt;br /&gt;select get_format(date,'usa') ; -- '%m.%d.%Y'&lt;br /&gt;select get_format(date,'jis') ; -- '%Y-%m-%d'&lt;br /&gt;select get_format(date,'iso') ; -- '%Y-%m-%d'&lt;br /&gt;select get_format(date,'eur') ; -- '%d.%m.%Y'&lt;br /&gt;select get_format(date,'internal') ; -- '%Y%m%d'&lt;br /&gt;select get_format(datetime,'usa') ; -- '%Y-%m-%d %H.%i.%s'&lt;br /&gt;select get_format(datetime,'jis') ; -- '%Y-%m-%d %H:%i:%s'&lt;br /&gt;select get_format(datetime,'iso') ; -- '%Y-%m-%d %H:%i:%s'&lt;br /&gt;select get_format(datetime,'eur') ; -- '%Y-%m-%d %H.%i.%s'&lt;br /&gt;select get_format(datetime,'internal') ; -- '%Y%m%d%H%i%s'&lt;br /&gt;select get_format(time,'usa') ; -- '%h:%i:%s %p'&lt;br /&gt;select get_format(time,'jis') ; -- '%H:%i:%s'&lt;br /&gt;select get_format(time,'iso') ; -- '%H:%i:%s'&lt;br /&gt;select get_format(time,'eur') ; -- '%H.%i.%s'&lt;br /&gt;select get_format(time,'internal') ; -- '%H%i%s'&lt;br /&gt;&lt;br /&gt;MySQL get_format() 函数在实际中用到机会的比较少。&lt;br /&gt;6. MySQL 拼凑日期、时间函数：makdedate(year,dayofyear), maketime(hour,minute,second)&lt;br /&gt;select makedate(2001,31); -- '2001-01-31'&lt;br /&gt;select makedate(2001,32); -- '2001-02-01'&lt;br /&gt;&lt;br /&gt;select maketime(12,15,30); -- '12:15:30'&lt;br /&gt;&lt;br /&gt;五、MySQL 时间戳（Timestamp）函数&lt;br /&gt;1. MySQL 获得当前时间戳函数：current_timestamp, current_timestamp()&lt;br /&gt;mysql&amp;gt; select current_timestamp, current_timestamp();&lt;br /&gt;&lt;br /&gt;+---------------------+---------------------+&lt;br /&gt;| current_timestamp | current_timestamp() |&lt;br /&gt;+---------------------+---------------------+&lt;br /&gt;| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |&lt;br /&gt;+---------------------+---------------------+&lt;br /&gt;&lt;br /&gt;2. MySQL （Unix 时间戳、日期）转换函数：&lt;br /&gt;unix_timestamp(),&lt;br /&gt;unix_timestamp(date),&lt;br /&gt;from_unixtime(unix_timestamp),&lt;br /&gt;from_unixtime(unix_timestamp,format)&lt;br /&gt;&lt;br /&gt;下面是示例：&lt;br /&gt;select unix_timestamp(); -- 1218290027&lt;br /&gt;select unix_timestamp('2008-08-08'); -- 1218124800&lt;br /&gt;select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800&lt;br /&gt;&lt;br /&gt;select from_unixtime(1218290027); -- '2008-08-09 21:53:47'&lt;br /&gt;select from_unixtime(1218124800); -- '2008-08-08 00:00:00'&lt;br /&gt;select from_unixtime(1218169800); -- '2008-08-08 12:30:00'&lt;br /&gt;&lt;br /&gt;select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008'&lt;br /&gt;&lt;br /&gt;3. MySQL 时间戳（timestamp）转换、增、减函数：&lt;br /&gt;timestamp(date) -- date to timestamp&lt;br /&gt;timestamp(dt,time) -- dt + time&lt;br /&gt;timestampadd(unit,interval,datetime_expr) --&lt;br /&gt;timestampdiff(unit,datetime_expr1,datetime_expr2) --&lt;br /&gt;&lt;br /&gt;请看示例部分：&lt;br /&gt;select timestamp('2008-08-08'); -- 2008-08-08 00:00:00&lt;br /&gt;select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01&lt;br /&gt;select timestamp('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-18 09:01:01&lt;br /&gt;&lt;br /&gt;select timestampadd(day, 1, '2008-08-08 08:00:00'); -- 2008-08-09 08:00:00&lt;br /&gt;select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00&lt;br /&gt;&lt;br /&gt;MySQL timestampadd() 函数类似于 date_add()。&lt;br /&gt;select timestampdiff(year,'2002-05-01','2001-01-01'); -- -1&lt;br /&gt;select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485&lt;br /&gt;select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12&lt;br /&gt;&lt;br /&gt;select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7&lt;br /&gt;&lt;br /&gt;MySQL timestampdiff() 函数就比 datediff() 功能强多了，datediff() 只能计算两个日期（date）之间相差的天数。&lt;br /&gt;&lt;br /&gt;六、MySQL 时区（timezone）转换函数&lt;br /&gt;convert_tz(dt,from_tz,to_tz)&lt;br /&gt;&lt;br /&gt;select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00&lt;br /&gt;&lt;br /&gt;时区转换也可以通过 date_add, date_sub, timestampadd 来实现。&lt;br /&gt;select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00&lt;br /&gt;select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00&lt;br /&gt;&lt;p&gt;select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;转自： http://www.cnblogs.com/she27/archive/2009/01/16/1377089.html&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/1883064.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2010/11/21/1883064.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2010/11/09/1872426.html</id><title type="text">[转]C#读写xml文件</title><summary type="text">c#读写xml文件已知有一个XML文件（bookstore.xml）如下：[代码]1、往&amp;lt;bookstore&amp;gt;节点中插入一个&amp;lt;book&amp;gt;节点： [代码]结果为：[代码]2、修改节点：将genre属性值为&amp;#8220;李赞红&amp;#8220;的节点的genre值改为&amp;#8220;update李赞红&amp;#8221;，将该节点的子节点&amp;lt;author&amp;gt;的文本修改为&amp;#8220...</summary><published>2010-11-09T03:15:00Z</published><updated>2010-11-09T03:15:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2010/11/09/1872426.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2010/11/09/1872426.html"/><content type="html">&lt;strong&gt;c#读写xml文件&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;已知有一个XML文件（bookstore.xml）如下：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="gb2312"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;genre&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fantasy"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;ISBN&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2-3631-4"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Oberon's&amp;nbsp;Legacy&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Corets,&amp;nbsp;Eva&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;5.95&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;1、往&amp;lt;bookstore&amp;gt;节点中插入一个&amp;lt;book&amp;gt;节点： &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;XmlDocument&amp;nbsp;xmlDoc&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;XmlDocument();&lt;br /&gt;xmlDoc.Load(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore.xml&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;XmlNode&amp;nbsp;root&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.SelectSingleNode(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;查找&amp;lt;bookstore&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;XmlElement&amp;nbsp;xe1&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.CreateElement(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;创建一个&amp;lt;book&amp;gt;节点&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;xe1.SetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;genre&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;李赞红&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;设置该节点genre属性&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;xe1.SetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ISBN&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;2-3631-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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;设置该节点ISBN属性&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;XmlElement&amp;nbsp;xesub1&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.CreateElement(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;xesub1.InnerText&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;CS从入门到精通&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;设置文本节点&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;xe1.AppendChild(xesub1);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;添加到&amp;lt;book&amp;gt;节点中&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;XmlElement&amp;nbsp;xesub2&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.CreateElement(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;xesub2.InnerText&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;候捷&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;xe1.AppendChild(xesub2);&lt;br /&gt;XmlElement&amp;nbsp;xesub3&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.CreateElement(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;xesub3.InnerText&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;58.3&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;xe1.AppendChild(xesub3);&lt;br /&gt;&lt;br /&gt;root.AppendChild(xe1);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;添加到&amp;lt;bookstore&amp;gt;节点中&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.Save(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore.xml&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;结果为：&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="gb2312"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;genre&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fantasy"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;ISBN&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2-3631-4"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Oberon's&amp;nbsp;Legacy&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Corets,&amp;nbsp;Eva&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;5.95&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;genre&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="李赞红"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;ISBN&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2-3631-4"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;CS从入门到精通&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;候捷&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;58.3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;2、修改节点：将genre属性值为&amp;#8220;李赞红&amp;#8220;的节点的genre值改为&amp;#8220;update李赞红&amp;#8221;，将该节点的子节点&amp;lt;author&amp;gt;的文本修改为&amp;#8220;亚胜&amp;#8221;。 &lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;XmlNodeList&amp;nbsp;nodeList&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.SelectSingleNode(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;).ChildNodes;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;获取bookstore节点的所有子节点&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlNode&amp;nbsp;xn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nodeList)&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;遍历所有子节点&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlElement&amp;nbsp;xe&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlElement)xn;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;将子节点类型转换为XmlElement类型&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(xe.GetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;genre&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: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;李赞红&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;如果genre属性值为&amp;#8220;李赞红&amp;#8221;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xe.SetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;genre&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;update李赞红&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;则修改该属性为&amp;#8220;update李赞红&amp;#8221;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlNodeList&amp;nbsp;nls&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xe.ChildNodes;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;继续获取xe子节点的所有子节点&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlNode&amp;nbsp;xn1&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;nls)&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;遍历&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;XmlElement&amp;nbsp;xe2&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlElement)xn1;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;转换类型&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(xe2.Name&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;author&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;如果找到&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xe2.InnerText&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;亚胜&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;则修改&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;找到退出来就可以了&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;}&lt;br /&gt;&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;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;xmlDoc.Save(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore.xml&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;保存。&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最后结果为：&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="gb2312"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;genre&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="fantasy"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;ISBN&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2-3631-4"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Oberon's&amp;nbsp;Legacy&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Corets,&amp;nbsp;Eva&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;5.95&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;genre&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="update李赞红"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;ISBN&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2-3631-4"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;CS从入门到精通&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;亚胜&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;58.3&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;3、删除 &amp;lt;book genre="fantasy" ISBN="2-3631-4"&amp;gt;节点的genre属性，删除 &amp;lt;book  genre="update李赞红" ISBN="2-3631-4"&amp;gt;节点。&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;XmlNodeList&amp;nbsp;xnl&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.SelectSingleNode(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;).ChildNodes;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlNode&amp;nbsp;xn&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;xnl)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlElement&amp;nbsp;xe&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlElement)xn;&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;(xe.GetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;genre&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: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;fantasy&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xe.RemoveAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;genre&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;删除genre属性&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&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;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(xe.GetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;genre&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: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;update李赞红&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xe.RemoveAll();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;删除该节点的全部内容&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;xmlDoc.Save(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore.xml&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;最后结果为：&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="gb2312"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ISBN&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="2-3631-4"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Oberon's&amp;nbsp;Legacy&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Corets,&amp;nbsp;Eva&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;author&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;5.95&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;price&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;book&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;4.显示所有数据：&lt;br /&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&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;XmlNode&amp;nbsp;xn&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xmlDoc.SelectSingleNode(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;bookstore&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;XmlNodeList&amp;nbsp;xnl&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xn.ChildNodes;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlNode&amp;nbsp;xnf&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;xnl)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlElement&amp;nbsp;xe&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlElement)xnf;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(xe.GetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;genre&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;显示属性值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(xe.GetAttribute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ISBN&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlNodeList&amp;nbsp;xnf1&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xe.ChildNodes;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt;(XmlNode&amp;nbsp;xn2&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;xnf1)&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;Console.WriteLine(xn2.InnerText);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;显示子节点点文本&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;来源：http://kb.cnblogs.com/page/42226/ &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/1872426.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2010/11/09/1872426.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2010/10/12/1848882.html</id><title type="text">C#捕获摄像头进行拍照和录像资料总结</title><summary type="text">1..net中捕获摄像头视频的方式及对比** 2.用Directshow.net的播放控件http://www.360doc.com/content/09/0307/16/50415_2739439.shtml 3。DirectShow.Net下载http://sourceforge.net/projects/directshownet/ 4。DirectShow .Net 实现视频预览(重点源码...</summary><published>2010-10-12T07:46:00Z</published><updated>2010-10-12T07:46:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2010/10/12/1848882.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2010/10/12/1848882.html"/><content type="html">&lt;p&gt;1.&lt;a href="http://www.cnblogs.com/xrwang/archive/2010/02/13/HowToCaptureCameraVideoViaDotNet.html"&gt;.net中捕获摄像头视频的方式及对比&lt;/a&gt;** &lt;/p&gt;&#xD;
&lt;p&gt;2.用Directshow.net的播放控件&lt;a title="http://www.360doc.com/content/09/0307/16/50415_2739439.shtml" href="http://www.360doc.com/content/09/0307/16/50415_2739439.shtml"&gt;http://www.360doc.com/content/09/0307/16/50415_2739439.shtml&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;3。DirectShow.Net下载&lt;a title="http://sourceforge.net/projects/directshownet/" href="http://sourceforge.net/projects/directshownet/"&gt;http://sourceforge.net/projects/directshownet/&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;4。&lt;a href="http://www.cnblogs.com/qiantz/archive/2009/04/15/1435952.html"&gt;DirectShow .Net 实现视频预览(重点源码记录)&lt;/a&gt;** &lt;/p&gt;&#xD;
&lt;p&gt;5。&lt;a href="http://www.cnblogs.com/mgod/archive/2008/06/18/1224353.html"&gt;使用DirectX.Capture.dll和DShowNET.dll捕获视频程序&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;6。&lt;a href="http://www.cnblogs.com/zeroone/archive/2010/04/13/1711146.html"&gt;Webcam in C#: AForge.NET （转）&lt;/a&gt;** &lt;/p&gt;&#xD;
&lt;p&gt;7。AForge.Net下载&lt;a title="http://www.aforgenet.com/framework/" href="http://www.aforgenet.com/framework/"&gt;http://www.aforgenet.com/framework/&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;8。&lt;a href="http://www.cnblogs.com/yriyr/archive/2010/06/26/1765715.html"&gt;利用Aforge做的摄像监控程序（带视频差异录像）&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;9。EmguCV下载&lt;a title="http://www.emgu.com/wiki/index.php/Emgu_CV" href="http://www.emgu.com/wiki/index.php/Emgu_CV"&gt;http://www.emgu.com/wiki/index.php/Emgu_CV&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;10。&lt;a href="http://www.cnblogs.com/over140/archive/2009/04/07/1429308.html"&gt;C# 视频监控系列 序 [完]&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;a href="http://files.cnblogs.com/blsong/DirectShowLibV2-1.zip"&gt;DirectShowLibV2-1.zip&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;a href="http://files.cnblogs.com/blsong/AForge.NETFramework-2.1.4-%28libsonly%29.zip"&gt;AForge.NETFramework-2.1.4-(libsonly).zip&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;a href="http://files.cnblogs.com/blsong/DirectShowLibV2-1.zip"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/1848882.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2010/10/12/1848882.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2010/10/12/1848836.html</id><title type="text">[转]一个人脸检测器</title><summary type="text">文章源地址： http://www.cnblogs.com/zengqs/archive/2009/02/01/1382024.html</summary><published>2010-10-12T07:19:00Z</published><updated>2010-10-12T07:19:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2010/10/12/1848836.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2010/10/12/1848836.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;//本文使用到Emgu.CV库，该库是C#语言对OpenCV的封装，以下是一个列子程序的改正版本。&lt;br /&gt;using System;&#xD;
using System.Collections.Generic;&#xD;
using System.Text;&#xD;
using Emgu.CV.Structure;&#xD;
using Emgu.CV;&#xD;
&#xD;
namespace VSL.Plugin.TrackingSystem.SimpleTrackingSystemExample&#xD;
{&#xD;
&#xD;
    public class FaceDetector&#xD;
    {&#xD;
        //private HaarCascade _faceCascade;&#xD;
        Emgu.CV.HaarCascade face;// = new HaarCascade(".\\haarcascades\\haarcascade_frontalface_alt_tree.xml");&#xD;
        Emgu.CV.HaarCascade eye;// = new HaarCascade(".\\haarcascades\\haarcascade_frontaleye.xml");&#xD;
&#xD;
        public FaceDetector()&#xD;
        {&#xD;
            //  _faceCascade = new HaarCascade(".\\haarcascades\\haarcascade_frontalface_alt_tree.xml");&#xD;
            face = new Emgu.CV.HaarCascade(".\\haarcascades\\haarcascade_frontalface_alt_tree.xml");&#xD;
            eye = new Emgu.CV.HaarCascade(".\\haarcascades\\haarcascade_frontaleye.xml");&#xD;
        }&#xD;
&#xD;
        public List&amp;lt;Face&amp;lt;D&amp;gt;&amp;gt; Detect&amp;lt;D&amp;gt;(Emgu.CV.Image&amp;lt;Emgu.CV.Bgr, D&amp;gt; img)&#xD;
        {&#xD;
            using (Emgu.CV.Image&amp;lt;Emgu.CV.Gray, D&amp;gt; gray = img.Convert&amp;lt;Emgu.CV.Gray, D&amp;gt;())&#xD;
            {&#xD;
                MCvAvgComp[][] objects = gray.DetectHaarCascade(face);&#xD;
                List&amp;lt;Face&amp;lt;D&amp;gt;&amp;gt; res = new List&amp;lt;Face&amp;lt;D&amp;gt;&amp;gt;();&#xD;
&#xD;
                System.Drawing.Rectangle rect = img.ROI; //保存操作区域&#xD;
&#xD;
                //通过判断脸部是否含有眼睛来进一步检测是否是正确的人脸&#xD;
                foreach (MCvAvgComp f in objects[0])&#xD;
                {&#xD;
                    //检测眼睛&#xD;
                    gray.ROI = f.rect;&#xD;
                    MCvAvgComp[][] eyesDetected = gray.DetectHaarCascade(eye, 1.1, 1,&#xD;
                                                                         Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.&#xD;
                                                                             DO_CANNY_PRUNING,&#xD;
                                                                         new System.Drawing.Size(20, 20));&#xD;
                    gray.ROI = System.Drawing.Rectangle.Empty;&#xD;
&#xD;
                    //if there is no eye in the specific region, the region shouldn't contains a face&#xD;
                    //note that we might not be able to recoginize a person who ware glass in this case&#xD;
                    if (eyesDetected[0].Length == 0) continue;&#xD;
&#xD;
                    img.ROI = f.rect; //设定操作区域&#xD;
                    res.Add(new Face&amp;lt;D&amp;gt;(img.Copy(), f.rect));&#xD;
                }&#xD;
                img.ROI = rect; //恢复操作区域&#xD;
                return res;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public void Dispose()&#xD;
        {&#xD;
            face.Dispose();&#xD;
        }&#xD;
    }&#xD;
&#xD;
    public class Eye&amp;lt;D&amp;gt;&#xD;
    {&#xD;
        private Emgu.CV.Image&amp;lt;Emgu.CV.Bgr, D&amp;gt; _image;&#xD;
        public Eye(Emgu.CV.Image&amp;lt;Emgu.CV.Bgr, D&amp;gt; img, System.Drawing.Rectangle rect)&#xD;
        {&#xD;
            _image = img;&#xD;
        }&#xD;
&#xD;
        public Emgu.CV.Image&amp;lt;Emgu.CV.Bgr, D&amp;gt; RGB&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                return _image;&#xD;
            }&#xD;
        }&#xD;
    }&#xD;
&#xD;
    public class Face&amp;lt;D&amp;gt;&#xD;
    {&#xD;
        private Emgu.CV.Image&amp;lt;Emgu.CV.Bgr, D&amp;gt; _image;&#xD;
        private Emgu.CV.Image&amp;lt;Emgu.CV.Gray, D&amp;gt; _imageGray;&#xD;
        private Emgu.CV.Image&amp;lt;Emgu.CV.Hsv, D&amp;gt; _imageHSV;&#xD;
        private Emgu.CV.Image&amp;lt;Emgu.CV.Gray, D&amp;gt; _h;&#xD;
        private Emgu.CV.Image&amp;lt;Emgu.CV.Gray, D&amp;gt; _s;&#xD;
        private Emgu.CV.Image&amp;lt;Emgu.CV.Gray, D&amp;gt; _v;&#xD;
        private Emgu.CV.Histogram _hueHtg;&#xD;
        //private Seq&amp;lt;MCvContour&amp;gt; _skinContour;&#xD;
        private System.Drawing.Rectangle _rect;&#xD;
        private Emgu.CV.HaarCascade _eyeCascade;&#xD;
&#xD;
        public Face(Emgu.CV.Image&amp;lt;Emgu.CV.Bgr, D&amp;gt; img, System.Drawing.Rectangle rect)&#xD;
        {&#xD;
            _image = img;&#xD;
            _rect = rect;&#xD;
            _eyeCascade = new Emgu.CV.HaarCascade(".\\haarcascades\\eye_12.xml");&#xD;
        }&#xD;
&#xD;
        public List&amp;lt;Eye&amp;lt;D&amp;gt;&amp;gt; DetectEye()&#xD;
        {&#xD;
            MCvAvgComp[][] objects = Gray.DetectHaarCascade(_eyeCascade);&#xD;
            List&amp;lt;Eye&amp;lt;D&amp;gt;&amp;gt; res = new List&amp;lt;Eye&amp;lt;D&amp;gt;&amp;gt;();&#xD;
&#xD;
            foreach (MCvAvgComp o in objects[0])&#xD;
            {&#xD;
                _image.ROI = o.rect;&#xD;
                res.Add(new Eye&amp;lt;D&amp;gt;(_image.Copy(), o.rect));&#xD;
            }&#xD;
            _image.ROI = System.Drawing.Rectangle.Empty;&#xD;
            return res;&#xD;
        }&#xD;
&#xD;
        public System.Drawing.Rectangle Rectangle&#xD;
        {&#xD;
            get { return _rect; }&#xD;
        }&#xD;
        public Emgu.CV.Image&amp;lt;Emgu.CV.Bgr, D&amp;gt; Bgr&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                return _image;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public Emgu.CV.Image&amp;lt;Emgu.CV.Gray, D&amp;gt; Gray&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (_imageGray == null) _imageGray = _image.Convert&amp;lt;Emgu.CV.Gray, D&amp;gt;();&#xD;
                return _imageGray;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public Emgu.CV.Image&amp;lt;Emgu.CV.Hsv, D&amp;gt; Hsv&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (_imageHSV == null) _imageHSV = _image.Convert&amp;lt;Emgu.CV.Hsv, D&amp;gt;();&#xD;
                return _imageHSV;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public Emgu.CV.Image&amp;lt;Emgu.CV.Gray, D&amp;gt; H&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (_h == null)&#xD;
                {&#xD;
                    Emgu.CV.Image&amp;lt;Gray, D&amp;gt;[] imgs = Hsv.Split();&#xD;
                    _h = imgs[0];&#xD;
                    _s = imgs[1];&#xD;
                    _v = imgs[2];&#xD;
                }&#xD;
                return _h;&#xD;
            }&#xD;
        }&#xD;
        public Image&amp;lt;Gray, D&amp;gt; S&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (_s == null)&#xD;
                {&#xD;
                    Image&amp;lt;Gray, D&amp;gt;[] imgs = Hsv.Split();&#xD;
                    _h = imgs[0];&#xD;
                    _s = imgs[1];&#xD;
                    _v = imgs[2];&#xD;
                }&#xD;
                return _s;&#xD;
            }&#xD;
        }&#xD;
        public Image&amp;lt;Gray, D&amp;gt; V&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (_h == null)&#xD;
                {&#xD;
                    Image&amp;lt;Gray, D&amp;gt;[] imgs = Hsv.Split();&#xD;
                    _h = imgs[0];&#xD;
                    _s = imgs[1];&#xD;
                    _v = imgs[2];&#xD;
                }&#xD;
                return _v;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public Histogram HueHistogram&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
&#xD;
                if (_hueHtg == null)&#xD;
                {&#xD;
                    int size = 60;&#xD;
                    _hueHtg = new Histogram(new int[1] { size }, new float[1] { 0.0f }, new float[1] { 180.0f });&#xD;
                }&#xD;
                return _hueHtg;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public Image&amp;lt;Gray, D&amp;gt; SkinMask&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                Image&amp;lt;Gray, D&amp;gt; skinMask = Gray.CopyBlank();&#xD;
&#xD;
                //skinMask.Draw(SkinContour, new Gray(255.0), new Gray(120.0), -1);&#xD;
&#xD;
                return skinMask;&#xD;
            }&#xD;
        }&#xD;
&#xD;
        /*&#xD;
        public Seq&amp;lt;MCvContour&amp;gt; SkinContour&#xD;
        {&#xD;
            get&#xD;
            {&#xD;
                if (_skinContour == null)&#xD;
                {&#xD;
                    Histogram htg = HueHistogram;&#xD;
&#xD;
                    htg.Accumulate(new Image&amp;lt;Gray, D&amp;gt;[1] { H });&#xD;
&#xD;
                    double[] arr = new double[htg.BinSize[0]];&#xD;
                    for (int i = 0; i &amp;lt; htg.BinSize[0]; i++)&#xD;
                        arr[i] = htg.Query(new int[1] { i });&#xD;
                    System.Array.Sort&amp;lt;double&amp;gt;(arr);&#xD;
                    System.Array.Reverse(arr);&#xD;
                    htg.Threshold(arr[2]);&#xD;
&#xD;
                    using (Image&amp;lt;Gray, D&amp;gt; bpj = htg.BackProject(new Image&amp;lt;Gray, D&amp;gt;[1] { H }))&#xD;
                    {&#xD;
                        Seq&amp;lt;MCvContour&amp;gt; cList = bpj.FindContours( CvEnum.CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE, Emgu.CV.CvEnum.RETR_TYPE.CV_RETR_LIST, new MemStorage());&#xD;
                        Seq&amp;lt;MCvContour&amp;gt; maxAreaContour = cList;&#xD;
                        foreach (Seq&amp;lt;MCvContour&amp;gt; ct in cList)&#xD;
                        {&#xD;
                            if (ct.Area &amp;gt; maxAreaContour.Area)&#xD;
                                maxAreaContour = ct;&#xD;
                        }&#xD;
                        _skinContour = GRAY.Snake(maxAreaContour, 1.0f, 1.0f, 1.0f, new Point2D&amp;lt;int&amp;gt;(5, 5), new Emgu.CV.MCvTermCriteria(20, 1.0), new MemStorage());&#xD;
&#xD;
                    }&#xD;
                }&#xD;
                return _skinContour;&#xD;
            }&#xD;
        }*/&#xD;
&#xD;
        public void Dispose()&#xD;
        {&#xD;
            _image.Dispose();&#xD;
            if (_imageGray != null) _imageGray.Dispose();&#xD;
            if (_imageHSV != null) _imageHSV.Dispose();&#xD;
            if (_h != null) _h.Dispose();&#xD;
            if (_s != null) _s.Dispose();&#xD;
            if (_v != null) _v.Dispose();&#xD;
            //if (_skinContour != null) _skinContour.Dispose();&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;文章源地址： http://www.cnblogs.com/zengqs/archive/2009/02/01/1382024.html&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/1848836.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2010/10/12/1848836.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2010/09/21/1832326.html</id><title type="text">[转载文章]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱</title><summary type="text">引言　　本篇文章主要介绍.NET中6个重要的概念：栈，堆，值类型，引用类型，装箱，拆箱。文章开始介绍当你声明一个变量时，编译器内部发生了什么，然后介绍两个重要的概念：栈和堆；最后介绍值类型和引用类型，并说明一些有关它们的重要原理。　　最后通过一个简单的示例代码说明装箱拆箱带来的性能损耗。声明变量的内部机制　　在.NET程序中，当你声明一个变量，将在内存中分配一块内存。这块内存分为三部分：1，变量名...</summary><published>2010-09-21T02:08:00Z</published><updated>2010-09-21T02:08:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2010/09/21/1832326.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2010/09/21/1832326.html"/><content type="html">&lt;p&gt;&lt;strong&gt;引言&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本篇文章主要介绍.NET中6个重要的概念：栈，堆，值类型，引用类型，装箱，拆箱。文章开始介绍当你声明一个变量时，编译器内部发生了什么，然后介绍两个重要的概念：栈和堆；最后介绍值类型和引用类型，并说明一些有关它们的重要原理。&lt;/p&gt;&#xD;
&lt;p&gt;最后通过一个简单的示例代码说明装箱拆箱带来的性能损耗。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;声明变量的内部机制&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在.NET程序中，当你声明一个变量，将在内存中分配一块内存。这块内存分为三部分：1，变量名；2，变量类型；3，变量值。&lt;/p&gt;&#xD;
&lt;p&gt;下图揭示了声明一个变量时的内部机制，其中分配的内存类型依据你的变量类型。.NET中有两种类型的内存：栈内存和堆内存。在接下来的内容中，我们会了解到这两种类型的详细内容。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2010/141116/2010092020143647.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;栈和堆&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;为了明白什么是栈和堆，先让我们看下下面示例代码的内部机制： &lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div id="highlighter_34313" &gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&lt;a  style="width: 16px; height: 16px;" title="view source" href="http://www.cnblogs.com/niyw/archive/2010/09/20/1832077.html#viewSource"&gt;view source&lt;/a&gt;&#xD;
&lt;div &gt;&#xD;
&lt;object id="highlighter_34313_clipboard" title="copy to clipboard" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="16" height="16" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" type="application/x-shockwave-flash"&gt;&#xD;
&lt;param name="_cx" value="423" /&gt;&lt;param name="_cy" value="423" /&gt;&lt;param name="FlashVars" /&gt;&lt;param name="Movie" value="http://common.cnblogs.com/flash/clipboard.swf" /&gt;&lt;param name="Src" value="http://common.cnblogs.com/flash/clipboard.swf" /&gt;&lt;param name="WMode" value="Transparent" /&gt;&lt;param name="Play" value="0" /&gt;&lt;param name="Loop" value="-1" /&gt;&lt;param name="Quality" value="High" /&gt;&lt;param name="SAlign" /&gt;&lt;param name="Menu" value="0" /&gt;&lt;param name="Base" /&gt;&lt;param name="AllowScriptAccess" value="always" /&gt;&lt;param name="Scale" value="ShowAll" /&gt;&lt;param name="DeviceFont" value="0" /&gt;&lt;param name="EmbedMovie" value="0" /&gt;&lt;param name="BGColor" /&gt;&lt;param name="SWRemote" /&gt;&lt;param name="MovieData" /&gt;&lt;param name="SeamlessTabbing" value="1" /&gt;&lt;param name="Profile" value="0" /&gt;&lt;param name="ProfileAddress" /&gt;&lt;param name="ProfilePort" value="0" /&gt;&lt;param name="AllowNetworking" value="all" /&gt;&lt;param name="AllowFullScreen" value="false" /&gt;&lt;/object&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;a  style="width: 16px; height: 16px;" title="print" href="http://www.cnblogs.com/niyw/archive/2010/09/20/1832077.html#printSource"&gt;print&lt;/a&gt;&lt;a  style="width: 16px; height: 16px;" title="?" href="http://www.cnblogs.com/niyw/archive/2010/09/20/1832077.html#about"&gt;?&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;public&lt;/code&gt; &lt;code &gt;void&lt;/code&gt; &lt;code &gt;Method1(){ &lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;// Line 1 &lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;int&lt;/code&gt; &lt;code &gt;i=4; &lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;// Line 2 &lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;int&lt;/code&gt; &lt;code &gt;y=2; &lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;6&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;//Line 3 &lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;7&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;class1 cls1 = &lt;/code&gt;&lt;code &gt;new&lt;/code&gt; &lt;code &gt;class1(); &lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;table&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td &gt;&lt;code&gt;8&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;td &gt;&lt;code &gt;}&lt;/code&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;这里一共有3行代码。让我们一下逐行看一下它们是如何执行的：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;第1行：当这行代码执行时，编译器为它分配一小块栈内存。运行时栈负责提供程序所需的内存；&lt;/p&gt;&#xD;
&lt;p&gt;第2行：程序继续执行。如同名字一样，栈在第一块内存的顶部分配了一块内存。你也可以认为是模块或零件一块一块叠起来；&lt;/p&gt;&#xD;
&lt;p&gt;内存的分配与释放遵循后进先出(后进先出)逻辑，换句话说，内存只能在示例中i内存块的顶部分配或释放。&lt;/p&gt;&#xD;
&lt;p&gt;第3行：在第3行，我们创建了一个对象。当该行执行时，编译器在站上创建了一个指针，真实的对象存储在另一种叫&amp;ldquo;堆&amp;rdquo;的内存中。"堆"并不跟踪运行内存，它更像一堆随时可以访问的对象。堆用于动态分配内存。这里需要着重说明的是引用指针是分配在栈上。声明Class1 cls1时并不会给Class1的实例分配内存，而是分配一个栈变量cls1（并设置为null）,然后把它指向&amp;ldquo;堆&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;退出方法：当方法退出时，它释放了栈上所有内存变量。换句话说，栈上所有的"Int"变量都依据后进先出的逻辑被释放掉了。要注意，此时不会释放堆内存，这种内存稍后会被&amp;ldquo;垃圾收集器&amp;rdquo;释放。&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2010/141116/2010092020450834.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在可能会有很多朋友奇怪为什么要分配2种内存，而不是仅用一种内存。&lt;/p&gt;&#xD;
&lt;p&gt;如果仔细观察，你会发现基本类型并不复杂，他们值包含简单的值，如i=0。对象数据类型很复杂，它们会引用其它对象或基本类型。换句话说，它要保持其它多种多样的引用，而每种类型必须存在内存中。对象类型需要动态内存而基本类型需要静态内存。如果需要分配动态内存，那么就分配到堆上；反之在栈上。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2010/141116/2010092020572487.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;值类型与引用类型&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在我们明白了栈和堆，接下来看值类型和引用类型。值类型的数据和内存在同一个位置，而引用类型是一个指向内存的指针。&lt;/p&gt;&#xD;
&lt;p&gt;下面示例是一个整形数据类型变量i被赋给另一个整形数据类型变量j。它们的内存值都分配在栈上。当我们把一个int值分配给另外一个int值时，需要创建一个完全不同的拷贝。换句话说，你可以改变其中任何一个而不会影响另外一个。这种数据类型被称为值类型。&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2010/141116/2010092021061829.jpg" alt="" /&gt;　　当我们创建一个对象，并把一个对象赋给另外一个对象时，它们的指针指向相同的内存(如下图，当我们把obj赋给obj1时，它们指向相同的内存)。换句话说，我们改变其中一个，会影响到另外一个，这种类型称为引用类型。&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/141116/2010092021092683.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;h1 style="text-align: left;"&gt;那么那种类型是值类型和引用类型呢？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;在.NET中，依据数据类型，变量被分配到堆或栈上。&amp;ldquo;string&amp;rdquo;和"Object"是引用类型，其他基本类型被分配到栈上，是值类型，如下图：&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2010/141116/2010092021124681.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;h1 style="text-align: left;"&gt;装箱与拆箱&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;通过上面学习，我们学到了很多有用的东西，其中最有用的是明白了当把数据从栈移动到堆上时会有性能损失。如下图实例，当我们把一个值类型装箱为引用类型时，数据从栈移动到堆上。反之，数据从堆移动到栈上。这种在堆和栈之间的移动带来了性能的损失。数据从值类型转变为引用类型的过程称为&amp;ldquo;装箱&amp;rdquo;，反之为&amp;ldquo;拆箱&amp;rdquo;。&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2010/141116/2010092021191957.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;如果编译上面的代码，在ILDASM中看IL代码就会发下如何进行装箱拆箱操作的，如下：&lt;/p&gt;&#xD;
&lt;p style="text-align: center;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2010/141116/2010092021223748.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;h1 style="text-align: left;"&gt;装箱拆箱的性能影响&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;为了揭示装箱拆箱如何影响性能，我们把下面代码运行10000次。一个函数有装箱操作，另一个只有简单代码。我们用简单的计时器看它们的运行时间。装箱函数耗时&amp;nbsp;3542 MS，无装箱操作的耗时2477MS。这说明在实际项目中，除非必须，否则应避免装箱，拆箱操作。&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2010/141116/2010092021301650.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;&lt;em&gt;备注：&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;最近在&lt;a href="http://www.codeproject.com/"&gt;CodeProject&lt;/a&gt;上看到&amp;lt;&lt;span style="line-height: 19px; font-size: 13px; font-weight: bold;"&gt;&lt;a href="http://www.codeproject.com/KB/dotnet/6importentStepsDotNet.aspx"&gt;6 important .NET concepts: - Stack, heap, Value types, reference types, boxing and Unboxing&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;span style="line-height: 19px; font-size: 13px;"&gt;一文，个人觉得非常好，所以就翻一下给不想看英文的同学。由于能力有限，翻译的不好，望大家多多包涵。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;&lt;span style="line-height: 19px; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;&lt;span style="line-height: 19px; font-size: 13px;"&gt;原文地址：&lt;a href="http://www.cnblogs.com/niyw/archive/2010/09/20/1832077.html"&gt;http://www.cnblogs.com/niyw/archive/2010/09/20/1832077.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;&lt;span style="line-height: 19px; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="text-align: left;"&gt;&lt;span style="line-height: 19px; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/1832326.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2010/09/21/1832326.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/yiki/archive/2010/08/26/1808681.html</id><title type="text">DateTime 格式化</title><summary type="text">[代码]</summary><published>2010-08-25T17:07:00Z</published><updated>2010-08-25T17:07:00Z</updated><author><name>yiki</name><uri>http://www.cnblogs.com/yiki/</uri></author><link rel="alternate" href="http://www.cnblogs.com/yiki/archive/2010/08/26/1808681.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/yiki/archive/2010/08/26/1808681.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&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;DateTime dt &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; DateTime.Now;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label1.Text = dt.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 13:21:25&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label2.Text = dt.ToFileTime().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;127756416859912816&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label3.Text = dt.ToFileTimeUtc().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;127756704859912816&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label4.Text = dt.ToLocalTime().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 21:21:25&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label5.Text = dt.ToLongDateString().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月5日&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label6.Text = dt.ToLongTimeString().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;13:21:25&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label7.Text = dt.ToOADate().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;38661.5565508218&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label8.Text = dt.ToShortDateString().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label9.Text = dt.ToShortTimeString().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;13:21&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label10.Text = dt.ToUniversalTime().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 5:21:25&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;     2005-11-5 13:30:28.4412864&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label1.Text = dt.Year.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label2.Text = dt.Date.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 0:00:00&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label3.Text = dt.DayOfWeek.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Saturday&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label4.Text = dt.DayOfYear.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;309&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label5.Text = dt.Hour.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;13&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label6.Text = dt.Millisecond.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;441&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label7.Text = dt.Minute.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;30&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label8.Text = dt.Month.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;11&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label9.Text = dt.Second.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;28&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label10.Text = dt.Ticks.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;632667942284412864&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label11.Text = dt.TimeOfDay.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;13:30:28.4412864&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label1.Text = dt.ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 13:47:04&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label2.Text = dt.AddYears(1).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2006-11-5 13:47:04&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label3.Text = dt.AddDays(1.1).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-6 16:11:04&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label4.Text = dt.AddHours(1.1).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 14:53:04&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label5.Text = dt.AddMilliseconds(1.1).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 13:47:04&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label6.Text = dt.AddMonths(1).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-12-5 13:47:04&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label7.Text = dt.AddSeconds(1.1).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 13:47:05&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label8.Text = dt.AddMinutes(1.1).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 13:48:10&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label9.Text = dt.AddTicks(1000).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 13:47:04&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label10.Text = dt.CompareTo(dt).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;0&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;/    Label11.Text = dt.Add(?).ToString();//问号为一个时间段&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label1.Text = dt.Equals("2005-11-6 16:11:04").ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;False&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label2.Text = dt.Equals(dt).ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;True&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label3.Text = dt.GetHashCode().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;1474088234&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label4.Text = dt.GetType().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;System.DateTime&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label5.Text = dt.GetTypeCode().ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;DateTime&lt;br /&gt;   &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label1.Text = dt.GetDateTimeFormats('s')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-05T14:06:25&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label2.Text = dt.GetDateTimeFormats('t')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;14:06&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label3.Text = dt.GetDateTimeFormats('y')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label4.Text = dt.GetDateTimeFormats('D')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月5日&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label5.Text = dt.GetDateTimeFormats('D')[1].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005 11 05&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label6.Text = dt.GetDateTimeFormats('D')[2].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;星期六 2005 11 05&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label7.Text = dt.GetDateTimeFormats('D')[3].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;星期六 2005年11月5日&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label8.Text = dt.GetDateTimeFormats('M')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;11月5日&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label9.Text = dt.GetDateTimeFormats('f')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月5日 14:06&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label10.Text = dt.GetDateTimeFormats('g')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 14:06&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    Label11.Text = dt.GetDateTimeFormats('r')[0].ToString();&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Sat, 05 Nov 2005 14:06:25 GMT&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;    Label1.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:d}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label2.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:D}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月5日&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label3.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:f}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月5日 14:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label4.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:F}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月5日 14:23:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label5.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:g}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 14:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label6.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:G}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 14:23:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label7.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:M}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;11月5日&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label8.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:R}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Sat, 05 Nov 2005 14:23:23 GMT&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label9.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:s}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-05T14:23:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label10.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:t}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;14:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label11.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:T}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;14:23:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label12.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:u}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-05 14:23:23Z&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label13.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:U}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月5日 6:23:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label14.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:Y}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005年11月&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label15.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2005-11-5 14:23:23&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    Label16.Text &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: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0:yyyyMMddHHmmssffff}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,dt);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/yiki/aggbug/1808681.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/yiki/archive/2010/08/26/1808681.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
