自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(31)
  • 收藏
  • 关注

转载 Linux下程序的Profile工具

我们在写程序,特别是嵌入式程序的时候,通常需要对程序的性能进行分析,以便程序能够更快更好地运行,达到实时(real-time)的目的。如果程序很大,分析起来就很困难。如果有个工具能够自动进行程序的性能分析,那就最好了。这里介绍一种Linux下程序的Profiling工具----GNU profiler。GNU gprof能够打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的

2011-06-30 15:05:00 756

转载 bloom_filter算法的C++实现

C++语言: bloom_filter算法的C++实现#include #include #include unsigned int jshash(const char *s, unsigned size);unsigned int sdbmhash(const char *s, unsigned size);/* ------------- bloom types and funcs -

2011-06-30 14:31:00 305

原创 关于void* 用法以及调试

在进行类库设计时,因为 不确定类库的使用者具体使用什么类型的指针。 此时都用void*指针, 而C++的类型转转机制,可以把void*类型指针,转换成为 必须的指针类型。具体转换有编译器实现! 命令查看一个void   *型的变量的时候,提示为: "attempt   to   dereference   a   generic   a   pointer   "   ,我该怎样才能查看这一类型的

2011-06-30 13:42:00 776

转载 BloomFilter简介

BloomFilter  Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实例   为了说明Bloom Filter存在的重要意义,举一个实例:  假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能

2011-06-30 12:29:00 327

转载 算法导论 Quicksort

Chapter 7: QuicksortQuicksort is a sorting algorithm whose worst-case running time is Θ(n2) on an input array of n numbers. In spite of this slow worst-case running time, quicksort is often the be

2011-06-30 09:27:00 475

转载 makefile中的patsubst

函数名称:加前缀函数—addprefix。函数功能:为“NAMES…”中的每一个文件名添加前缀“PREFIX”。参数“NAMES…”是空格分割的文件名序列,将“SUFFIX”添加到此序列的每一个文件名之前。返回值:以单空格分割的添加了前缀“PREFIX”的文件名序列。函数说明:示例: $(addprefix src/,foo bar) 返回值为“src/foo

2011-06-29 13:10:00 10078 2

转载 单链表快速排序

今天在学习《程序员使用算法》时,看到了单链表快排序这一节。初看时感觉程序有很大的问题,但是细细品味之后却发现程序设计的极为巧妙,同时又深感自己C语言指针知识之不牢固,特别是指针的指针方面的知识。单链表的快排序和数组的快排序基本思想相同,同样是基于划分,但是又有很大的不同:单链表不支持基于下标的访问。故书中把待排序的链表拆分为2个子链表。为了简单起见,选择链表的第一个节点作为基准,然后进行比

2011-06-29 10:48:00 478

转载 用非递归算法解决Hanoi汉诺塔问题

开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。计算结果非常恐怖(移动圆片的次数)18446744073709551615,众僧们即便是耗尽毕生精力也不可能完成金

2011-06-28 10:33:00 1685

转载 找出2n+1个数中不是成对出现的那个数

