<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_艺风在线</title><subtitle type="text">CSBlog,CSCMS,XML+XSLT,C#,.Net,WinForm</subtitle><id>http://feed.cnblogs.com/blog/u/21847/rss</id><updated>2010-11-23T05:20:43Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/21847/rss"/><entry><id>http://www.cnblogs.com/atwind/archive/2010/11/23/1885140.html</id><title type="text">我的第一个开源项目：WinServiceTask</title><summary type="text">欢迎使用WinServiceTask，注意：此框架针对开发人员。源代码地址：http://wstask.codeplex.com/一、功能摘要：--------------------------------------------------------------------------------1. 启动触发时间采用开源的Quartz.Net项目的Cron表达式："0 0 12 * * ?" 每天中午12点触发；2. 多线程运行各任务，互不干扰；3. 自动监视配置文件，配置文件更改后服务重启；4. 配置Tasks.config中可以引用公用的资源；5. 具体任务中可以引用公有资源，并加入本任务对应的相关参数；6. 具体任务配置中加上Settings设置，方便加入一些配置信息，如果还是不能满足，那么就要自定义Extend的扩展了。</summary><published>2010-11-23T02:26:00Z</published><updated>2010-11-23T02:26:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2010/11/23/1885140.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2010/11/23/1885140.html"/><content type="html">&lt;p&gt;&lt;span style="font: normal normal normal medium/normal 微软雅黑; font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; color: #30332d; font-size: 13px; " &gt;欢迎使用WinServiceTask，&lt;font color="#ff0000"&gt;&lt;strong&gt;注意：此框架针对开发人员。&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;源代码地址：&lt;/span&gt;&lt;a href="http://wstask.codeplex.com/"&gt;http://wstask.codeplex.com/&lt;/a&gt;&lt;br /&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 微软雅黑; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px" &gt;&lt;span style="font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; color: #30332d; font-size: 13px" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="color: #800000; font-family: 'Comic Sans MS'; font-size: 14pt; "&gt;这是一个作业调试框架，类似于&lt;span  style="font-family: Verdana, Simsun, sans-serif; line-height: 20px; font-size: 13px; color: #333333; "&gt;&lt;a href="http://www.oschina.net/p/quartz.net" 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: #3e62a6; outline-width: 0px; outline-style: initial; outline-color: initial; "&gt;Quartz&lt;/a&gt;.Net&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 'Comic Sans MS'; font-size: 14pt; "&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; color: #30332d; font-size: 13px" &gt;一、功能摘要：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
1. 启动触发时间采用开源的Quartz.Net项目的Cron表达式："0 0 12 * * ?" 每天中午12点触发；&lt;br /&gt;2. &#xD;
多线程运行各任务，互不干扰；&lt;br /&gt;3. 自动监视配置文件，配置文件更改后服务重启；&lt;br /&gt;4. 配置Tasks.config中可以引用公用的资源；&lt;br /&gt;5. &#xD;
具体任务中可以引用公有资源，并加入本任务对应的相关参数；&lt;br /&gt;6. &#xD;
具体任务配置中加上Settings设置，方便加入一些配置信息，如果还是不能满足，那么就要自定义Extend的扩展了。&lt;br /&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 微软雅黑; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px" &gt;&lt;span style="font-family: 'Segoe UI', 'Microsoft Sans Serif', Arial, Geneva, sans-serif; color: #30332d; font-size: 13px" &gt;二、运行机制：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
1. 每个任务做为一个独立的运行线程 隐喻：工人&lt;br /&gt;2. 服务本身做为一个独立线程 隐喻：监督工人&lt;br /&gt;3. 监督工人每隔 N &#xD;
秒轮询一次任务，如发现任务的触发时间小于间隔N 即创建该任务并且启动该任务。&lt;br /&gt;4. 启动后的任务根据启动时间于特定时间执行任务。&lt;br /&gt;5. &#xD;
工人工作完本身任务后自动停止。待下一轮监督工人查看时清除任务对象。&lt;br /&gt;&lt;br /&gt;三、任务驱动UML图&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
 &lt;br /&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="UML类图" alt="UML类图" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=wsTask&amp;amp;DownloadId=128857" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;四、项目内容：&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
 1. support 调用的一些外部类库&lt;br /&gt;2. CS.Scheduling.Framework 任务调度框架&lt;br /&gt;3. &#xD;
