libdatrie源码分析

firstboy05132014-03-21 16:33:10搜索引擎 / 搜索功能
libdatrie库是一个Double Array Trie的C语言实现项目,详情可以参考官方链接.Double Array Trie中文名叫作双数组trie的比较多,是一种压缩形的trie,但是效率和理论上的trie是基本一样的,理论上的trie可以使用一个状态转换的有限状态机来实现,但是这样的话这个状态机的二维状态转移矩阵会很大,因为这里面状态一般都很多,这里的状态像上述图中所示的,每

lexstat英文阅读单词统计助手

firstboy05132014-03-20 00:23:43比咕实验室 / 互联网项目
Idea的由来是这酱紫的:在看英文书籍或者英文新闻页面的时候,有时候一些专业词汇的缺失很让人抓狂,于是就想做一个在阅读之前把所有英文内容里面的单词词汇给我罗列出来,让我看或者记忆下来,免得每次遇到生词就要无力一个个查词的囧境.想来也就是把文章都给过一遍预处理呗,嗯,最近在看几本英文书所以下面是当时随心所遇草草记录下来的notes. 做一个非OCR解析PDF的上传功能,让用户上传书籍,然后根据统计

BM字符串匹配算法中求模式串Good Suffix的问题

firstboy05132014-03-14 22:58:51
BM字符串算法在实际应用中比较高效,很容易接近O(n)的时间复杂度,这里n是需要搜索的内容字符串,而模式串长度记为m,一般都比n小. BM字符串算法大家参考比较多的是这个地方的资料Boyer-Moore string search algorithm,讲得很简练,原理很容易看明白,只是在实现上每次算偏移量的地方需要消耗点脑细胞. 对原理有不明白的还可以看国内中文类似的翻译解说,但仅供参考,因为

MySQL里面procedure的中文乱码问题

firstboy05132014-03-13 23:03:35程序技巧 / 系统相关
先吐槽一个baidu搜索,同样的关键字“mysql procedure utf8”,是个人应该可以看出来应该想要找什么内容了吧,当下可是2013年,搜索引擎技术可以说成熟到家了吧,每次搜索技术问题或者一些非技术问题但内容有针对性时,搜索百度永远是个内伤呀,还是google勉强可以用用了,不说了,不然又要怪我专门黑百度来着。 mysql procedure中出现乱码的原

QDBM源码分析4_villa模块

firstboy05132014-03-05 10:20:48搜索引擎 / 存储技术
说一下各种数据结构 内部结点是(里面就heir比较奇葩被可怜地放到外面,它就是第一个子结点的指针) 65 typedef struct { /* type of structure for a node page */ 66 int id; /* ID number of

[译]非洲种可可豆的农民第一次品尝巧克力

guohua05942014-03-01 21:45:06比咕视角 / 每日一文
在翻译之前吐嘈一下,上图就是可可豆,比我想像中要大得多哈,我一直以为和所谓的黄豆豌豆之类称为豆类一样大小呢。这篇CNN报导的文章说的是Abidian,中文叫“阿比让”,是一个非洲西部的国家“科特迪瓦”的最大港口城市,刚刚wiki一下这个城市,看到维基百科下过特意留下的城市温度,吓了一跳,每个月的温度都可以算是酷暑呀,最高温度四十几度有好几个月,

QDBM源码分析3_depot模块

firstboy05132014-03-01 20:39:25搜索引擎 / 存储技术
首先说说depot的结构。 typedef struct { /* type of structure for a database handle */ char *name; /* name of the database file */ int wmode; /* whether to be writable */ int inode; /*

QDBM源码分析2_cabin模块

firstboy05132014-02-28 11:28:13搜索引擎 / 存储技术
先说一下cabin里面各种数据结构,粘来原代码中的结构体定义部分。 typedef struct { /* type of structure for a basic datum */ char *dptr; /* pointer to the region */ int dsi

flush和sync的区别

firstboy05132014-02-27 11:06:09程序技巧 / 编程代码
经常遇到在I/O操作中把数据流刷到磁盘上的操作,但有两个函数,一个是flush,一个是sync,在不同编程语言里面有时会有附加不同的函数方法名,比如fflush, fsync, mflush, msync, flush, sync等等,但它们底层原理的实现结果是一致的。在传统Unix实现中有一个缓冲存储器,用来缓存将要写入磁盘的数据,以减少对磁盘的读写次数,但是降低了数据的更新速度,当系统发生故障

QDBM源码分析1_myconf模块

firstboy05132014-02-18 10:19:58搜索引擎 / 存储技术
myconf代码分析 // 一些宏定义 _SYS_xxx/_QDBM_SYSNAME // 文件系统符号 MYPATHCHR/MYPATHSTR/MYEXTCHR/MYEXTSTR/MYCDIRSTR/MYPDIRSTR // 一部分IO文件函数 /UNICODE open()/lstat() /O_BINARY/O_TEXT/setmode() // P
比咕搜索引擎定制与数据分析技术服务
最新评论
比咕网移动端APP下载

iPhone、Android 手机
扫描二维码下载安装

(可以使用QQ,微博等的扫描二维码功能)