自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

机器学习和我关注的技术

自强不息,厚德载物

  • 博客(35)
  • 收藏
  • 关注

原创 多模式匹配ACBM

ACBM 算法又称为CW算法,其思想是结合和AC算法和BM技术,AC算法的思想已经在前一篇讲过了,这里想谈谈BM技术的特点。回忆下,单模式匹配算法,它可以分成两类: 1. 模式串从左向右匹配(e.g. KMP) 2. 模式串从右向左匹配(e.g. Booyer Moore) BM算法的特点是: 最好情况下算法时间复杂度是(O(m/n)), m是字符串长度,n是pattern长度。 在一般的应用中BM算法被认为是最快的,可以称为亚线性的算法,和KMP相似的地方是,一般pattern和te

2010-07-10 22:34:00 7358 1

原创 多模式匹配算法

1. 问题原型:          给定一篇网页,其中有很多敏感词汇或者无效的词,需要找到一种算法,找到这些敏感词。 2. 如何求解呢?    2.1 第一个简单的思路是:           step1: for i = 0 to in #text              step2:       foreach pattern p            step3:           比较 text[i+j] and p[0+j]  where j = 0 to #p    

2010-06-27 22:18:00 27496 2

原创 分布式文件系统 and Google File System

1. 目标: 设计一个分布式文件系统,它是: 1.  用于大型的,分布式,和海量数据进行访问。      它支持的数据必须是P级甚至是更高级别的。你可以像在本机器一样操纵文件,它提供必要的文件系统基本I/O功能,如创建,删除;但是设计的假设,I/O操作,文件块大小必须经过仔细斟酌。 2. 它运行在廉价的普通硬件上。硬件随时都也可能损害,磁盘每分钟都有可能损坏,网络随时都有可能受阻,宿主操作

2010-05-06 23:24:00 2582

原创 距离度量分类体系

本篇文章并不打算描述所有这些类别,要具体阐述它们的细节和意义实在有点困难。这个大纲的目的,第一:提供一个貌似详细的距离度量的分类体系,列出相关的关键字。 第二:就像一个词典一样供参考和查阅,如果需要了解具体的细节,可以参考wiki或者具体文献。      大纲: 1. 相似性和不相似性的定义 2. 预备概念 3. 距离度量     3.1  Numerical Data           3.1.1 欧拉距离(Euclidean Distance)    

2009-12-21 14:23:00 3904

原创 距离和相似性度量

相似性度量或者距离函数对于像聚类,邻域搜索这样的算法是非常重要的。前面也提到,网页去重复也是相似性应用的一个例子。然而,如何定义个合适的相似或者距离函数,完全依赖于手头的任务是什么。一般而言,定义一个距离函数d(x,y),需要满足以下几个准则: 1.  d(x,x) = 0 ;//到自己的距离为0 2.  d(x,y)>=0 // 距离要非负 3.  对称性,d(x,y) = d(

2009-12-20 23:06:00 21605 1

原创 网页去重-镜像站点的特殊处理

基于关键词的复制网页算法 想前面的提到的算法都是基于这个文档的,对于大型的搜索引擎来说,在性能上有些差距,所以有些优化,针对是网页的关键词,或者网页的meta描述部分。所以,必须有以下的技术做支撑: 1、网页中出现的关键词(中文分词技术)以及每个关键词的权重(关键词密度); 2、提取meta descrīption或者每个网页的若干(比如:512)个字节的有效文字。 在以下算

2009-12-17 23:15:00 2498

原创 网页去重-算法篇

前一篇提到了5个解决网页去重的算法,这里我想讨论下这些算法 1. I-Match 2. Shingliing 3. SimHashing( locality sensitive hash) 4. Random Projection 5. SpotSig 6. combined I-Match算法 I-Match算法有一个基本的假设说:不经常出现的词和经常出现的词不会影响文档的

2009-12-15 22:15:00 14487 2

原创 网页去重-比较文本的相似度-Near duplication detection

