Ubuntu 8.04 源列表

Posted by 冰河 at 21:48 No Responses » 5,598 Views
十二 182009

Hardy(8.04) 版本
Archive.ubuntu.com更新服务器(欧洲,此为官方源,电信网通用户使用):

deb http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
Ubuntu.cn99.com更新服务器(江苏省常州市电信,推荐电信用户使用):

deb http://ubuntu.cn99.com/ubuntu/ hardy main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ hardy-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ hardy main restricted universe multiverse
Mirrors.shlug.org更新服务器(电信服务器,Ubuntu China Official Mirror, maintained by Shanghai Linux User Group):

deb http://cn.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb http://cn.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse

Mirror.lupaworld.com更新服务器(浙江省杭州市双线服务器):

deb http://mirror.lupaworld.com/ubuntu hardy main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-security main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-updates main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-backports main restricted universe multiverse
deb http://mirror.lupaworld.com/ubuntu hardy-proposed main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-security main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-updates main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-backports main restricted universe multiverse
deb-src http://mirror.lupaworld.com/ubuntu hardy-proposed main restricted universe multiverse

厦门大学更新服务器(教育网服务器):

deb ftp://ubuntu.realss.cn/ubuntu/ hardy main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-backports restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-proposed main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-security main restricted universe multiverse
deb ftp://ubuntu.realss.cn/ubuntu/ hardy-updates main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-backports main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-proposed main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-security main restricted universe multiverse
deb-src ftp://ubuntu.realss.cn/ubuntu/ hardy-updates main restricted universe multiverse

成都市 电子科技大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb http://ubuntu.uestc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://ubuntu.uestc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe

== 如果无法解析uestc.edu.cn域名,请使用以下地址 ==

deb http://ubuntu.dormforce.net/ubuntu/ hardy main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-backports main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-security main multiverse restricted universe
deb http://ubuntu.dormforce.net/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://ubuntu.dormforce.net/ubuntu/ hardy-updates main multiverse restricted universe

上海市上海交通大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://ftp.sjtu.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb http://ftp.sjtu.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://ftp.sjtu.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe

中国科学技术大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://debian.ustc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb http://debian.ustc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://debian.ustc.edu.cn/ubuntu/ hardy-updates main multiverse restricted universe
北京市清华大学更新服务器(教育网,推荐校园网和网通用户使用):

deb http://mirror9.net9.org/ubuntu/ hardy main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ hardy-backports main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ hardy-proposed main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ hardy-security main multiverse restricted universe
deb http://mirror9.net9.org/ubuntu/ hardy-updates main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ hardy main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ hardy-backports main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ hardy-security main multiverse restricted universe
deb-src http://mirror9.net9.org/ubuntu/ hardy-updates main multiverse restricted universe

沈阳市东北大学更新服务器(教育网,推荐校园网和网通用户使用):

deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-backports main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-proposed main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-security main multiverse restricted universe
deb ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-updates main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-backports main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-security main multiverse restricted universe
deb-src ftp://ftp.neu.edu.cn/mirror/archive.ubuntu.com/ubuntu/ hardy-updates main multiverse restricted universe

中国台湾 台湾大学更新服务器(推荐网通用户使用,电信PING平均响应速度41MS。强烈推荐此源,比较完整,较少出现同步问题):

deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-updates main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-backports main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-security main restricted universe multiverse
deb http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ubuntu.csie.ntu.edu.tw/ubuntu/ hardy-proposed main restricted universe multiverse

Mirror.vmmatrix.net更新服务器(上海市电信,推荐电信网通用户使用):

deb http://mirror.vmmatrix.net/ubuntu/ hardy main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ hardy main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ hardy-updates main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ hardy-backports main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://mirror.vmmatrix.net/ubuntu/ hardy-security main restricted universe multiverse
deb http://mirror.vmmatrix.net/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://mirror.vmmatrix.net/ubuntu/ hardy-proposed main restricted universe multiverse

ubuntu.cnsite.org更新服务器(福建省福州市 电信):

deb http://ubuntu.cnsite.org/ubuntu/ hardy main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ hardy main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ hardy-updates main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ hardy-backports main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://ubuntu.cnsite.org/ubuntu/ hardy-security main restricted universe multiverse
deb http://ubuntu.cnsite.org/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://ubuntu.cnsite.org/ubuntu/ hardy-proposed main restricted universe multiverse

mirror.rootguide.org更新服务器(上海市 电信):

deb http://mirror.rootguide.org/ubuntu/ hardy main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy-updates main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-backports main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy-backports main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://mirror.rootguide.org/ubuntu/ hardy-security main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu/ hardy-proposed main multiverse restricted universe
deb-src http://mirror.rootguide.org/ubuntu/ hardy-proposed main restricted universe multiverse
deb http://mirror.rootguide.org/ubuntu-cn/ hardy main restricted universe multiverse

台湾的官方源速度也相当不错,有时甚至快于内地的:

deb http://tw.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb http://tw.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-security main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-updates main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-backports main restricted universe multiverse
deb-src http://tw.archive.ubuntu.com/ubuntu hardy-proposed main restricted universe multiverse

用之前请ping一下源,测试下网速和可用性。

加源方法:打开终端-sudo gedit /etc/apt/sources.list
输入密码(你安装系统时设置的用户密码),注意密码不会显示,直接回车
把弹出的里面的内容全部清空,然后把提供的源全部粘贴上去(不含中文)
保存,关闭回到终端
输入sudo apt-get update

epoll的实现原理

Posted by 冰河 at 21:47 No Responses » 8,525 Views
十二 182009

