eaglet

本博专注于基于微软技术的搜索相关技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  .NET

摘要: .Net 下的程序调试相对C/C++要简单很多,少了那些令人头疼的指针越界的问题。不过当你的程序遇到如下问题时,依然非常棘手: 1. 进程异常终止。 2. 内存泄漏或者内存申请后程序始终没有释放。 3. 线程因未知原因挂起,比如死锁。 4. 程序死循环。 本文将阐述如果编写程序对后两者故障实时跟踪并报告。 阅读全文

posted @ 2009-03-12 13:00 eaglet 阅读(9901) 评论(3) 推荐(4) 编辑

摘要: 昨天我在一篇博文中提到用 GetThreadTimes 这个Win32 API 来获取线程实际运行时间。今天我又深入研究了一下,发现这个API 返回的时间并不准确。 阅读全文

posted @ 2009-03-11 15:57 eaglet 阅读(5159) 评论(15) 推荐(0) 编辑

摘要:早上看到老赵写的这个性能计数器,感觉很实用,不过老赵用了很多.C# 3.0 的新语法,还用了 VISTA 和 Server 2008 下特有的Win32 API,对于还在用C#2.0 或者还工作在 XP 或者 Server 2003 下的兄弟们,只能望代码心叹了。应老赵的要求,我修改了他的代码,增加了对低版本C# 和 低版本windows 操作系统的支持。 阅读全文

posted @ 2009-03-10 14:10 eaglet 阅读(12836) 评论(44) 推荐(5) 编辑

摘要:随着.Net技术的发展,.Net技术被逐渐应用到很多大型的应用软件项目中。这些项目的规模越来越大,很多项目中除了自己的代码外还引用了很多第三方的.net组件。同时很多项目又被应用到很多关键的部门,软件系统的稳定性越来越至关重要。由于.Net 框架提供了非常强大的异常处理机制,同时对一些非托管代码很难控制的系统问题比如指针越界,内存泄漏等提供了很好的解决方案。相比非托管代码构建的系统,.Net构建的系统更加稳定。不过这并不是说.Net构建的系统就完全无懈可击,很多由于代码的不严谨或者系统问题引发的故障将会导致.Net应用程序产生未捕获异常,从而导致应用程序异常终止。本文将对三种最常见的.Net应用的未捕获异常处理进行阐述。 阅读全文

posted @ 2009-02-17 09:53 eaglet 阅读(19489) 评论(27) 推荐(2) 编辑

摘要:事件委托使用时内存泄漏的问题 阅读全文

posted @ 2009-01-07 14:02 eaglet 阅读(1343) 评论(3) 推荐(0) 编辑

摘要:在WinForm实现一个类似资源浏览器的功能,需要实现将WinForm中列出的文件拖出到其他应用程序中或者从其他应用程序中将文件拖入到 Winform应用中。网上有一些文章介绍这种功能,但都比较零散,缺少一个完整的例子。为此我编写了一个较完整的实现文件拖入和拖出的例子,并撰写此文一步步讲解如果实现类似功能。 阅读全文

posted @ 2009-01-06 11:34 eaglet 阅读(10913) 评论(11) 推荐(4) 编辑