给出2n+1个数 其中有n个数是成对出现的 找出里面只出现了一次的那个数假设 这2n+1个数是int的,则借助两个临时变量可以实现目的 假设数据存放在int Data[2*N+1]里 int Find(int Data[],int N) {     int i,int j;     j=0;     for(i=0;i     return j; }原理,同一个数跟本身异或结果为0,而

2011-06-28 09:14:00 541

原创 Socket 传输结构体

typedef struct{char name[20];char age[10];} stu;发送方:..............................stu stu1;strcpy(stu1.name, "myname");strcpy(stu1.age, "30");send(sock, (char*)stu1,sizeo

2011-06-24 21:53:00 730

转载 智能指针的原理及实现方案

 本文主要讨论C++程序设计的一种常用技术——智能指针(smart pointer),主要内容包括引用计数(reference count)和句柄类(handle class)。如果文中有错误或遗漏之处,敬请指出,谢谢!    作者: tyc611, 2007-02-01    当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷

2011-06-21 10:25:00 196

转载 智能指针

最近在做Windows上管理USB手机终端的相关程序。实际情况:Class Phone *symbian = new Phone();Class ConnectManager, Class CommManager都需要对symbian指针进行引用和维护(保留一个拷贝)。但是这样就导致了symbian何时可以被delete?在ConnectManager析构函数中delete?

2011-06-21 10:02:00 272

转载 带外数据OOB与紧急模式URG

A,TCP支持带外数据OOB吗?与紧急模式URG有什么关系?     TCP支持带外数据,但是只有一个OOB字节,TCP的带外数据是通过紧急模式URG实现的.B,我们知道send(sendfd,"ABC",3,MSG_OOB),将发送3个字节的带外数据OOB数据.但是这里TCP又只支持一个字节的OOB,难道丢掉2个字节?     TCP将把紧急模式URG 置位,紧急指针定位第三个字节("C")(这

2011-06-16 23:14:00 2453 1

转载 ulimit配置文件

先看一下ulimit配置文件的内容,下面只是截取了说明性的部分。view plaincopy to clipboardprint?01.# /etc/security/limits.conf   02.#   03.#Each line describes a limit for a user in the form:   04.#   05.#              06.#   07.

2011-06-16 16:17:00 1450

转载 关于SIGPIPE导致的程序退出

收集一些网上的资料,以便参考:http://blog.chinaunix.net/u2/69143/showart_1087349.html     当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。    根据信号的默认处理规则

2011-06-16 13:58:00 261

转载 对EINTR的处理

调用系统调用的时候,有时系统调用会被中断.此时,系统调用会返回-1,并且错误码被置为EINTR.但是,有时并不将这样的情况作为错误.有两种处理方法:1.如果错误码为EINTR则重新调用系统调用,例如Postgresql中有一段代码: <a onclick="function onclick(){dp.sh.Toolbar.Command(ViewSource,thi

2011-06-16 09:34:00 2977 1

转载 Socket INADDR_ANY详解

 INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。例如在ubuntu的/usr/include/netinet/in.h定义为:/* Address to accept any incoming messages.  */#define    INADDR_ANY

2011-06-16 09:14:00 804

转载 GDB 调试多进程程序的几种方法

GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较。GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用

2011-06-15 22:57:00 296

转载 vim中ctags和cscope安装使用及错误

VIM外部插件介绍 一、 ctags :   "########################################   下载网址:http://ctags.sourceforge.net/   软件功能:用于产生一个tags文件(代码索引文件),   tags文件中记录的源文件的索引以帮助你快速得找到某个符号的定义。   它支持相当多的语言,如C、C++、C#、Shell等等。   

2011-06-15 15:07:00 1063

转载 LINUX core dump 详解

1. 前言:有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来.2. gdb:有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字, 而把他叫做调试员

2011-06-15 14:39:00 460

转载 C/C++语言中void及void指针的深层探索(转载)

 1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。2.void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,因为从来没有人会定义

2011-06-15 10:21:00 225

转载 指向指针的指针

一. 回顾指针概念: 今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧! 当我们程序如下申明变量: short int i; char a; short int * pi; 程序会在内存某地址空间上为各变量开辟空间,如下图所示。 内存地址→6     7      8     9     10     11    12    13     14    15 ------

2011-06-14 09:47:00 184

转载 make 常见错误

本章对make执行时可能出现常见错误进行汇总、分析,并给出修正的可能方法。 make执行过程中所产生错误并不都是致命的;特别是在命令行之前存在“-”、或者make使用“-k”选项执行时。make执行过程的致命错误都带有前缀字符串“***”。 错误信息都有前缀,一种是执行程序名作为错误前缀(通常是“make”);另外一种是当Makefile本身存在语法错误无法被make解析并执行时,前缀包含了mak

2011-06-13 15:38:00 382

转载 netinet/in.h - Internet Protocol family

NAMEnetinet/in.h - Internet Protocol family SYNOPSIS#include DESCRIPTIONWhen header file is included, the following types are defined through typedef. in_port_t An unsigned

2011-06-13 09:19:00 874

转载 #include 的作用

#include 基本系统数据类型是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型。 NAME       sys/types.h - data typesSYNOPSIS       #include DESCRIPTION       The header shall include definitions for at

2011-06-13 09:11:00 505

转载 vim快速入门

 vim有三种模式-普通(可视命令)模式,命令行模式,编辑模式。启动vim后在任何模式下按Esc键进入到普通模式。普通模式下输入:回车进入命令行模式,此时vim最窗口最下面一行为:   后面可以输入命令行命令.在执行任何命令前要确保在相应的模式下。1.启动与退出    1)vi filename   (启动vim)   2)命令行模式下 :wq=> 保存并退出,:q!=>强行退出,

2011-06-12 21:29:00 802 2

转载 C++虚函数表解析

C++虚函数表解析(转)C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于

2011-06-12 12:27:00 287

转载 C++的namespace

#include stdio.h>namespace NameSpace1{    class MyClass    {        public:            void f()            {                m = 1;                printf("%d/n", m);            }        private:       

2011-06-12 09:12:00 250

转载 va_list、va_start、va_arg、va_end的原理与使用

va_list、va_start、va_arg、va_end的原理与使用   1.  概述       由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论.    2. 定义       大家先看几宏.       在VC++6.0的i

2011-06-11 20:28:00 235

转载 Linux procfs详解

Linux procfs详解 1、 proc文件系统总览 在类Unix系统中体现了一种良好的抽象哲学,就是几乎所有的数据实体都被抽象成一个统一的接口--文件来看待,这样我们就可以用一些简单的基本工具完成大量复杂的操作。在Linux中存在着一类 特殊的伪文件系统,用于使用与文件接口统一的操作来完成各种功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其

2011-06-10 12:31:00 1430

转载 lsof简介

lsof简介 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通

2011-06-10 11:00:00 211

空空如也

空空如也

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

TA关注的人

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