关闭

lock free的循环队列

1. 如果是一个生产者和一个消费者,则只需对读写index的更新是原子的就可以了,这种情况下只需要两个atomic的变量就搞定2. 如果是多个生产者,则采用这种方式: a. 生产者原子的预定一个写的位置         int curWriteIndex = writeIndex;         do{              curWriteIndex = wirteIndex;         }while(cas(...
阅读(765) 评论(0)

关于锁的一些想法

1. 程序在进入临界区后有各种原因是被换出,中断,调度,阻塞等2. 临界区内要短3. spin lock要慎用,如果是使用spin lock,但是临界区太大,进入临界区的线程被调度,则另一个被调度的线程会忙等,白白浪费cpu,因此,一定要是多个cpu,且临界区很简单才能用spin lock,否则还是要容忍sleep带来的开销4. 如果想用spin lock,但是不能确定这个lock的竞争情况和执行情况,可以用常规锁,执行代码,观察cpu 的利用率...
阅读(298) 评论(0)

最大间隙问题

给定n个实数,求出相邻的两个数,这两个数的差值是所有相邻数的最大例如 ,1 ,3 ,7,8,  则答案是3,7 思想如下:找出最大值和最小值,则所有的两个数 m- n > (max-min)/n - 1因此,设定n -1 个区间,区间长度为 (max -min )/ n - 1, 将所有数按照与min的差值映射到这些区间里则所有的两个数必然是两个相邻区间的最大值和最小值。 因为区间内的数的差值是小于上面的平均数的。<br /...
阅读(638) 评论(0)

linux 内存管理

只是大概谢谢,笔记类型的。1. 以页位单位struct page {          page_flags_t flags;                 //标记:是否需要写出,是否被锁在内存等,在linux/page-flags.h 中定义          atomic_t _count;          //页面引用计数          atomic_t _mapcount;             //有多少个页...
阅读(586) 评论(0)

很久未来,mark

一年多未来了,换工作了,结婚,买房,生小孩了,msn上最早的日志都是5年多以前的了,时间飞逝,还是尽量写写,给未来留下一些什么吧1. 换工作,其实都差不多,该干啥干啥2. 现在没以前那么多的牢骚,没以前那么多的写东西热情,觉得一切都是骚包,其实骚包挺好3. 总体来讲生活还是比较无聊,该好好跟儿子玩玩4. 该学习还是要学习,要涨工资啊...
阅读(335) 评论(0)

gamm encoding

http://en.wikipedia.org/wiki/Elias_gamma_coding适合对大部分数都是比较小的数进行压缩...
阅读(480) 评论(0)

隐马尔可夫模型

前一篇文章没有系统地介绍这个模型,本篇文章将详细介绍1. 定义:The Hidden Markov Model is a finite set of states, each of which isassociated with a (generally multidimensional) probability distribution[]. Transitions a...
阅读(4137) 评论(0)

隐式马尔科夫链与维特比算法

1. 隐式马尔科夫链: 马尔科夫链是一系列的状态转换,设为x1...xn,其中xn至于xn-1相关,假设xi 会以p(i)的概率产生yi, 如下图所示: 观察到的是Y的序列,由于X序列不可见,是隐式的,因此称为隐式马尔科夫链 真实系统中,x与y之间有可能不是一一对应的关系,但总有一个从X到Y的概率 现在我们观察到了一个Y的序列,要计算如下两件事情:1. Y这个序...
阅读(7461) 评论(2)

语言模型

1. 对检索用户的通常建议是使用在文档中出现的词作为query,因此,如果一篇文章与查询词相关,那么这篇文章的模型可以生成这个query,因此检索模型从P(R = 1|q, d) 变为了P(q|Md),Md是文章的模型 2. 语言模型: a. 形式语言,例如有限状态自动机,根据文法来产生语言b. 不确定的状态的自动机,每一个状态可以以不同的概率产生不同的词或者结束例如状态q1:...
阅读(2596) 评论(0)

统计陷阱读书笔记

第一章 内在有偏的样本主要将通过偏差的样本来获得想要的数据,文中举例耶鲁大学毕业生的工资来说明这个问题,给出统计结论时却并未给出样本,通过合理的猜测,可以知道这样的样本是有偏差的,例如能联系上的人一般都不穷,愿意告诉别人自己工资的人更不穷 第二章 精心挑选的平均数一般给统计结论时却并不给出是那种平均数,是算术平均还是中位数或者是众数,通过这种方式来欺骗人,例...
阅读(1368) 评论(0)

向量空间模型

一: 不同区域的权重计算1.  对出现在文档的不通区域的term赋予不同的权值,例如title,author,body等,这样需要在倒排表中记录term每一次出现的位置2. 对不同的区域赋予不通的权值,Gi, 使得 Sum(Gi) = 13. 对于这个Gi的值,可以通过机器学习的方法来确定:给定一个文档集合和query,以及query与文档之间的相似性,然后假定一个表达式,采用这个样本...
阅读(2311) 评论(2)

倒排表交集的计算

1. 对倒排表进行排序2. 对排序后的倒排表进行求交集的时间复杂度是o(n + m)3. 两两合并和多路同时合并的效果差不多4.可以采用跳表来加速合并过程,所谓跳表即是 因此在查询时可以根据快表进行跳转,但快表的长度不宜太长或过短,经验值是log(n)...
阅读(800) 评论(0)

词典压缩

1. 压缩目的: 将整个词典放在内存,避免多次访问硬盘2. 假设压缩前词典采用定长数组格式,每个数组的类型如下: struct{ char term[k]; int freq; pointer posting;} 假设指针长度为4, 则一个term耗费的内存为k + 4 + 4, 这里显然的浪费是在k,因为必须要指定一个定长的k。 因此一种压缩思路就...
阅读(643) 评论(0)

通配符匹配

问题描述:对于一个给定的词典S和一个包含通配符的查询传a*b, 在词典中找出匹配a*b的所有串 1. 词典的结构: 对于匹配类,通常来说树结构是适用的2. 假设词典是树结构,切通配符在串的最后,即类似ab*这样,我们可以从树的根节点开始,沿着ab向下,找到所有的匹配串3. 那么对于a*b呢? 我们先考虑*ab的情况,如果我们的词典对每个串按反序也建立一颗树,即串abcd,我们有一颗...
阅读(1281) 评论(0)

建立索引

1. 索引是指倒排表两种算法如下:a. 将termid--docid 进行排序,termid为主键,docid为次键,然后建立termid到docid的倒排,例如:I --- 1                    AB ---3                       AB[1] ---3I ----2          ---->   I -----1  --------...
阅读(499) 评论(0)

检索系统的硬件基础

一,基本的硬件时间如下: SymbolStatisticValue  average seek time5 ms s  transfer time per byte0.02 s <!-- MATH $2 /times 10^...
阅读(400) 评论(0)

double array trie

Trie 用于前缀匹配,在搜索引擎的切词中有广泛的引用,但trie占有空间太多,因此有doube array trie,参考文章:http://linux.thai.net/~thep/datrie/datrie.html 构建trie的方法主要有两种,一种是动态构建,如参考文章里的,另一种就是批量构建,算法如下:将所有的输入词进行排序,例如输入词是ab,ac,cd,ef则排好...
阅读(1595) 评论(0)

x-headers

原文链接:http://www.yeeyan.com/articles/view/37503/37323英文链接:http://mobiforge.com/developing/blog/useful-x-headers X头域解析191个读者 biAji@ yeeyan.com 2009年04月15日 双语对照 原文...
阅读(1706) 评论(0)

sparse-table

google的sparse table的结构主要思想:1. 首先是一个数组2. 并不真正地分配数组的每一个元素占用的空间3. 用一个bitmap来管理数组的每一个元素是否有值,如果有值,则分配空间4. 将数组分段,提高查询bitmap和在数组里增加新空间时的效率 参考文章地址:http://google-sparsehash.googlecode.com/svn/tru...
阅读(1991) 评论(0)

suffix tree,python 版

 代码如下:## A Suffix-tree implementation#NODE_COUNT = 1class EdgeSet:        Save edge, edge is identified by start node and first char        def __init__(self):        self.dict = {}    def add...
阅读(1310) 评论(0)
71条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:129713次
    • 积分:1987
    • 等级:
    • 排名:千里之外
    • 原创:69篇
    • 转载:2篇
    • 译文:0篇
    • 评论:11条
    文章分类
    最新评论