自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

海涛的专栏

设计及代码之美

  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 缓冲区设计—进程间通讯(POSIX 共享内存)

在《缓冲区设计-线程间通讯》一文中,完成了BufQueue的模版类的设计。这个模版类定义如下:template >class BufQueue; 其中的模版参数Alloc可以订制为不同的环冲内存形式。在线程间的通讯中,这个参数当然是最简单的,它只要简单的分配空间就可以了,因为同一进程中的线程是共享进程的内存空间的。 但是,如果要在进程间使用这个环形缓冲区,则需要

2009-08-30 22:42:00 2919

原创 缓冲区设计—线程间通讯(C语言程序实现)

有没有接触过C++的朋友看到上篇文章,希望给出C程序的实现。匆忙之中没有以通用的的函数形式给出,而是将缓冲区代码与测试代码混合一个源程序,程序也写得丑陋了一些,仅供朋友们学习实现的原理。程序在linux 环境下已测试通过。   # include # include # include # include  #

2009-08-10 14:11:00 3995 2

原创 缓冲区设计—线程间通讯

书接上回。 上一篇里,我们设计并实现了环形队列的数据结构。同时留下了下面的更具复杂性的问题: 对于push的操作,需要操作前等待队列已经有了空间,也就是说队列没有满的状态。等到这个状态出现了,才继续进行push的操作,否则,push操作挂起。 对于get 的操作,需要操作前等待队列有了数据,也就是说队列不为空的状态。等到这个状态出现了,才继续进行get的操作,否则,ge

2009-08-10 00:18:00 4487

原创 缓冲区设计--环形队列

在程序的两个模块间进行通讯的时候,缓冲区成为一个经常使用的机制。 如上图,写入模块将信息写入缓冲区中,读出模块将信息读出缓冲区。这样使得:将程序清晰地划分模块,建立良好的模块化架构,使得写入和读出成为高聚合,低耦合的模块。对于写入和读出的处理可能产生的快慢不均匀的情况进行平衡,使得整个处理的速度趋于平滑的均匀状态

2009-08-07 01:56:00 22870 9

原创 控制C++中cout及print输出的评论和回答

论坛的lhslktg朋友发了一个贴,大意是说在他的程序里面调用了很多的cout的输出,是否能够使用最快速的方法,使得程序的输出能够定向到一个文件内。我理解这个所谓的快速的方法,就是尽量不要改动原有的程序,至少不要改动程序的内部,而达到这个功能。有朋友给了一个最好的办法,就是命令输出重定位。假如,应用程序的名称为: testcmd,则可以使用下面的命令:testcmd >test

2009-07-30 00:05:00 15281 3

原创 关于C语言12个问题的回复

关于C语言12个问题,我在帖子上回答了部分朋友。现在又看到了一些朋友的评论,在此一起答复。阅论坛内容点击此 [Quote=引用 15 楼 heguodong 的回复:]8. if ( ch == 1 )  {   .......... } if ( ch == 2 )    {   ........... } if ( ch == 3 )  

2009-07-19 16:11:00 1569 1

原创 12个C语言的程序问题

下面的12个C语言的语句是我从实际的应用系统中摘录和简化来的。这些语句都被我列入丑陋代码的类别中。对此,我给出了相应的改善程序和说明。1.if ( strlen(s) == 0 ) if ( strlen(s) )if ( strcmp(s, “”) == 0 )改善:# define isNotEmpeyStr(s) ( (s)[0] != ‘/0’ )# d

2009-07-15 20:28:00 3082 16

原创 C语言中字符串转换浮点数的问题

在C语言的标准库中,提供了atof,strtod等将字符串转换为double类型的函数。 假设 char *str为一个需要转换的字串,则我们可以这样使用: double dval; dval = atof(str); dval = strtod(str, 0); 我们还可以使用 sscanf来进行装换: sscanf(str, “%lf”, &dval); 但

2009-07-15 20:11:00 14815 1

原创 一个C程序的数据类型对齐问题

在应用中,常常有这种情况:在一片内存区内,有一个头的纪录,然后紧接着存放详情纪录。例如: typedef struct  {   short  num;   short  flag;} Head; typedef  struct   {  short  index;  double value;} Detail; 假设

2009-07-06 20:13:00 1209

原创 改善一个劣质的C++代码

在C++论坛里发了一个与本文题目相同的贴子如下:下面是一个我在一个应用系统中发现的我认为很丑陋的一段C++代码.显然,代码的意图是将string中的内容变成相应的小写字母.请大家指出它的问题之所在,并给出改善后的代码.我自已已经有了一个答案,只用一条语句就能实现这个功能.待两日后我给出我的答案.但然,也许你的答案比我的更好. void IniReader::string_lower

2009-07-03 22:26:00 1367

原创 Properties --- C++读配置信息的类(三)

本篇在前两篇的基础上,进一步给出XML格式文件装载的Properties类的实现。如前所述,正是因为我们将Properties设计成为一个模版类,使得装载的过程和方式称为模版的参数,使得Properties成为一个可以适应装载不同方式和格式的配置文件信息的实用类。在前一篇,我们实现了ini文件格式的装载。本篇我们来实现xml格式的装载。首先来说明一下我们规定的xml的格式。下面是一个实际的xm

2009-07-02 21:10:00 1635

原创 Properties --- C++读配置信息的类(二)

在第一部分中,列出了Properties的定义的头文件。这个文件中的load及loadXML接口参数是一样的。当初设计这个类的时候,主要是读ini格式的文件,后来又有了读XML格式文件的需求,才增加了loadXML的函数。这样以增加函数接口来扩展功能的方式显得比较丑陋,同时也说明,Properties的设计不能满足于读不同文件格式的需要。下面是针对这个问题,作出的重新的设计:  1

2009-06-30 22:38:00 3172

原创 Properties --- C++读配置信息的类(一)

在开发实践中,积累了一些通用的C++ 类库,在此写出来给大家分享。也希望能给出更好的建议。工具库的名字是xtl——Properties 类。分两部分介绍。这篇介绍类的定义。下一篇将介绍类的实现。 。这篇介绍其中的读配置文件的类 下面是类的定义的头文件:   1   2 /*xtl/Properties.h  3   Author: ZhangTao 

2009-06-28 17:39:00 4097

环形队列源程序,配合文章《缓冲区设计--环形队列》。

这是一个环形队列的源程序,配合作者的文章《缓冲区设计--环形队列》。程序是一个C++模版类。

2009-08-07

空空如也

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

TA关注的人

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