摘要:Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->using System; using System.Collections.Generic; using System.Text; namespace TestFactorial { ... 阅读全文

posted @ 2008-12-10 19:27 eaglet 阅读(712) 评论(0) 推荐(0) 编辑

摘要:很多应用中,开发者需要自己构建一个浏览器,并且对通过这个浏览器提交的请求进行截获,比如用户通过这个浏览器浏览了一个网页,并向网站提交(POST) 了一些信息,我们想在其提交到网站前对这些POST数据在浏览器侧进行截获,做一些跟踪日志,或者对这些数据先加密或转换后再发送到服务器。.Net 提供的WebBrowser 控件可以让开发者很轻松的构建一个类似IE的浏览器,但这个控件提供的事件较少,一些高级应用单纯用这个控件提供的方法和事件无法实现。这篇文章我想介绍一下如何让 WebBrowser 控件可以截获自己POST出去的数据。 阅读全文

posted @ 2008-11-19 07:45 eaglet 阅读(18966) 评论(14) 推荐(2) 编辑

摘要:32位Windows操作系统下单个进程的用户模式内存访问的限制是2G,如果在boot.ini中设置了/3G开关,则最大为3G,超过3G将无法访问。由于Hubble.net 项目是一个数据库系统,必须要考虑使用大内存缓存数据的问题,于是最近对这个问题进行了一些研究。其实这块的技术是现成的,32位操作系统下只有通过 AWE的方式来扩展内存。这块的文章也很多,但很少有.net 下如何使用的实例,我做了一个类似MemoryStream的封装,可以让.Net程序员轻松操作AWE内存,从而使其程序轻松突破2G内存的限制。 阅读全文

posted @ 2008-11-06 14:00 eaglet 阅读(10197) 评论(17) 推荐(2) 编辑

摘要:做分词组件时,有网友提出采用Hashtable 数据结构查找字符串效率较低,建议改为Dictionary,其理由是采用Hashtable 时Key值是object 会触发装箱和拆箱动作,一直对这种说法表示怀疑,因为我理解只有值类型和引用类型通过object 互转时才会发生装箱和查询,引用类型之间强制转换不应发生装箱和拆箱,而Dictionary 泛型实际上底层还是调用的Hashtable,所以效率怎么会比Hashtable 要高呢?今天决定对比较常用的4种数据结构做一个测试,以便以后做系统性能优化时做一个参考。 阅读全文

posted @ 2008-10-23 14:42 eaglet 阅读(12429) 评论(26) 推荐(2) 编辑

摘要: 前几天看到一篇关于.net动态编译的文章 .NET中的动态编译 ,很受启发。在此基础上我做了一些封装,为使调用更加简单,并增加了对动态代码调试的支持,相同代码只编译一次的支持,代码改动自动重新编译,代码引用文件的自动加载和手工加载等功能。 阅读全文

posted @ 2008-10-17 13:10 eaglet 阅读(13751) 评论(27) 推荐(3) 编辑

摘要:对于数据库的分页,目前比较传统的方法是采用分页存储过程,其实用 DataReader 也可以实现分页,不需要写存储过程,实现效率上也比几种比较流行的分页方法要略快。 阅读全文

posted @ 2008-10-09 10:02 eaglet 阅读(6130) 评论(23) 推荐(1) 编辑

摘要:盘古分词开发了多元分词算法,其与lucene.net 配合构建全文搜索,经测试准确度接近google和baidu的水平。现将一些实现方法和测试结果公布出来,供关心分词和搜索技术的朋友们参考。 阅读全文

posted @ 2008-10-02 16:34 eaglet 阅读(25096) 评论(35) 推荐(5) 编辑

摘要:.Net framework提供了TreeView 控件,但该控件不支持三态的形式。所谓三态就是带CheckBox的TreeView每个Node都有三种状态,即选中,未选中和部分选中(指该Node的字节点并非全部选中)。 阅读全文

posted @ 2008-09-26 11:46 eaglet 阅读(7000) 评论(11) 推荐(0) 编辑

摘要:.net 框架号称永远不会发生内存泄漏,原因是其引入了内存回收的机制。但实际应用中,往往我们分配了对象但没有释放指向该对象的引用,导致对象永远无法释放。最常见的情况就是给对象添加了事件处理函数,但当不再使用该对象时却没有将该函数从对象的事件handler中减掉。另外如果分配了非托管内存,而没有手工释放,GC同样无能为力。所以当.net应用发生内存泄漏后如何跟踪应用的内存使用情况,定位到程序设计中的缺陷显得非常重要。本文将介绍通过.NET Memory Profiler来跟踪.net应用的内存泄漏,为定位.net应用内存问题提供一个解决途径。 阅读全文

posted @ 2008-09-05 15:15 eaglet 阅读(32574) 评论(24) 推荐(12) 编辑

摘要:今天在博问中看到一个动物叫三声的设计模式讨论,觉得很有意思,抽空实现了一下,觉得有必要写下来,和大家一起探讨探讨。 阅读全文

posted @ 2008-08-15 09:41 eaglet 阅读(3377) 评论(15) 推荐(0) 编辑

摘要:最近我的博客中有两位网友在使用 KTDictSeg 1.3 + lucene.net 2.0 + HighLight.net 2.0 是出现问题,高度怀疑是HighLight.net 2.0 版本的Bug, 今天腾出时间把几个组件的源码全部下下来,调试了一把,终于找到了这个Bug,下面把Bug的具体原因和修改后的源码发上来,供大家参考。另外哪位网友 知道如何向 lucene apache 组织 申报Bug,麻烦告知一声,以便我将这个Bug提交给该组织,让它的后续版本可以改进这个错误。 阅读全文

posted @ 2008-07-09 09:22 eaglet 阅读(2522) 评论(11) 推荐(0) 编辑

摘要:HighLight.net 是Lucene.net 带的一个开源高亮显示的组件,这个组件 2.0 版本以上的源码在网上很难找到,而这个组件 感觉又存在一些bug,遇到问题想调试一下,又没有源码,实在让人抓狂。 今天用最土的方法,一个一个文件下载,总是把这个版本的源码给凑齐了,编译了一下,没有问题,发上来,方便大家调试, 大家如果发现这里面有什么bug,还望多多分享。 阅读全文

posted @ 2008-07-07 11:10 eaglet 阅读(2923) 评论(19) 推荐(0) 编辑

摘要:目前互联网上关于Lucene 及 Lucene.net 的文章很多,看了一些,感觉绝大部分还是偏向于应用,真正深入探讨其核心算法的文章不是太多,最近打算深入研究一下Lucene.net,把一些关键技术点的核心算法搞清楚。在开始做这个工作之前,先对目前互联网上可以利用的资源做个汇总,算是抛砖引玉吧,还望网友们多来补充,大家共同学习! 阅读全文

posted @ 2008-07-03 21:29 eaglet 阅读(4546) 评论(14) 推荐(0) 编辑

摘要: 今天对 .net 2.0 的 System.Runtime.Remoting.Channels.Ipc 做了一个相同的测试,测试结果是每秒传输速度为 33MB。 由于底层技术都是一样的,我估计其比我这个例子(180MB每秒)慢的主要原因应该是在序列化上。另外今天对我这个例子进行了一些补充,增加了对流方式的支持,并做了一个通过流方式传输文件的例子。 阅读全文

posted @ 2008-06-13 13:43 eaglet 阅读(2401) 评论(9) 推荐(0) 编辑