自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 函数返回局部变量

1. 返回局部变量的值可以有两种情况:返回局部自动变量和局部静态变量,比如,?12345int func(){    int temp = 0;   // 返回局部自动变量的值    return temp;}局部变量t

2012-11-02 09:54:50 205

转载 VOIP开源项目源码地址

VOIP开源项目源码地址 VoIP bookmarks from Klaus DarilionBelow you will find descriptions and links to SIP and RTP stacks, applications, test utilities, SIP proxies, SIP PBXs and STUN server and clien

2012-09-14 15:54:50 465

转载 Linux addr2line具体应用指南

调试zSeries上的Linux应用程序类似于调试其他体系结构上的Linux应用程序。对于有经验的Linux开发人员,最大的挑战是理解新的系统体系结构。对于刚接触Linux的大型机开发人员,掌握新的调试工具似乎是一项令人畏惧的任务。不要害怕。本文将提供Linux addr2line一些有用的提示来帮助您入门。UserDebug日志记录调试一个崩溃的程序的第一步是弄清哪里出了错。zS

2012-09-07 16:47:39 279

转载 android或linux调试addr2line工具锁定命令的使用

查看vmlinux内核的起始地址0对应的源码位置luther@gliethttp:~/kernel$ arm-none-eabi-addr2line -f -e arch/arm/boot/compressed/vmlinux 0_start/home/luther/kernel/arch/arm/boot/compressed/head.S:107其实类似于luther@gl

2012-09-07 16:46:11 480

转载 android调试工具addr2line使用补充

使用addr2line追踪自有动态库(so文件)的bug, 补充:解决出现 ??:0 , 没法展示源代码行数的问题在Android.mk 文件中:Java代码  LOCAL_CFLAGS := -D__STDC_CONSTANT_MACROS -Wl,-Map=test.map -g  补充2个编译参数  -Wl,-Map=test.ma

2012-09-07 16:43:52 393

转载 write的奥秘

在Linux下我们在使用设备的时候,都会用到write这个函数,通过这个函数我们可以象使       用文件那样向设备传送数据。可是为什么用户使用write函数就可以把数据写到设备里面       去,这个过程到底是怎么实现的呢?             这个奥秘就在于设备驱动程序的write实现中,这里我结合一些源代码来解释如何使得一       个简简单单的write函数能

2012-09-07 09:29:24 155

原创 Busybox下tftp命令使用详解

Busybox下的tftp命令可以用来进行单文件传输。使用的时候,是把电脑作为服务器Server,Busybox作为客户端Client,使用tftp命令可以实现从Server下载单个文件到Client,或者从Client上***个文件到Server。    首先来了解一下tftp命令参数,在Busybox下输入tftp –help,得到tftp使用的详细参数,如下图

2012-08-21 15:41:15 165

原创 Linux下常用cvs命令整理

1.登录:$export  CVSROOT=:pserver:username@the_server_name:/home/cvsroot  Note:pserver是访问方式,如果服务器设置的是口令认证,则是 pserver。      username是  CVS服务器的用户名,可以根据你的设置修改;      the_server_name是CVS服务器的名称或者IP地址

2012-08-21 14:51:48 213

原创 巴克斯范式

BNF  巴科斯范式及其扩展  BNF & Augmented BNF  什么是巴科斯范式?  巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法(最早用于描述ALGOL 60 编程语言)。确切地说,早在UNESCO(联合国教科文组织)

2012-07-06 09:34:34 1061

原创 source insight研究——正则表达式篇

正则表达式主要用来做搜索和替换,一般强大一点的编辑器都会支持。si在搜索和替换界面里都有Use Regular Expression这样的选项。个人认为使用正则表达式(后简称RE)应该是每个程序员都应该掌握的技能。虽然和vim这些相比si对RE的支持还是弱一点,但对于从未了解过RE的人来说,从si这样的编辑器来入门RE也不失为一个好的选择。学习任何一项科学或技术,了解其涉及的各种概念是第一

2012-07-05 18:06:52 165

原创 source insight研究——快捷键篇

关于键盘和鼠标谁更快捷之争,是一个永远被程序员争论的话题。我想大多数人都不会极端的信奉一种操作方式,鼠标更为大众接受,但掌握一些快捷键对于提高操作速度是有帮助的。si为我们提供了丰富的快捷键和灵活的定制方式,同时还支持自定义命令和脚本,熟练掌握这些之后相信可以使你更加喜欢它。以下是我认为比较有用的快捷键:1. ctrl+o,打开文件列表2. F7,打开符号检索窗口(全局

2012-07-05 18:04:37 196

原创 source insight研究——配置篇

用si有好几年了,零零散散也累积了不少心得,但总觉得还有一些内容是不知道的,所以今天干脆来个大清扫,把所有的选项都研究一遍,并把自认为有用的内容在这里整理一下。si的主要配置都在Options->Perferences菜单里,1、GeneralProject File Synchronization->Remove missing file from project选上可以

2012-07-05 18:03:36 234

原创 C++ Const使用总结

const:类型限定符,可以指定所修饰对象,不改变内容和在内存的存储地址.1>修饰基本类型变量如:const int x=10;//值和地址都不能变再赋值.x=77;//错误2>const指针指针可用const修饰,可放在类型前,类型后,或是两边都放.  a>常量指针.对int* 用类型限定符const:      如:int number=

2012-05-22 15:01:23 233

原创 声明函数指针并实现回调

程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指针    回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法

2012-05-17 10:37:04 170

原创 C Compiler Warning Abstract

1) warning: ISO C90 forbids mixed declarations and codeC语言是面向过程的语言,这个警告通常表示声明应该在其他代码的前面。 2) warning: initialization from incompatible pointer type在Linux kernel中有许多callback函数,这个警告表明call

