自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笑笑的程序人生

不以物喜,不以己悲

  • 博客(55)
  • 收藏
  • 关注

原创 用Golang写一个搜索引擎(0x02)

这一篇,我们来说说搜索引擎最核心的技术,倒排索引技术,倒排索引可能需要分成几篇文章才说得完,我们先会说说倒排索引的技术原理,然后会讲讲怎么用一些数据结构和算法来实现一个倒排索引,然后会说一个索引器怎么通过文档来生成一个倒排索引。倒排索引什么是倒排索引呢?索引我们都知道,就是为了能更快的找到文档的数据结构,比如给文档编个号,那么通过这个号就可以很快的找到某一篇文档,而倒排索引不是根据文档编号,而是通过

2016-04-12 00:44:25 4600 1

原创 从零开始,写一个搜索引擎 (0x01)

第零部分我们已经列了一个提纲了,这一篇文章开始要详细说说了。搜索引擎基本概念在说搜索引擎架构分层之前,我们先确定几个搜索引擎的概念。文档,搜索引擎的基本数据单元,比如一张网页,一个商品,多个文档合在一起就是一个搜索引擎的完整数据倒排索引,正排索引,存储在搜索引擎内部的数据结构,也是搜索引擎最底层的数据结构。索引器,将文档数据生成可供搜索的倒排索引和正排索引的程序就是索引器。检索器,通过对倒排

2016-04-12 00:39:47 10426

原创 从零开始,写一个搜索引擎 (0x00)

Go语言,对于一个将近10年C/C++的程序员来说,Go的一些特质让我觉得非常舒服,从公司项目衍生出了一个自己的搜索引擎项目,然后有了这篇文章

2016-04-09 15:03:27 4280

原创 一个go语言实现的短链接服务

一个go语言实现的短链接服务。大家都用过新浪微博的短连接吧,就是t.cn后面一串不知道是什么的数,然后跳转到一个新页面去,这是怎么实现的呢?

2015-06-16 18:46:27 4882

原创 [推荐算法]基于用户的协同过滤算法

什么是推荐算法推荐算法最早在1992年就提出来了,但是火起来实际上是最近这些年的事情,因为互联网的爆发,有了更大的数据量可以供我们使用,推荐算法才有了很大的用武之地。最开始,所以我们在网上找资料,都是进yahoo,然后分门别类的点进去,找到你想要的东西,这是一个人工过程,到后来,我们用google,直接搜索自己需要的内容,这些都可以比较精准的找到你想要的东西,但是,如果我自己都

2013-11-12 14:12:49 85540 36

原创 杨辉三角形变型【庞果网】

又一个庞果网的题目题目描述 1 1 1 1 1 2 3 2 11 3 6 7 6 3 1以上三角形的数阵,第一行只有一个数1, 以下每行的每个数,是恰好是它上面的数,左上的数和右上数等3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有偶数,则输

2013-11-08 15:20:50 2439 4

原创 来聊聊STL标准库(一)--- 迭代器 inerators(1)

迭代器 --- inerators迭代器是设计模式中的一种,具体的描述是,有这么一种方法,可以依次的访问某一个集合中的每一个元素,而且又不需要暴露集合内部元素的细节,那这种表达方式就是迭代。迭代的思想后来被很多编程语言收录了,比如python的 for ... in ...语句实际上就是一个迭代器。当然,在c++11最新的标准中,也提供了对迭代的原生支持。在我们编写STL程序时,迭

2013-10-24 16:27:22 1488

原创 来聊聊STL标准库(一)---allocators

写在前面的话C++的STL库很早以前就已经是C++的标准库了,大量的c++应用都在使用,STL是一个代码写得非常精美的库,侯捷老师有一本>对此有非常详细的介绍,感兴趣的可以去看一下,认真看完看懂以后,对你编程的思想还是有些影响的,毕竟读完以后看到了那么多大师的写法,怎么说脑袋还是会受到一些影响的。看标准库的源代码,并不是要更加熟悉的使用库,而是强化自己的编程思想,像STL这样的标准库,

