摘要:
引言 作为一个.NET程序员,我们知道托管代码的内存管理是自动的。.NET可以保证我们的托管程序在结束时全部释放,这为我们编程人员省去了不少麻烦,我们可以连想都不想怎么去管理内存,反正.NET自己会保证一切。 好吧,有道理,有一定的道理。 问题是,当我们用到非托管资源时.NET就不能自动管理了。这是因为非托管代码不受CLR(Common LanguageRuntime)控制,超出CLR的管理范围。... 阅读全文
摘要:
那么究竟能不能在 SQL Server 的 bit 列上建立索引?如果能的话,SQL Server 2005 和 SQL Server 2000 中 bit 索引有何不同?是否需要用 tinyint 索引来代替 bit索引以提高性能?带着这些疑问,我做了下面的实验。 阅读全文
摘要:
在开发过程中,经常会遇到需要将有些信息写到注册表里,或者从注册表中读取信息。那该如何用.Net读写注册表呢? 阅读全文
摘要:
试用版的软件总是会采取这样或那样的方式来限制用户的软件试用期。
这些方法有:限制时间、限制磁盘序列号,限制CPU序号好,限制使用次数等
下面介绍如何通过.Net获取磁盘序列号和CPU的序列号。 阅读全文
摘要:
托管函数是一个对类里面的某个函数的一个引用。它自己并没有具体的函数定义,只是指向某个函数实现。
由于托管函数是对类里面某个函数的一个引用。所以我们不必知道这个函数的具体名字是什么,而只需要调用托管函数,让托管函数去调用相应的函数就可以了。 阅读全文
摘要:
应用程序域
应用程序域(通常简称为AppDomain)可以视为一种轻量级进程。一个Windows进程内可以包含多个AppDomain。 AppDomain这个概念的提出是为了实现在一个物理服务器中承载多个应用程序,并且这些应用能够相互独立。ASP.NET中利用AppDomain在同一个进程内承载了多组Web应用程序就是一个例子。实际上微软曾进行过在单一进程内承载多达1000个简单Web应用程序的压力测试。
阅读全文
摘要:
在上一篇文章我们已经介绍到通过在配置文件中指定自定义的ChannelSinkProvider,我们可以在Pipeline中加入自己的ChannelSink,此时我们就可以加入自己的信息处理模块,但是这里我们所能操作的对象是已经经过格式化的消息(即数据流),我们看不到原始的消息对象,这也势必影响了我们所能实现的扩展功能。而在上文的图1中,我们看到除了ChannelSink可以扩展之外,我们还可以加入自定义的MessageSink,而它是位于格式器之前的,也就是说在 MessageSink中我们可以直接操作尚未格式化的消息对象。此时,我们就获得一个功能更强大的扩展点。直接操作消息对象,这意味着什么呢? 阅读全文
摘要:
.NET Remoting是.NET平台上允许存在于不同应用程序域中的对象相互知晓对方并进行通讯的基础设施。调用对象被称为客户端,而被调用对象则被称为服务器或者服务器对象。简而言之,它就是.NET平台上实现分布式对象系统的框架。
传统的方法调用是通过栈实现,调用方法前将this指针以及方法参数压入线程栈中,线程执行方法时将栈中的参数取出作为本地变量,经过一番计算后,将方法的返回结果压入栈中。这样我们就完成了一次方法调用。 阅读全文
摘要:
在Lucene中score简单说是由 tf * idf * boost * lengthNorm计算得出的。
tf:是查询的词在文档中出现的次数的平方根
idf:表示反转文档频率,观察了一下所有的文档都一样,所以那就没什么用处,不会起什么决定作用。
boost:激励因子,可以通过setBoost方法设置,需要说明的通过field和doc都可以设置,所设置的值会同时起作用
lengthNorm:是由搜索的field的长度决定了,越长文档的分值越低。 阅读全文
摘要:
Lucene是什么?
Lucene是Apache组织的一个用JAVA实现全文搜索引擎的开源项目。后来有人将Lucene移植到。Net语言。
Lucene是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能。
Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能。
不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,一个Library。你也可以把它理解为一个将索引、搜索功能封装的很好的一套简单易用的API。利用这套API你可以做很多有关搜索的事情,而且很方便。 阅读全文