1 功能介绍
epoll与select/poll不同的一点是,它是由一组系统调用组成。
int epoll_create(int size);
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event *events,
int maxevents, int timeout);
epoll相关系统调用是在Linux 2.5.44开始引入的。该系统调用针对传统的selec
t/poll系统调用的不足,设计上作了很大的改动。select/poll的缺点在于:
1.每次调用时要重复地从用户态读入参数。
2.每次调用时要重复地扫描文件描述符。
3.每次在调用开始时,要把当前进程放入各个文件描述符的等待队列。在调用结
束后,又把进程从各个等待队列中删除。
在实际应用中,select/poll监视的文件描述符可能会非常多,如果每次只是返回
一小部分,那么,这种情况下select/poll显得不够高效。epoll的设计思路,是把s
elect/poll单个的操作拆分为1个epoll_create+多个epoll_ctrl+一个wait。此外,
内核针对epoll操作添加了一个文件系统”eventpollfs”,每一个或者多个要监视的
文件描述符都有一个对应的eventpollfs文件系统的inode节点,主要信息保存在eve
ntpoll结构体中。而被监视的文件的重要信息则保存在epitem结构体中。所以他们
是一对多的关系。
由于在执行epoll_create和epoll_ctrl时,已经把用户态的信息保存到内核态了
,所以之后即使反复地调用epoll_wait,也不会重复地拷贝参数,扫描文件描述符,
反复地把当前进程放入/放出等待队列。这样就避免了以上的三个缺点。
接下去看看它们的实现:
2 关键结构体:
/* Wrapper struct used by poll queueing */
struct ep_pqueue {
poll_table pt;
struct epitem *epi;
};
这个结构体类似于select/poll中的struct poll_wqueues。由于epoll需要在内核
态保存大量信息,所以光光一个回调函数指针已经不能满足要求,所以在这里引入了
一个新的结构体struct epitem。
/*
* Each file descriptor added to the eventpoll interface will
* have an entry of this type linked to the hash.
*/
struct epitem {
/* RB-Tree node used to link this structure to the eventpoll rb
-tree */
struct rb_node rbn;
红黑树,用来保存eventpoll
/* List header used to link this structure to the eventpoll rea
dy list */
struct list_head rdllink;
双向链表,用来保存已经完成的eventpoll
/* The file descriptor information this item refers to */
struct epoll_filefd ffd;
这个结构体对应的被监听的文件描述符信息
/* Number of active wait queue attached to poll operations */
int nwait;
poll操作中事件的个数
/* List containing poll wait queues */
struct list_head pwqlist;
双向链表,保存着被监视文件的等待队列,功能类似于select/poll中的poll_tab
le
/* The “container” of this item */
struct eventpoll *ep;
指向eventpoll,多个epitem对应一个eventpoll
/* The structure that describe the interested events and the so
urce fd */
struct epoll_event event;
记录发生的事件和对应的fd
/*
* Used to keep track of the usage count of the structure. This
avoids
* that the structure will desappear from underneath our proces
sing.
*/
atomic_t usecnt;
引用计数
/* List header used to link this item to the “struct file” item
s list */
struct list_head fllink;
双向链表,用来链接被监视的文件描述符对应的struct file。因为file里有f_ep
_link,用来保存所有监视这个文件的epoll节点
/* List header used to link the item to the transfer list */
struct list_head txlink;
双向链表,用来保存传输队列
/*
* This is used during the collection/transfer of events to use
rspace
* to pin items empty events set.
*/
unsigned int revents;
文件描述符的状态,在收集和传输时用来锁住空的事件集合
};
该结构体用来保存与epoll节点关联的多个文件描述符,保存的方式是使用红黑树
实现的hash表。至于为什么要保存,下文有详细解释。它与被监听的文件描述符一一
对应。
struct eventpoll {
/* Protect the this structure access */
rwlock_t lock;
读写锁
/*
* This semaphore is used to ensure that files are not removed
* while epoll is using them. This is read-held during the even
t
* collection loop and it is write-held during the file cleanup
* path, the epoll file exit code and the ctl operations.
*/
struct rw_semaphore sem;
读写信号量
/* Wait queue used by sys_epoll_wait() */
wait_queue_head_t wq;
/* Wait queue used by file->poll() */
wait_queue_head_t poll_wait;
/* List of ready file descriptors */
struct list_head rdllist;
已经完成的操作事件的队列。
/* RB-Tree root used to store monitored fd structs */
struct rb_root rbr;
保存epoll监视的文件描述符
};
这个结构体保存了epoll文件描述符的扩展信息,它被保存在file结构体的priva
te_data中。它与epoll文件节点一一对应。通常一个epoll文件节点对应多个被监视
的文件描述符。所以一个eventpoll结构体会对应多个epitem结构体。
那么,epoll中的等待事件放在哪里呢?见下面
/* Wait structure used by the poll hooks */
struct eppoll_entry {
/* List header used to link this structure to the “struct epite
m” */
struct list_head llink;
/* The “base” pointer is set to the container “struct epitem” *
/
void *base;
/*
* Wait queue item that will be linked to the target file wait
* queue head.
*/
wait_queue_t wait;
/* The wait queue head that linked the “wait” wait queue item *
/
wait_queue_head_t *whead;
};
与select/poll的struct poll_table_entry相比,epoll的表示等待队列节点的结
构体只是稍有不同,与struct poll_table_entry比较一下。
struct poll_table_entry {
struct file * filp;
wait_queue_t wait;
wait_queue_head_t * wait_address;
};
由于epitem对应一个被监视的文件,所以通过base可以方便地得到被监视的文件
信息。又因为一个文件可能有多个事件发生,所以用llink链接这些事件。
3 epoll_create的实现
epoll_create()的功能是创建一个eventpollfs文件系统的inode节点。具体由ep
_getfd()完成。ep_getfd()先调用ep_eventpoll_inode()创建一个inode节点,然后
调用d_alloc()为inode分配一个dentry。最后把file,dentry,inode三者关联起来。
在执行了ep_getfd()之后,它又调用了ep_file_init(),分配了eventpoll结构体
,并把eventpoll的指针赋给file结构体,这样eventpoll就与file结构体关联起来了

需要注意的是epoll_create()的参数size实际上只是起参考作用,只要它不小于
等于0,就并不限制这个epoll inode关联的文件描述符数量。
4 epoll_ctl的实现
epoll_ctl的功能是实现一系列操作,如把文件与eventpollfs文件系统的inode节
点关联起来。这里要介绍一下eventpoll结构体,它保存在file->f_private中,记录
了eventpollfs文件系统的inode节点的重要信息,其中成员rbr保存了该epoll文件节
点监视的所有文件描述符。组织的方式是一棵红黑树,这种结构体在查找节点时非常
高效。
首先它调用ep_find()从eventpoll中的红黑树获得epitem结构体。然后根据op参
数的不同而选择不同的操作。如果op为EPOLL_CTL_ADD,那么正常情况下epitem是不
可能在eventpoll的红黑树中找到的,所以调用ep_insert创建一个epitem结构体并插
入到对应的红黑树中。
ep_insert()首先分配一个epitem对象,对它初始化后,把它放入对应的红黑树。
此外,这个函数还要作一个操作,就是把当前进程放入对应文件操作的等待队列。这
一步是由下面的代码完成的。
init_poll_funcptr(&epq.pt, ep_ptable_queue_proc);
。。。
revents = tfile->f_op->poll(tfile, &epq.pt);
函数先调用init_poll_funcptr注册了一个回调函数 ep_ptable_queue_proc,这
个函数会在调用f_op->poll时被执行。该函数分配一个epoll等待队列结点eppoll_e
ntry:一方面把它挂到文件操作的等待队列中,另一方面把它挂到epitem的队列中
。此外,它还注册了一个等待队列的回调函数ep_poll_callback。当文件操作完成,
唤醒当前进程之前,会调用ep_poll_callback(),把eventpoll放到epitem的完成队
列中,并唤醒等待进程。
如果在执行f_op->poll以后,发现被监视的文件操作已经完成了,那么把它放在
完成队列中了,并立即把等待操作的那些进程唤醒。
5 epoll_wait的实现
epoll_wait的工作是等待文件操作完成并返回。
它的主体是ep_poll(),该函数在for循环中检查epitem中有没有已经完成的事件
,有的话就把结果返回。没有的话调用schedule_timeout()进入休眠,直到进程被再
度唤醒或者超时。
6 性能分析
epoll机制是针对select/poll的缺陷设计的。通过新引入的eventpollfs文件系统
,epoll把参数拷贝到内核态,在每次轮询时不会重复拷贝。通过把操作拆分为epol
l_create,epoll_ctl,epoll_wait,避免了重复地遍历要监视的文件描述符。此外,
由于调用epoll的进程被唤醒后,只要直接从epitem的完成队列中找出完成的事件,
找出完成事件的复杂度由O(N)降到了O(1)。
但是epoll的性能提高是有前提的,那就是监视的文件描述符非常多,而且每次完
成操作的文件非常少。所以,epoll能否显著提高效率,取决于实际的应用场景。这
方面需要进一步测试。

Nginx PHP No input file specified

Posted by 冰河 at 21:45 No Responses » 24,530 Views
十二 182009

刚装好Nginx,马上加了个 PHPINFO

  1. <?php
  2. phpinfo();
  3. ?>

然后在游览器下运行 结果是

No input file specified.

以下内容为网络收集

FastCGI模式下访问php文件时,出现No input file specified.错误
查看access.log 发现是 404

原因分析:
任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在。PHP文件不存在,没办法返回普通的404错误,它返回一个404,并带上一句”No input file specified”

另外,还可能跟 路径或者 权限有关系,或者SCRIPT_FILENAME 变量没有被正确的设置(这在nginx是最常见的原因)

1)如果html也出现404错误,那么就是document root 设置的有问题
2)检查脚本文件的权限, 可能PHP或者web server不能读取它
3)SCRIPT_FILENAME设置错误

可以使用
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
必须保证 $document_root 在配置文件中,在astcgi_param SCRIPT_FILENAME前面被用到过一次, 后面有解释为什么。

或者
修改/etc/php5/cgi/php.ini中cgi.fix_pathinfo=1
这样也可让php-cgi正常使用SCRIPT_FILENAME这个变量

有人说,这样改也行
fastcgi_param SCRIPT_NAME /home/gavin/nginx/$fastcgi_script_name;

让我们看看PHP对这两个变量是怎么解释的吧
SCRIPT_NAME
SCRIPT_FILENAME
据说,必须指定正确的SCRIPT_FILENAME, PHP-CGI会忽略SCRIPT_NAME(即使它的值设置的是正确的)
或者指定特殊的php.ini, 设置doc_root, discard path, fix pathinfo等等

script_filename 只是被用做一种快捷方式。 如果fix_pathinfo设置打开,init函数将它用来决定真实的路径

因为配置文件会改变 nginx的变量$fastcgi_script_name

fastcgi_param SCRIPT_NAME /home/gavin/nginx/$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME /home/gavin/nginx/$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;

这两种配置都是可以的


fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
也是可以的,但必须保证 $document_root 被正确设置过

‘SCRIPT_FILENAME’
当前执行脚本的绝对路径名(pathname)
‘SCRIPT_NAME’
含有当前脚本的路径。当页面需要指向他们自己时,有用. __FILE__ 常量包含路径和文件名

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP’s
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting
; this to 1 will cause PHP CGI to fix it’s paths to conform to the spec. A setting
; of zero causes PHP to behave as before. Default is 1. You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; cgi.fix_pathinfo=0

主要跟CGI标准的
PATH_INFO
PATH_TRANSLATED
SCRIPT_NAME
有关系
修修改了好多
最终主要修改的

把 NGINX DEFAULT 那个文件中的

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

改成实际的路径

今天我是这种情况

我的是fastcgi_param SCRIPT_NAME /var/www/nginx-default/$fastcgi_script_name;

然后就好了
上面的文章供参考
如果试了还不行 多看看内容再试试

十二 182009

一、sysv-rc-conf简介
sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconfig、rcconf好用。
二、背景知识
1、Ubuntu运行级别
Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行
级之间进行切换,以完成不同的工作。
Ubuntu 的系统运行级别:
0 系统停机状态
1 单用户或系统维护状态
2~5 多用户状态
6 重新启动
查看当前运行级别,执行命令:
runlevel
( runlevel 显示上次的运行级别和当前的运行级别,“N”表示没有上次的运行级别。)
切换运行级别,执行命令:
int [0123456Ss]
( 即在 init 命令后跟一个参数,此参数是要切换到的运行级的运行级代号,如:用 init 0 命令关机;用 init 6 命令重新启动。)
Linux 系统主要启动步骤:
1. 读取 MBR 的信息,启动 Boot Manager
Windows 使用 NTLDR 作为 Boot Manager,如果您的系统中安装多个
版本的 Windows,您就需要在 NTLDR 中选择您要进入的系统。
Linux 通常使用功能强大,配置灵活的 GRUB 作为 Boot Manager。
2. 加载系统内核,启动 init 进程
init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
3. init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,
按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启
动,并指向一个系统中的程序。
通常情况下, /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是
/etc/rcN.d/ 目录。例如您设定的运行级别为 3,那么它对应的启动
目录为 /etc/rc3.d/ 。
4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg
Xwindow 为 Linux 下的图形用户界面系统。
5. 启动登录管理器,等待用户登录
Ubuntu 系统默认使用 GDM 作为登录管理器,您在登录管理器界面中
输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/
文件夹中找到一个名为 S13gdm 的链接)
三、安装sysv-rc-conf
sudo apt-get install sysv-rc-conf
四、使用sysv-rc-conf
sudo sysv-rc-conf
操作界面十分简洁,你可以用鼠标点击,也可以用键盘方向键定位,用空格键选择,用Ctrl+N翻下一页,用Ctrl+P翻上一页,用Q退出。
常见的系统服务有:
acpi-support 高级电源管理支持
acpid acpi 守护程序.这两个用于电源管理,非常重要
alsa 声音子系统
alsa-utils
anacron cron 的子系统,将系统关闭期间的计划任务,在下一次系统运行时执行。
apmd acpi 的扩展
atd 类似于 cron 的任务调度系统。建议关闭
binfmt-support 核心支持其他二进制的文件格式。建议开启
bluez-utiles 蓝牙设备支持
bootlogd 启动日志。开启它
cron 任务调度系统,建议开启
cupsys 打印机子系统。
dbus 消息总线系统(message bus system)。非常重要
dns-clean 使用拨号连接时,清除 dns 信息。
evms 企业卷管理系统(Enterprise Volumn Management system)
fetchmail 邮件用户代理守护进程,用于收取邮件
gdm gnome 登录和桌面管理器。
gdomap
gpm 终端中的鼠标支持。
halt 别动它。
hdparm 调整硬盘的脚本,配置文件为 /etc/hdparm.conf。
hibernate 系统休眠
hotkey-setup 笔记本功能键支持。支持类型包括: HP, Acer, ASUS, Sony,Dell, 和 IBM。
hotplug and hotplug-net 即插即用支持,比较复杂,建议不要动它。
hplip HP 打印机和图形子系统
ifrename 网络接口重命名脚本。如果您有十块网卡,您应该开启它
inetd 在文件 /etc/inetd.conf 中,注释掉所有你不需要的服务。如果该文件不包含任何服务,那关闭它是很安全的。
klogd 重要。
linux-restricted-modules-common 受限模块支持。
/lib/linux-restricted-modules/ 文件夹中的模块为受限模块。例如某些驱动程序,如果您没有使用受限模块,就不需要开启它。
lvm 逻辑卷管理系统支持。
makedev 创建设备文件,非常重要。
mdamd 磁盘阵列
module-init-tools 从/etc/modules 加载扩展模块,建议开启。
networking 网络支持。按 /etc/network/interfaces 文件预设激活网络,非常重要。
ntpdate 时间同步服务,建议关闭。
pcmcia pcmcia 设备支持。
powernowd 移动 CPU 节能支持
ppp and ppp-dns 拨号连接
readahead 预加载库文件。
reboot 别动它。
resolvconf 自动配置 DNS
rmnologin 清除 nologin
rsync rsync 守护程序
sendsigs 在重启和关机期间发送信号
single 激活单用户模式
ssh ssh 守护程序。建议开启
stop-bootlogd 在 2,3,4,5 运行级别中停止 bootlogd 服务
sudo 检查 sudo 状态。重要
sysklogd 系统日志
udev & udev-mab 用户空间 dev 文件系统(userspace dev filesystem)。重要
umountfs 卸载文件系统
urandom 随机数生成器
usplash 开机画面支持
vbesave 显卡 BIOS 配置工具。保存显卡的状态
xorg-common 设置 X 服务 ICE socket。
adjtimex 调整核心时钟的工具
dirmngr 证书列表管理工具,和 gnupg 一起工作。
hwtools irqs 优化工具
libpam-devperm 系统崩溃之后,用于修理设备文件许可的守护程序。
lm-sensors 板载传感器支持
mdadm-raid 磁盘陈列管理器
screen-cleanup 清除开机屏幕的脚本
xinetd 管理其他守护进程的一个 inetd 超级守护程序

十二 182009

  从传统意义上讲,Proxy Server即代理服务器是指位于用户计算机网络与互联网之间的服务器,其功能就是代理网络用户去取得网络信息,可以把它理解为网络信息的中转站。如果 WEB浏览器配置为使用代理服务器的话,所有的请求都只会通过代理转发,代理服务器会按照用户的要求向站点发出访问请求,并针对各种应用依次采用不同的过 滤规则。

  “透明代理服务器”指的是在客户端完全不知晓的情况下,对代理服务器进行配置,使其可以处理用户请求。其缺点是代理服务器不支持SSL,但是用 户浏览器不需要对普通HTTP通信(即明文HTTP通信)配置,很多情况下,它与高速缓存代理服务器一起使用,代理服务器从其高速缓存中访问图片和其它文 件,而无需每次都占用互联网带宽从web服务器上获取。

  反向代理服务器(Reverse Proxy Server),通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器来降低实际的WEB服务器的负载,提高对WEB页面的访 问速度。反向代理服务器位于用户WEB服务器和互联网之间。当一个HTTP连接进入时,反向代理服务器会决定所执行的操作,然后向后端的WEB服务器发出 请求。反向代理服务器相当重要,它们常常肩负多种任务。

  反向代理服务器可以是一个SSL终结器。这意味着SSL授权证书及其密钥都被装在代理服务器上,连同这些站点的对应IP地址。SSL因此被终止 在代理服务器,而且对后端服务器的请求将会以纯文本的形式传送。这在通常情况下确实不错,但如果你的终端网络是不安全的,网络骗术可通过安全通道获取所需 要的服务请求。

  在这儿我们要探讨一下虚拟主机和SSL。虚拟主机的概念是基于站点名称的,在连接HTTP报头数据方面起作用。当发出了HTTP请求后,支持虚 拟主机的WEB服务器会为不同的内容服务,这些内容是基于被请求站点的。本质上讲,这意味着你可以将多个域名指向一个相同的IP地址。如果启用了SSL, 必须与特定的IP地址相结合,而且SSL授权证书必须与站点的名称相匹配,此站点正是用户试图访问的站点。SSL对话在HTTP数据发送之前进行,因而服 务器只有一个选择,即一个授权证书呈现一个IP地址。如果在一个SSL连接建立之后,却发现请求的URL属于另一个站点,WEB浏览器会通知用户。如果它 不如此工作,SSL就毫无意义了。

  一个代理服务器也可以是一个负载平衡器。负载平衡从其基本意义上讲,其工作方式不外乎两种,实际工作时可以某一种方式运行。第一种工作方式即智 能地在IP层循环访问一组服务器,第二种方式通过使用代理服务器来做一些更加智能的工作。一组服务器可以使用DNS轮询为站点服务。多个DNS记录可以配 送给一个主机名,因此连接就会从这一组服务器中选择一个。当然,这对于使用SSL站点进行管理真是一种痛苦。路由器也可以以相似的方式实现负载平衡,这就 要求保存现有的状态从而使后续的请求可以被传送到适当的服务器。不过,如此运作的大多数设备都只是充当一个代理服务器。使用代理服务器实现负载平衡很有意 义,特别是在考虑了它所提供的其它特性以后。

  反向代理服务器可以充当一种WEB服务器的应用层防火墙。实际上,它包含两个方面:进入的请求受到代理服务器中所配置的规则和策略的制约,而WEB服务器被封闭起来,与外部世界隔离,从而有效地抵消了跨站点的脚本攻击。

  反向代理服务器还经常担当内容过滤器的职责,虽然过滤与防火墙息息相关,但反向代理却拥有更佳的性能。大多数代理服务器厂商实施一种阻止某些关键字或内容类型的机制。这可以是防止恶意代码攻击真实服务器的另一个层次。

  前端代理服务器可以执行的大量任务也可以被反向代理服务器完成。一台高速缓存服务器,如squid,可以在多种配置中与反向代理服务器协同工 作。如果反向代理服务器不支持高速缓存,很多站点会选择通过一个高速缓存代理来配置对后端服务器的访问,这样图像和其它静态内容就不必从真实服务器中检 索。许多反向代理服务器也可以将一些特定的任务,如图片出租给一个完全独立的服务器。这些代理服务器通常被称为“WEB加速器”。

  有许多代理服务器产品能够以反向代理服务器模式运行,在此我们只关注几个免费的开源产品。Apache2.2现在伴随着模块代理服务平衡器一起使用。Apache依靠 模块代理支持反向代理服务器已有很长时间了,但是通过使用平衡器模块,Apache可以实现更加复杂和更有弹性的配置。当然,配置并非十分简单,Apache本身资源密集而且对内存要求很高。

  Pound是一个反向代理服务器及负载平衡器,可以终止SSL连接。配置相当简易,它与Apache相比的极大优势在于它经过精心编制、小巧灵活。许多Pound用户给出了其相当惊人的吞吐量统计,当然它也一直是可靠有效的。

Goolge DNS vs. OpenDNS

Posted by 冰河 at 21:41 No Responses » 11,670 Views
十二 182009

1.Google推出免费DNS服务

谷歌发布了 Google Public DNS 服务,利用这个服务我们可以:

  1. 加快 DNS 解析速度从而加快网页载入速度;
  2. 谷歌承诺不会给你重定向,避免一般 DNS 服务一打开敏感网页就给你重定向不知道哪里去;
  3. 更安全。

使用的方法是:

网络连接 → 本地连接 → 属性 → Internet 协议 (TCP/IP) → 属性 → DNS 服务器填入 8.8.8.8 和 8.8.4.4。

编注:

以上方法仅适用于 Windows 平台,Linux 系统可将这组 IP 加入 /etc/resolv.conf 文件:

nameserver 8.8.8.8
nameserver 8.8.4.4

使用 NetworkManager 的同学,设置方法请参考这里

2.OpenDNS

OpenDNS 是一个免费的域名解析服务提供商(DNS)。将DNS服务选项设置成如下两个地址便可以开始使用OpenDNS的服务:

  • 208.67.222.222 (Resolver1.OpenDNS.com)
  • 208.67.220.220 (Resolver2.OpenDNS.com)

OpenDNS 在 2006年7月由 黑客/创业者 大卫·尤里维奇(David Ulevitch)创建。之后获得了由CNET的创始人Halsey Minor创建的Minor Ventures公司提供的风险投资。 2006年7月10号,这项OpenDNS开始为digg、slashdot和Wired News网站提供服务,这直接导致DNS请求数从7月9日的一百万猛增到30日的三千万。 2006年10月2日,OpenDNS建立了第一个反钓鱼数据库Phishtank.com,收集、整理和发布钓鱼攻击信息。 2006年,OpenDNS开始使用DynDNS的接口来处理动态IP用户的DNS更新。 从2007年1月开始,OpenDNS开始在以下地区设置服务器来提供服务:西雅图、帕洛阿尔托、纽约、华盛顿和伦敦,并计划扩展到芝加哥和香港。 2007年6月11日,OpenDNS开始启用高级网页过滤系统来为他们的免费账户过滤成人内容。

OpenDNS 在 2006年7月由 黑客/创业者大卫·尤里维奇(David Ulevitch)创建。之后获得了由CNET的创始人Halsey Minor创建的Minor Ventures公司提供的风险投资。

2006年7月10号,这项OpenDNS开始为digg、slashdot和Wired News网站提供服务,这直接导致DNS请求数从7月9日的一百万猛增到30日的三千万。

2006年10月2日,OpenDNS建立了第一个反钓鱼数据库Phishtank.com,收集、整理和发布钓鱼攻击信息。

2006年,OpenDNS开始使用DynDNS的接口来处理动态IP用户的DNS更新。

从2007年1月开始,OpenDNS开始在以下地区设置服务器来提供服务:西雅图、帕洛阿尔托、纽约、华盛顿和伦敦,并计划扩展到芝加哥和香港。

2007年6月11日,OpenDNS开始启用高级网页过滤系统来为他们的免费账户过滤成人内容。

3.Google DNS vs. OpenDNS

Google今天宣布了一项新服务Google Public DNS,让消费者使用Google作为他们的DNS服务提供商。该服务给用户带来的好处是,理论上更快速、更稳定的浏览体验,以及针对恶意网站的更多安全 防护;而Google可以通过该服务获得大量的用户数据,以及某些可能的收入。目前Google Public DNS服务尚处于试验阶段,用户如果想使用它,必须修改网络设置,这样他们的网站访问请求才会被转向Google服务而不是ISP商。Google已经建立了专门网页来指导用户如何设置使用该服务。

该服务将直接挑战风投公司Sequoia和Greylock支持的OpenDNS服务,OpenDNS至今已经推出4年,目前每天解析200亿次DNS查询,拥有150万最终用户。

2008年,OpenDNS的日均解析量仅有70亿条,但是已经实现日进2万美元收入。其营收方式是,当用户输入了一个无法解析的网址时,该服务将显示它 自己的定制页面,其中包含搜索结果和广告。另外,企业用户非常愿意付费使用这种DNS服务,以防止用户访问恶意网站或其它网站(诸如色情网站或社交网站 Facebook等)。

不过,和OpenDNS不同的是,Google Public DNS并不重定向用户到广告页面。

针对Google推出DNS服务,OpenDNS创始人大卫·尤勒维什(David Ulevitch)在官方博客上发表了五点声明,他认为该服务与OpenDNS并不完全相同,而且Google推出DNS服务的举动也说明了DNS在互联 网架构中的关键作用,以及帮助用户安全、可靠地浏览互联网的战略重要性。另外尤勒维什还指出,Google是互联网上最大的广告和重定向公司。

Google Public DNS产品经理普瑞姆·拉玛斯瓦米(Prem Ramaswami)表示,该服务的目标是快速、安全和有效的DNS响应。他表示,Google将严格遵循DNS协议,即不阻挡、不劫持和不过滤用户查询。

Google还透露了该服务将收集的数据类型和保存时间。收集的数据包含IP地址(最长保存48小时,以检测针对该服务的恶意行为)、ISP信息和地理位置信息(最长保存2周)。这些数据将不会以任何方式关联用户的Google帐号。

据普瑞姆表示,普通用户每天大约进行1000次DNS查询。

十二 182009

常用的APT命令参数:

apt-cache search package 搜索包

apt-cache show package 获取包的相关信息,如说明、大小、版本等

sudo apt-get install package 安装包

sudo apt-get install package – - reinstall 重新安装包

sudo apt-get -f install 修复安装”-f = ——fix-missing”

sudo apt-get remove package 删除包

sudo apt-get remove package – - purge 删除包,包括删除配置文件等

sudo apt-get update 更新源

sudo apt-get upgrade 更新已安装的包

sudo apt-get dist-upgrade 升级系统

sudo apt-get dselect-upgrade 使用 dselect 升级

apt-cache depends package 了解使用依赖

apt-cache rdepends package 是查看该包被哪些包依赖

sudo apt-get build-dep package 安装相关的编译环境

apt-get source package 下载该包的源代码

sudo apt-get clean && sudo apt-get autoclean 清理无用的包

sudo apt-get check 检查是否有损坏的依赖

开源搜索引擎资源列表

Posted by 冰河 at 21:39 No Responses » 5,556 Views
十二 182009

开放源代码搜索引擎为人们学习、研究并掌握搜索技术提供了极好的途径与素材,推动了搜索技术的普及与发展,使越来越多的人开始了解并推广使用搜索技术。使用开源搜索引擎,可以大大缩短构建搜索应用的周期,并可根据应用需求打造个性化搜索应用,甚至构建符合特定需求的搜索引擎系统。搜索引擎的开源,无论是对技术人员还是普通用户,都是一个福音。  
搜索引擎的工作流程主要分为三步从互联网抓取网页→创建抓取网页的索引库→从索引库中进行搜索

首先需要一个能访问网络爬虫器程序,依据URL之间的关联性自动爬行整个互联网,并对爬行过的网页进行抓取收集。当网页被收集回来后,采用索引分析程序进行网页信息的分析,依据一定的相关度算法(如超链接算法)进行大量计算,创建倒排序的索引库。索引库建好后用户就可以通过提供的搜索界面提交关键词进行搜索,依据特定的排序算法返回搜索结果。因此,搜索引擎并不是对互联网进行直接搜索,而是对已抓取网页索引库的搜索,这也是能快速返回搜索结果的原因,索引在其中扮演了最为重要的角色,索引算法的效率直接影响搜索引擎的效率,是评测搜索引擎是否高效的关键因素。

网页爬行器、索引器、查询器共同构成了搜索引擎的重要组成单元,针对特定的语言,如中文、韩文等,还需要分词器进行分,一般情况下,分词器与索引器一起使用创建特定语言的索引库。它们之间的协同关系如图1所示。 seo 搜索引擎工作原理

开放源代码的搜索引擎为用户提供了极大的透明性,开放的源代码、公开的排序算法、随意的可定制性,相比于商业搜索引擎而言,更为用户所需要。目前,开放源代码的搜索引擎项目也有一些,主要集在中搜索引擎开发工具包与架构、Web搜索引擎、文件搜索引擎几个方面,本文概要介绍一下当前比较流行且相对比较成熟的几个搜索引擎项目。

开源搜索引擎工具包

1.Lucene
Lucene是目前最为流行的开放源代码全文搜索引擎工具包,隶属于Apache基金会,由资深全文索引/检索专家Doug Cutting所发起,并以其妻子的中间名作为项目的名称。Lucene不是一个具有完整特征的搜索应用程序,而是一个专注于文本索引和搜索工具包,能够为应用程序添加索引与搜索能力。基于Lucene在索引及搜索方面的优秀表现,虽然由Java编写的Lucene具有天生的跨平台性,但仍被改编为许多其他语言的版本:Perl、Python、C++、.Net等。
同其他开源项目一样,Lucene具有非常好的架构,能够方便地在其基础上进行研究与开发,添加新功能或者开发新系统。Lucene本身只支持文本文件及少量语种的索引,并且不具备爬虫功能,而这正是Lucene的魅力所在,通过Lucene提供的丰富接口,我们可以根据自身的需要在其上添加具体语言的分词器,针对具体文档的文本解析器等,而这些具体的功能实现都可以借助于一些已有的相关开源软件项目、甚至是商业软件来完成,这也保证了Lucene在索引及搜索方面的专注性。目前,通过在Lucene的基础上加入爬行器、文本解析器等也形成了一些新的开源项目,如LIUS、Nutch等。并且Lucene的索引数据结构已经成了一种事实上的标准,为许多搜索引擎所采用。

2.LIUS
LIUS即Lucene Index Update and Search的缩写,它是以Lucene为基础发展起来的一种文本索引框架,和Lucene一样,同样可以看作搜索引擎开发工具包。它在Lucene的基础上作了一些相应的研究及添加了一些新的功能。LIUS借助于许多开源软件,可以直接对各种不同格式/类型的文档进行文本解析与索引,这些文档格式包括MS Word、MS Excel、MS PowerPoing、RTF、PDF、XML、HTML、TXT、Open Office及JavaBeans等,对Java Beans的支持对于进行数据库索引非常有用,在用户进行对象关系映射(如:Hibernate、JDO、TopLink、Torque等)的数据库连接编程时会变得更加精确。LIUS还在Lucene的基础上增加了索引更新功能,使针对索引的维护功能进一步完善。并且支持混和索引,可以把同一目录下与某一条件相关的所有内容整合到一起,这种功能对于需要对多种不同格式的文档同时进行索引时非常有用。

3.Egothor
Egothor是一款开源的高性能全文搜索引擎,适用于基于全文搜索功能的搜索应用,它具有与Luccene类似的核心算法,这个项目已经存在了很多年,并且拥有一些积极的开发人员及用户团体。项目发起者Leo Galambos是捷克布拉格查理大学数学与物理学院的一名高级助理教授,他在博士研究生期间发起了此项目。
更多的时候,我们把Egothor看作一个用于全文搜索引擎的Java库,能够为具体的应用程序添加全文搜索功能。它提供了扩展的Boolean模块,使得它能被作为Boolean模块或者Vector模块使用,并且Egothor具有一些其他搜索引擎所不具有的特有功能:它采用新的动态算法以有效提高索引更新的速度,并且支持平行的查询方式,可有效提高查询效率。在Egothor的发行版中,加入了爬行器、文本解析器等许多增强易用性的应用程序,融入了Golomb、Elias-Gamma等多种高效的压缩方法,支持多种常用文档格式的文本解析,如HTML、PDF、PS、微软Office文档、XLS等,提供了GUI的索引界面及基于Applet或者Web的查询方式。另外,Egothor还能被方便地配置成独立的搜索引擎、元数据搜索器、点对点的HUB等多种且体的应用系统。

4.Xapian
Xapian是基于GPL发布的搜索引擎开发库,它采用C++语言编写,通过其提供绑定程序包可以使Perl、Python、PHP、Java、Tck、C#、Ruby等语言方便地使用它。
Xapian还是一个具有高适应性的工具集,使开发人员能够方便地为他们的应用程序添加高级索引及搜索功能。它支持信息检索的概率模型及丰富的布尔查询操作。Xapian的发布包通常由两部分组成:xapian-core及xapian-bindings,前者是核心主程序,后者是与其他语言进行绑定的程序包。
Xapian为程序开发者提供了丰富的API及文档进行程序的编制,而且还提供了许多编程实例及一个基于Xapian的应用程序Omega,Omega 由索引器及基于CGI的前端搜索组成,能够为HTML、PHP、PDF、PostScript、OpenOffice/StarOffice、RTF等多 种格式的文档编制索引,通过使用Perl DBI模块甚至能为MySQL、PostgreSQL、SQLite、Sybase、MS SQL、LDAP、ODBC等关系数据库编制索引,并能以CSV或XML格式从前端导出搜索结果,程序开发者可以在此基础上进行扩展。

5.Compass
Compass是在Lucene上实现的开源搜索引擎架构,相对比于Lucene而言,提供更加简洁的搜索引擎API。增加了索引事务处理的支持,使其能够更方便地与数据库等事务处理应用进行整合。它更新时无需删除原文档,更加简单更加高效。资源与搜索引擎之间采用映射机制,此种机制使得那些已经使用了Lucene或者不支持对象及XML的应用程序迁移到Compass上进行开发变得非常容易。
Compass还能与Hibernate、Spring等架构进行集成,因此如果想在Hibernate、Spring项目中加入搜索引擎功能,Compass是个极好的选择。

开源Web搜索引擎系统

1.Nutch
Nutch是Lucene的作者Doug Cutting发起的另一个开源项目,它是构建于Lucene基础上的完整的Web搜索引擎系统,虽然诞生时间不长,但却以其优良血统及简洁方便的使用方式而广收欢迎。我们可以使用Nutch搭建类似Google的完整的搜索引擎系统,进行局域网、互联网的搜索。
2.YaCy
YaCy是一款基于P2P(peer-to-peer)的分布式开源Web搜索引擎系统,采用Java语言进行编写,其核心是分布在数百台计算机上的被称为YaCy-peer的计算机程序, 基于P2P网络构成了YaCy网络,整个网络是一个分散的架构,在其中所有的YaCy-peers都处于对等的地位,没有统一的中心服务器,每个 YaCy-peer都能独立的进行互联网的爬行抓取、分析及创建索引库,通过P2P网络与其他YaCy-peers进行共享,并且每个YaCy-peer 又都是一个独立的代理服务器,能够对本机用户使用过的网页进行索引,并且采取多机制来保护用户的隐私,同时用户也通过本机运行的Web服务器进行查询及返 回查询结果。
YaCy搜索引擎主要包括五个部分,除普通搜索引擎所具有的爬行器、索引器、反排序的索引库外,它还包括了一个非常丰富的搜索与管理界面以及用于数据共享的P2P网络。

开源桌面搜索引擎系统

1.Regain
regain是一款与Web搜索引擎类似的桌面搜索引擎系统,其不同之处在于regain不是对Internet内容的搜索,而是针对自己的文档或文件的搜索,使用regain可以轻松地在几秒内完成大量数据(许多个G)的搜索。Regain采用了Lucene的搜索语法,因此支持多种查询方式,支持多索引的搜索及基于文件类型的高级搜索,并且能实现URL重写及文件到HTTP的桥接,并且对中文也提供了较好的支持。
Regain提供了两种版本:桌面搜索及服务器搜索。桌面搜索提供了对普通桌面计算机的文档与局域网环境下的网页的快速搜索。服务器版本主要安装在Web服务器上,为网站及局域网环境下的文件服务器进行搜索。
Regain使用Java编写,因此可以实现跨平台安装,能安装于Windows、Linux、Mac OS及Solaris上。服务器版本需要JSPs环境及标签库(tag library),因此需要安装一个Tomcat容器。而桌面版自带了一个小型的Web服务器,安装非常简单。

2.Zilverline
Zilverline是一款以Lucene为基础的桌面搜索引擎,采用了Spring框架,它主要用于个人本地磁盘及局域网内容的搜索, 支持多种语言。Zilverline提供了丰富的文档格式的索引支持,如微软Office文档、RTF、Java、CHM等,甚至能够为归档文件编制索引 进行搜索,如zip、rar及其他归档文件,在索引过程中,Zilverline从zip、rar、chm等归档文件中抽取文件来编制索引。 Zilverline可以支持增量索引的方式,只对新文件编制索引,同时也支持定期自动索引,其索引库能被存放于Zilverline能够访问到的地方,甚至是DVD中。同时,Zilverline还支持文件路径到URL的映射,这样可以使用户远程搜索本地文件
Zilverline提供了个人及研究、商业应用两种许可方式,其发布形式为一个简单的war包,可以从其官方网站下载(http://www.zilverline.org/)。 Zilverline的运行环境需要Java环境及Servlet容器,一般使用Tomcat即可。在确保正确安装JDK及Tomcat容器后只需将 Zilverline的war包(zilverline-1.5.0.war)拷贝到Tomcat的webapps目录后重启Tomcat容器即可开始使 用Zilverline搜索引擎了。

VMware服务随意关

Posted by 冰河 at 21:04 No Responses » 6,797 Views
十二 182009

VMware 虚拟机程序安装后同时会有4个服务打开,极大的消耗了系统资源,对我这样的铁公鸡来说实在不可忍受。若关闭了这4个服务, 右下角的托盘又会显示两个未接通的网络连接,很是烦人。

因此考虑实现需要运行虚拟机时——自动启动服务、启用虚拟网卡,关闭程序后——自动停止服务、禁用虚拟网卡。

一、禁用/启用网卡的实现

通过微软测试硬件驱动程序 devcon.exe 实现。

虚拟网卡的硬件 ID 为:*vmnetadapter1 和 *vmnetadapter8

通过下面命令启用虚拟网卡:

devcon.exe enable *vmnetadapter1

devcon.exe enable *vmnetadapter8

通过下面命令禁用虚拟网卡:

devcon.exe disable *vmnetadapter1

devcon.exe disable *vmnetadapter8

二、随程序 自动启动 和 关闭服务 的实现

实现 自动启动 和 关闭服务 有很多办法,这里介绍两种办法(BctchRun和Autoit),在分别介绍前先来做以下预备工作:

安装完 VMware 后,把原为自动启动的4个服务设为手动,或用下面的批处理:

sc config VMAuthdService start= demand

sc config VMnetDHCP start= demand

sc config "VMware NAT Service" start= demand

sc config vmount2 start= demand

net stop VMAuthdService

net stop VMnetDHCP

net stop "VMware NAT Service"

net stop vmount2

保存下面内容为一个批处理文件VM.bat

QUOTE:

net start VMAuthdService

net start VMnetDHCP

net start "VMware NAT Service"

net start vmount2

devcon.exe enable *vmnetadapter1

devcon.exe enable *vmnetadapter8



保存下面内容为另一个批处理文件VM_Stop.bat

QUOTE:

net stop VMAuthdService

net stop VMnetDHCP

net stop "VMware NAT Service"

net stop vmount2

devcon.exe disable *vmnetadapter1

devcon.exe disable *vmnetadapter8



1、用 BatchRun 实现:

分别添加3条记录,注意第二条中选中 Wait until end 。保存为 VM.brs

在 BatchRun 中设置关联 brs 文件后可以直接运行。

2、用Auto it 实现:

保存下面代码为 Run&Exit_VM.au3

QUOTE:

AutoItSetOption ( "TrayIconHide", 1 )

Run("D:VM.bat")

Runwait("C:Program FilesVMwareVMware Workstationvmware.exe")

Run("D:VM_Stop.bat")



同样用AutoIt3.exe 关联.au3 文件后也可以直接运行。

还可以直接打包成可执行文件。

附件分别为两种解决方案源代码文件,代码中软件目录需要自己调整。Autoit包括一个已生成的可执行文件(注意使用VM_run.exe时需要把所有文件释放至 C:Program FilesVMware 目录下才可以。)



同时转一下 Limpo @ CCF 在上面基础上做的Autoit 脚本,完全使用Autoit 解决。

我偷了一下懒,Autoit中也用批处理了。 



QUOTE:

;TraySetIcon("C:Program FilesVMwareVMware Workstationicoconfig.ico");

TrayTip("VMWare", "启动服务“VMware Authorization Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net start VMAuthdService", "", @SW_HIDE)

TrayTip("VMWare", "启动服务“VMware DHCP Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net start VMnetDHCP", "", @SW_HIDE)

TrayTip("VMWare", "启动服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & 'net start "VMware NAT Service"', "", @SW_HIDE)

TrayTip("VMWare", "启动服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net start vmount2", "", @SW_HIDE)

TrayTip("VMWare", "启动连接“VMware Network Adapter VMnet1”", 10, 1)

RunWait("devcon.exe enable *vmnetadapter1", "", @SW_HIDE)

TrayTip("VMWare", "启动连接“VMware Network Adapter VMnet8”", 10, 1)

RunWait("devcon.exe enable *vmnetadapter8", "", @SW_HIDE)

TrayTip("VMWare", "", 10, 1)

RunWait("C:Program FilesVMwareVMware Workstationvmware.exe")

TrayTip("VMWare", "停止服务“VMware Authorization Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net stop VMAuthdService", "", @SW_HIDE)

TrayTip("VMWare", "停止服务“VMware DHCP Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net stop VMnetDHCP", "", @SW_HIDE)

TrayTip("VMWare", "停止服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & 'net stop "VMware NAT Service"', "", @SW_HIDE)

TrayTip("VMWare", "停止服务“VMware NAT Service”", 10, 1)

RunWait(@ComSpec & " /c " & "net stop vmount2", "", @SW_HIDE)

TrayTip("VMWare", "停止连接“VMware Network Adapter VMnet1”", 10, 1)

RunWait("devcon.exe disable *vmnetadapter1", "", @SW_HIDE)

TrayTip("VMWare", "停止连接“VMware Network Adapter VMnet8”", 10, 1)

RunWait("devcon.exe disable *vmnetadapter8", "", @SW_HIDE)

十二 182009

虽然现在很喜欢用小巧、简洁的 Gtalk,但是 QQ 的群众基础还是太深厚了,几乎所有的同学朋友都是人手至少一个,而且 QQ 还有一些 Gtalk 没有的功能(发图、传文件等),所以 QQ 目前还是我用的最多的即时通讯软件。

如 果你也在用 QQ ,而且也是 Firefox 的忠实用户的话,你有没有遇到过这样的问题:朋友通过 QQ 发来的地址点击以后默认在 IE 中打开,点击 QQ 面板上的邮箱也是默认使用 IE 打开,即使是把 Firefox 设为默认浏览器也不行。经过查找,终于知道了解决办法。

代码:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTHTTPshell]
@="Firefox"
[HKEY_CLASSES_ROOTHTTPshellFirefox]
[HKEY_CLASSES_ROOThtmlfileshell]
@="Firefox"
[HKEY_CLASSES_ROOTHTTPshellFirefoxcommand]
@="c:\Program Files\Mozilla Firefox\FIREFOX.EXE -url "%1""
[HKEY_CLASSES_ROOThtmlfileshellopencommand]
@="c:\Program Files\Mozilla Firefox\FIREFOX.EXE -url "%1""
[HKEY_CLASSES_ROOThtmlfileshellFirefoxcommand]
@="c:\Program Files\Mozilla Firefox\FIREFOX.EXE -url "%1""

将以上代码复制到记事本,保存为 .reg 文件,导入注册表即可。注意:代码中红色部分为我的 Firefox 的安装目录,请根据你自己的安装目录修改。

若要恢复为注册表原始设置,将下列代码以同样方式执行即可,并把 IE 设为默认浏览器。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTHTTPshell]
@="open"
[HKEY_CLASSES_ROOThtmlfileshell]
@="open"

© 2009 - 2024 冰河的博客