- 博客(26)
- 收藏
- 关注
原创 C++编程规范笔记前言及目录
买这本书的动力是因为I’m a fan of Andrei,原因更加简单,因为他对模板的操控能力完全超出了我对模板的认知。Loki在我手头上任意一个编译器都无法编译通过,这让我倍加郁闷,无法深入的探索Loki的深层实现。如此天马行空的人规规矩矩写书是什么样子的?我非常期待。 组织和策略问题 第0条 不要拘泥于小节(又名:了解哪些东西不应该标准化) 第1条 在
2006-07-31 13:17:00 853
原创 SIP基本呼叫流程
SIP信令流程INVITE------------------------------------>100 Trying------------------------------------180 Ringing------------------------------------200 OK-----------------------------------
2006-07-30 16:04:00 2087 1
原创 AIX命令概要
我最痛心的事情莫过于丢了研究生阶段的UNIX笔记,这让我每每想起总是痛心疾首,希望我能通过不断的努力补全以前的努力。这是一个不断增加补全的过程,所以这篇总是处于不断增加、完善的过程中。cp 拷贝文件。可以将一个文件拷贝成另外一个文件。只要带上目标文件名。 del 删除文件。 echo $PATH显示系统环境变量的路径。 cd
2006-07-28 18:29:00 1445
原创 自行释放ACE_Message_Block
在使用ACE_Message_Block的时候可能面临很多种选择,将ACE_Message_Block层层传递,那么有时候会忽略ACE_Message_Block的释放,而ACE_Message_Block一般都是new出来的这样会导致内存泄露。 怎么有简单的办法。办法有,但不完善。auto_ptr是一种,那么将ACE_Message_Block new的指针,放在a
2006-07-28 11:14:00 2072 2
原创 ACE初始化的惆怅
昨天在写一个ACE架构的DLL后,提供给别人调用,其中,这个DLL中启了一个线程。但调用的exe中如果没有初始化ACE_OS_Object_Manager和ACE_Object_Manager,那么在线程启动的时候会出现异常。 一般来说,如果是可执行程序,那么main函数无论是否写成ACE_MAIN,如果引用了ACE的库,那么main函数会被一个宏所替代,这个宏的
2006-07-27 16:32:00 1186
原创 C++数组参数的说明
不要试图欺骗编译器。有这么一个函数,void test(char str[32]){……}想怎么调用这个函数?如果你不想传入参数怎么办?是否可以test(NULL)?呵呵,这是绝对不可以的,编译器认为这个参数的空间你已经申请了,所以在参数压栈的时候会导致程序崩溃,切记。test(NULL)仅限于参数为指针的情况,对数组并不适用。
2006-07-27 10:58:00 1858
原创 Cygwin试用心得
使用Cygwin主要是因为想适应g++编译器,没有想到的是windows下居然g++不能主动使用,所以被迫无奈装了Cygwin。Cygwin只是在Windows下对Linux做了一个仿真,并不代表真正可以运行Linux API的程序。Cygwin的默认安装中不包括g++,如果需要g++的话,需要另外进行安装,在dev中存在这样的选项,我选择了g++以及g++连接器等组件。试用了一下,还比较OK。目
2006-07-27 00:03:00 990
原创 ACE_Condition_Thread_Mutex使用心得
今天小试了一把ACE_Condition_Thread_Mutex,使用的原因是我使用ACE_Event受挫。ACE_Event在Windows下自然好使,然而移植到AIX下就不是特别好使了。为了解决这一问题就使用了ACE_Condition_Thread_Mutex。开始因为粗心,犯了不少错误。现在总结如下。首先,ACE_Condition_Thread_Mutex不等于Eve
2006-07-25 19:52:00 4118
原创 More Effective C++后记及目录
读这本书其实还是花了一点时间的,其中的一些条款的内涵及外延非常丰富。我觉得这是很用心去看的一本书,但在看书过程中,还是出现了浮躁的现象。实际上留给我看书的时间是有点不足,所以又想快些看完。事情总是两难的。 我接下来买了《Effective C++》的第三版,我想这可能是我认真读的最后一本C++读物了,再往后要涉猎的C++的书籍已经不多,充其量是把《C++编程思想》的第
2006-07-24 21:12:00 1169 1
原创 More Effective C++之31
条款31:让函数根据一个以上的对象型别来决定如何虚化 如果函数有两个自变量,而这两个自变量都是继承类,我们如果根据排列组合的办法来实现继承类。RTTI或者只使用虚函数?似乎都不是好办法。Meyers给出的解决方案是自行仿真虚函数表格(Virtual Function Tables)考虑如下代码:#include string>#include #include io
2006-07-24 21:01:00 884
原创 More Effective C++之30
条款30: Proxy Classes(替身类/代理类) 相信么?C++缺乏对多维数组的有力支持.当我申明一个多维数组char strArray[10][10][10],仅仅意味着在栈上分配了1000Bytes的内存.对C++来说,可以理解这是一维数组.那么下面这就不好玩了.int i = 10; char strArray = new char[i][i][i
2006-07-23 17:31:00 864
原创 More Effective C++之29
条款29:Reference counting(引用计数) Reference counting让我想起了Java,当如果想用C++来实现Java的能力的话,那Reference counting必不可少。Reference counting可以节省程序的运行成本,大量的构造、析构、分配、释放和拷贝的代价被省略。Reference counting之实现 cla
2006-07-23 15:55:00 869
转载 周鸿袆:给已经融资成功的公司提个醒
战略不清晰,方向不明确 融资成功之后的企业最容易犯的错误就是变得战略不清晰,方向不明确,因为钱多起来无法控制自己什么都去尝试的欲望,不断的尝试和试挫,导致贻误了公司发展的最好机会。企业要迅速成长,一定要策略非常清晰,方向很明确。 如果拿下围棋打个比喻,一个棋盘有361个点,一个刚刚开始走围棋的企业,肯定觉得哪里都可以放一个子,没有一个定势的
2006-07-23 13:16:00 1097 2
原创 ACE_Message_Queue的超时设置和消息清除
在使用ACE_Message_Queue的时候通常需要有一个等待超时,我先前用的时候,等待超时总是无法生效,但后来改变了后就OK了。 事情是这样的。ACE中是这样说明的,那么这意味着什么?当然我觉得是只有绝对时间才能生效,事实也是如此。param timeout The absolute time the caller will wait until for a block
2006-07-20 10:47:00 3217
原创 More Effective C++之28
条款28 Smart Pointer(智能指针) 智能指针具有非常强大的能力,谨慎而明智的选择能带来极大的好处。我不否认智能指针的能力,虽然我在之前的否认过auto_ptr。可能由于我自身能力的限制,体会不到auto_ptr的好处,但这样的可能性我觉得已经不大了。但auto_ptr是最简单的智能指针,在它的周围存在大量的作品,这些作品包括Boost、Loki、ACE等等,但是可惜的
2006-07-18 21:15:00 877 2
原创 More Effective C++之33
条款33:将非尾端类(non-leaf classes)设计为抽象类(abstract classes) 这一原则是绝对合适的,然而我们在应用的时候往往违反这一原则。我在目前的设计中就违反了这一原则,但好在我的对象都是独立的,不存在相互之间的关联关系,那我需要注意的就是虚函数的实现,这个地方是个比较大的隐患。为什么要这么做?它可以提高代码的健壮度,可靠度,精巧度和可扩充度。
2006-07-18 19:31:00 793
原创 More Effective C++之34
条款34:如何在同一个程序中结合C++和C 我没有混用过C和C++,所谓混用,就是用不同编译器编译obj,然后一起连接,但我想这是否可行值得怀疑。至少我目前不知道合适的编译器组合。 考虑一下C和C++混用,可能产生的问题。Name Mangling(名称重整) 在C++中,因为存在重载函数的问题,为了区分重载函数,C++在编译的时候,会修改函数名
2006-07-17 13:35:00 769
原创 More Effective C++之35
条款35:让自己习惯于标准C++语言 标准C++在这些年发展很快,也许很快下一代标准就要出来了,我现在通常还是用VC6,很多新的特性可能都不支持了.C++最大的特点之一就是支持了标准程序库.差不多分成这些部分.支持C标准函数库、支持strting、支持国别、支持I/O、支持数值应用、支持广泛用途的containers和algorithms。 STL是一组松散的约定,
2006-07-17 13:07:00 770
原创 NMS SIP的一些工程注意事项
我不是做工程的,但这是我的一些工程相关的一些经验总结:1.NMS SIP 1.0不支持re-invite, 如果出现re-invite的情况,消息不会到达应用层,并导致通话出现单通。不要对此大惊小怪。2.NMS SIP的测试license共有8路,并且只支持一个月,一个月后,各安天命。办法还是有的就是重新安装NCC SIP1.0。3.NMS NA2005在重装的时候容易出
2006-07-14 17:37:00 1064
原创 ACE ACE_Time_Value和ACE_Message_Queue的点滴
ACE的ACE_Time_Value是常用的类,它的构造函数explicit ACE_Time_Value (time_t sec, suseconds_t usec = 0);可以用秒和毫秒来构造一个时间段的值。这是在很多地方常用的,比如wait。ACE_Message_Queue是ACE的Queue,是可以选择是否线程安全。MessageQueue中默认要放置堆内存,因为取出和放入的都是指
2006-07-12 18:20:00 3863
原创 字符串处理若干准则
看一下如下代码,存在问题么?char test1[] = "S";char test2[] = "Mytest!";int nSize = min(strlen(test1),strlen(test2));strncpy(test2,test1,nSize); 当然了,最终结果会成为Sytest!,这当然不是我们想要的结果,不过没有办法。这样的字符串处理是不严谨的。
2006-07-10 16:23:00 924
原创 strncpy和memcpy辨析
char * __cdecl strncpy ( char * dest, const char * source, size_t count ){ char *start = dest; while (count && (*dest++ = *source++)) /* c
2006-07-10 16:19:00 1025
原创 strcpy函数
书接上文,从接到Socket中无法得到对方的IP和端口,应该在请求中发送过来。strcpy是比较好用的参数,用来做CString向char*的转换最为合适。char * __cdecl strcpy(char * dst, const char * src){ char * cp = dst; while( *cp++ = *src++ )
2006-07-10 16:07:00 864
原创 DLL版本控制引起的困惑
最近在作一个测试的时候遇到这样一个问题,问题的起因表现是系统启动失败,我找了很多的原因也没有找到什么结果.我所做的努力包括核实软件环境,硬件环境和代码本身.但问题出在了引用的DLL上,在程序的本目录上包含了旧版本的DLL,而当APP更新的时候引用的是新的应用程序的时候就会出现问题.我花了将近48小时来查找这个问题,这让我觉得教训深重.这是一个关于NMS的MSPP的绑定失败的问题,但内在是各种层次的
2006-07-05 18:49:00 1735
原创 RTP不通是因为没接网线
写这篇Blog很感慨,因为昨天工作上遇到了SIP接不通的情况,作为一个开发人员,我觉得比较好的地方是我丝毫没有怀疑我的代码出现问题.我当时怀疑的问题是参数的配置,可能某一个参数存在这样那样的问题,但事实上这些都不是.原因是没有插上网线.今天一开始就想骂人,很愤怒.很实事求是的说,我在面对大压力下,没有足够的冷静.昨天给了我差不多一个小时,但在这一个小时之内,我检查了若干种可能性,但没有具体对硬
2006-07-02 15:02:00 1012
原创 More Effective C++之32
条款32:在未来时态下发展程序 程序设计永远在变,仅仅几年前,STL可能还是一个新鲜的概念,而现在则成了C++的必备素质.这一条款的主要目的是为了提醒读者,多为未来做一些额外的考量.而事实证明证明这些努力必定不会白费. 首先,提供完整的class,即使一些部分目前还用不上.因为对基类的扩展,往往会给派生类带来巨大的影响,所以应当努力将工作提前做到.
2006-07-02 11:25:00 717
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人