自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 vector利用swap()函数进行内存的释放

首先,vector与deque不同,其内存占用空间只会增长,不会减小。比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有空间在vector析构时回收。1、释放内存:   empty()是用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),所占用的内存空间依然如故。如果你需要空间动态缩

2014-05-29 11:23:50 27603 1

转载 Linux下获取线程TID的方法——gettid()

如何获取进程的PID(process ID)?可以使用:#include   pid_t getpid(void);  通过查看头文件说明,可以得到更详细的信息:find /usr/include -name unistd.h    /usr/include/asm/unistd.h  /usr/include/bits/unistd.h  /usr/inc

2014-05-28 11:45:00 1607

转载 linux 系统调用

5.1.5  如何使用系统调用如图5.2所示,用户应用可以通过两种方式使用系统调用。第一种方式是通过C库函数,包括系统调用在C库中的封装函数和其他普通函数。 图5.2  使用系统调用的两种方式第二种方式是使用_syscall宏。2.6.18版本之前的内核,在include/asm-i386/unistd.h文件中定义有7个_syscall宏,分别是:

2014-05-27 17:59:11 756

转载 vector的reserve和resize

vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下:      reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。      r

2014-05-26 15:26:11 654

转载 /sys/class/gpio 文件接口操作IO端口(s3c2440)

在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入   Device Drivers  —>  GPIO Support  —>

2014-05-21 09:48:51 3964 1

转载 GCC 提供的原子操作

gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。其声明如下:type __sync_fetch_and_add (type *ptr, type value, ...)type __sync_fetch_and_sub (type *ptr, type value, ...)type __sync_fetch_and

2014-05-20 16:22:57 598

转载 c++对数组的引用

所谓数组引用,即指向数组的引用;如    int   a[10] ;         int   (&b)[10] = a ;如果写成 int   a[10] ;                int* &b = a ;将会报错: cannot convert from 'int [10]' to 'int *&'。  或许你会说在数组名不就是指向这个数组的一个指针吗?题中

2014-05-20 14:17:33 1095

转载 C++的一般引用及其数组引用