near duplicate detection 的任务是检测重复的内容,这项工作在搜索引擎,版权保护,信息展示等方面都有很好的应用。在搜索引擎上,主要是去掉重复的页面,图片,文件,文档等等。下面就指讨论网页的deduplication。 问题是什么?    据统计,网页上的大部分相同的页面占29%,而主体内容完全相同的占22%,这些重复网页有的是没有一点改动的拷贝,有的在内容上稍作修

2009-12-09 20:56:00 10687

原创 VI 使用手册

VI 使用手册进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filenam

2007-05-12 17:26:00 1517

原创 开学了,毕业了

9月4号,开学了,暑假的心情一直放不下来!但是,没有暑假学习的好心情。学校是一个恶心的地方,规矩特别多,老师特别差劲,一上课就决定自己又完了。这个学期该做点事了。1。想家,交新朋友,联络旧朋友。2。准备好保研,尽管不喜欢现在的学校。3。认认真真地学习一下English,这个东西害我不浅。4。找一份短工,先爬滚一段日子。5。研究一下BOOST,尽管是应用价值很低地东西。6

2006-09-07 21:22:00 1284

原创 第15章:发现问题

在c被驯化到ANSI C之前,有一个小的玩笑是:我的代码编译过了,因此它也应该可以运行了。1。JUnit是一套单元测试框架。可以从www.junit.org获取。需要导入junit.framework.* 。最简单的测试     是把所有测试放到TextCase的某个子类中。每个测试必须是public的,不接受参数,返回void     并且以一个"test"开头的方法名。JUnit的反射机制

2006-09-03 22:16:00 1131

原创 第14章:创建窗口与applet程序

设计中要遵循的一条基本原则是:让简单的事情变得容易,让困难的事情变得可行!1。java的GUI,有老版本的AWT,和新的Swing,eclipse也有一套全新的GUI库SWT。      AWT很老了,不要用,除非特殊情况。2。Swing比其他GUI编程模型好的多,JavaBean是这个库的框架。复杂的GUI,可以使用     GUI构造工具快速开发。     它的特定是:1)动态绑定事件。2

2006-09-03 22:15:00 2454 1

原创 第13章:并发

对象技术提供了一种把程序划分为若干独立部分的方式。通常,还需要把程序转换为彼此分离的,能独立允许的子任务。1。写一个线程最简单的做法是从java.lang.Thread继承,这个类已经具有创建和运行线程    所必要的构架。Thread最重要的方法是run(),覆盖这个方法实现所要的功能。    start方法用来为线程执行特殊的初始化。2。yield()让步方法,给线程调度机制一个暗示:你的

2006-09-03 22:13:00 1577

原创 第12章Java IO系统

对程序语言的设计者来说,创建一个好的输入/输出系统是一项艰难的任务。1。File类实际是filepath,它即能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。       用list(FilenameFilter)方法,获得此File对象包含的全部列表。FilenameFilter接口,重载accept方法      提供文件名过滤功能。2。File类不仅仅只代表存在的文件或者目

2006-09-03 22:11:00 2493

原创 第11章:对象的集合.

如果一个程序只包含固定数量的且其生命都是已知的对象,那么这是一个非常简单的程序1。无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个数组对象用以      保存指向其它对象的引用。可以作为数组初始化语法隐式创建,或者用new 表达式显式的创建。只能用"[ ]"访问     数组对象唯一的方式。2。可以任意返回一个数组,不用担心回收,只要你需要,它就一直存

2006-09-03 22:10:00 1140

原创 第10章:类型检查

运行时类型识别(run-time type identification ,RTTI)的概念处看非常简单:当只有一个指向对象基类的引用时RTTI机制可以让你找到这个对象的确切概念。1。Class对象是RTTI的核心,Class的类的类,每个类都有一个class对象。每当编写并且编译一个新类,就会      产生一个Class对象(被保存在同名的.class文件当中)2。Class.forN

2006-09-01 23:06:00 1175

原创 第9章:异常处理