2013-10-23 17:47:48 3394

原创 文本相似度计算-JaccardSimilarity和哈希签名函数

在目前这个信息过载的星球上,文本的相似度计算应用前景还是比较广泛的,他可以让人们过滤掉很多相似的新闻,比如在搜索引擎上,相似度太高的页面,只需要展示一个就行了,还有就是,考试的时候,可以用这个来防作弊,同样的,论文的相似度检查也是一个检查论文是否抄袭的一个重要办法。文本相似度计算的应用场景过滤相似度很高的新闻,或者网页去重考试防作弊系统论文抄袭检查光第一项的应用就非常广泛。

2013-10-15 13:57:23 47407 2

原创 你用过哪些操作系统?

首先,简单介绍一下自己,我是80后,对于电脑,虽然谈不上骨灰,但也算一个比较资深的玩家了,目前的工作从事的是软件相关的工作,来八一八自己的电脑历程吧。286时代,DOS还在读小学的时候,就看到过电脑,那时候爸爸办公室有一台286的电脑,感觉非常神奇,一个黑色的屏幕,里面一个C:>_,然后光标一闪一闪的,自己总在上面打好多字符,然后又用退格键删除掉,乐此不疲,有一天,不小心按了个回车,完

2013-09-29 14:46:45 3155 1

原创 子序列的个数 --- 庞果网

庞果网的新题目:题目描述本题同样来自caopengcs,只要你有兴趣,每个人都可以出题(出题入口在主页右侧边栏“贡献题目”->“我要发布”内),以下是题目详情:子序列的定义:对于一个序列a=a[1],a[2],......a[n],则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列其中1对于给出序列a,有些子序列可能是相同的,这里只算做1个

2013-09-18 15:39:39 4499 2

原创 Go语言简单的TCP编程

