2007年12月18日

置顶 原创 AppFramework最新版本V1.2安装包下载地址:http://download.csdn.net/source/334024【原V1.1/1.0版本的用户应尽快下载V1.2版】收藏

安装包下载地址:http://download.csdn.net/source/334024 SOCKET 网络日志接收器下载地址:http://download.csdn.net/source/327016 V1.2修改记录: 1)修改了 V1.1/V1.0 的代码生成bug:当主键是字符串类型时,生成重复的DAO方法导致编译失败。 2)修改了 TextParameter 类名为 TextField 保持命名风格统一。 3)扩展了 IParamBase,增加了6个方法,使用起来跟方便,便于开发底层通用代码 V1.1修改记录: 1)经网友要求,IDBSession增加 QueryDataReader 4个重载方法,便于习惯 IDataReader 编程的用户使用; 2)采纳网友建议,修改了 CodeGen 自动生成的 SqlMap 的类名,去掉 SqlMap 后缀,便于查找和使用; 3)修改了QueryFilter 的 DBOperator 为 IN 时在 SqlServer 上引发的 NVarChar 无法转为 int 类型的 阅读全文>

发表于 @ 2007年12月18日 10:01:00|评论(loading...)|编辑|收藏

2008年07月15日

原创 一种分布式数据库同步方案收藏

对于大型企业,业务分布在世界各地,为了改善当地业务服务能力,不得不在当地部署数据库以提高性能,而各个区域之间的数据交互或者同步,成为不可不面对的问题。其间要解决的技术问题主要有: 1、同步数据的提取。从数据库里提取出需要同步的数据,这包括增、删、改三类动作对数据造成的改变。在数据表安装触发器是提取同步数据的简单有效的手段,而且触发器对应用层而言是透明的,应用程序感觉不到触发器的存在。 2、同步数据的可靠传输。数据传输可以用队列来实现,例如有MSMQ、IBM MQ Series等。 3、数据冲突与操作冲突的规避、发现和解决。数据冲突是指两个节点同时发生对同一条记录的操作,导致在双向同步时难以决定两个操作执行的先后顺序。阅读全文>

发表于 @ 2008年07月15日 10:25:00|评论(loading...)|收藏

2008年05月08日

原创 用 Microsoft.mshtml.dll 和 WebClient 自己实现网页保存为 MHT 文件收藏

相信大家经常用IE保存网页功能保存有价值的网页,但是IE的网页保存功能做的不是太好,经常会有些页面保存失败。我也深受其烦,好在本人是程序员,程序员最大的好处是会自己编软件。正好我自己开发了个多页签浏览的IE,于是便在其中增加了网页保存为MHT文件的功能。网页保存为MHT功能主要包含以下几个关键问题:1)修改所有相对链接为绝对链接;2)把网页内容连同包含的 JS、图片、CSS等文件下载到本地并打包到一起,形成单一的MHT文件;3)要能处理Frameset和IFrame;阅读全文>

发表于 @ 2008年05月08日 21:44:00|评论(loading...)|编辑|收藏

原创 用 WeifenLuo.WinFormsUI 实现 VS2005 风格的多页签浏览器收藏

本文描述了如何使用 WeifenLuo.WinFormsUI 实现 VS2005 风格的多页签浏览器阅读全文>

发表于 @ 2008年05月08日 21:02:00|评论(loading...)|编辑|收藏

2008年04月20日

原创 最近用VS2005C#开发的IE内核多页签浏览器,支持多线程下载和在后台保存MHT收藏

最近用VS2005C#开发的IE内核多页签浏览器,支持多线程下载和在后台保存MHT,名字还没定,请大家帮忙想个好名字吧:) 1. 总体界面:VS2005风格,渐变背景色、四边停靠栏,多页签浏览:2.菜单:VS2005风格,注意看跟VS2005自带的ToolStrip显示有点不一样哦,主条菜单背后有阴影,效果不错吧!阅读全文>

发表于 @ 2008年04月20日 22:29:00|评论(loading...)|编辑|收藏

2008年04月06日

原创 利用 Monitor.TryEnter 来规避 .NET 线程死锁的源代码收藏

