召回率与准确率

召回率(Recall Rate)(查全率):是检索出的相关文档数和文档库中所有的相关文档数的比率,衡量的是检索系统的查全率。 

精度(Precision)(查准率):是检索出的相关文档数与检索出的文档总数的比率,衡量的是检索系统的查准率。



对于一个检索系统来讲,召回率和精度不可能两全其美:召回率高时,精度低,精度高时,召回率低。

  

对于搜索引擎系统来讲,因为没有一个搜索引擎系统能够搜集到所有的 Web 网页,所以召回率很难计算。

目前的搜索引擎(广告)系统都非常关心精度,而网盟联盟广告系统更关心召回率,因为要出准确的广告。



影响一个搜索引擎系统的性能有很多因素[……]

继续阅读

B树、B+树与B*树简介

本文主要介绍各种B树,不对插入、删除做过多的深入了解。

1. 引子

动态查找树主要有:

二叉查找树(Binary Search Tree)
平衡二叉查找树(Balanced Binary Search Tree)
B-tree
B+-tree
B*-tree 
前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率
 
但是我们要面对这样一个实际问题,大规模数据存储中,实现索引查询是在这样一个实际背景下的,即树节点存储的元素数量是有限的(如果元素数[……]

继续阅读

查看memcached运行状态

 memcache的运行状态可以方便的用stats命令显示。

调用命令如下:
 
telnet ip port
 
例如,执行 telnet 127.0.0.1 11211 这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。

一个实际的执行结果如下:

$ telnet 127.0.0.1 11311
 
Trying  127.0.0.1 ...
 
Connected to xxx.yyy.ccc.com ( 127.0.0.1 ).
 
Escape character is[......]<p class="read-more"><a href="https://neoremind.com/2012/02/%e6%9f%a5%e7%9c%8bmemcached%e8%bf%90%e8%a1%8c%e7%8a%b6%e6%80%81/">继续阅读</a></p>

Python time时间用法

python的time使用方法详见链接。下面列举一些常用方法。

>>> import time

设置一个时间的格式,下面会用到

>>>ISOTIMEFORMAT=’%Y-%m-%d %X’

看一下当前的时间,和其他很多语言相似这是从epoch(1970 年 1 月 1 日 00:00:00)开始到当前的秒数。

>>> time.time()

1180759620.859

上面的看不懂,换个格式来看看

>>> time.localtime()

(2007, 6, 2, 12, 47, 7, 5, 153[……]

继续阅读

neoremind.net迁移成功!

最近由于“去他爹”(godaddy.com)的域名和空间到期了,而且国内绝大部分godaddy的IP都被GFW墙了,开始有了迁移主机到国内的想法,幸好域名没有被屏蔽,否则真就玩儿完了。
 
选择了一个小众主机——戈戈主机,这里不是打广告,访问速度还是非常理想的,网上的口碑也非常好,再者比godaddy动辄一年虚拟主机600多块实惠多了,就安家在戈戈吧。
 
下面记录了迁移的过程,对于wordpress应用在godaddy迁移国内主机或者就是单纯迁移wp应用都有一定借鉴意义。
 

1. 域名解析

以我在家[……]

继续阅读

Python执行系统命令的3种方法

如何在python中调用系统命令,python提供了很多的办法,根据不同的需求可以选择不同的方式,这里以代码示例为主,具体的可以去pydoc上搜索查找用法。

 
 
>>> import os  
>[......]<p class="read-more"><a href="http://neoremind.com/2012/02/python%e6%89%a7%e8%a1%8c%e7%b3%bb%e7%bb%9f%e5%91%bd%e4%bb%a4%e7%9a%843%e7%a7%8d%e6%96%b9%e6%b3%95/">继续阅读</a></p>
 
其实是执行shell命令,返回值是returncode。
 
 
代[……]

继续阅读

使用FastDateFormat来代替JDK自带的DateFormat

SimpleDateFormat来做Date到String的类型转换,建议我使用Apache commons-lang中的FastDateFormat。因为JDK里自带的SimpleDateFormat存在线程不安全问题。

 
改进方法有:
1.使用局部变量。有些时候希望SimpleDateFormat作为静态变量存在时候,这种情况不适用。
2.使用ThreadLocal。好是好,但是比较麻烦。更多请参考ThreadLocal的理解与在Spring中的应用
3.使用Apache commons-lang中的FastDateFormat。又快又线程安全,最佳选择。

[……]

继续阅读

使用pdb调试python程序

python就像shell一样简单,因为它是解释型语言,同时它也很强大,想OO语言,但是它的调试debug功能却不能像shell那样土,echo或者-x,那么拿出python的调试利器pdb,名字就像gdb一样cool用起来也是一样cool。如果想调试一段python代码有下面两种方法可以用:
 
方法1:修改源代码
_DEBUG=True
if _DEBUG == True:
import pdb
pdb.set_trace()
 
方法2:用-m参数
python -m pdb myscript.py
 
进入debug模式后,就可以[……]

继续阅读

grep出现错误Binary file (standard input) matches

 一个很普通的grep在处理一个文本文件的时候,报错:

Binary file (standard input) matches

原因未知,解决版本是加入-a (–text)选项。

[……]

继续阅读

windows寻找某个端口进程并kill掉

在windows命令行窗口下执行:

C:\>netstat -aon|findstr "4444"
TCP    127.0.0.1:4444         0.0.0.0:0              LISTENING       2434
由上面得知,端口被进程号为2434的进程占用,继续执行下面命令:
C:\>tasklist|findstr "2434"
java[……]

继续阅读

Spring单测中的@Autowired和@Qualifier

@Autowired 
注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出BeanCreationException 
 
@Autowired(required = false) 
这等于告诉 Spring:在找不到匹配 Bean 时也不报错。
 
和找不到一个类型匹配 Bean 相反的一个错误是:如果 Spring 容器中拥有多个候选 Bean,Spring 容器在启动时也会抛出BeanCreationException 
&[……]

继续阅读

坑爹的睡眠排序算法[搞笑版]

 #!/bin/bash

function f() {

sleep “$1″

echo “$1″

}

while [ -n "$1" ]

do

f “$1″ &

shift

done

wait

 

example usage:

./sleepsort.bash 5 3 6 3 6 3 1 4 7

 

[……]

继续阅读

Linux下大文件排序

1. split -b   对大文件进行切割  如:split -b 200m BigFile

2. sort BigFile.splited1 > BigFile.splited1.sorted1 对每一个切割后的文件分别sort
3. cat BigFile.splited1.sorted1 BigFile.splited2.sorted2 …|sort -m|uniq

[……]

继续阅读

apache与tomcat互联配置

首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接。事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端口可以直接使用 Tomcat 所运行的应用程序,你也可以将该端口改为 80。
 
既然 Tomcat 本身已经可以提供这样的服务,我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢?原因有下面几个:
1.提升对静态文件的处理性能
2.利用 Web 服务器来做负载均衡以及容错
3.无缝的升级应用程序
4.重写静态化的URL,为了SEO
 

[……]

继续阅读

Java内存分析工具

这段时间单机跑一个大java,总是出现Heap OutOfMemory,无奈了,于是搜了下java自带的内存分析工具,算是初学了,记录一下,主要包括jmap, jstat, jps, jconsole,看不懂的可以参考我之前写的一篇关于java内存管理的文章

 

jmap  

打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。 
 

例1:堆使用情况

jmap -heap 22677 | more
Attaching to process ID 22677, pleas[……]

继续阅读