前期准备需要import "net"包IP类型,其中一个重要的方法是IP.ParseIP(ipaddr string)来判断是否是合法的IP地址TCP Clientfunc (c *TCPConn) Write(b []byte) (n int, err os.Error)用于发送数据,返回发送的数据长度或者返回错误,是TCPConn的方法func (c *TCPCon

2013-09-17 15:21:23 29906 3

原创 Go语言语法汇总

最近看了看GoLang,把Go语言的语法总结了一下,做个快速参考数据类型var varName type,var var1,var2… type,var varName type = Value,var varName1,varName2 type = Value1,Value2,var varName1,varName2=Value1,Value2,varName

2013-09-16 14:21:09 10092

原创 LRU Cache的简单c++实现

什么是 LRULRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据更有可能被接下来的程序所访问。LRU的应用比较广泛,最基础的内存页置换中就用了,对了,这里有个概念要清楚一下,Cache不见得是CPU的高速缓存的那个Cache,这里的Cache直接翻译为缓

2013-09-05 09:17:36 12463 3

原创 数组排序 --- 庞果

题目说明本题来自caopengcs,只要你有兴趣,每个人都可以出题(出题入口在主页右侧边栏“贡献题目”内),以下是题目详情:给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序。求最少需要多少次交换,能把数组排成按1-n递增的顺序,其中,数组长度不超过100。例如:原数组是3,2,1, 我们只需要交换1和3就行了,交换次数为1,所以输出1。原数组是2,3,1

2013-09-04 15:12:59 3235 12

原创 Hadoop单机版安装,配置,运行

Hadoop是最近非常流行的东东啦,但是乍一看都觉得是集群的东东,其实在单机版上安装Hadoop也是可以的,并且安装好以后可以很方便的进行程序的调试,调试好程序以后再丢到集群中,放心的算吧,呵呵。。本文说的是在ubuntu上hadoop的安装,其他的linux可以类比进行。安装前的准备在安装之前,我们需要准备以下的东西Ubuntu的安装盘,我装的就是桌面吧,你可以选择服务器

2013-09-02 17:05:58 8639 2

原创 我对开源软件的理解

这是前几个月的一个作业,贴出来和大家一起讨论一下(以我blog的流量,应该也没人讨论吧,呵呵)。读了《大教堂与集市》,对于开源软件,有了更深一步的认识,我觉得开源软件从最初的几人小作坊,发展到后来书中所说的集市,到现在已经不完全是个集市了,她已经开始对大教堂之类的商业软件产生了巨大的影响了。中世纪时代纵观开源软件的历史,也是一部坎坷史,同时也是一部互联网的发展史,在没有

2013-09-02 11:21:40 3130 1

原创 不可表达的数 --- 梅森数 庞果题目

本题的奖品由亿阳信通赞助,以下是题目详情给定表达式[x/2] + y + x * y, 其中x,y都是正整数。其中的中括号表示下取整,例如[3/2] = 1 , [5/2] = 2。有些正整数可以用上述表达式表达出来,例如正整数2,当取x = y = 1时,可以把2表达出来 ( 解释下:当x=y=1时, [x / 2] + y + x * y = [1 / 2] +

2013-08-29 15:27:32 2207 6

原创 字符串消除

好久没来了,又一道庞果的题目给定一个字符串,仅由a,b,c 3种小写字母组成。当出现连续两个不同的字母时,你可以用另外一个字母替换它,如:有ab或ba连续出现,你把它们替换为字母c有ac或ca连续出现时,你可以把它们替换为字母b有bc或cb 连续出现时,你可以把它们替换为字母a。你可以不断反复按照这个规则进行替换,你的目标是使得最终结果所得到的字符串尽可能短,求最终结果

2013-08-28 10:37:38 4238 15

原创 24点计算 --- 庞果

问题描述24点游戏是一种使用扑克牌来进行的益智类游戏,游戏内容是:从一副扑克牌中抽去大小王剩下52张,任意抽取4张牌把牌面上的数(A代表1)运用加、减、乘、除和括号进行运算得出24。每张牌都必须使用一次,但不能重复使用。有些组合有不同种算法,例如要用2,4,6,12四张牌组合成24点,可以有如下几种组合方法:2 + 4 + 6 + 12 = 244 × 6 ÷ 2 +

2013-07-30 17:47:34 2532

原创 寻找直方图中面积最大的矩形 --- 庞果网

又来了,今天做了好几道了。。还是庞果网的题目详情给定直方图,每一小块的height由N个非负整数所确定,每一小块的width都为1,请找出直方图中面积最大的矩形。   如下图所示,直方图中每一块的宽度都是1,每一块给定的高度分别是[2,1,5,6,2,3]:   那么上述直方图中,面

2013-07-24 16:27:27 6936 8

原创 倒水问题---庞果网

还是庞果网,今天和他杠上了,倒水问题。题目详情有两个容器,容积分别为A升和B升,有无限多的水,现在需要C升水。我们还有一个足够大的水缸,足够容纳C升水。起初它是空的,我们只能往水缸里倒入水,而不能倒出。可以进行的操作是:把一个容器灌满;把一个容器清空(容器里剩余的水全部倒掉,或者倒入水缸);用一个容器的水倒入另外一个容器,直到倒出

2013-07-24 14:53:17 3393 2

原创 字符串的完美度

还是庞果网,又看到一个题目,这个比较简单。题目详情我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。现在给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25

2013-07-24 10:14:34 2730 1

原创 回文字符串

还是在庞果网看到的题目,这次选了个简单的,回文字符串。题目内容回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串。输入:非空仅由小写字母组成的字符串,长度不超过100;输出:能组成的所有回文串的个数(因为结果可能非常大,输出对1000000007取余数的结果)。例如:输入"aabb" 输出为

2013-07-24 08:08:15 5013 4

原创 最小操作数

给了A、B两个单词和一个单词集合Dict,每个的长度都相同。我们希望通过若干次操作把单词A变成单词B,每次操作可以改变单词中的一个字母,同时,新产生的单词必须是在给定的单词集合Dict中。求所有行得通步数最少的修改方法。    举个例子如下: Given:    A = "hit"    B = "cog"    Dict = ["hot","dot","dog","lot","log

2013-07-23 08:17:37 2215 1

原创 Haskell笔记 (六)自定义Types

前面我们说过了Type和typeclasses,现在,我们来说一说怎么自定义自己的Type和TypeClasses,这东西我们觉得不好理解,其实简单的说,你就把他们看成C语言中的结构体就行了,我们在C语言中自定义结构体实际上就是自定义新的数据类型。一般的Types自定义正如C语言中使用typedef struct XXX来自定义结构体,在Haskell中使用data来自定义

2013-07-16 11:29:53 3803

原创 Haskell笔记 (五) 高阶函数

了解高阶函数高阶函数是Haskell的重要性质,同时也是所有函数式语言的共同性质,高阶函数实际上就是函数的函数,就是把某个函数作为另一个函数的参数的形式,就是高阶函数。还是来看个例子吧, 取一个函数并调用它两次的函数 ,用数学表达式表达出来就是 f(f(x)),而在Haskell中写函数其实和数学上的表达式非常接近,这也是为什么说Haskell更加接近数学的原因。applyTwic

2013-07-16 08:54:17 3511

原创 Haskell 笔记(四)函数系统

函数系统函数式编程当然少不了函数系统啦,在教程最初的时候就有一个最简单的函数,函数系统贯穿在Haskell全部,Haskell的函数有几个重要的性质。首先声明一下函数的参数和返回值类型然后有一个很重要写法就是匹配,用匹配来匹配参数,所以Haskell的函数写法和其他语言不一样,同样一个函数可能有几种表达形式模式匹配函数匹配的一个例子,比如有这么一个函数,当用户输入7时显

2013-07-15 23:17:10 3477

原创 Haskell 笔记(三)类型系统

类型 (Type)Haskell的类型系统式静态类型系统,在编译的时候就知道数据类型,所以不同类型的值运算在编译的时候就会报错,比如用布尔值和整数运算,在C语言中这种运算就不会报错。Haskell 支持类型推导使用:t命令后跟任何可用的表达式,即可得到该表达式的类型,如:t 'a'将输出 'a'::Char表示a是Char型。函数也有类型,编写函数时,给它一个明确的类型声明

2013-07-15 23:15:26 3235

原创 Haskell 笔记(二)List和元组

最简单的函数函数式编程,首先要有函数吧,来看一个最简单的函数,第一个是函数名,后面是输入变量,表达式是输出doubleMe x=x+xHaskell的函数没有return语句,最后一句话是自然的返回值,函数都要保存为文件,文件以.hs结尾。读取编写好的文件(以.hs结尾):l 文件名List 数据结构LIST基本操作

2013-07-12 16:22:31 8980

原创 Haskell 笔记(一)开始使用

本教程参考了《Haskell趣学指南》,是这篇指南的学习笔记,不过参入了我自己的一些想法和总结,首先,感谢《Haskell趣学指南》的作者bonus 和大陆翻译者Fleurer和台湾翻译者MnO2,谢谢你们之前的工作。Haskell是一种标准化的,通用的纯函数编程语言,有非限定性语义和强静态类型。它的命名源自美国逻辑学家哈斯凯尔·卡瑞,他在数学逻辑方面上的工作使得函数式编程语言有了广泛的基

2013-07-12 16:21:26 2006

原创 关于iOS开发的一些记录

这两天因为有点事情,重新拿起了一下iOS开发,好久没碰过了,用起来这种集成开发环境还是XCode用得比较舒服,个人感觉比VS要好一些,当然,VS也挺不错,只是在win下面程序做得少,没什么发言权,至于eclipse,和这两个比起来,我觉得还是差距挺大的。自定义UITableViewCellUITableView估计是iOS最常用的控件了,系统默认的那些式样早就看腻了,总想弄点新

2013-07-11 17:08:49 1650

原创 Nginx一个IP配置多个主机

今天,朋友有个网站要挂在我的服务器上,鼓捣了一下Nginx中配置多个主机和域名,具体的要求是:主机只有一个IP地址 123.123.123.123有两个功能不同的网站,一个是我现在的blog,一个是朋友的购物网站有两个域名 www.wusay.org www.AusForYou.com,一个是我的blog,一个是朋友的域名需要用户通过不同的域名访问不同的网站内容

2013-07-10 22:59:54 17090

原创 搭建自己的XenServer+CloudStack云平台,提供IaaS服务(一)环境搭建

目标搭建一个完整的基于XenServer和CloudStack的虚拟化平台,提供IaaS服务。搭建三台安装了XenServer的服务器搭建一台安装了CloudStack的服务器用以管理云平台搭建一个NFS服务器负责进行存储工作可以使用CloudStack云平台进行虚拟机管理先期准备服务器准备三台服务器安装XenServer一台安装CentOS和CloudStack进

2013-06-24 16:50:52 15065 2

原创 如何在github上发起一个pull request

要在github上贡献自己的力量,就要了解github的协同工作模式,就是pull request的使用注册一个github账号打开github主页,注册一个账号。安装客户端客户端你可以安装原生的git客户端,在linux下使用:sudo apt-get install git即可,如果是在windows下,又不愿意用命令行,可以安装gith

2013-06-17 09:56:58 54351 3

原创 搭建一个个人博客

今天终于把博客系统搭建起来了,折腾了大半天,写来下,给想自己搭建博客系统的朋友们看看。其实,目前想要搭建自己的网站都非常简单,买个vps,注册个域名,在vps上装上wordpress,齐活。来,从头说起。另外,给自己打个广告,以后文章都会在 http://wusay.org 更新。VPS购买vps是什么,大家可以百度百科,我这里就不解释了,简单的说,就是一台服务器。

2013-06-15 14:09:24 12885 7

原创 python编程最最简明教程

<!--html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, str

2013-06-13 16:01:44 3057

原创 PAXOS---最重要的分布式算法----简单模拟

最近由于某种原因需要学习分布式系统,其中涉及到分布式系统中的核心内容:PAXOS算法,据说此算法是分布式系统的基石,所有的分布式系统都是在此协议下进行的,是非常重要的分布式算法,用来保证系统的容错性和一致性的。关于PAXOS的历史和传奇故事有很多,wiki上大把,摘录一段,让大家也了解一下这个协议:分布式系统中的节点通信存在两种模型:共享内存(Shared memory

2013-05-28 15:17:32 3937

原创 C++多线程框架(三)--------- 消息队列

首先,本文提到的代码的github地址为:https://github.com/wyh267/Cplusplus_Thread_Lib之前,多线程一些基本的东西,包括线程创建,互斥锁,信号量,我们都已经封装,下面来看看消息队列我们尽量少用系统自带的消息队列(比如Linux的sys/msgqueue),那样移植性不是很强,我们希望的消息队列,在消息打包和提取都是用

2013-05-23 13:19:02 25873 9

原创 C++多线程框架 (二)---------Mutex互斥和Sem信号量

互斥和信号量是多线程编程的两个基础,其原理就不详细说了,大家去看看操作系统的书或者网上查查吧。对于互斥的实现,无论什么操作系统都离不开三个步骤1.初始化互斥锁2.锁操作3.解锁操作对于不同的系统只是实现的函数有一些不同而已,但是功能其实都大同小异,在锁操作和解锁操作的时候大部分系统都有超时机制在里面,来保证不会一直锁在某个地方,我们为了框架简单,没有设置超时,进行锁操作

2013-05-23 10:12:10 7017

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除