之前也看过别人写的一些单元测试框架,google的gtest算是比较有名的了,还有其它一些,基本实现都大同小异。总的来说,gtest显得有些重量级,另外的一些,测试用例不能分组,所有的用例只能一起运行,感觉不是很方便。周末的时候,折腾了一个相对比较轻量级的单元测试框架,命名为ZTest, 通过定义不同的测试类,可以支持对用例进行分组。下面从四个方面,对ZTest做一个介绍:
1. ZTest是什么?
ZTest是一个轻量级的c++程序单元测试框架
2. 如何获得ZTest?
可以从google code:http://xiao5geproject.googlecode.com/svn/trunk/ztest 处获得ZTest的源码。
3. 如何使用ZTest?
阅读全文…
好久没用UML的东东了,有点记不太清了,最近要用到了,做个简单的复习。UML中类之间的关系一直让人觉得很容易混淆的东东,这里记录一下今天复习的时候整理的笔记,希望对感兴趣的朋友有所帮助。
1. 关联
关联用来描述类与类之间的连接关系。关联一般是双向的,即关联的对象双方彼此都能与对方通信。换言之,如果两个类的对象之间存在可以互相通信的关系,或者说对象双方能够感知另一方,那么这两个类之间就存在着关联关系。
阅读全文…
本文是手把手教你玩转GDB的第三篇,主要内容是介绍一些在程序调试过程中最常用的GDB命令,废话不多话,开始今天的正题。
1.attach process-id/detach
(1)attach process-id: 在GDB状态下,开始调试一个正在运行的进程,其进程ID为process-id
(2)detach: 停止调试当前正在调试有进程,与attach配对试用
2.kill
(1)基本功能:杀掉当前GDB正在调试的应用程序所对应的子进程
(2)如果想不退出GDB而对当前正在调试的应用程序重新编译、链接,可以在GDB中执行kill杀掉子进程,等编译、链接完后,再重新执行run,GDB便可加载新的可执行程序启动调试
3.多线程程序调试相关:
(1)thread threadno:切换当前线程到由threadno指定的线程
(2)info threads:查看GDB当前调试的程序的各个线程的相关信息
(3)thread apply [threadno] [all] args:对指定(或所有)的线程执行由args指定的命令
4.多进程程序调试相关(fork/vfork): 阅读全文…
These days, I always feel tired, and even bored. I didn’t know why, but I really do not want to be like this. Life is beautiful , and there’s lots of things waiting for me to do. Maybe, I just need some time to take a break. Life is a mirror, if you smile at her, she will smile at you, too. Just keep smile, keep smile to everyone, keep smile everyday, enjoy the life!
本文是《手把手教你玩转GDB》系列的第二篇,主要内容是用GDB调试程序中比较常用到的断点(breakpoint)、监视点(watchpoint)和捕捉点(catchpoint)。虽然说这三类point的功能是不一样的,但它们的用法却极为相似。因此,本文将以断breakpoint为例,进行详细的介绍,关于watchpoint和catchpoint的介绍就相对比较粗略,相信读者朋友如果能够理解breakpoint的部分,那么便可以触类旁通,学会watchpoint和catchpoint的用法。
1. Breakpoint: 作用是让程序执行到某个特定的地方停止运行
(1)设置breakpoint:
a. break function: 在函数funtion入口处设置breakpoint
b. break +offset: 在程序当前停止的行向前offset行处设置breakpoint
c. break –offset: 在程序当前停止的行向衙offset行处设置breakpoint
d. break linenum: 在当前源文件的第linenum行处设置breakpoint
e. break filename:linenum: 在名为filename的源文件的第linenum行处设置breakpoint 阅读全文…
今天是个特别的日子,中国人的情人节——七夕,选择在这一个日子来写这篇文章,纯粹是偶然,首先祝愿所有的朋友们都有情人终成眷属吧
。一年前的我,走出校园,加入整天忙忙碌碌的上班一族;现在的我,对于生活、工作没有刚来深圳时的那份新奇,一切都在有条不纹的进行着。看着今年一批批刚入职的毕业生同事,想想一年前的自己,一切都是那么的熟悉,但却又离我渐渐地远去。现在我需要的不再仅仅是刚刚入职时那会儿的满腔的热情,更为需要的是对自己职业生涯的深入思索及规划,今后的路该怎么走,怎样才能走得更远。
过去的一年,总体上来说,经历了一些事情,也让自己收获了一些。工作上的事情,基本都已步入正轨,所有的事情基本都能处理的让大家都满意吧,当然首先是要让自己满意。互联网行业的从业者,加班是家常便饭,我也不例外,但是我总觉得,付出与回报是成正比的,这么想着,自己也就觉得比较欣慰了。 阅读全文…
已经有20多天没有更新博客了,甚感罪过,不是因为忙的没时间更新,而是因为前段时间,博客主机被封的缘故。刚开始开博的时候,用的是华夏名网的主机,后来因为经常出问题,而且客服态度也不怎么样,就把那边的主机退了。后来和阿祯合搞了bluehost的主机,国外主机,除了速度慢点,其它都挺好的。但是前段时间,突然不能访问了,开始我还以为是主机出啥问题了,去问客服,结果人家说一切正常。于是,我用just-ping ping了一下,果然只有中国ping不通,全球其他地方都可以,于是断定是被国内给和谐了。因为我自己的博客是中规中矩的,没有什么不和谐的内容。想必是因为共享IP的缘故,同IP的其他站点上有不和谐的内容,被天朝给和谐了,相当杯具。于是联系客服,说要是买一年30$的独立IP才可以恢复,最后决定还是换主机吧。最终还是搞了国内主机,也就是现在这个。从与客服周旋,到down数据,到把新的主机搞好,中间的20多天,一直不能访问。造成的后果相关杯具: 阅读全文…
写在最前面:GDB是unix相关操作系统中C/C++程序开发必不可少的工具,它的功能之强大,是其它调试器所不能匹敌的。但是,现实的工作中,有很多开发者因为GDB本身入门门槛比较高,而被拒之门,与如此强大的失之交臂。笔者在近两年的C/C++开发工作中,对GDB本身的有一点研究,在这里总结出一系列《手把手教你玩转GDB》的文章,一方面权当是对自己经验的一个总结,一方面也是真的想能够对刚接触GDB的开发者朋友带去一些帮助,让更多的人来使用如此强大的工具。今天推出第一篇:
第一部分 牛刀小试:启动GDB开始调试
1. 启动GDB开始调试:
(1)gdb program ///最常用的用gdb启动程序,开始调试的方式
(2)gdb program core ///用gdb查看core dump文件,跟踪程序core的原因
(3)gdb program pid ///用gdb调试已经开始运行的程序,指定pid即可 阅读全文…
在google code上建立了一个名为“小武哥的开源项目”的project, 地址是:http://code.google.com/p/xiao5geproject/(也可以用http://code.wuzesheng.com进行访问)
,
建立这个项目,基于以下几点考虑:
1. 给自己的代码找一个栖身之所,让自己的代码随时随地处于“可用”状态
2. 积累自己工作、学习中所写的一些相对比较独立的代码,形成自己的代码库
3. 把自己的代码分享出来,希望对需要的朋友有所帮助,少走一些弯路,少做一些重复的工作
4. 把自己的代码分享出来,希望感兴趣的朋友能够指点一二,让我能够把代码写得越来越好,大家共同进步 阅读全文…
写在前面:本文通过构建一个电影推荐系统,深入浅出的介绍推荐系统相关的概念、算法,让读者朋友能够在对推荐系统有比较全面的认识的基础之上,能够轻松地构建出自己的推荐系统。
1. 什么是推荐系统(Recommendation System)
推荐系统是指根据一个群体的偏好,来为群体中的成员提供推荐的系统。现实生活中这样的例子很多,比如豆瓣(Douban.com)读书中的“豆瓣猜”功能,它根据你看过的一些书和相关评价,与整个豆瓣社区其它会员看过的书与评价经过一系列的计算,就能给你推荐一些你没有读过的,但有可能感兴趣的书(如下图所示):
这是我读过的或者正在读的书:
阅读全文…
本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf。因此,本文首先会介绍一些google protobuf相关的内容,让读者朋友对google protobuf有一个初步的印象,然后,再开始进入正题—-深入浅出地介绍google protobuf中用到的编码规则。下面言归正传,开始今天的话题。
1. Google-ProtoBuf是什么
ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。
ProtoBuf可以支持多种编程语言,目前已经C++, Java和Python,本文中所前的内容用到例子的话,会以C++为例。
2.如何得到Google-ProtoBuf
ProtoBuf在Google Code上的主页是:http://code.google.com/p/protobuf/, 感兴趣的朋友可以在这里下载ProtoBuf的源码,也可以在这里阅读ProtoBuf的详细的文档。 阅读全文…
时间一点点的流逝,生命一天天的延续,每天都忙忙碌碌,每个人都如此,忙碌着,却不知道为了什么, 抑或是为了谋生,但是终点在何处。
生活需要激情,人生需要目标,失去了它们,生命的意义何在?每个人都会迷失,失去自我,不知道如何前行。
向前,每个人都向望着,但是在这个过程中,人们背负的东西越来越多,很多人都被压得爬了下来,停止了前进的步伐。
寻找自我,找到真正的自己,找到自己前进的方向,每天都充满对生活的无限激情,向前。
在觉得累的时候,减减自己身上的重量,积蓄充足的力量,为了继续向前做好准备。
生命不止,向前不息,寻找迷失的自己,充实每一天!
今天在网上搜索到的,在这里把需要的内容摘记一下,权当是给自己做个笔记,以备后面查看、使用。
目前 Google Chrome 源码已经公布了,有兴趣的软件开发者、程序员可以从 chromium.org 服务器使用 SVN checkout Google Chrome Source Code,自定义自己的浏览器。
Google Chrome 源码下载地址 :
阅读全文…

最近,觉得很累,各种累
事情永远都是做不完的,但这不是关键
心灵的疲惫
想找个没有人的地方休憩
静下心来,思考一番
自己想要的究竟是什么
光阴荏苒
过去的都将成为回忆
但是,不能被尘封
漫漫长路
我将继续前行
前方是什么,终点在哪里
今天,观察了一下这一段时间以来,从搜索引擎到我博客的来的流量,发现一个很明显的规律:从周一到周五来自搜索引擎的流量相对比较稳定,到了周六、周日,都会有比较明显的下降,下图是截取的最近三周的从谷歌来的流量的统计,数据来自CNZZ。去掉今天的统计(因为今天到目前为上还没有完全统计出来,所以数据不具有可对比性),看前面三周的统计,”周末效应”还是十分明显的。下面来分析一下导致这种效应的具体原因。 阅读全文…
近期评论