相生昌专栏

忠心愿为中国的软件事业贡献自己一份微薄的力量! 年轻而追求理想,智慧而永不满足,执着而勇于进取,触角敏锐但不随波逐流!

2006年04月03日

置顶 原创 搜索引擎经验总结收藏

这里是一点我在学习和开发搜索引擎过程中的一点学习和经验总结,文中讲述了蜘蛛、切词、索引、查询器等名模块的一些概述和细节,希望能给搜索引擎中的初学点的一点帮助,对于那些高手也能够带来一点点启发的帮助!这是我在2004年学习和开发搜索引擎相关东西时的一点总结,可能比较肤浅,最近还是一直在搞这方面的研究,相对于这篇文章又有了一些新的总结,等以后有时间再写一篇和大家分享!阅读全文>

发表于 @ 2006年04月03日 14:39:00|评论(loading...)|收藏

2008年08月28日

原创 VC用ADO访问数据库全攻略收藏

这是我很多年以前写的一篇技术总结性文章,由于vchelp网站被封,故将此文章转移至此,愿它能为光大VC编程者一个抛砖引玉的作用。 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口,适合于SQL,Access,VF,Excel等数据库。使用起来也是方便易用。下面将以VC6.0为例进行详细的讲解。阅读全文>

发表于 @ 2008年08月28日 08:47:00|评论(loading...)|收藏

2008年05月24日

转载 词串相似度计算公式收藏