java的基本理念是:结构不佳的代码不能运行。1。异常情形是指发生阻止当前方法或者作用域继续执行的问题。但抛出异常后,java先使用new再堆上     创建一个异常对象的引用,然后当前执行路径被终止,并且从当前环境中弹出堆异常对象的引用。此时,    异常机制接管程序,并在异常处理程序中继续执行。2。java所有的标准异常都有两个构造器,一个缺省,一个接受字符串。异常根类为Throwab

2006-09-01 23:04:00 1259

原创 第8章:接口与内部类

1。接口和内部类提供了一种用来组织和控制系统中的对象更加精细的方法。    interface 关键字使abstract的概念更向前迈进了一步。接口只提供定义,而没有任何具体的实现。2。java类不提供类的多重继承,但是可以实现多个接口,这是java的多重机制。     接口可以使用多重继承。语法型如:interface Ia extends I2,I3{}3。避免组合接口的名字冲突。

2006-09-01 22:57:00 1839

原创 第7章:多态

1。面向对象设计中,多态是继数据抽象和继承之后的第三种基本特征。      在java中的方法,默认是晚绑定的(除了static ,private是final-内联的),这于c++要指定virtual关键字不同。2。向上转型使得派生类可以当基类来用。3。派生类可以重载(覆盖)基类的方法,但是私有方法对派生类是屏蔽的,派生类中可以"重载"基类私有方法,但不     能称为覆盖。但是建议不要写

2006-09-01 22:56:00 1217

原创 第6章:复用类

1。组合和继承用来实现复用。   组合语法:   class Water{     private String s;     Water(){};   }   成员类(应用)自动初始化为null,如果初始化这些引用可以放在下列地方1)在定义对象的地方。    2)类的构造器中。3)使用对象之前(惰性初始化)   继承语法:   class A extends B   {   };   java不

2006-09-01 22:54:00 1142

原创 第5章:隐藏具体实现

1。java提供访问权限修饰符。访问权限控制等级从大到小是:public,protected,包访问权限(没有关键字),private.2。java的源代码文件,称为编译单元。编译单元里最多有一个public类。当编译一个java文件时,   在文件中的每一个类都会有一个输出.class的文件。  3。关键字package提供解决名字污染问题的方案。环境变量CLASSPATH为编译器提供查询路

2006-09-01 22:52:00 1087

原创 第4章:初始化与清除

1。java也采用构造函数初始化类,但没有析构函数。同C++一样,构造函数名于类名相同。   java中可以在构造器中调用构造器,调用方法:   class A   {      A(int a){};      A(int a,int b){         this(a);         ....      }   } 2。java使用垃圾回收机制自动回收内存。垃圾回收不等于析构,可以重载f

2006-09-01 22:49:00 1034

原创 第3章:控制程序流程

1。java的控制类似C++,对象赋值实际上是赋值应用,想要拷贝对象重载clone函数。2。java位运算增加了无符号右移操作符 >>>,它使用零扩展。3。字符串操作符号+。4。java没有sizeof操作符。5。break和continue ,可以和标签一起使用,增强控制。   label1:     outer-iteration{        inner-iteration

2006-09-01 22:48:00 952

原创 第2章:一切皆对象

java 是一种更纯粹的面向对象语言。1。java中一切都视为对象。用引用(句柄)来操作读写。比较对象不能用==操作符,不如String a="abc";String  b="abc"  a==b 返回false .应该用a.isEqualTo(b);2。java 有9中基本类型,boolean ,char,byte,short,int,long,float,double,void.jav

2006-09-01 22:42:00 966

原创 第1章:对象导论

第一章  对象导论1。所有的编程语言都提供过程抽象。Alan Key 面向对象基本特点     1) 万物皆对象。     2)程序是对象的集合,他们通过发送消息来告知彼此要做的事。     3)每个对象都是由其他对象构成的存储体。     4)每个对象都是一个类型。     5)某一特定类型的所有对象都可以接受同样的消息。2。java提供了3中访问权限:public , private ,

2006-09-01 22:38:00 1150

原创 扩展VC6的编辑能力-宏

