<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feeds.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feeds.feedsky.com/csdn.net/AppFramework" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feeds.feedsky.com/csdn.net/AppFramework" type="application/rss+xml"></fs:self_link><lastBuildDate>Wed, 20 Jan 2010 14:17:00 GMT</lastBuildDate><title>框架提高生产力</title><description>凝聚产生力量</description><link>http://blog.csdn.net/blogrss.aspx?username=AppFramework</link><item><title>JavaScript 的 Cross Site 脚本注入风险</title><link>http://blog.csdn.net/AppFramework/archive/2010/01/20/5218642.aspx</link><description>    今天公司有人来推弦网站安全扫描软件，演示了对JS的跨域脚本注入风险的扫描，以前没意识到，今天有所了解。如果您的程序页面有以下情况，那么JS脚本注入的风险就很大：1）页面打开时，URL 有某个参数，例如 XXPage.aspx?XXParam=XXValue2）aspx页面里有如下代码：注入风险如下：1）黑客假冒网站身份发送邮件给用户，用户打开网页链接，链接虽然是指向 XXPage.aspx，但 XXParam 却被做了改造，例如：XXParam 被设置为 &quot;; document.location.href = 'http://www.xxx.com/XXFakePage.aspx';//&quot;你猜结果会怎么样？页面直接被跳转到 http://www.xxx.com/XXFakePage.aspx，如果这个页面是假冒页面，并且&lt;img src=&quot;http://www1.feedsky.com/t1/323897674/AppFramework/csdn.net/s.gif?r=http://blog.csdn.net/AppFramework/archive/2010/01/20/5218642.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897674/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897674/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 20 Jan 2010 22:17:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2010/01/20/5218642.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2010/01/20/5218642.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897674/4258210</fs:itemid></item><item><title>试用Win7的几点体会</title><link>http://blog.csdn.net/AppFramework/archive/2009/12/01/4911985.aspx</link><description>    周末下载了Win7的RTM版，安装到我4岁高龄的1G内存笔记本上，过程比较顺利，耗时大概不到1小时。为了腾出15G硬盘，先用PQMagic挪了分区。到安装完硬盘就只剩5、6G了，其中包含1.5G的 pagefile 和 休眠交换空间。    在外观上Win7继承了Vista的绚丽，在易用性上，又改进了Vista一些诟病。原来Vista上UAC、复制文件前漫长的时间估算等等，在Win7里取消了。好处不再多说，这里主要反馈一些使用中存在的问题，希望跟读者交流一下，看看是不是自己使用的问题。    1、防火墙弹出提示框无法禁止应用程序访问网络     有些视频播放软件会自动连接网络播放广告信息，在连接发起时Win7防火墙能够拦截并弹出对话框，对话框里有两个选项允许程序访问网络：一个是内网（家庭、办公室）、一个是外网（公共场所）。但问题是，如果要彻底禁止任何情况下访问网络，必须把两个复选框都取消选择，但如果两个复选框都取消选择，那么“确定”按钮就变灰不可按了，只能按取消。点了取消后，到防火墙访问控制列表里看，那&lt;img src=&quot;http://www1.feedsky.com/t1/323897675/AppFramework/csdn.net/s.gif?r=http://blog.csdn.net/AppFramework/archive/2009/12/01/4911985.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897675/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897675/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 01 Dec 2009 07:56:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2009/12/01/4911985.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2009/12/01/4911985.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897675/4258210</fs:itemid></item><item><title>设计文档写些什么才有用？</title><link>http://blog.csdn.net/AppFramework/archive/2009/11/26/4875539.aspx</link><description>一些公司用CMMI做软件开发过程管理，对详细设计过程要求很高，需产出Rose设计模型，画出序列图、活动图等等。本意是为了让Rose设计模型对后续的编码有指导意义。但实际实施过程中发现效果不佳，一是有人不愿意认真写详细设计文档，二是有人不愿意看详细设计文档，问题如下：

 

    1）当详细设计和编码人员实际为同一人时：既然是同一人，自己做事心里有数，整体想清楚了就开始编码，而不愿意写详细设计文档。

    2）当详细设计和编码人员不是同一人时：编码人员根本不愿意看Rose设计模型，一，详细设计要画的很细才有效果，这样一来要读懂别人的序列图、活动图反而不容易；二，如果详细设计做的不够细，那还不如直接看需求文档。

 

    文档有两个功能，一个是指导下游工序进行工作，二是作为档案供将来回忆或新人学习之用；由于上面两个原因，Rose设计模型的第一个功能“指导下游工序进行工作”的功能实际是失效了；而第二个功能呢？在与许多从事软件维护工作的开发人员访谈之后，得到的结论是：大多数人更愿意直接看代码，而不是看详细设计文档（因为设计文档要不就是太粗略，要不就是&lt;img src=&quot;http://www1.feedsky.com/t1/323897676/AppFramework/csdn.net/s.gif?r=http://blog.csdn.net/AppFramework/archive/2009/11/26/4875539.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897676/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897676/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 26 Nov 2009 08:03:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2009/11/26/4875539.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2009/11/26/4875539.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897676/4258210</fs:itemid></item><item><title>从几个方面评价软件设计的合理性？</title><link>http://blog.csdn.net/AppFramework/archive/2009/11/23/4859457.aspx</link><description>1、问题的提出

      很多程序员写程序，想到哪写到哪，缺乏一个整体规划。结果随着代码的堆积，软件内部结构就乱得一团糟。想要修改一个地方，影响这、影响那，牵一发而动全身。最后不得不重构，甚至从根基重构---直接推倒重来! 一个欠设计的系统会随着规模的扩大加速死亡；而一个设计考究的系统，则可以长久保持年轻，后期维护成本也会降低。 