2012-05-16 10:15:50 193

原创 C++成员函数的重载、覆盖与隐藏

成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖:派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;

2012-04-26 17:40:08 138

原创 C++中虚函数深入剖析

虚函数=虚拟函数    虚拟函数地址表=虚表(vtable)每个类中含有虚函数的对象,编译器都会为它们指定一个虚表(其实是一个函数指针数组),保存在数据区,它由此类所有的对象共用(即静态的),同时编译器也会为它(每个类对象)加上一个成员变量,一个指向自己虚表的指针(常称为"vptr"),并存放在对象的首地址上,由此每个类(含有虚函数)分配的对象都有一个vptr,当我们调用虚函数时,实际上是

2012-04-26 17:38:54 146

原创 C++设计模式之Composite

C++设计模式之Composite 2002-08-06· · ··COM集中营 一、功能   表示“部分-整体”关系,并使用户以一致的方式使用单个对象和组合对象。  二、结构图  上图中,也可以做些扩展,根据需要可以将Leaf和Composite做为抽象基类,从中派生出子类来。  三、优缺点  优

2012-04-26 17:34:11 176

原创 C++设计模式之Factory Method

C++设计模式之Factory Method 2002-08-05· · ··COM集中营 一、功能   定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。  二、结构图  三、实现(1)在某些情况下,比如仅仅为了创建适当的Product对象而

2012-04-26 17:33:48 188

原创 C++设计模式之Prototype

