摘要: 今天工作中碰到分词问题的分析。问题是“上海人”分词为“上海”和“人”两个最小单元,还是以“上海人”为最小单元?分词的原文如下:“3月23日,早餐后前往豪尔赫机场,搭乘9点15分的阿航AR1874次航班波音737客机,3个多小时后,中午12点25分到达了埃尔卡拉法特机场,今天我们将要游览心仪已久的莫雷诺大冰川。地接导游王强是个上海人,他将陪伴着我们走完在阿根廷境内的所有游程。”由此,引出一个话题,搜索是基于文本的搜索还是基于信息的搜索。基于文本的搜索就是,对众多文章进行文本的拆分,拆分后的文本建立索引,在用户进行搜索的时候,将用户输入的文本进行进行拆分,并将这些拆分后的文本在索引中匹配。基于文本 阅读全文
posted @ 2013-06-24 17:57 惡盈好謙 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 工作环境:1、宿主机:win72、客户机:centos 版本64,32位(本人使用网上下载的iso镜像进行安装)3、virtualBox版本:4.1.22 r80657客户机必装软件1、centos随盘提供的安装包kernel-headers,kernel-devel和gcc2、virtualBox的“安装增强功能所”所提供的安装软件安装centos随盘提供的安装包步骤1:打开centos终端步骤2:运行命令yum install kernel-headers kernel-devel步骤3:运行命令yum install gcc安装virtualBox的“安装增强功能所”所提供的安装软件 1 阅读全文
posted @ 2013-06-14 16:14 惡盈好謙 阅读(370) 评论(0) 推荐(0) 编辑
摘要: private void ZipFiles(string filesDir, string zipFile) { string[] filenames = Directory.GetFiles(filesDir); Crc32 crc = new Crc32(); ZipOutputStream s = new ZipOutputStream(File.Create(zipFile)); s.SetLevel(5); // 0 - store only to 9 - means best compression try { foreach (string file in filenames). 阅读全文
posted @ 2013-04-20 11:01 惡盈好謙 阅读(191) 评论(0) 推荐(0) 编辑
摘要: http://www.cececs.csulb.edu/~monge/classes/share/B+TreeIndexes.html 阅读全文
posted @ 2012-08-20 09:59 惡盈好謙 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 存储相关的代码学习。以storage/innobase/btr/目录下的源码为入口,进行相应的代码分析。1、innobase的每个page中都存在infimum和supremum两个伪记录。用于指示该页内最小和最大的记录。在btr_get_prev_user_rec和btr_get_next_user_rec这两个函数中进行rec的移动时,都要对这两个特殊的记录进行判断。2、page_rec_is_infimum用于判断是否为最小伪记录。在page中,伪记录的位置是固定的,通过偏移就可以判断该记录是否为伪记录3、innodb的页大小是在编译期指定的,不是在通过生成库的时候指定。此种情况相对来说 阅读全文
posted @ 2012-08-09 12:51 惡盈好謙 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 从上面的两篇完全可以看出,Linux下的io端口事件编程涉及到的内容非常少,而Windows的是多么的复杂。我从事接口这个工作很久了,主要是数据库的接口,以我的工作经验看,简单而且返回稳定明确的接口对于用户编程是非常重要的。用户可以通过自己的情况进行不同的组合,从而达到满足自己的要求,且不浪费任何功能。当然,这对编程者的要求很高,而且接口的提供者要提供非常详细和准确的文档(如果接口设计的简单而明了的话,文档同样不会太难编写)。 阅读全文
posted @ 2012-07-04 09:02 惡盈好謙 阅读(304) 评论(0) 推荐(0) 编辑
摘要: HANDLE WINAPI CreateIoCompletionPort( __in HANDLE FileHandle, __in_opt HANDLE ExistingCompletionPort, __in ULONG_PTR CompletionKey, __in DWORD NumberOfConcurrentThreads);CreateIoCompletionPort:这个函数有两个功能,一个是创建最初的IoComplete对象,这时没有任何IO文件句柄被加入进去。一个是将一个overlap的IO文件,加入到IoComplete对象。下面的代码是创建一个IO completion 阅读全文
posted @ 2012-07-04 09:01 惡盈好謙 阅读(240) 评论(0) 推荐(0) 编辑
摘要: epoll的核心是下面的函数epoll_ctl:用于将待监听的端口和放入(或移除)监听对象中。这个函数两个关键的输入为,1、待监听的接口,2、该接口在io事件发生后,操作系统接口返回给用户对应这个接口的数据。将端口加入监听的{ struct epoll_event epv = {0, {0}}; int op; void *data = malloc(10); epv.data.ptr = data; epv.events = EPOLLIN|EPOLLET; op = EPOLL_CTL_ADD; if(epoll_ctl(epollFd, op, watchfd, &epv) &l 阅读全文
posted @ 2012-07-03 09:36 惡盈好謙 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 以tcpip为例。最早知道的服务方式是,为每个tcpip端口都提供一个线程进行服务器。不过在考虑到超过100个以上的连接,将会产生非常多的资源站中。由于数据的特点是在同一时间并不是所有的会话都是活跃的,因此为每个会话提供一个专门服务的线程太过浪费。那么多个工作线程,一个通信处理线程将是很好的选择。已有的tcpip除了select以外,就没有其他更好的办法。经过查找资料,在Windows下,iocp的编程模型,linux下的epoll编程模型,可以很好的监控端口的事件。当然还有其他平台下的编程接口,如kqueue,不过这次实现的主要针对Windows和linux平台,因此不考虑其他平台。为了能够 阅读全文
posted @ 2012-07-02 22:18 惡盈好謙 阅读(146) 评论(0) 推荐(0) 编辑
摘要: //////server#include <WinSock2.h>#include <windows.h>#include <stdio.h>#include <stdlib.h>#include <process.h>//该例子代码在并发情况下存在问题,需要对clientRecord进行mutex保护才能保证操作的有效性。#define HOST_PORT 10000#define MAX_BUFF_SIZE 8192typedef struct msg_watch_para_struct msg_watch_para_t;st.. 阅读全文
posted @ 2012-07-02 17:56 惡盈好謙 阅读(598) 评论(0) 推荐(0) 编辑