在开发多线程的应用程序时,我们会大量用到 lock (...) {} 块。如果 lock 的对象比较多,非常容易发生死锁。死锁的发生很难预料,而且一旦发生在界面线程上,界面就不再刷新响和应用户输入;如果发生在后台线程,后台线程也就阻塞不工作了,死锁必然会导致应用程序不可用。在.NET里发生死锁的原因是什么?以 C# 为例,通常 lock 语句是被转化为对一个资源的无限长时间的等待,所以一旦资源被占用而又永不释放,那么必然死锁。那么如何规避的危害呢?应用程序应该避免 lock(obj) 块,推荐使用 Monitor.TryEnter(obj, millisecondsTimeout) 代替,二者的第一个参数意义相同,而后者还可以设置等待超时时间,一旦在限定的时间内无法获得锁,那么 TryEnter 就会返回 false。这样就不会造成死锁,无法获得资源,业务程序可以采取重试或抛异常的方式进行善后处理。Monitor.TryEnter 和 Monitor.Exit 必须成对出现,为了简化代码,可以用一个实现IDisposeable的类来封装这个过程: 阅读全文>

发表于 @ 2008年04月06日 03:12:00|评论(loading...)|编辑|收藏

2008年03月22日

原创 近期 IE 打开新浪搜狐网页 CPU 使用率高的解决方法收藏

近期电脑不知道是感染了什么毛病,IE(6.0)只要打开新浪网页,CPU使用率就高达100%,并且在关闭IE的时候,CPU也会达到100%。找了很多帖子都没有解决方法,用各种杀毒软件、木马克星也找不到病毒和后门。有个帖子废话连篇,我试过都没用(还被多处转贴)。后来我发现“服务”管理器里有一个“Contrl Center of Storm Media”服务,好像是 影音风暴(StomII) 安装上去的,把它禁用掉,重启机器后,IE的 CPU 使用率就不高了。不知道这两件事之间有没有必然关系。阅读全文>

发表于 @ 2008年03月22日 13:50:00|评论(loading...)|编辑|收藏

2008年02月23日

原创 截获IE控件下载事件并实现多线程断点续传下载总结收藏

截获IE控件下载事件并实现多线程断点续传下载总结。1、截获IE的下载文件事件。有几个关键点:1)获取文件名;2)获取文件长度;3)决定是启动自己的多线程下载程序来下载文件还是继续让IE下载文件;4)注意容错;2、多线程下载的实现。要点如下:1)应对 referrer 防盗链验证;2)应对 Cookie 会话验证;3)应对 HttpWebRequest默认的只有2个并发连接限制;4)设置多线程分块5)写文件;参考代码:阅读全文>

发表于 @ 2008年02月23日 12:23:00|评论(loading...)|编辑|收藏

2008年02月02日

原创 《网上调查&考试管理》组件设计与实现 — 内部开源项目召集自愿者收藏

《网上调查&考试管理》组件设计与实现 — 内部开源项目召集自愿者 如果您是一名想获得“项目经验”的在校生、或是一名希望体验无压力团队开发乐趣的程序员,或是对《网上调查&考试管理》系统感兴趣,欢迎参加我们的团队。(一)团队形式互联网虚拟团队,非盈利组织 (二)团队目标设计和实现《网上调查&考试管理》组件;建设网站,发展用户 (三)团队成员总监(1名),开发(10名),测试(多名)阅读全文>

发表于 @ 2008年02月02日 16:01:00|评论(loading...)|编辑|收藏

原创 介绍一个对IE控件封装最好的COM组件-csExWB收藏

前段时间研究 IE 开发,在网上找了好久,终于找到一个叫做 csExWB 的组件。csExWB 分两个部分,一个部分是用 VC6 写的COM 组件,实现了包括 IDownloadManager 在内的诸多借口;第二部分是用 CSharp 写的,是对 前面写的 COM 组件再做一次 .Net 封装。 我用这个控件修改了自己的的 MyIE,代码少了很多,并且可以实现类似迅雷、Flashget 截获文件下载的功能。有许多使用WebBrowser/AxWebBrowser出现的奇怪问题,在csExWB控件后都不存在了;csExWB 包含源代码,可以继续扩展。有兴趣深入研究的朋友可以下载看看。 源码可以去 http://www.codeproject.com/ 查找 csExWB. 阅读全文>

发表于 @ 2008年02月02日 12:51:00|评论(loading...)|编辑|收藏

2008年01月21日

原创 对 WebBrowser 和 AxWebBrowser 两个控件使用经验的一点补充收藏

几天前我写过一篇文章介绍使用 AxWebBrowser 控件作扩展, http://blog.csdn.net/AppFramework/archive/2008/01/16/2047610.aspx 。后来发现有些问题: 1)打开HTML界面不是XP风格的平面式的,是老式的3D风格的。而用.Net自带的 WebBrowser 控件打开的页面是XP风格的。 2)直接使用AxWebBrowser的 Focus() 方法,大部分时候都无法 Focus 浏览器控件; 后来查资料,发现 WebBrowser 控件的 ActiveXInstance 其实就是 SHDocVw.WebBrowser 接口,包含了丰富的事件和属性,AxWebBrowser 似乎也是基于次接口进行封装的。 WebBrowser webBrowser = new WebBrowser(); webBrowser.Navigate("about:blank");//这句话重要,要先访问一个URL,否则ActiveXInstalce为空 SHDocVw.WebBrowser xBrowser = 阅读全文>