C++设计模式之Prototype 2002-08-01· · ··COM集中营 一、功能   用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。   二、结构图  三、优缺点  优点:复制自身。客户不知道需要对象的实际类型,只需知道它的抽象基类即可。(即有继承树的

2012-04-26 17:33:26 160

原创 C++模式设计之Builder

C++模式设计之Builder 2002-07-30· · ··COM集中营 一、功能   将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。   二、结构图   各类之间的交互关系如下图所示:    三、示例代码 namesp

2012-04-26 17:33:04 137

原创 C++模式开发之Bridge

C++模式开发之Bridge 2002-07-29· · ··COM集中营 一、功能   将抽象部分与它的实现部分分离,使它们都可以独立地变化。  二、结构图  三、示例代码namespace DesignPattern_Bridge{// class Implementor

2012-04-26 17:32:42 121

原创 C++设计模式之Singleton

C++设计模式之Singleton 2002-07-26· · ··COM集中营 一、功能  保证一个类仅有一个实例。   二、结构图  三、优缺点  Singleton模式是做为"全局变量"的替代品出现的。所以它具有全局变量的特点:全局可见、贯穿应用程序的整个生命期,它也具有全局变

2012-04-26 17:32:19 110

原创 C++设计模式之Abstract Factory

C++设计模式之Abstract Factory 2002-07-23· · ··COM集中营一、功能   提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。  二、结构图  类厂最基本的结构示意图如下:  在实际应用中,类厂模式可以扩充到很复杂的情况,如下图所示:  三、优缺

2012-04-26 17:31:30 145

原创 C++设计模式之Adapter

C++设计模式之Adapter一、功能   将一个类的接口转换成客户希望的另外一个接口,解决两个已有接口之间不匹配的问题。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。  二、结构图  (1)class adapter   (2)object adapter     三、实现  和其他很多模式一样,学习设计模式的重点

2012-04-26 17:31:00 119

原创 拷贝构造函数

对于普通类型的对象来说,他们之间的复制是很简单的,例如:int a=100;int b=a;而类对象和普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using namespace std;class CA{public: CA(int b) { a=b; } void Show

2012-04-26 17:26:35 135

原创 文本文件和二进制文件的区别

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。      ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:  ASC码:  00110101 00110110 00110111 00111000       ↓     ↓    ↓    ↓  十进制码: 5     6

2012-04-25 17:30:20 140

原创 C++ 类的静态成员详细讲解

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即类名>::静态成员名>。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来

2012-04-25 10:24:03 178

原创 虚析构函数

虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。  如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。  所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人

2012-04-25 09:29:06 286

原创 C++类静态数据成员与类静态成员函数

如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢?   这个问题便是本章的重点:   声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。   下面我们用几个实例来说明这个问题,类的成员需要保护,通常情况下为了不违背类的封装特性,我们是把类成员设置为

2012-04-25 09:15:59 140

原创 andrew ADB命令的使用

ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.  先说安装方法, 电脑上需要安装客户端. 客户端包含在sdk里. 设备上不需要安装, 只需要在手机上打开选项settings-applications-development-USBdebugging.  对于Mac和Linux用户, 下载好的sdk解压后, 可以放~或者任意目录. 然后

2012-04-24 11:46:16 178

原创 c++中继承问题小结

1.c++中继承有公有继承,保护继承,私有继承    定义个基类:    #include    using namespace std;    class Base    {    public:    void display()    {    cout《"huang"《endl;    }    protected:    int x;

2012-04-23 11:58:43 122

原创 C++进阶之函数模板

我们知道C++中有函数重载这个概念,函数重载的功能就是把一个函数重写多次使其可以具有多种类型的参数。简单的来说就是用同一种函数名定义多个函数,这些函数的参数个数和参数类型不同。利用函数模版就可以更简单的来实现不同函数的参数需求。其实函数模版和函数重载是非常相似的 唯一的区别就是 函数重载需要写多个函数,而函数模版只需要写一个函数模版(特殊的函数)就可以在调用的时候匹配随意类型的参数了!举个

2012-04-23 11:55:29 121

原创 关于volatile

volatile的本意是“易变的”由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如:static int i=0;int main(void){...while (1){if (i) dosomething();}}/* Interrupt service routine. */void ISR_2(void)

2012-04-23 11:45:13 109

原创 C++中的虚函数(virtual function)多态

1.简介    虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次:class A{public:    virtual void foo() { cout };class B: public A{public:    virtual void foo() { cout

2012-04-23 11:39:29 91

原创 C++命名空间

一、 为什么需要命名空间(问题提出)    命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。   在 C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。     1、全局变量的作用域是整个程序,在同一

2012-04-23 09:07:51 135

原创 GCC编译选项

gcc 提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用-Wall来开启以下警告:            -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat            -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration

2012-04-19 08:34:37 239

原创 C++中迭代器

C++中迭代器C++中的容器  标准序列容器:vector、string、deque、list  标准关联容器:set、multiset、map、multimap 迭代器的分类  根据迭代器所支持的操作,可以把迭代器分为5类。  1、输入迭代器:是只读迭代器,在每个被遍历的位置上只能读取一次。  2、输出迭代器:是只写迭代器,在每

2012-04-16 16:47:38 218

原创 SIP中的早期媒体early media与回铃音

1、早期媒体无论是在PSTN还是在VoIP网络中,一个呼叫的最终目的让两个用户进行交谈(conversation)。这里我们将由用户之间的交谈所产生的媒体称为常规媒体(“regular media”)。早期媒体(“early media”)是与常规媒体相比而言的。通常,主叫用户发起呼叫后用户交谈并不会立即开始(甚至可能最终没有开始),等待时间一般是几秒到几十秒,这完全取决于被叫用户的何

2012-04-16 14:43:13 720

原创 Memory Management

malloc_trim() explicitly requests that any unused memory space be returned to the OS. Note that this happens automatically when free() is called with a sufficiently large chunk;

2012-04-12 15:28:50 169

空空如也

空空如也

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

TA关注的人

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