自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 A*算法

A*算法启发式搜索算法,是一种在平面图形上,有多个结点的路径,求出最低通过成本的算法。参考http://www.java3z.com/cwbwebhome/article/article2/2825.htmlhttp://blog.csdn.net/v_JULY_v/article/details/6093380http://blog.csdn.net/v_JULY_v/articl...

2013-09-29 11:30:00 170

转载 C++中的垃圾回收和内存管理(续)

boost memory的gc_allocator的使用首先编译生成boost-memory的库,由于生成的是.so的动态库,所以需要在运行程序之前,将库文件的路径添加到LD_LIBRARY_PATH中。简单使用,auto_alloc比较简单,可以使用默认的存储管理,NS_BOOST_MEMORY::auto_alloc alloc;而scope_alloc稍微复杂一点,使用block_...

2013-09-28 13:56:00 216

转载 C++中的垃圾回收和内存管理

最开始的时候看到了许式伟的内存管理变革系列,看到性能测试结果的时候,觉得这个实现很不错,没有深入研究其实现。现在想把这个用到自己的一个项目中来,在linux下编译存在一些问题,所以打算深入研究一下。讨论C++内存管理的有两个主要的博客,一个是许式伟的系列,(CSDN: http://blog.csdn.net/xushiweizh/article/details/1388982,许式...

2013-09-27 15:37:00 324

转载 C++中的枚举值类型转化为整数和字符串

C++中的枚举类型C++11提供了更安全的枚举类型,不能再直接把这种枚举值当作整数值来使用。但如果我们想把它作为整数来使用呢?例如enum class ElemType{ CAP, IND, VS};在以前,我们使用枚举类型的时候,没有添加class关键词,可以如下定义,enum ElemTypeOld{ CAP = 1, IND, VS = 3};在...

2013-05-02 22:44:00 1272

转载 Makefile

在linux下编写C/C++程序,一般会习惯用Makefile来编译程序。总结一下自己学习使用Makefile的经验。一个C/C++项目,会有多个头文件和源程序文件,有时候还会用多个文件夹来组源代码的结构。文件之间会有依赖关系,当一个被依赖的文件被修改之后,不仅它自己需要重新编译,依赖它的文件也需要重新编译。然而如果一个文件不被其它文件依赖,那么它更改之后,就只需要重新编译自己,然后重新...

2013-04-19 20:37:00 87

转载 Yahoo邮箱中全部邮件的下载保存

一大早起来就看到Yahoo中国邮箱不能再继续使用了,Yahoo涅磐,本以为邮箱应该会躲过这一劫,没想到还是来了。最简单的方法应该是迁移到yahoo.com吧,但是之前用这个yahoo.cn的邮箱,时不时会出些问题。现在既然要换,就换一个好用一点的吧。Gmail,也会时不时出问题,Hotmail改版为Outlook,垃圾邮件太多,于是注册了一个网易163的邮箱。登陆进去,界面看着还...

2013-04-18 13:09:00 490

转载 Flex和Bison的一些笔记(一)

用到flex和bison,总是会出现一些奇怪的问题,然后网上又查不到直接的解决办法。现在来总结一下遇到的和解决的问题。1. bison的C++接口2. flex的C++接口3. location的使用先说简单一点的,location的使用,在Bison手册里给出的Calculator的例子里面,使用stdin作为输入,在lex文件里定义了# define YY_USER_AC...

2013-04-10 20:53:00 542

转载 符号化表达式设计(一)

要实现一个类似于matlab可以计算表达式的程序,例如: x = agauss(4, 0.3, 1) /* agauss(u, s, d) 表示产生类似于高斯分布的随机数,u表示平均值,s表示方差sigma,d表示允许的最大偏离值。 */ y = x^2 - x; print eval(y) /* eval(x) 表示对x进行求值 */与一般的计算器不一样,求值不是实...

2013-03-28 11:30:00 629

转载 使用两次Hash的Hash表——Twice_Hash_Map

先回顾一下hash表的相关内容,STL里面的unordered_map和map。使用unordered_map,通过hash函数,将key映射到一个位置,如果这个位置原本没有值,那么就可以将这个key作为唯一的下标来访问这个位置。但是如果这个位置已经被占了,那么就需要比较这个key和已经存在的下标是否一样。所以unordered_map需要提供key的hash和等于函数。由于是使用h...

2012-12-28 13:04:00 219

转载 Machine Learning(2)——k-nearest neighbor算法

KNN是最简单的分类方法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。参考,http://www.cnblogs.com/biyeymyhjob/archive/...

2012-11-14 16:27:00 124

转载 C++中各种类成员的内存分布

在C++中,标准库里面的容器,如vector,list都可以动态增长,如果把这些容器作为某个class的成员,那么这个class的内存是怎么分配的呢?写了一个简单的程序测试一下,如下,#include <string>#include <vector>#include <list>#include <iostream&gt...

2012-11-07 22:15:00 106

转载 Machine Learning(1)——k-means算法

在OpenCV Maching Learning部分,实现了一些经典的机器学习算法,并且每个算法都有相应的例子,所以我觉得可以从这里开始学习机器学习算法。K-means算法应该是比较简单的机器学习算法,就先从这个开始学习。K-means 算法是很典型的基于距离的聚类算法 。从二维图像的例子来看,图像上有很多个点,为了将这些点按他们相近的距离分成一簇一簇的,假设要分成k簇,k-me...

2012-11-03 19:12:00 127

转载 delete与double free

在看一些C++的文章的时候,经常会看到关于delete与free的区别,delete不需要检查指针是否为NULL。如下面一篇文章http://www.cnblogs.com/zhuyp1015/archive/2012/07/20/2601698.html。但是有时候,又会看到由于delete引起的double free or corruption,我们可以写一个很简单的程序,来测试...

2012-10-29 21:51:00 400

转载 OpenCV(1)——基础数据结构CvMat

在OpenCV中,矩阵是一个基础的数据结构,在CvCore中。在较早版本里面,使用的是C语言实现的struct,较新的版本里面有C++实现的class。下面分别介绍一下这两种使用方法。CvMat参考http://www.opencv.org.cn/index.php/Cxcore%E5%9F%BA%E7%A1%80%E7%BB%93%E6%9E%84在OpenCV的中文首页上...

2012-10-28 18:15:00 114

转载 LLVM初体验——LLVM,Clang和libc++的编译和安装

一直想试试这个LLVM的,据说错误提示信息比GCC好,C++11支持的也更多。今天编译的时候,发现用了几个C++11特性了,gcc4.4没法编译,于是想,那就尝试一下LLVM吧。既然是想安装比较新的版本的LLVM,新立得软件包上的肯定不是好的选择。想用预编译好的.deb包,却发现不支持ubuntu10.04,好像11.10之后的是可以用deb包的。那就源代码编译吧,这应该总是可以的。...

2012-10-20 20:56:00 1071

转载 enum class的输出重载

之前纠结enum class,其中一个问题就是,要输出type的名字,方便调试。今天尝试了一下输出重载,没想到竟然可以。测试如下,#include <iostream>using namespace std;enum class Type{ TEXT, _EOF};ostream& operator <&l...

2012-10-13 13:31:00 637

转载 enum class的基于namespace的实现

之前实现的枚举类enum class虽然达到了当时期望的功能,但现在在用的时候出现了一些问题。比如新定义了一个Token的类,定义如下,class Token{public: Token(){} Token(int tp, string tx) { type = tp; text = tx; } ...

2012-10-08 18:29:00 145

转载 C++虚函数与多态

虽然写过一些C++程序,有类有继承,但对虚函数和多态用的不多,最近想尝试一下多态,却出了些问题。于是不得不重新来学习虚函数与多态。简单的示例程序如下,class Lexer{public: Lexer(){} Lexer(string t){ name = "Lexer"; text = t; } ...

2012-10-08 14:38:00 149

转载 可以继承的枚举类

在实现lexer和parser的过程中,要定义token的类型。《编程语言实现模式》中使用的是java代码,直接定义static int TEXT = 1;并且可以在lexer扩展的时候继承到实际使用的lexer里面。但C++定义类的static成员时,必须在外面单独的进行初始化,对这一点不是很爽,在C++11中,实现了enum class,先看看这个enum class能不能满足...

2012-10-07 12:31:00 446

转载 词法分析Simple Lexer

以前尝试阅读《编译原理》,但都没有读下来,现在看《编程语言实现模式》,感觉轻松多了。其实,目前我只对解析感兴趣,只要看这本书的第一部分解析起步就可以了,确实没有必要去啃《编译原理》。下面就是学习的内容了。解析,分为两步,先是进行词发分析,将输入转换成一个一个的Token,然后是进行语法分析。一个一个的Token组成语句,对应一定的语法。根据这些Toke,匹配一定的语法。词法分析器,lex...

2012-10-06 17:57:00 161

转载 Parser简介

开始看《编程语言实现模式》,补习了一下Parser的基础知识。英文是Wiki上的,中文是自己理解翻译的。Wiki LALR parserhttp://en.wikipedia.org/wiki/LALR_parserin 1965, Donald Knuth invented the LR parser (Left to Right, Rightmost derivation). T...

2012-10-05 16:17:00 705

转载 Matplotlib简介和pyplot的简单使用——输出eps格式图像

最开始使用Matplotlib,一是因为它不需要像Matlab一样花很长时间启动一个图形界面,二是它可以直接保存为.eps格式。在图像显示出来之后,在左下角有几个按钮,最后一个就是保存,在保存的对话框选择.eps格式即可。另一种方式就是在程序里面使用pyplot.savefig(name,format="eps"),可以用format指定格式为eps,也可以不使用format,而是写在n...

2012-10-02 13:31:00 2338

转载 Matplotlib简介和pyplot的简单使用——直方统计图和轮廓曲线

这次介绍pyplot如何画直方统计图,并且画出最合适的轮廓线。这是Matplotlib自带的一个例子,示例程序example/pyplot_examples/histdiagram_demo.py。先看效果图,在看代码,#!/usr/bin/env pythonimport numpy as npimport matplotlib.mlab as mlabim...

2012-09-30 16:56:00 155

转载 Matplotlib简介和pyplot的简单使用——Artists

这次介绍Matplotlib里面画图的结构,各种Artists。之前只是知道怎么用pyplot画图,没有去理解pyplot,现在整理一下自己的理解。在pyplot(或者是更全一点的matplotlib)里面,有两类Artists,一个是primitives,元素,表示我们想要画出来的标准的图像对象,像Line2D(二维的曲线),Rectangle,Text,AxesImage等;...

2012-09-29 08:56:00 159

转载 Matplotlib简介和pyplot的简单使用——局部放大图

前面说过的,有怎样画局部放大图的,例如左边放原图,右边放局部放大的图,并且在原图中用一个方框或者什么,把要放大的部分框起来,需要的话还可以用两条线从方框指向放大的图,效果如下图所示,这里主要介绍如何画方框和两条线。画方框,使用了画连接方框四个顶点的四条线段就可以了,从某个点绕个圈再回到起点,就画出了方框,使用pyplot(x,y),还可以方便地指定颜色,线宽等。然后是画跨子图的线...

2012-09-28 09:43:00 2486

转载 Matplotlib简介和pyplot的简单使用——文本标注和箭头

在使用pyplot画图的时候,有时会需要在图上标注一些文字,如果曲线靠的比较近,最好还能用箭头指出标注文字和曲线的对应关系。这里就介绍文字标注和箭头的使用。添加标注使用pyplot.text,由pyplot或者subplot调用。下面是可以选择的参数,text(tx,ty,fontsize=fs,verticalalignment=va,horizontalalignment=ha,.....

2012-09-27 16:53:00 294

转载 Matplotlib简介和pyplot的简单使用——subplot

之前介绍了pyplot里画简单的数据曲线,接下来介绍subplot相关的内容。subplot是为了在一张图里放多个子图,与Matlab里的subplot类似。pyplot是一个有状态的对象,包含了当前的图,画图区域,等。pyplot通过调用subplot或者add_subplot来增加子图,如p1 = plt.subplot(211) 或者 p1 = plt.subplot(2,...

2012-09-27 08:57:00 135

转载 Matplotlib简介和pyplot的简单使用

最近要花一些图,本来是打算用matlab的,但是matlab有时候莫名其妙的挂掉,忍受不了,便找到了matplotlib。我熟悉并且喜欢Python,所以matplotlib替代了matlab。使用了几天,感觉还好,不过觉得文档不够全,网页版的有些链接打不开,pdf版本内容也就那么多,很多想找的内容都找不到,于是去看源码。下面整理一些使用心得。主要是用到matplotlib里面的py...

2012-09-17 15:53:00 181

转载 list的排序和比较函数作为参数传递

前几天使用list的排序功能,出现了一点问题,来总结一下。定义一个简单的节点类,包含一个字符串和一个整数,并重载了小于操作,根据整数的大小进行比较。class Node{ public: Node(string nm,int i) { name = nm; id = i;...

2012-09-06 19:51:00 140

转载 Linux下Eclipse的PyDev和CDT的安装和配置

  开始配置编程环境,主要试Python和C/C++的环境,考虑使用Eclipse的PyDev和CDT。  先是安装Eclipse,软件管理器提供的版本是最新版本,但是下载速度过慢。在官网上直接下载要快很多。所以最好是从官网下载。  Eclipse的压缩包解压之后,就可以运行Eclipse了。可以考虑把它放到/usr/local/下面。然后给Eclipse建立一个快捷方式。 ...

2012-06-20 17:30:00 84

转载 Linux下的词典GoldenDict安装和使用

  今天折腾了一下Linux Mint下的词典,自带的词典程序不知到怎么添加词典,查了一下,用的比较多的是GoldenDict,StarDict。比较了一下,感觉GoldenDict的界面比StarDict要好一些,于是安装了GoldenDict。  GoldenDict默认带的试英文的Wikipedia,需要安装英汉词典。于是找到了这份链接,http://xinyo.org/arc...

2012-06-20 17:29:00 612

转载 Linux下的Latex安装和中文支持

  需要安装latex,需要支持中文,这个问题一直很头疼。今天折腾了半天,总算搞定了,等搞定之后,发现还是很简单的。总结一下,希望给大家一个参考。  首先是安装包的选择,当然首选texlive,但是不是软件管理提供的texlive,也不用自己去下载texlive的镜像,而是从这里http://tug.org/texlive/quickinstall.html 下载一个安装器,它会帮你...

2012-06-17 12:31:00 212

转载 开始使用Linux Mint

  考完试,再来折腾一下电脑。Windows已经到了开机3分钟还不能用的情况,Ubuntu下面的各种文件也是各种混乱,图片啊,不知到下载下来干嘛的压缩包啊。感觉的没用的全部删掉,然后重装个系统,一切基本上都是新的,感觉多好。  对Ubuntu12.04的感觉其实还是不错的,不过每次打开多个文件夹,要在文件夹之间切换的时候,点左边的快捷启动栏的文件夹图标,响应太慢了。看着Linux M...

2012-06-17 00:02:00 99

转载 Algorithm Course Review(7.1)

  第7章,动态规划,Dynamic Programming  又是动态规划,上一次想整理动态规划,结果还没有整理完,实际上是没有整理的动力了,整理一道题都好费时间的。  现在又要整理,这次能整理多少了?已经开始写了,那至少有些成果吧。  最长公共子序列问题  书上例题,先简单分析一下,然后看与之类似的一个问题。  给出两个长度为n和m的字符串A=a1a2..an和B=b1b2..b...

2012-06-16 13:51:00 65

转载 Algorithm Course Review(6.1)

第6章,分治法,divide & conquer  分治,分而治之,先把问题划分为小问题,先解决小问题,然后把小问题的解组合得到的大问题的解。这跟归纳法类似之处在于,都是先解决小问题,再由小问题得到大问题的解。只是归纳法中小问题的解与大问题的解之间是递推关系,分治法多个小问题之间是并列关系。  经典算法有合并排序,快速排序,大整数乘法,矩阵分块乘法,寻找第k小元素,最近点...

2012-06-16 13:49:00 95

转载 Algorithm Course Review(14.1)

  第14章,随机算法,random algorithm。  随机算法,当算法在执行过程中面临一个选择时,随机行选择常比最优选择快,因此随机算法可以在一定程度上降低算法的复杂度。  由于随机过程的存在,对所求解问题的同一个输入,可能得到完全不同的输出。  随机算法一般分为四类,数值随机算法,蒙特卡罗(Monte Carlo)算法,拉斯维加斯(Las Vegas)算法和舍伍德(Sher...

2012-06-16 13:38:00 117

转载 KMP字符串匹配算法

复习算法,整理一下这个KMP算法。给定一个长为n的字符串S,和长为m的模式字符串P,判断P是否在S中出现,如果出现给出位移。直接的想法就是,循环,从S的第i位开始,比较S[i,..,i+m-1]与P是否相同,这样的循环要n-m+1次,每次循环的时间复杂度O(m),那么总的时间复杂度就是O(nm)。对字符串的查找有更快的线性时间算法,那就是KMP算法。K就是Knuth。KM...

2012-06-16 13:37:00 81

转载 Algorithm Course Review(5.2)

  归纳法这一章里提到的其他算法有整数幂,多项式求值,生成排列和寻找多数元素的算法。  整数幂算法中,x^n,当指数n为偶数时,可以先求解y=x^(n/2),然后y=y^2即得到结果,当n是基数时,y=x^((n-1)/2),y=y^2,y=xy,只需要补充一步。当然,求解x^(n/2)是直接递归调用整数幂的过程。  多项式求值,将多项式改写为嵌套乘法的形式,以减少乘法操作的次数,使...

2012-05-15 20:42:00 69

转载 Algorithm Course Review(5.1)

  第五章,归纳法,Induction。  对于带有参数n的问题,在寻找这类问题的解时,有时可以从求解一个带有小一点参数的相同问题开始,如参数是n-1,n/2等,然后再把解推广到参数为n的情况。这个过程可以用数学归纳法证明。如数学归纳法有个前提条件一样,只有在知道如何求解参数小于n的同样问题时,这个递推归纳的过程才能进行。所以这种算法过程也很容易的可以写成递归。  典型的例子,选择排...

2012-05-15 19:43:00 64

转载 Algorithm Course Review(1.2)

  几种经典的查找和排序算法。  查找算法有线性查找,二分查找。线性查找就是遍历所有元素,直到找到目标元素,时间复杂度为O(n),相对于输入规模是线性的。二分查找,在数组已经排序的情况下,可以进行二分查找,每次缩小一半的查找范围,时间复杂度为O(logn)。需要注意的是,算法里面的log表示log2.  这两个算法的代码如下:#include <vector>...

2012-05-13 21:28:00 67

空空如也

空空如也

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

TA关注的人

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