发表于 @ 2008年01月21日 14:19:00|评论(loading...)|编辑|收藏

2008年01月16日

原创 基于AxWebBrowser实现完美的标签式浏览器,下载地址:http://download.csdn.net/source/337096收藏

由于一时的头脑发热,花了两个晚上基于AxWebBrowser写了一个浏览器MyIE。现在用这个浏览器发的帖子,有点小市民的成就感,嘿嘿。源代码可以在本人的资源里下载到(http://download.csdn.net/source/337096),这里简单总结如下:1、VS2005自带的WebBrowser功能较少(网上资源也不多),AxWebBrowser控件暴露的事件更多些。比如打开新窗口的控制,WebBrowser貌似没有简单的方法来实现。2、实现标签式界面,难点有:1)所有标签共用一个地址条、状态条、导航按钮,要切换上下文,要把界面状态封装起来,我封装到 BrowserData 类里,寄存在 TabPage.Tag 属性里;2)关闭一个Tab页时,默认会激活第一个Tab页,而不会回到上一个标签,我设计了一个标签栈(_pageStack)来管理;3、实现了状态条,赞叹VS2005的 ToolStrip 功能强大,使用起来太方便了!感谢为我们铺路的工作者们!4、实现了收藏夹功能,跟IE实时同步,其实也很简单,就是打开 Favorite 目录,遍历目录和子目录,解析链接文件;另一个难阅读全文>

发表于 @ 2008年01月16日 22:20:00|评论(loading...)|编辑|收藏

2008年01月13日

原创 关于开闭原则的理解收藏

开闭原则:设计一个模块的时候,应当使这个模块可以在不修改原有代码的前提下被扩展。这个原则是保证系统具有扩展性的基本原则。通常变更有三种方式,一种是横向变更,例如售票系统,原来只能售火车票,现在要可以售机票;第二种是纵向变更,例如在某个流程里插入新活动或跳过活动;第三种是局部修改,就是原有功能的业务规则发生了变化。对于前两种变更比较容易处理,只要在设计时注意抽象,通过接口、继承、override或event即可扩充。对于第三种变更,估计要修改代码了。虽然可以这样分类,但实际上以上三种变更通常是同时发生的、相互交织的。以库存管理业务单据为例,有出库单、入库单、移库单等。通常单据结构都很相似,包含头表,行表,但个别字段有差异。新增一个单据,先在头表插入一条记录,然后在行表插入若干记录。更新单据时,先更新头表记录,然后清空词单据在行表里的原有记录,再插入新的行表记录,删除单据的过程也非常相似。此外,在单据增删改时要记录日志,在单据提交时,还要修改库存。所有这些操作十分相似,可以抽象出来。现在要设计一个单据处理通用业务类,负责单据暂存、修改、提交、删除几个基本业务阅读全文>

发表于 @ 2008年01月13日 11:54:00|评论(loading...)|编辑|收藏

2008年01月11日

原创 本人原创的模拟星空的MFC源代码_Sky.RAR,下载地址:http://download.csdn.net/source/332601收藏

http://download.csdn.net/source/332601 代码写得还是比较经典的,2002年用 C# 写了第一版,3年后用 C++ 重写。 阅读全文>

发表于 @ 2008年01月11日 23:43:00|评论(loading...)|编辑|收藏

2008年01月10日

原创 用AppFramework重写Discuz数据访问层源代码收藏

下载地址:http://download.csdn.net/source/331414 修改的地方主要有:1)在解决方案里增加了“Discuz.Data.AppFramework”项目2)AppFramework插件生成的代码放在“Discuz.Data.AppFramework”项目的GenerateCode目录下3)对论坛管理的数据访问类源代码ForumManage.cs做了重写4)修改 Discuz.Web目录下的DNT.config,设置数据库访类型为 AppFramework安装方法(请参考官方文档,下面仅简述):1)用VS2005打开解决方案编译2)在IIS上创建站点,配置好站点主机头,例如为discuz.AppFramework.com(记得把这个站点主机头配置到hosts文件里,这样就可以用域名访问),把主目录指向Discuz.Web,设置站点的ASP.NET使用.NetFramework2.0;3)在SqlServer里创建数据库,在DNT.config设置好数据库连接;4)打开浏览器,键阅读全文>

发表于 @ 2008年01月10日 21:54:00|评论(loading...)|编辑|收藏

Csdn Blog version 3.1a
Copyright © AppFramework