CS.Scheduling.NUnitTests 一些测试，这个随便写的&lt;br /&gt;4. CS.Task.DataTransfer &#xD;
一个数据转存的任务示例（DataTableToDataTable已经完成）&lt;br /&gt;5. CS.WinServiceManager &#xD;
WindwosService的服务管理器，这个可以算是一个分支了。用来安装和管理实现本框架的AppForm。&amp;nbsp;&lt;br /&gt;6. CS.WinServiceTask &#xD;
WindsService的实现示例，该Demo直接调用任务调度框架。&lt;br /&gt;&lt;br /&gt;五、任务实现代码：&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
 1. &#xD;
参见CS.Task.DataTransfer.TaskDemo的示例实现及CS.Task.DataTransfer.DataTableToDataTable实用实现&lt;br /&gt;2. &#xD;
继承TaskProvider类后，重写protected override Result Work() 即可。&lt;br /&gt;3. &#xD;
如果自已扩展了Extend节点，则要重写public override void InitExtend()方法&lt;br /&gt;4. &#xD;
具体备置可参见Tasks.config文件&lt;br /&gt;&lt;br /&gt;六、WindService的调试：&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
 1. 方法一：打开控制台，拖入CS.WinService.Demo的执行程序（该程序还是WinService）加上任一参数 如：-t 后回车&lt;br /&gt;2. &#xD;
方法二：通过CS.WinServiceManager安装服务。启用UDP监视器查看即。&lt;br /&gt;&lt;br /&gt;七、更新列表：&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
 ----udpate:2010-07-07---To:1.3.1 Beta2-----&lt;br /&gt;1. 配置初始化功能&lt;br /&gt;2. &#xD;