一直感觉vc6不好用,没有像vi,或者emacs命令式的文本编辑能力。写代码的时候,键盘-鼠标平凡的切换,太费力了。如果VC能有命令编辑能力该有多好啊!可惜某在网上找不到这方面的资料,唯一感到欣慰的是,VCIDE有addin 和宏的功能,对这些功能绑定快捷键也是比较方便的。下面是我在codeguru和codeproject上挑选的一些宏。说明:安装宏和绑定快捷键步骤:1. 将代码保存为.d

2006-08-29 15:10:00 1365

转载 编写自己的IDE

IDE是集成开发环境(Integrated Development Environment)的简称。印象里有很多出色的IDE,比如JBuilder和Kylix,比如Visual Studio。不知大家是否留意过,大多数IDE本身只提供代码编辑、工程管理等人机交互功能,我们在IDE中编译代码、调试程序时,IDE需要调用命令行的编译器、调试器完成相应的操作。例如,使用Visual Studio编译C+

2006-08-18 23:49:00 1442

原创 控制台写程序

用过了N多的IDE工具,还是搞不懂IDE和编译连接程序协调工作的。 下面小做一下研究,在控制台写程序。使用例如,Visual Studio编译C++程序时,我们会在IDE下方的Output窗口中看到编译和连接的全过程,虽然我们看不到弹出的DOS窗口,但实际上是IDE先后启动了Microsoft C++编译器cl.exe和连接器link.exe这两个命令行程序,而cl.exe和link.exe的输出

2006-08-18 23:37:00 1232

原创 vc快捷键

大致介绍一下vc快捷键的功能设定概念,方便记忆CTRL+×× 定义为设置(enable),××定义为继续(go) SHIFT+××定一为反向继续  ,ALT+××定义为编辑功能 SHIFT + CTRL +**清除功能F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容F2 书签功能:            Ctrl+F2 --在某行设置一个书签(再按一次次是取消) 

2006-07-04 15:56:00 2203

原创 vc使用技巧

VC++ Studio使用技巧  1.检测程序中的括号是否匹配     把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号 2.查看一个宏(或变量、函数)的宏定义    把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of...),如果没有建立Browse f

2006-07-04 15:55:00 1450

原创 我近期的目标

感觉很久没有来csdn来了,昨天在sina blog上写了一篇心情,挺舒服的。前几天因为要忙可恶的课程设计,没有时间来更新blog,也没有时间来亲笔写,十分的惭愧。马上就暑假了,我也要去祖国的首都去看看,更是加大了我的愧疚感。事情总是有些事于愿违。希望自己能挺下来。前一段日子玩linux,玩makefile,没有太玩明白,只好先等等,让自己迷茫的心情恢复平静。现在我的计划是认真玩好一个

2006-07-03 13:57:00 2192

转载 pragma基础

pragma指令简介 在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助!一. message 参数。 message 它能够在编译信息输出窗  口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:  #pragma message("消息文本")  当编译器遇

2006-07-03 13:29:00 1061

原创 学习vc编译器2--nmake--a_little

1.NMAKE  Microsoft Program Maintenance Utility,外号NMAKE,顾名思义,是用来管理程序的工具。其实说白了,就是一个解释程序。它处理一种叫做makefile的文件(vc生成的以mak为后缀,其实就是文本文件),解释里面的语句并执行相应的指令。我们编写makefile文件,按照规定的语法描述文件之间的依赖关系,以及与该依赖关系相关联的一系列操作。然后在调

2006-05-02 20:19:00 2335 1

转载 学习vc编译器2--nmake(from msdn)

NMAKE参考Microsoft 程序维护实用工具 (NMAKE.EXE) 是一个 32 位,基于说明文件中包含的命令生成项目的工具。1. 运行NMAKENMAKE [option...] [macros...] [targets...] [@commandfile...] NMAKE 只生成指定的 targets,或者,如果未指定 targets,则生成生成文件中

2006-05-02 00:11:00 6707 2

原创 学习vc编译器1--bin目录

vc编译器bin目录的程序是vc底层。了解编译器的程序,是高级程序设计的基础下面只介绍主要1.CL.EXE     CL.EXE是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。       注意,所有编译器选项都区分大小写

2006-05-01 21:27:00 3264 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除