自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (2)
  • 收藏
  • 关注

原创 automake自动生成makefile

生成 Makefile 的来龙去脉 首先进入 project 目录,在该目录下运行一系列命令,创建和修改几个文件,就可以生成符合该平台的Makefile文件,操作过程如下: 0) 建立工程文件 1) 运行autoscan命令 2) 将configure.scan 文件重命名为configure.in,并修改configure.in文件  3) 在project目录下新建Makefi

2009-07-15 14:03:00 560

转载 bash 语法 小结

原文:http://bbs.chinaunix.net/viewthread.php?tid=838702shell脚本基本语法大全:http://bbs.chinaunix.net/viewthread.php?tid=557642sed参数大全: http://bbs.chinaunix.net/viewthread.php?tid=553339find命令大全: http://w

2009-02-06 16:10:00 953

转载 sed参数的用法

本章将以一节一个函数参数的方式 ,介绍所有 sed 提供的函数参数 , 其中有  | s | d | a | i | c | p | l | r | w | y | ! | n | q | = | # | N | D | P | h | H | g | G | x | b | t |  另外 , 在各节中 , 首先简单介绍函数参数功能 , 接着说明函数参数与位址参数配合的格式 , 而其中也一描述 

2009-02-05 17:57:00 2781

转载 svn属性的妙用

svn属性的妙用(svn:ignore)1svn属性的妙用(svn:ignore) 本贴地址:http://www.scmbbs.com/cn/svntp/2008/2/svntp19.php 我们常常用svn status命令来查看本地的文件修改情况,用svn import导进大批量文件,但通常情况下我们本地有许多不需要纳入系统的文件,如编译产生的.cla

2009-02-05 12:31:00 4061

转载 XML文件的解析--libxml库函数解释

libxml(一)                                     摘要 Libxml是一个有免费许可的用于处理XML、可以轻松跨越多个平台的C语言库。这个指南提供它的基本函数的例子。绪论 Libxml是一个实现读、创建及操纵XML数据功能的C语言库。这个指南提供例子代码并给出它基本功能的解释。在这个项目的主页上有Libxml及更多关于它可用的资料。包含有完整的API文档。

2008-10-24 20:57:00 980

原创 ioctl参数详解

ioctl函数 本函数影响由fd参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0:成功    -1:出错 第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操作ARP高

2008-10-04 22:21:00 8187

原创 fcntl参数详细介绍

fcntl()用来操作文件描述词的一些特性。参数fd代表欲设置的文件描述词,参数cmd代表欲操作的指令。 有以下几种情况: F_DUPFD用来查找大于或等于参数arg的最小且仍未使用的文件描述词,并且复制参数fd的文件描述词。执行成功则返回新复制的文件描述词。请参考dup2()。F_GETFD取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时

2008-10-03 23:15:00 1494

转载 友元类的作用

 定义:     class   B     {     private:             B()             {             }     friend   class   A;     };     将导致B无法被除A以外的其它任何class直接继承以后实例化,也就是说,在上面这个定义的基础上,如果你在定义:             class   C:publi

2008-10-03 10:38:00 5807

转载 在linux c++类中的成员函数里创建多线程要注意的地方