明确补全功能，注意：补全功能是按执行结果的XML文件里的最后成功执行时间来计算下一个周期点的。修改补全时间时必须停止服务(肯定是手动大改动)。&lt;br /&gt;3. &#xD;
Tasks.config配置中增加公用资源部分配置，这样就可以共用一些通用的资源信息了。&lt;br /&gt;4. &#xD;
增加所有总服务状态Task4WinService.Status，这个好像还是有问题。&lt;br /&gt;5. 增加了一个默认的扩展配置保护属性Extend, &#xD;
如果自定义了扩展配置后可以重写LoadExtendConfig方法 Extend.Settings&lt;a style="color: #3e62a6; text-decoration: underline" href="http://wstask.codeplex.com/wikipage?title=%22key%22&amp;amp;referringTitle=Home"&gt;"key"&lt;/a&gt;.Value;&lt;br /&gt;&#xD;
&lt;hr style="margin-top: 1em; margin-bottom: 1em" /&gt;&#xD;
----udpate:2010-07-26---To:1.3.2 Beta1-----&lt;br /&gt;1. 调整文件及程序集信息；&lt;br /&gt;2. &#xD;
重写预定义好的预定义扩展，预定义扩展是引用公有资源再加上可能的参数组成；&lt;br /&gt;*3. 注意，具体任务中不要抛出异常，以免使整个服务挂起；&lt;br /&gt;4. &#xD;
DataTableToDataTable表对表导入任务实现；&lt;br /&gt;5. Tasks.config中的预扩展中Params参数加入 对&amp;lt;!&lt;a style="color: #3e62a6; text-decoration: underline" href="http://wstask.codeplex.com/wikipage?title=CDATA%5b&amp;amp;referringTitle=Home"&gt;CDATA[&lt;/a&gt;]&amp;gt; &#xD;
支持，以避免手动转义特殊字符，注：text中有值时会覆盖value中的值。&lt;img src="http://www.cnblogs.com/atwind/aggbug/1885140.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/atwind/archive/2010/11/23/1885140.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/atwind/archive/2010/05/19/1739143.html</id><title type="text">UDP监视器,可设置端口,默认是80</title><summary type="text">不用打开日志文本,也能直接通过控制台来获得日志信息. 代码是log4net帮助文档里的,保是整理了一下.写成了一个小工具而已.喜欢的下吧,呵~~~</summary><published>2010-05-19T05:38:00Z</published><updated>2010-05-19T05:38:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2010/05/19/1739143.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2010/05/19/1739143.html"/><content type="html">&lt;p&gt;本功能是基于log4net的,&lt;/p&gt;&lt;p&gt;log4net里有个东东,就是&amp;nbsp;UdpAppender ,通过这个Appender可以输出到UDP中.&lt;/p&gt;&lt;p&gt;&amp;lt;!--输出到UDP中--&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;&amp;lt;appender name="UdpSender" type="log4net.Appender.UdpAppender"&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;lt;remoteAddress value="127.0.0.1" /&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;lt;remotePort value="8081" /&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;		&lt;/span&gt;&amp;lt;layout type="log4net.Layout.PatternLayout" value="%-5level: %message%newline" /&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;span  style="white-space:pre"&gt;	&lt;/span&gt;&amp;lt;/appender&amp;gt;&lt;/p&gt;&lt;p&gt;这样,你不用打开日志文本,也能直接通过控制台来获得日志信息. 代码是log4net帮助文档里的,保是整理了一下.写成了一个小工具而已.喜欢的下吧,呵~~~&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/atwind/UdpWatcher.rar" target="_blank"&gt;/Files/atwind/UdpWatcher.rar&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/atwind/aggbug/1739143.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/atwind/archive/2010/05/19/1739143.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/atwind/archive/2010/04/07/1706404.html</id><title type="text">延时至调用时获取被反序列化数据的类型的实现</title><summary type="text"> 应用场景：		设计一个任务调度系统，配置信息以XML行式保存在Tasks.config的配置文件里，该配置里不止一个任务。不同的任务，会有不同配置信息与设定。	解决方案1：使用XPath直接读	优点：1. 直接；2. 灵活(配置可以千变万化)	缺点：1. 不友好，要写一堆的读取XML数据的方法，每次有新的任务时都要重写不同的XML片断；2. 容易出错，很有可能因为写了一个错误的节点属性名称而得不到数据	解决方案2：使用对象序列化成XML文档	缺点：1. 反序列化配置时必须有定义好的类型。	优点：1. 友好，XML里的数据直接反序列化成对象的属性；2. 不容易出错，为什么呢？你肯定要先定义好类型序列化后使用，你别告诉我你是手写XML的；</summary><published>2010-04-07T07:34:00Z</published><updated>2010-04-07T07:34:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2010/04/07/1706404.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2010/04/07/1706404.html"/><content type="html">&lt;p&gt;应用场景：&lt;br /&gt;&amp;nbsp;&amp;nbsp;设计一个任务调度系统，配置信息以XML行式保存在Tasks.config的配置文件里，该配置里不止一个任务。不同的任务，会有不同配置信息与设定。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;解决方案1：使用XPath直接读&lt;br /&gt;&amp;nbsp;优点：1. 直接；2. 灵活(配置可以千变万化)&lt;br /&gt;&amp;nbsp;缺点：1. 不友好，要写一堆的读取XML数据的方法，每次有新的任务时都要重写不同的XML片断；2. 容易出错，很有可能因为写了一个错误的节点属性名称而得不到数据&lt;br /&gt;&amp;nbsp;&lt;br /&gt;解决方案2：使用对象序列化成XML文档&lt;br /&gt;&amp;nbsp;缺点：1. 反序列化配置时必须有定义好的类型。&lt;br /&gt;&amp;nbsp;优点：1. 友好，XML里的数据直接反序列化成对象的属性；2. 不容易出错，为什么呢？你肯定要先定义好类型序列化后使用，你别告诉我你是手写XML的；&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;现在的问题是设计一个方法，解决它的缺点。就算有不同的配置我也能给你反序列化出来。那么抽出相同的部分，这部分不是我们关注的重点了。我们关注的是，如何重现不同的配置XML为实例。因为所有的对象都是继承自object的，那么，我们把扩展部分的类型就设定为object好了。经过测试发现，反序列化后的object是XmlNode[]数组。那我们要做的就是把这个XmlNode[]数组给转换为文本，然后再客户端使用的时候，将文本与定义好的类型进行反序列化。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;代码原型：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('83f9a4e1-f698-4f95-96d2-853765eaad00')"&gt;&lt;img style="display: none" id="code_img_opened_83f9a4e1-f698-4f95-96d2-853765eaad00"  onclick="cnblogs_code_hide('83f9a4e1-f698-4f95-96d2-853765eaad00',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div id="cnblogs_code_open_83f9a4e1-f698-4f95-96d2-853765eaad00" &gt;&#xD;
&lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Serializable,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlRoot(ElementName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlConfig&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;扩展&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[XmlElement(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;extend&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Extend&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;获取已设定的扩展类型实例&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;typeparam&amp;nbsp;name="T"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;扩展的类型&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/typeparam&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;扩展类实例&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;T&amp;nbsp;GetExtend&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;T&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;()&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;T:&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Serializer.XmlDeserializerFormText&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;T&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(ExtendRawXml);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;Extend扩展的Xml片断&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ExtendRawXml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&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;var&amp;nbsp;nodes&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Extend&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlNode[];&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;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(nodes&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;||&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nodes.Length&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;lt;extend&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;w&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;StringWriter();&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;XmlWriter&amp;nbsp;writer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlTextWriter(w);&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;writer.WriteStartElement(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;extend&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(var&amp;nbsp;node&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nodes)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;writer.WriteRaw(node.OuterXml);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;writer.WriteEndElement();&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;writer.Close();&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;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;w.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Serializable,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlRoot(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;extend&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;MyExtend&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Id&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Name&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/atwind/aggbug/1706404.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/atwind/archive/2010/04/07/1706404.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/atwind/archive/2009/11/04/1596202.html</id><title type="text">C#里使用Oracle提供的Oracle.DataAccess 返回包里的记录集游标，含Oralce里的分页包代码</title><summary type="text">最近公司上马了一个新的项目，用到的数据库是Oracle10g的今天用到C#里调用Oralce包里的SP返回分页的记录集，在网上查了一下，都用的是MS提供的Oracle.Cient，而在Oracle.DataAccess.Client 里调用时（Ms的Oracle.Client 有问题，所以用的是Oracle官方提供的Oracle.DataAccess.Client ），输出的参数也要赋值后调用才能返回，否则返回的记录集是空的。即DbNull.Value要先赋值到参数上。本人用Oracle还不到三个星期，因此肯定有不对的地方，还望各位大虾们多多指教。今天发现Oracle的Package确实不错，是我用的这几天里的我目前感觉到的一大亮点（可以重载，可以把相关的操作放到一个包里）。不知MSSQL2008里有没有。</summary><published>2009-11-04T12:56:00Z</published><updated>2009-11-04T12:56:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2009/11/04/1596202.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2009/11/04/1596202.html"/></entry><entry><id>http://www.cnblogs.com/atwind/archive/2009/07/21/1527510.html</id><title type="text">修改版的jsonView,加入了PHP的反序列化</title><summary type="text">/Files/atwind/JsonView.rar只在原来的版本上加了一个功能,因为我要把PHP序列化后的字符串再给反回去,所以网上找了一下,就加上去了!想用的就下吧! 呵!不能算是我的作品,只是加了个功能,懒得再开新分类了.</summary><published>2009-07-21T01:58:00Z</published><updated>2009-07-21T01:58:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2009/07/21/1527510.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2009/07/21/1527510.html"/></entry><entry><id>http://www.cnblogs.com/atwind/archive/2009/06/08/1498673.html</id><title type="text">权限设计中的&amp;quot;依赖颠倒&amp;quot;</title><summary type="text">今天[2009-6-8]想到,为什么我们要把权限绑定到角色上呢? 如果反过来呢? 比如某一方法(或是模块)用的权限,我给一个资源Id(Gid) 然后将这个Gid和角色映射起来(应该也能用到OO里面的重载来实现)! 这样,新的模块出来了,只需要分配新的Gid和新的角色映射即可,而不是再预先想到某些模块可能用到什么权限. 可能说的不是很清楚,不过大家有什么好点子,欢迎提出来呀! </summary><published>2009-06-08T05:54:00Z</published><updated>2009-06-08T05:54:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2009/06/08/1498673.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2009/06/08/1498673.html"/></entry><entry><id>http://www.cnblogs.com/atwind/archive/2009/06/02/1494351.html</id><title type="text">CSCMSV1终于上线内测了[广告贴]</title><summary type="text">内测地址: http://www.010jy.com/同CSBlog一样,用的是XML+XSLT生成XHTML的,起点缓存后还是比较快的. 呵~~~ 查看源代码就能看到执行的相关信息了.采用Jquery库, 并且全部放在页面的最下面了,这样Js就不会阻塞Http的下载进程,能把内容先下回来! </summary><published>2009-06-02T03:30:00Z</published><updated>2009-06-02T03:30:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2009/06/02/1494351.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2009/06/02/1494351.html"/></entry><entry><id>http://www.cnblogs.com/atwind/archive/2009/03/13/1410811.html</id><title type="text">Head First 设计模式阅读所得:策略模式(Strategy Pattern) 接口的用处（之一）</title><summary type="text">周一从当当定的书，周4到的，看了20多页。讲的非常好。真的！以前看模式老是雾里看花的感觉。现在不一样，很清淅。可能你也和我一样，一直不明白，接口只不过是个规范，是个定义，是个好抽的抽象，她倒底有什么迷人的呢？看到下面，你也许能知道了接口真的是很迷人。策略模式用了三个原则：一、封装变化二、接口编程三、用组合代替继承</summary><published>2009-03-13T07:24:00Z</published><updated>2009-03-13T07:24:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2009/03/13/1410811.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2009/03/13/1410811.html"/></entry><entry><id>http://www.cnblogs.com/atwind/archive/2009/01/14/1375411.html</id><title type="text">CSBlogV2.11 2009新年贺岁版－牛气冲天完全包</title><summary type="text">2009新年贺岁版－ 牛气冲天下载演示地址：http://csblog.cszi.com/技术特点说明：----------------------------------------------------------------------------------1. 经典N层的原创架构设计；2. 输出XML原始数据+XSLT模板生成标准的XHTML页面显示的方式，主题更改更容易，更方便；3....</summary><published>2009-01-14T03:00:00Z</published><updated>2009-01-14T03:00:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2009/01/14/1375411.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2009/01/14/1375411.html"/></entry><entry><id>http://www.cnblogs.com/atwind/archive/2009/01/06/1370019.html</id><title type="text">CSBlogV2 2009新年主题和皮肤－牛气冲天~ </title><summary type="text">新年主题包-牛气冲天下载</summary><published>2009-01-06T01:52:00Z</published><updated>2009-01-06T01:52:00Z</updated><author><name>一线风</name><uri>http://www.cnblogs.com/atwind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/atwind/archive/2009/01/06/1370019.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/atwind/archive/2009/01/06/1370019.html"/></entry></feed>
