信息检索导论第八章–-信息检索的评价

#信息检索导论第八章–信息检索的评价

一、信息检索系统的评价

采用常规方式来度量信息检索系统的效果,需要一个测试集,测试集由以下3个部分构成:

  1. 一个文档集。
  2. 一组用于测试的信息需求集合,信息需求可以表示成查询。
  3. 一组相关性判定结果,对每个查询-文档对而言,通常会赋予一个二值判断结果—相关/不相关。

Read More

Linux命令---netstat tcpdump ipcs ipcrm

Linux命令—netstat tcpdump ipcs ipcrm

Linux netstat命令详解

netstat 显示网络相关的信息,如网络连接,路由表(-r),接口状态
-a (all) 显示全部信息
-n 拒绝别名,能用数字的都用数字

Linux tcpdump命令详解

对网络上的数据包进行截获的包分析工具。

Linux ipcs命令与ipcrm命令的用法详解

ipcs提供进程间通信方式的信息,包括共享内存,信号量,消息队列。
-a 输出所有
-m 共享内存
-q 消息队列
-s 信号

ipcrm移除一个消息对象、或者共享内存、或者信号量
ipcrm用法 (小写是id标识)
ipcrm -M shmkey 移除用shmkey创建的共享内存段
ipcrm -m shmid 移除用shmid标识的共享内存段
ipcrm -Q msgkey 移除用msqkey创建的消息队列
ipcrm -q msqid 移除用msqid标识的消息队列
ipcrm -S semkey 移除用semkey创建的信号
ipcrm -s semid 移除用semid标识的信号

Linux下输入输出重定向

Linux下输入输出重定向

重定向

1、重定向符号

符号 功能
> 输出重定向到一个文件或设备 覆盖原来的文件
>! 输出重定向到一个文件或设备 强制覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
< 输入重定向到一个程序

2、标准错误重定向符号

符号 功能
2> 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 b-shell
2>> 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2>&1 将一个标准错误输出重定向到标准输出 注释:1 可能就是代表 标准输出
>& 将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 c-shell
` & ` 将一个标准错误 管道 输送 到另一个命令作为输入

3、命令重导向示例

在 bash 命令执行的过程中,主要有三种输出入的状况,分别是:

  1. 标准输入;代码为 0 ;或称为 stdin ;使用的方式为 <
  2. 标准输出:代码为 1 ;或称为 stdout;使用的方式为 1>
  3. 错误输出:代码为 2 ;或称为 stderr;使用的方式为 2>

[test @test test]# ls -al > list.txt
将显示的结果输出到 list.txt 文件中,若该文件以存在则予以取代!

[test @test test]# ls -al >> list.txt
将显示的结果累加到 list.txt 文件中,该文件为累加的,旧数据保留!

[test @test test]# ls -al 1> list.txt 2> list.err
将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err

[test @test test]# ls -al 1> list.txt 2> &1
将显示的数据,不论正确或错误均输出到 list.txt 当中!错误与正确文件输出到同一个文件中,则必须以上面的方法来写!不能写成其它格式!

[test @test test]# ls -al 1> list.txt 2> /dev/null
将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null ,可以说成是黑洞装置。为空,即不保存。

4、为何要使用命令输出重导向

  • 当屏幕输出的信息很重要,而且我们需要将他存下来的时候;
  • 背景执行中的程序,不希望他干扰屏幕正常的输出结果时;
  • 一些系统的例行命令(例如写在 /etc/crontab 中的文件)的执行结果,希望他可以存下来时;
  • 一些执行命令,我们已经知道他可能的错误讯息,所以想以『 2> /dev/null 』将他丢掉时;
  • 错误讯息与正确讯息需要分别输出时。

参考:http://blog.csdn.net/hongkangwl/article/details/21000703

String源码剖析

String源码分析


从一段代码说起:

1
2
3
4
5
public void stringTest(){
String a = "a"+"b"+1;
String b = "ab1";
System.out.println(a == b);
}

大家猜一猜结果如何?如果你的结论是true。好吧,再来一段代码:

1
2
3
4
5
public void stringTest(){
String a = new String("ab1");
String b = "ab1";
System.out.println(a == b);
}

结果如何呢?正确答案是false。

让我们看看经过编译器编译后的代码如何

1
2
3
4
5
6
//第一段代码
public void stringTest() {
String a = "ab1";
String b = "ab1";
System.out.println(a == b);
}
1
2
3
4
5
6
//第二段代码
public void stringTest() {
String a1 = new String("ab1");
String b = "ab1";
System.out.println(a1 == b);
}

也就是说第一段代码经过了编译期优化,原因是编译器发现”a”+”b”+1和”ab1”的效果是一样的,都是不可变量组成。但是为什么他们的内存地址会相同呢?如果你对此还有兴趣,那就一起看看String类的一些重要源码吧。

Read More

Lucene学习记录—原理篇

#Lucene学习记录—原理篇

一、全文检索的基本原理

1、什么是全文检索

Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
因此,在学习lucene前我们需要先了解全文检索的基本原理。

数据的类型:结构化数据非结构化数据半结构化数据

  • 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
  • 非结构化数据(全文数据):指不定长或无固定格式的数据,如邮件,word 文档等。
  • 半结构化数据:如 XML,HTML 等,当根据需要可按结构化 数据来处理,也可抽取出纯文本按非结构化数据来处理。

Read More

Vector源码剖析

Vector简介

Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。

Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。

Vector没有实现Serializable接口,因此它不支持序列化,实现了Cloneable接口,能被克隆,实现了RandomAccess接口,支持快速随机访问。

Read More

LinkedHashMap源码剖析

LinkedHashMap简介

LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同。

LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析)。

LinkedHashMap同样是非线程安全的,只在单线程环境下使用。

Read More