如何在linux 下c++中类的成员函数中创建多线程linux系统中线程程序库是POSIX pthread。POSIX pthread它是一个c的库,用C语言进行多线程编程我这里就不多说了,网上的例子很多。但是如何在C++的类中实现多线程编程呢?如果套用C语言中创建多线程的方式,在编译的时候会出现...does not match `void*(*)(void*)..这样的错误。出现这种情况的

2008-09-28 11:32:00 6687

转载 打造最快的Hash表(和Blizzard的对话)

打造最快的Hash表(和Blizzard的对话)開元最近学习了一下Blizzard的MPQ文件格式,颇有一些心得,其中一条就是对HastTable的理解,很想写出来给大家共享,感谢Justin Olbrantz的文章《Inside MoPaQ》,大多认识来源于此。  先提一个简单的问题,如果有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会

2008-09-25 10:37:00 824

转载 GNU C与ANSI C

原帖:[url]http://hi.baidu.com/deep_pro/blog/item/c59470afea08f0ca7dd92a1b.html[/url][quote]1.允许零长度数组GNU C允许零长度数组,在定义变长对象的头结构时,这个特性非常有用。struct var_data s{      int len;      char data[0];};char d

2008-09-24 13:26:00 925

转载 操作符重载手册

http://www.adintr.com/program/article/05.oper.html#gt1

2008-09-23 21:53:00 503

原创 比较有用的linux命令

msn:jinglexy at yahoo dot com dot cn/sbin/blockdev -v --getss /dev/hda1    查看分区区块大小/sbin/blockdev -v --getsize /dev/hda1    查看分区总大小/sbin/chkconfig --list            列出各个run lever下服务状态csplit big.txt 10

2008-09-23 15:42:00 703

转载 自己动手写内核

声明:转载请保留:译者:http://jinglexy.cublog.cn原作者:xiaoming.mo at skelix dot orgMSN & Email: jinglexy at yahoo dot com dot cn这节课我们讲述的内容与操作系统暂无太大关系,但是这些基础函数非常重要,并且在后面的课程中经常用到。这就是我们经常听到的内核库。如果你对这些不是很感兴趣,知道k

2008-09-23 15:21:00 1633

原创 linux下比较全的常用的压缩以及解压用法

大致总结了一下linux下各种格式的压缩包的压缩、解压方法。但是部分方法我没有用到,也就不全,我将随时修改完善! .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------------------------------------- .gz 解压1:gunzip File

2008-09-23 10:26:00 649

原创 关于仿函数的应用

在使用仿函数的时候,主要用到以下两种:一种是以基类std::unary_function派生出来的派生类;另一种是以基类std::binary_function派生出来的派生类。而这两种有什么区别呢?它们之间的区别只是第一种接收的参数个数为一个,而第二种接收的参数的个数为两个。仅此而已。好了,我们还是来几个例子看看:第一种的使用templateclass MeetsThreshold:

2008-09-22 22:07:00 668

转载 常对象与常成员函数的关系

(1) 常对象用const修饰的对象叫对象常量,其格式如下:〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。例:分析下列错误的地方,说明理由;#includeclass Point{ int x, y;public:Point(int a, int b) { x=a; y=b;}Void MovePoint( i

2008-09-18 21:13:00 2794 2

原创 Pointers to Class Members Are Not Pointers(指向类成员函数的“指针”并非指针)

Item 15. Pointers to Class Members Are Not PointersPointers to Class Members:指向类成员的指针注:本条中只涉及到非静态的数据成员--------------------------------------------------------1、类成员的指针之声明: class C {  public:    //.

2008-09-18 15:33:00 761

转载 类中的static data member以及static member functions的用法

要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量:    int a;    string s;    其实就是:    auto int a;    auto string s;    而sta

2008-09-18 15:03:00 1201

转载 深入C++的new

“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{  

2008-09-16 16:31:00 549

原创 巧妙利用union用来判断大小端的应用

struct TestPoint3d{    union    {        struct        {            unsigned int x:1;            unsigned int y:1;            unsigned int z:30;        };        unsigned int loc;

2008-09-16 15:12:00 465

原创 STL中的型别

一、常整数映射为型别Alexandrescu提出的简单而有用的templatetemplate struct Int2Type{    enum { value = v };};template class NiftyContainer{private:            void DoSomething(T* pObj, int2Type)  

2008-09-11 15:34:00 554

原创 编译期检测错误(compile-time assertions)

这里依赖于一个事实:声明下标大小为零或负数的数组是非法的。举个例子#define STATIC_CHECK(expr)  { char unnamed[(expr) ? 1 : 0]; } 这种在编译期检查出错误可以增加程序的健壮性 这里设置一个模板的检查方式template struct CompileTime;template struct Compile

2008-09-11 14:40:00 917

原创 union可以避免c++的类型检查

在阅读到fastdelegate.h中,看到这么一段代码template  union horrible_union{    OutputClass out;    InputClass in;}; templateinline OutputClass horrible_cast(const InputClass input){    horrible_

2008-09-06 16:57:00 779

转载 C++风格的各种类型转换

尽量使用C++风格的类型转换     仔细想想地位卑贱的类型转换功能(cast),其在程序设计中的地位就象goto语句一样令人鄙视。但是它还不是无法令人忍受,因为当在某些紧要的关头,类型转换还是必需的,这时它是一个必需品。     不过C风格的类型转换并不代表所有的类型转换功能。     一来它们过于粗鲁,能允许你在任何类型之间进行转换。不过如果要进行更精确的类型转换,这会是一个优点。在这些类型转

2008-09-06 16:43:00 732

转载 成员函数指针与高性能的C++委托(下篇)

 成员函数指针与高性能的C++委托(下篇) Member Function Pointers and the Fastest Possible C++ Delegates撰文:Don Clugston 翻译:周翔(接中篇)委托(delegate)和成员函数指针不同,你不难发现委托的用处。最重要的,使用委托可以很容易地实现一个Subject/Observer设计模

2008-09-05 13:50:00 567

转载 成员函数指针与高性能的C++委托(中篇)

 成员函数指针与高性能的C++委托(中篇) Member Function Pointers and the Fastest Possible C++ Delegates撰文:Don Clugston 翻译:周翔(接上篇)成员函数指针——为什么那么复杂?类的成员函数和标准的C函数有一些不同。与被显式声明的参数相似,类的成员函数有一个隐藏的参数this,它指向一个

2008-09-05 13:49:00 759

转载 成员函数指针与高性能的C++委托(上篇)

Member Function Pointers and the Fastest Possible C++ Delegates撰文:Don Clugston 翻译:周翔引子标准C++中没有真正的面向对象的函数指针。这一点对C++来说是不幸的,因为面向对象的指针(也叫做“闭包(closure)”或“委托(delegate)”)在一些语言中已经证明了它宝贵的价值。在Delp

2008-09-05 13:45:00 572

原创 多字符串的实现

#define FMTString(msg, msglen, pat) /do /{ /va_list ap;/bzero(msg, msglen);/va_start(ap, pat);/vsnprintf(msg, msglen-1, pat, ap);/va_end(ap);/}while(false)

2008-08-29 10:22:00 377

原创 关于c++中的类以及类的继承需要注意的地方

在c++的类成员的初始化顺序问题上需要注意的是:其成员的初始化顺序不是由构造函数所生命的初始化顺序来决定的,它的初始化顺序是由类中成员数据的生命顺序来进行构造的。现举一例子就会恍然大悟了:#include  class basea{public:basea() {std::cout ~basea() {std::cout }; class baseb{

2008-08-25 16:59:00 622

原创 读effective c++的笔记

允许我介绍80-20定律(参见条款M16)。它指出,在一个典型的程序中,80%的运行时间都花在执行20%的代码上。条款11(好好阅读):用delete去删除一个已经被删除的指针,其结果是不可预测的。条款12:尽量使用初始化而不要在构造函数里赋值。特别是const和引用数据成员只能用初始化,不能被赋值。条款13:类成员是按照它们在类里被声明的顺序进行初始化的,和它们在成员初始化列表中列出的顺序没一点

2008-08-25 16:35:00 534

原创 关于内存中的各个部分

 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放

2008-08-25 15:02:00 545

原创 指针引发的问题(以解决)

 由于前几天写二叉树时犯了很严重的野指针和分配内存错误,害我找错找了N久,所以发一个这方面的资料,很有用的A.指针参数是如何传递内存的?如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例1.1 中,Test 函数的语句GetMemory(str, 200)并没有使str 获得期望的内存,str 依旧是NULL,为什么?示例1.1:void GetMemory(char *p, int

2008-08-25 15:01:00 684

原创 网络数据的打包(pack)

 http://bbs.csai.cn/bbs/view.asp?id=%7B7D79B044-B471-4E15-B837-88196EEFDC15%7D在socket编程的时候,数据的传输一般都经过封装打包才发送到另一端。打包一般都是加入一些额外的信息到raw data中,比如包头一般都加入raw data的前面。包头的大小一般都是比较小的(一般为四字节大小),下面举一个例子,来看看raw d

2008-08-25 14:57:00 1213

原创 epoll技术,及其常用操作

  http://blog.chinaunix.net/u/14063/showart_377118.html(epoll技术的介绍) void addEpoll(int kdpfd, __uint32_t events, void *ptr) { mutex.lock; _ev.events = events; //这里的events是由EPOLLIN | EPOLLOUT

2008-08-25 14:49:00 726

原创 接收网络数据包

 接收网络数据包一种好的方法就是可以建立套接口 字节缓冲 来对网络数据先进行缓冲再在以后进行处理 由于接收的数据包是字节连续的,所以需要设置一块一块连续的内存块来存储网络数据包,因而必须设置内存块的大小: const unsigned int trunkSize = 64*1024; 一般网络数据比较大的话要压缩的,而压缩需要比原缓冲要大的缓冲区: #define unzip_

2008-08-25 14:47:00 1300

原创 创建套接字及设置其属性

  客户端服务端共享的: 在进行套接字创建的时候采用int sock = ::socket(PF_INET, SOCK_STREAM, 0); 设置套接口发送及接收缓冲大小: socklen_t window_size = 128*1204 int retcode = ::setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &window_size,

2008-08-25 14:46:00 2686

原创 获取连接端的地址以及自己的地址

  如果作为服务器端的进程去获取连上它的端地址用getpeername(int sock, struct sockaddr *name, socklen_t *namelen); 而如果想获取服务器进程本地地址采用getsockname(int sock, struct sockaddr *name, sockelen_t *namelen); ­要是想改变套接口sock(本质是套

2008-08-25 14:45:00 820

原创 TEMP_FAILURE_RETRY宏的应用(很好用)

  The GNU library provides a convenient way to retry a call after a temporary failure, with the macro TEMP_FAILURE_RETRY: — Macro: TEMP_FAILURE_RETRY (expression) This macro evaluates expression onc

2008-08-25 14:44:00 10191

原创 singleton模式及static成员数据的继承

 在软件工程领域,Singleton是一种将对象的实例限制为只有一个的一种模式。当系统的所有处理只需要某个对象的一个实例的时候可以适用这种模式。通常情况下,实例存在的越少(最好是一个)系统的性能越好。针对于Singleton的反模式是使用全局变量。   在wikipedia上Java的标准实现是: public class Singleton {   // 通过私有化构造方法,防止在Singlet

2008-08-25 14:41:00 1456

掌握标准c++类

掌握标准c++类,它是阐述c++中类之间的关系

2008-01-21

堆与栈的区别

堆与栈的区别堆与栈的区别

2007-10-26

空空如也

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

TA关注的人

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