Web Analytics

C++咬文嚼字-'Functions'

关于Functions,Bjarne Stroustrup在’The C++ Programming Language’一书中是这么开篇的:‘The typical way of getting something done in a C++ program is to call a function to do it.’;另外他还阐述了一个使用Functions的原则:‘A function cannot be called unless it has been previously declared.’。 ...

March 13, 2007 · 5 min · Tony Bai

C++咬文嚼字-'Evil cast'

Cast也被称为"Explicit Type Conversion",即显式类型转换,在传统C中强制转型(cast)只有一种语法形式(T)e。Bjarne Stroustrup在’The Design and Evolution of C++’(以后称作D&E)一书的14.3小节开始就说了’无论是从语法还是从语义上, Cast都是C++里最难看的特征之一’,所以他要为cast提供A New Cast Notation. ...

March 12, 2007 · 4 min · Tony Bai

C++咬文嚼字-'0 or NULL'

C程序员和C++程序员在声明空指针时做法常常是不相同的。 C程序员常常如下做: int *ptr = NULL; C++程序员则是听从Bjarne Stroustrup或者其他C++大师的教诲,坚定地如下做: int *ptr = 0; ...

March 10, 2007 · 3 min · Tony Bai

C++咬文嚼字-'Hijack const'

晚上无意翻看Bjarne Stroustrup的’The C++ Programming Language Special Edition’(英文版)第94页,章节5.4 Constants一节,看到这么一句原文’C++ offers the concept of a user-defined constant, a const, to express the notion that a value doesn’t change directly.‘字眼就在directly上,既然不能directly change,那我试试indirectly change。 ...

March 9, 2007 · 3 min · Tony Bai

工作中的故事-0是'TRUE'还是'FALSE'?

这个故事源于今天测试组测出的一个BUG,BUG被测试人员转给了我,故事便从这里开始了。 我们的系统是一个后台服务器程序,用C写的,运行在Solaris上,数据存储在数据库中,每次系统启动都要从数据库中读取配置数据。系统根据配置数据对输入的消息数据进行处理。今天的这个BUG现象就是对于一定的输入消息,系统根据配置数据的指导进行处理,结果得到的结果本应该是A,但是却得到了B。 ...

January 17, 2007 · 3 min · Tony Bai

编译Ethereal On Windows

最近在研究项目下一期中新增的信令跟踪功能,在这个开源盛行的时代,开源工具当然是首选。我们发现了Ethereal,一款强大的网络分析工具包。我们不仅仅要使用Ethereal,而是在Ethereal上做二次开发,增加一个新dissector或者一个plugin,用来分析我们自己的应用层协议。 之所以选择Ethereal还有一个很重要的原因就是它已经支持300多个协议包了,这说明Ethereal的框架已经很成熟了,在其上面做二次开发具备可行性。我们最终要形成的成果物可能要运行在Solaris上,但是家里的服务器环境都是没有显示终端的,也看不到运行画面,所以我决定现在Windows上作开发,然后移植到Solaris上。Ethereal底层的图形接口采用的是GTK,GTK是一种可在跨平台的图形界面开发包,它屏蔽了不同OS的底层细节,便于我们的程序在各个OS平台上移植。由于GTK的使用,我才觉得我的开发方案是正确的:)。另外开发一个新的dissector涉及到的代码都应该是可移植的,所需的接口Ethereal都已经提供了,调用即可。所以我在想在Windows上开发成功后,拿到Solaris下重新编译后是应该能正确运行的,有些过于理想了^_^。 ...

December 30, 2006 · 5 min · Tony Bai

'画蛇添足'招致的BUG

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! 商务合作请联系bigwhite.cn AT aliyun.com 欢迎使用邮件订阅我的博客 输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦! ...

December 21, 2006 · 6 min · Tony Bai

疏忽大意招致恼人'BUG'

河南项目实施,一波刚平一波又起呀! 前天凌晨,河南又割入很多家SP,昨天早晨上班通过日志发现程序的一个子模块进程隔一段时间重启若干次,通常是每一批数据推过来,就有一次重启的过程,日志中没有打印出出错的标志,进程莫名奇妙的就宕掉了,查看程序环境也没有发现CORE文件或者.assert文件,在代码关键的退出区域加入打印日志,重启系统后仍然有同样的问题。郁闷呀,没办法,在家里搭建测试环境,模拟测试,测试人员果然发现问题了,我定睛瞧看,哇,原来如此,测试的那个哥们是在前台启动的系统,这样shell输出的信息也能看得到,也就是说在后台日志文件中看不到的,在前台都看得到,那个模块之所以重启的原因是因为没有找到dso中的函数符号,换句话说就是我们在编译dso时忘记了链接某个.o文件了。这个功能是年初后加入到系统中的,真想不起来当时是如何测试的了,居然这样的问题都没有发现。打开Makefile查看,的确链接串中并没有该.o文件。修改后,重新编译,替换dso,重启程序,一切正常了。事后一想以前没有暴露出该问题是因为以前的消息处理流程没有走到这个分支,由于第二次割接导致出现新类型的消息,走到了该分支,问题因此暴露。 ...

December 16, 2006 · 2 min · Tony Bai

一个'莫须有'的BUG

上周三晚,河南’前线’反馈,河南移动手机用户投诉,经查是话单丢失。查看后的确有蹊跷,按照数据库中录入的原始话单数据来看,这几条记录的确是该生成话单的。之后又有同事发现出现丢话单的问题不仅仅这几条,而是一批一批的。没什么头绪,一夜无话,周四发现每天入库的可生成话单记录数居然比话单多出100万,也就是说我的程序居然少生成了100万话单,按照一条记录1角钱,这也是10万块呀,事情紧迫,问题查找的历程开始。 ...

December 11, 2006 · 5 min · Tony Bai

三谈内存对齐-背后的故事

记得以前曾经两次谈到过内存对齐话题,一次在’也谈内存对齐‘一文中,另一次则是’也谈内存对齐(续)’,今天下午和同事又谈到内存对齐的问题了,遂想继续挖掘下去,看看其背后的故事。 关于内存对齐的中文文章多在介绍对齐的’法则’,比如为什么sizeof(T)和我们估计的T的大小有出入呢等等,而对于内存对齐的本质少有介绍,我在Google上搜索了一阵后,在IBM开发社区上发现一篇叫’Data alignment: Straighten up and fly right‘的文章,其中就有我想知道的关于’内存对齐背后的故事’,下面的很多内容都是来自那篇文章的。 ...

December 8, 2006 · 4 min · Tony Bai