词串相似度计算公式: Sim(S1,S2)=α×Match(S1,S2)Num(S1)+Match(S1,S2)Num(S2)/2+β×γ×(∑Match(S1,i)∑m1i+∑Match(S2,j)∑n1j/2(9) S1,S2分别表示文本标引词串和知识库中的词串; α:两词串中含有相同元素的个数对语义相似度的影响权重,在此系统中设为0.6; β:相同元素在词串中的位置关系影响权重,在此系统中设为0.4; γ:位置系数,γ=Min(Num(S1)/Num(S2),Num(S2)/Num(S1)); Match(S1,S2):表示两个词串中含有相同元素的个数; Num(S1)、Num(S2):分别表示词串S1与S2所含元素总数; ∑Match(S1,i)∑m1i、∑Match(S2,j)∑n1j分别表示匹配元素在S1、S2中所处位置的权重之和。 阅读全文>

发表于 @ 2008年05月24日 10:43:00|评论(loading...)|收藏

2008年02月20日

原创 搜索引擎中的URL散列收藏

搜索引擎中的URL散列问题,采用先MD5再哈希的方法大大减少了哈希冲突。阅读全文>

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

2006年07月06日

原创 一算法求解与讨论收藏

已知给定一个排列无序的浮点型数组,数组大小是10000,如何找出其中最大的10个数,并给出时间复杂度。(一道面试题)阅读全文>

发表于 @ 2006年07月06日 15:48:00|评论(loading...)|收藏

2006年06月30日

转载 数学之美 系列九 -- 如何确定网页和查询的相关性收藏

Google一研究员发表在Google黑板报上的文章,详细讲解了“如何确定网页和查询的相关性”问题,文章通俗易懂,真是一篇好文章,摘下来和大家共享。阅读全文>

发表于 @ 2006年06月30日 14:12:00|评论(loading...)|收藏

2006年06月16日

原创 如何编写优质、高效、益于维护的C++代码收藏

如何编写优质、高效、益于维护的代码是每个程序开发人员都关心的一个话题,尽管大家都知道一些,但是在实际写代码时还是会犯一些错误,下面就结合我的一些经验写一点总结,供大家参考: 1、.....2、.......3、......8、....... 根据自己的一点经验了也就粗略地总结了这么多,本人觉得只要能做到以上几点,你的代码就算不是很完善,但至少看上去也优美,让别人看了你的代码也觉得好维护,很舒服的感觉。阅读全文>

发表于 @ 2006年06月16日 14:00:00|评论(loading...)|收藏

2006年06月10日

原创 关于程序BUG和问题收藏

最近看了一篇关于Google的首席工程师所写的二分查找算法中的Bug问题,也看了很多人回复,大多数人的观点是“每个人的程序都有bug的!",我也比较赞同这种观点,其实可以说那不是一种Bug,因为从软件的角度来说,每个软件都是有自己的运行条件和适合范围,如果超出运行环境其实就不是在Bug范围之内了。再牛的人都不可能写出在任何条件、任何环境下无bug运行的程序。所以没有很完美的程序,只要能在设定的运行条件和环境下稳定运行就是很不错的程序。阅读全文>

发表于 @ 2006年06月10日 19:52:00|评论(loading...)|收藏

2006年06月02日

原创 多线程服务程序编程心得收藏

后台服务器程序一般都要求很高的稳定性和健壮性,编写高质量的服务器程序需要注意如下几个方面: 1、对于后台的多个并行工作线程最好不要用另一个线程来统一管理。大多数人认为专门用一个调度线程来调度各线程是一个比较好的方案。但是在实际应用中这种方法并不一定好,因为如果你的任务处理特别频繁而且需要将各线程不停地在挂起与激活之间切换,就会出现一些意想不到的问题,各线程的调度状态和实际的状态不符合。所以最好是由各线程自己负责自己的调度。如果没有任务了就Sleep一下,时间可自己设定也可以按实际情况动态确定。如果任务缓冲区中有任务就取一个任务来执行。这种方法即简单又不会出现问题。 2、如果各工作线程需要一定的内存缓冲,最好是在线程初始化时就一次性创建自己的缓冲区,每次都是反复利用,不用每来一个任务就去申请一块内存,执行完后再删除,这样运行很长一段时间后会留下很多内存碎片。 3、如果多个线程之间需要互斥地访问多个共享对象,每个线程对共享对象的申请最好是一次性申请到(一次性加锁),否则会出现一些死锁现象。 阅读全文>

发表于 @ 2006年06月02日 10:11:00|评论(loading...)|收藏

2006年05月02日

原创 全文检索系统中海量数据的增量索引收藏

全文检索系统中如果每天处理至少10多万条的文本数据,那么如何对这些新增加的数据进行增量索引并进行有效地管理是整个系统的关键。通过采用联合表或者并行表的方式来管理这些数据,但是每一个并行表的粒度应该设多大,设多少个子表或者并并行表都需要系统的应用规模来定。如果并行表的粒度过大,即使是在索引过程中采用的是拉链索引的方式来组织索引数据,也是需要大量的索引数据的遍历,若不是拉链更需要索引数据的大量移动来进行索引合并,进而严重影响系统性能。但是如果数据粒度过小,这样子表会很多,这样在检索时会影响到检索的性能,因为需要查询很多个子表才能返回结果。而如果对子表定期地合并,这样在合并的次数也会大大增加,合并完后还需要作一次整体索引。所以设计子表粒度和子表的个数时需要慎重考虑,根据自己系统的实际情况而定。阅读全文>

发表于 @ 2006年05月02日 23:30:00|评论(loading...)|收藏

2006年04月30日

原创 关于切词程序的一点启发收藏

文本切词是中文信息处理的基础,除了英文以外大多和语言如中文、韩文、日文都是需要切词的。由于不同的编码形式给我们的切词带来了不便,ANS码是一个字符一个字符,而GB2312等都是两个字节表示一个字符。一般一个字符是否是多字节编码可以通过最高位来判断,如果最高位是0则是ANS码,否则多字节编码。通常人们进行切词都是将待切分文本转换成Unicode再进行切分,在实际中我经过实验这种方法其实不是很好,效率比较低。在实际中可不必将词表中的词条的切分文本转换成unicode,因为在转换过程中浪费大量的CPU时间,在词表上建立索引时也不必根据Unicode去建,直接根据字符的内码建立索引。在切词过程中不过字符移动可根据自己的实际情况两字节移动或者单字节移动。阅读全文>

发表于 @ 2006年04月30日 15:13:00|评论(loading...)|收藏

2006年04月27日

原创 搜索引擎开发日志收藏

这两天一直在构思关于图片搜索的的实现,在目前蜘蛛的基础上增加图片抓取和Flash抓取的功能,这样就可以实现图片搜索和Flash搜索功能。对于图片的抓取已经实现,而对Flash的实现相对来说是比较麻烦一些,不过也不是太难。对这些对象我都是以二进制对象的形式存储到数据库中去了,目前采用的是中国知网的KBase系统,通过简单的功能性测试已经通过了,由于图片数据都可能比网面数据大,因则我在蜘蛛里抓取时采用了断点续抓功能,如果网络超时则可从断点处重试。下一步的目标有两个:阅读全文>

发表于 @ 2006年04月27日 16:52:00|评论(loading...)|收藏

2006年04月24日

原创 网络蚂蚁与FlashGet的文件多线程下载原理收藏

最近自己写了一个类似网络蚂蚁和FlashGet一样的程序,主要是为了自己能学点东西,不过还好,已经有点样子了,已经实现了类似它们的界面风格和功能,只是里面的下载任务、错误任务、已完成任务、中止任务的调度问题还没有详细去做,通过IE右键菜单的传参数还没有解决,IE右键菜单已经现,已经能够取到鼠标位置的URL,只是不知如何将取得的一个URL传给下载程序,还有待解决。现在将多线程下载同一个文件的原理讲述一下:阅读全文>

发表于 @ 2006年04月24日 15:15:00|评论(loading...)|收藏

2006年04月13日

原创 界面与后台工作线程分离的实现方案收藏

在我们实际应用中,常常会遇到界面与后台工作线程分离的情况。特别是在写多线程的服务程序和批处理程序时经常用到的,随着技术的发展,人们已经不满足于命令行的服务程序,需要具有更好的可视化的、图形化的界面服务程序,能够实时监控各个后台工作线程的状态。经过一些实践我在这里总结一些将后工作线程与显示界面分离的较好的实现方案,供大家参考,希望能够给大家一些启示: 阅读全文>

发表于 @ 2006年04月13日 12:21:00|评论(loading...)|收藏

2006年04月11日

原创 关于二维绘图时拾取某一直线的代码收藏

这里是我在以前的实践中编写一个函数,主要是拾取平面上的一条直线,通过判断点是否是直线附近来判断,通过点与直线的距离在给定的半径之内则认为是在直线之上。这需要对直线和拾取时点进行旋转,旋转到直线与X轴平行,其主要的代码如下:阅读全文>

发表于 @ 2006年04月11日 22:13:00|评论(loading...)|收藏

Csdn Blog version 3.1a
Copyright © 程序人生