摘要: 今天介绍一下gdb,如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。 GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如: > c. 阅读全文
posted @ 2012-02-07 22:58 ~大器晚成~ 阅读(14840) 评论(0) 推荐(2) 编辑
摘要: 上篇文章介绍了makefile的编写方法,相信大家有所收获。本文继续深入makefile,看看还有哪些高级用法可以大大提升我们的工作效率。本文是接着上篇博文——如何自己编写Makefile的,因此如果没有看过上篇文章的,建议先阅读一遍,以便更好地理解本文。 在规则中使用通配符 一个简单的例子 clean: rm -f *.o 表示删除所有.o文件,这很好理解。 print: *.c lpr -p $? touch print 表明print的生成依赖于所有.c文件,$?是一个自动化变量,以后会详细介绍。 文件搜寻 在一些大的工程中,有大量的源文件,我们通常的做法是把这许多... 阅读全文
posted @ 2012-02-06 09:48 ~大器晚成~ 阅读(13610) 评论(0) 推荐(5) 编辑
摘要: 相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云。在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide。其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次。你也可以自己写makefile,让别人对你头来羡慕的目光。 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正。 简单的说,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至可以在makefile中执行shell脚本。makefile带来的好处就是——“自动化编译”,一旦... 阅读全文
posted @ 2012-02-05 15:33 ~大器晚成~ 阅读(138584) 评论(13) 推荐(23) 编辑
摘要: 前一阵子准备毕业论文的开题,一直在看推荐系统相关的论文。对推荐系统有了一个更加清晰和理性的认识,也对推荐算法有了深入了解。借此机会总结分享一下,大家多多拍砖。推荐系统的出现 随着互联网的发展,人们正处于一个信息爆炸的时代。相比于过去的信息匮乏,面对现阶段海量的信息数据,对信息的筛选和过滤成为了衡量一个系统好坏的重要指标。一个具有良好用户体验的系统,会将海量信息进行筛选、过滤,将用户最关注最感兴趣的信息展现在用户面前。这大大增加了系统工作的效率,也节省了用户筛选信息的时间。 搜索引擎的出现在一定程度上解决了信息筛选问题,但还远远不够。搜索引擎需要用户主动提供关键词来对海量信息进行筛选。当... 阅读全文
posted @ 2012-02-04 13:19 ~大器晚成~ 阅读(85112) 评论(15) 推荐(13) 编辑
摘要: 最近使用shell,用到的一些东西,很简单,也没有任何逻辑。写在这里只是为了帮助自己记忆,就当个凌乱的笔记了。希望对大家有所帮助,请多指教1 if else if [ $# -lt 5 ];then help exit 1 else do something... fi 其中 -lt 相当于 < -gt相当于> 2 while 下面的程序将循环执行101次,注意-ge为大于等于 x=100 while [ $x -ge 0 ] do something... ((x=x-1)) //此处特别注意,shell中的运算需要这样写 ... 阅读全文
posted @ 2012-02-02 15:27 ~大器晚成~ 阅读(1341) 评论(0) 推荐(1) 编辑
摘要: 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法。本文将带你深入了解协同过滤的秘密。下面直接进入正题1 什么是协同过滤协同过滤是利用集体智慧的一个典型方法。要理解什么是协同过滤 (Collaborative Filtering, 简称 CF),首先想一个简单的问题,如果你现在想看个电影,但你不知道具体看哪部,你会怎么做?大部分的人会问问周围的朋友,看看最近有什么好看的电影推荐,而我们一般更倾向于从口味比较类似的朋友那里得到推荐。这就是协同过滤的核心思想。换句话说,就是借鉴和你相关人群的观点来进行推荐,很好理解。2 协同过滤的实现要实现协同过滤的推荐算法,要进行以下三 阅读全文
posted @ 2012-02-01 20:03 ~大器晚成~ 阅读(81268) 评论(7) 推荐(14) 编辑
摘要: 有过大文本处理经历的朋友一定都知道awk,这是一种脚本语言,对于处理一定格式的数据还是很方便使用的。下面介绍一下awk的常用方法。如果想系统学习,请看http://doc.lazyhack.net/awk.htm1 awk的内置变量awk所内建的字段变量及其涵意如下:字段变量含义$0一字符串,其内容为目前awk所读入的数据行.$1$0上第一个字段的数据.$2$0上第二个字段的数据....其余类推内建变量含义NF (Number of Fields)为一整数,其值表$0上所存在的字段数目.NR (Number of Records)为一整数,其值表awk已读入的数据行数目.FILENAMEawk 阅读全文
posted @ 2012-01-20 08:22 ~大器晚成~ 阅读(3188) 评论(0) 推荐(1) 编辑
摘要: 前面写了个简单的线性代数系列文章,目的就是让大家在接触SVD分解前,先了解回忆一下线性代数的基本知识,有助于大家理解SVD分解。不至于一下被大量的线性代数操作搞晕。这次终于开始正题——SVD的介绍了。所谓SVD,就是要把矩阵进行如下转换:A = USVTthe columns ofUare the eigenvectors of theAATmatrix and the columns ofVare the eigenvectors of theATAmatrix.VTis the transpose ofVandSis a diagonal matrix. By definition the 阅读全文
posted @ 2012-01-19 10:57 ~大器晚成~ 阅读(21248) 评论(6) 推荐(6) 编辑
摘要: 这一遍进入到核心内容,计算特征值和特征向量。相信有了前两篇的基础,大家不会觉得有什么障碍了。下面进入正题1 计算特征值 对于矩阵Z = cI, I 为单位矩阵,如果满足|A-cI| = 0。 也就是将A由一个一般矩阵转化为奇异矩阵(行列式为0的矩阵叫奇异矩阵)。也就是求A的特征值。 下面是计算方法: 由此可以求得A的两个特征值C1和C2。通过比较得知,C2是最大的特征值,称为主要特征值。(在svd分解中,常常会将最小的几个特征值忽略,以达到抽取特征的目的。)2 通过特征之计算特征向量 满足 (A-ciI)* Xi = 0 的Xi为A的一个特征向量 计算方法如下: 3 通过特征向... 阅读全文
posted @ 2012-01-18 15:16 ~大器晚成~ 阅读(3050) 评论(1) 推荐(2) 编辑
摘要: 之前介绍了矩阵的基本概念,这一篇介绍一下矩阵的运算。1 整体介绍 加法:Z=A+B zij=aij+bij 减法:Z=A-B zij=aij-bij 乘法:Z=A*B zij=ai1*b1j+ai2*b2j+...+aim*bnj 与数字的乘除:Z=c*A zij = c*aij; Z= A/c zij = aij/c 2 加法运算 Z = A + B zij = aij + bij也就是要将两个矩阵相应位置的元素加起来,当成新矩阵的新元素。3 减法运算 Z = A - B 将两个矩阵相应位置的元素求差。 4 乘法运算 5 与数字乘除 6 正交矩阵如果一个矩阵乘以他的转置,得... 阅读全文
posted @ 2012-01-18 14:04 ~大器晚成~ 阅读(3603) 评论(0) 推荐(0) 编辑