引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进行初始化。(4

2014-05-20 14:07:08 1628

转载 pthread_cond_wait的spurious wakeup问题

最近在温习pthread的时候,忽然发现以前对pthread_cond_wait的了解太肤浅了。昨晚在看《Programming With POSIX Threads》的时候,看到了pthread_cond_wait的通常使用方法:pthread_mutex_lock(); while(condition_is_false)     pthread_cond_wait(); p

2014-05-16 16:15:29 611

转载 warning no newline at the end of file

main.c :10:2 warning: no newline at the end of file修复这个警告,在文件结尾回车一下就行了。可以很少会有人去仔细探究,为什么gcc会给出这么一个警告?原因其实也很简单,因为标准规定如此。C99第5.1.1.2节这样写道:Each instance of a backslash character (/) immediately fo

2014-05-16 11:21:06 671

转载 cmake 学习笔记(一)

最大的Qt4程序群(KDE4)采用cmake作为构建系统Qt4的python绑定(pyside)采用了cmake作为构建系统开源的图像处理库 opencv 采用cmake 作为构建系统...看来不学习一下cmake是不行了,一点一点来吧,找个最简单的C程序,慢慢复杂化,试试看:例子一单个源文件 main.c例子二==>分解成多

2014-05-15 14:49:55 613

转载 CMake使用入门

一、开胃菜hello目录下的文件结构:├—— CMakeLists.txt├—— hello.c├—— hello.h└—— main.cC代码见下节。最简单的cmake配置文件:project(HELLO)set(SRC_LIST main.c hello.c)add_executable(hello ${SRC_LIST})如果要编译成gdb可调试的debug

2014-05-15 14:25:30 656

转载 代码中特殊的注释技术——TODO、FIXME和XXX的用处

前言:今天在阅读Qt  Creator的源代码时,发现一些注释中有FIXME英文单词,用英文词典居然查不到其意义!实际上,在阅读一些开源代码时,我们常会碰到诸如:TODO、FIXME和XXX的单词,它们是有其特殊含义的。、TODO: + 说明:如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明:如果代码中有该标识

2014-05-14 13:38:26 676

转载 C++中std::tr1::function和bind 组件的使用

在C++的TR1中(Technology Report)中包含一个function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类的非静态成员函数时。可以参考Scott Meyers. >. Item 35.下面具体说明其使用方法。一、指向全局函数或静态成员函数时因为在本质上讲全局函数和静态成员函数没有区别,使用方法上除了静态成员函数

2014-05-13 16:37:06 733

转载 boost::weak_ptr和enable_shared_from_this

boost::weak_ptr和enable_shared_from_this shared_ptr在我的实践中使用很广,在接口层面上,我基本都会默认的使用shared_ptr.而weak_ptr则很少使用;即便使用,也是间接的使用,例如使得class A继承自boost::enable_shared_from_this,这样A便具有了一个weak_ptr的成员对象,我便可以通过接口sha

2014-05-13 14:01:18 740

转载 Boost智能指针——weak_ptr

循环引用:引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下:#include#include#include#includeclass parent;class children;typedef boost::shared_ptr parent_ptr;typedef boost::shared_p

2014-05-13 10:49:46 621

转载 Boost智能指针——scoped_ptr

boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include#include#includeclass implementation{public:    ~implementation() { std::cout "de

2014-05-13 10:36:18 599

转载 Boost智能指针——shared_ptr

boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include#include#includeclass implementation{public:

2014-05-13 10:23:50 761

原创 A20 文件系统预装APK

1. 将需要预装的apk放入 android4.2/device/softwinner

2014-05-10 22:46:50 2038

转载 open函数中O_CLOEXEC标志的开关

Linux中,文件描述符有一个属性:CLOEXEC,即当调用exec()函数成功后,文件描述符会自动关闭。在以往的内核版本(2.6.23以前)中,需要调用 fcntl(fd, F_SETFD, FD_CLOEXEC) 来设置这个属性。而新版本(2.6.23开始)中,可以在调用open函数的时候,通过 flags 参数设置 CLOEXEC 功能,如 open(filename, O_CLOEXE

2014-05-08 17:23:50 2290

转载 Boost库之function的使用

Boost库的function是一组函数对象包装类的模板,实现了一个泛型的回调机制。Boost库的function与函数指针相比,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数(自由函数),也可以是函数对象和类成员函数,而且可以给函数添加状态。使用Boost库的function,可以很好地与现有的代码融合在一起。另外,function还可以与Boost库的bind和la

2014-05-08 14:50:28 624

转载 std::map用法

std::map用法   STL是标准C++系统的一组模板类,使用STL模板类最大的好处就是在各种C++编译器上都通用。   在STL模板类中,用于线性数据存储管理的类主要有vector, list, map 等等。本文主要针对map对象,结合自己学习该对象的过程,讲解一下具体用法。本人初学,水平有限,讲解差错之处,请大家多多批评指正。    map对象所实现的功能跟MFC得CMap相

2014-05-05 15:13:47 644

转载 eventfd man

概要     #include     int eventfd(unsigned int initval, intflags);描述eventfd()创建一个“eventfd对象”,这个对象能被用户空间应用用作一个事件等待/响应机制,靠内核去响应用户空间应用事件。这个对象包含一个由内核保持的无符号64位整型计数器。这个计数器由参数initval说明的值来初始化。从lin

2014-05-05 09:51:18 973

转载 linux新的API signalfd、timerfd、eventfd使用说明

三种新的fd加入linux内核的的版本:signalfd:2.6.22timerfd:2.6.25eventfd:2.6.22三种fd的意义:signalfd:传统的处理信号的方式是注册信号处理函数;由于信号是异步发生的,要解决数据的并发访问,可重入问题。signalfd可以将信号抽象为一个文件描述符,当有信号发生时可以对其read,这样可以将信号的监听放到select、pol

2014-05-04 18:28:28 754

转载 linux新的API signalfd、timerfd、eventfd使用说明——eventfd

好久没更新了,今天看一下第三种新的fd:eventfd类似于管道的概念,可以实现线程间的事件通知,所不同的是eventfd的缓冲区大小是sizeof(uint64_t)也就是8字节,它是一个64位的计数器,写入递增计数器,读取将得到计数器的值,并且清零。看一下代码:[cpp] view plaincopy#include   #include   #include   

2014-05-04 18:25:21 977

转载 kamailio,asteisk,realtime 实现负载均衡(集群)完整配置笔记

环境负载均衡+数据库服务器Centos-5.4 + kamailio-3.1.4 + mysql-5.0.77-4.el5_6.6IP:192.168.1.30 asterisk服务器1Centos-5.4 + asterisk-1.8IP:192.168.1.31 asterisk服务器2Centos-5.4 + asterisk-1.8IP:192.

2014-05-04 14:36:17 4375 1

原创 asterisk1.8 拨号方案 mysql存储(动态)

DROP TABLE IF EXISTS extensions;CREATE TABLE `extensions` (    `id` int(11) NOT NULL auto_increment,    `context` varchar(20) NOT NULL default '',    `exten` varchar(20) NOT NULL default '',

2014-05-04 14:17:24 1204 1

RT5350用户手册

RT5350中文手册,这是对ralink原厂sdk手册的补充,因为ralink的sdk的编译流程和一般的嵌入式开发板的编译流程有不少差别,所以写了这个中文手册。对于第一次接触路由方案的开发人员,有相当的参考价值。

2014-04-25

ucGUI学习笔记 -- 仿真器

ucGUI学习笔记 -- 仿真器 原创

2012-06-14

空空如也

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

TA关注的人

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