2、软件设计评价

      软件设计分为几个层面：框架级、组件级、类级、算法级。 

      框架级：框架可以认为是软件系统搭建所基于的平台(平台比框架还多了一些开发工具)。框架主要目的是实现系统的非功能需求，例如通用控件、通用组件、组件装配、运行管理、可移植性、可扩展性、可伸缩性、灵活性、可维护性等等。框架的好坏，体现在它满足软件系统的非功能需求的程度。 

      组件级：组件的意义是把复杂系统拆解成几个简单独立的部分，这些部分能够被独立开发、独立部署、独立运行。组件设计非常强调组件的独立性，可以从单一职责、功能内聚去评价，满足这两天才容易独立开发。独立部署是指组件可以单独部署和卸载，而对系统不会造成破坏性影响。不过&lt;img src=&quot;http://www1.feedsky.com/t1/323897677/AppFramework/csdn.net/s.gif?r=http://blog.csdn.net/AppFramework/archive/2009/11/23/4859457.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897677/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897677/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 23 Nov 2009 22:05:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2009/11/23/4859457.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2009/11/23/4859457.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897677/4258210</fs:itemid></item><item><title>基于IEC61850的数字化继电保护GOOSE功能测试</title><link>http://blog.csdn.net/AppFramework/archive/2009/06/03/4238966.aspx</link><description>&lt;br /&gt;摘要：简述了IEC61850标准中的通用变电站事件模型和继电保护装置的功能测试内容，介绍了一种数字化保护装置的测试系统搭建方案。该测试系统能够实现对GOOSE报文传输的跳闸命令进行解析和映射，可以向被测装置发出GOOSE报文模拟闭锁条件。利用该测试系统能够完成继电保护逻辑功能的测试，并且使用方便，性能可靠。&lt;br /&gt;　　引言&lt;br /&gt;　　如今变电站自动化水平的发展对设备互操作性提出了更高的要求。国际电工委员会TC57制订了《变电站通讯网络和系统》．系列标准，即IEC61850系列标准。该标准采用对象建模技术，面向设备建模和自我描述，以适应应用功能的需要和发展，满足应用开放互操作性要求，为基于通用网络通信平台的变电站自动化系统唯一的国际标准。&lt;br /&gt;　　IEC61850标准中定义了通用变电站事件模型，该模型基于自动分布的概念，提供了在全系统范围内快速可靠的输入、输出数据值的功能。随着IEC61850系列标准在我国电力系统的推广和应用，采用GOOSE报文传输跳闸信号的继电保护装置已经研发出来，需要探索新的测试系统及测试方法，来实现对数字化继电保护产品的测试。&lt;br /&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/323897678/AppFramework/csdn.net/s.gif?r=http://blog.csdn.net/AppFramework/archive/2009/06/03/4238966.aspx&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897678/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897678/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 03 Jun 2009 14:10:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2009/06/03/4238966.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2009/06/03/4238966.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897678/4258210</fs:itemid></item><item><title>一种分布式数据库同步方案</title><link>http://blog.csdn.net/AppFramework/archive/2008/07/15/2652508.aspx</link><description>对于大型企业，业务分布在世界各地，为了改善当地业务服务能力，不得不在当地部署数据库以提高性能，而各个区域之间的数据交互或者同步，成为不可不面对的问题。其间要解决的技术问题主要有：    1、同步数据的提取。从数据库里提取出需要同步的数据，这包括增、删、改三类动作对数据造成的改变。在数据表安装触发器是提取同步数据的简单有效的手段，而且触发器对应用层而言是透明的，应用程序感觉不到触发器的存在。    2、同步数据的可靠传输。数据传输可以用队列来实现，例如有MSMQ、IBM MQ Series等。    3、数据冲突与操作冲突的规避、发现和解决。数据冲突是指两个节点同时发生对同一条记录的操作，导致在双向同步时难以决定两个操作执行的先后顺序。&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897679/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897679/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 15 Jul 2008 10:25:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2008/07/15/2652508.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2008/07/15/2652508.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897679/4258210</fs:itemid></item><item><title>用 Microsoft.mshtml.dll 和 WebClient 自己实现网页保存为 MHT 文件</title><link>http://blog.csdn.net/AppFramework/archive/2008/05/08/2418984.aspx</link><description>相信大家经常用IE保存网页功能保存有价值的网页，但是IE的网页保存功能做的不是太好，经常会有些页面保存失败。我也深受其烦，好在本人是程序员，程序员最大的好处是会自己编软件。正好我自己开发了个多页签浏览的IE，于是便在其中增加了网页保存为MHT文件的功能。网页保存为MHT功能主要包含以下几个关键问题：1）修改所有相对链接为绝对链接；2）把网页内容连同包含的 JS、图片、CSS等文件下载到本地并打包到一起，形成单一的MHT文件；3）要能处理Frameset和IFrame；&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897680/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897680/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 08 May 2008 21:44:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2008/05/08/2418984.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2008/05/08/2418984.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897680/4258210</fs:itemid></item><item><title>用 WeifenLuo.WinFormsUI 实现 VS2005 风格的多页签浏览器</title><link>http://blog.csdn.net/AppFramework/archive/2008/05/08/2418814.aspx</link><description>本文描述了如何使用 WeifenLuo.WinFormsUI 实现 VS2005 风格的多页签浏览器&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897681/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897681/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Thu, 08 May 2008 21:02:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2008/05/08/2418814.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2008/05/08/2418814.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897681/4258210</fs:itemid></item><item><title>最近用VS2005C#开发的IE内核多页签浏览器，支持多线程下载和在后台保存MHT</title><link>http://blog.csdn.net/AppFramework/archive/2008/04/20/2310049.aspx</link><description>最近用VS2005C#开发的IE内核多页签浏览器，支持多线程下载和在后台保存MHT，名字还没定，请大家帮忙想个好名字吧：） 1. 总体界面：VS2005风格，渐变背景色、四边停靠栏，多页签浏览：2．菜单：VS2005风格，注意看跟VS2005自带的ToolStrip显示有点不一样哦，主条菜单背后有阴影，效果不错吧！&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897682/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897682/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 20 Apr 2008 22:29:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2008/04/20/2310049.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2008/04/20/2310049.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897682/4258210</fs:itemid></item><item><title>利用 Monitor.TryEnter 来规避 .NET 线程死锁的源代码</title><link>http://blog.csdn.net/AppFramework/archive/2008/04/06/2254207.aspx</link><description>在开发多线程的应用程序时，我们会大量用到 lock (...) {} 块。如果 lock 的对象比较多，非常容易发生死锁。死锁的发生很难预料，而且一旦发生在界面线程上，界面就不再刷新响和应用户输入；如果发生在后台线程，后台线程也就阻塞不工作了，死锁必然会导致应用程序不可用。在.NET里发生死锁的原因是什么？以 C# 为例，通常 lock 语句是被转化为对一个资源的无限长时间的等待，所以一旦资源被占用而又永不释放，那么必然死锁。那么如何规避的危害呢？应用程序应该避免 lock(obj) 块，推荐使用 Monitor.TryEnter(obj, millisecondsTimeout) 代替，二者的第一个参数意义相同，而后者还可以设置等待超时时间，一旦在限定的时间内无法获得锁，那么 TryEnter 就会返回  false。这样就不会造成死锁，无法获得资源，业务程序可以采取重试或抛异常的方式进行善后处理。Monitor.TryEnter 和 Monitor.Exit 必须成对出现，为了简化代码，可以用一个实现IDisposeable的类来封装这个过程：&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/csdn.net/AppFramework/323897683/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/csdn.net/AppFramework/323897683/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 06 Apr 2008 03:12:00 +0800</pubDate><author>AppFramework</author><guid isPermaLink="false">http://blog.csdn.net/AppFramework/archive/2008/04/06/2254207.aspx</guid><dc:creator>AppFramework</dc:creator><fs:srclink>http://blog.csdn.net/AppFramework/archive/2008/04/06/2254207.aspx</fs:srclink><fs:srcfeed>http://blog.csdn.net/AppFramework/rss.aspx</fs:srcfeed><fs:itemid>csdn.net/AppFramework/~6150263/323897683/4258210</fs:itemid></item></channel></rss>