自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 #if,#ifdef,#ifndef, #elif, #else, #endif 使用

有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。(一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有:1、#if, #

2014-11-05 10:55:39 663

转载 在Linux平台下如何编译一个C++工程

熟悉了Windows平台下编译一个C++工程后,你是否会提出这样一个问题:在Linux平台下又如何编译一个C++工程呢?希望本文能给正在学习或想学习Linux C++开发的你起到抛砖引玉的作用。 首先,你必须有一个Linux开发环境,这样才能进行C++开发。笔者用的是安装在虚拟机中的Ubuntu 9.04,Ubuntu操作系统是没带C++编译器g++。在连网的情况下,在终端中使

2014-07-21 16:24:09 997

原创 Socket的几种

socket模型:1、阻塞模型   一个单进程accept阻塞,接收到客户端请求后,read消息,处理write返回,然后循环继续accept。   这种模型最最简单,不实际,没什么实际用途,对于新手教学还行。2、多进程(线程)模型   主进程循环accept阻塞,接收到客户端请求后,fork子进程处理,子进程read阻塞,接收客户端消息并响应。   这种模型是我使用到

2014-05-22 17:46:48 759

转载 孤儿进程和僵尸进程

一、定义:什么是孤儿进程和僵尸进程僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸进程将会导致资源浪费,而孤儿则不会。子进程持续10秒钟的僵尸状

2014-05-21 19:23:31 370

原创 IPC(shm+sem)

共享内存是两个或多个进程共享同一块内存区域,并通过该内存区域实现数据交换的进程间通信。虽然共享内存是进程间通信的最快速的机制,但是进程间的同步问题靠自身难以解决,于是就需要信号量机制,信号量能很好的解决互斥资源的同步问题。这些牵涉到操作系统里的知识,要好好研究一番同步互斥问题才能继续。 共享内存的工作模式一般是:1.     int shmget(key_t key, int size

2014-05-11 21:48:42 932

原创 信号量sem_init

信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为:  extern int sem_init __P((sem_t *__sem, int __pshared, unsigned int __value));  sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;

2014-05-05 14:58:11 1195

转载 Android KitKat 4.4 ART模式

也许人们在得知 Google 新发布的 Android 系统版本名称为 4.4 时都不以为然,认为这个升级十分微不足道,只升级了 0.1 的版本号,启用了 KitKat 的新代号而已。就算是 Google 官方,对待此次升级也是颇为低调。可是如果了解了Android 4.4所暗示的变化时,我觉得所有 Android 开发者和其他利益相关者都必须打起十二分精神对看待 Android 4.4 了。

2014-04-29 09:57:57 443

转载 如何实现可变参数函数

转载自:http://blog.163.com/liuqiang_mail@126/blog/static/1099688752012102335624938/    通常我们使用的C函数的参数个数都是固定的,但也有不固定的。比如printf()与scanf()。如何自己动手实现一个可变参数函数,这个还是有点技巧的。我们最常用的就是定义一个宏,使用printf或

2014-04-16 17:36:14 667

转载 linux下内存的统计和内存泄露类问题的定位

在产品的开发中,通过对当前系统消耗内存总量的统计,可以对产品所需内存总量进行精确的评估,从而选择合适的内存芯片与大小,降低产品的成本。在遇到内存泄露类问题时,经常会对此束手无策,本文通过对proc下进程相关的文件进行分析,精确评估系统消耗内存的大小,还可以对内存泄露类问题的解决提供一种定位手段。       Linux在内存使用上的原则是:如果内存充足,不用白不用,尽量使用内存来缓存一些文件,

2014-04-15 17:30:14 490

转载 linux 内存泄露检测工具valgrind

关于内存泄露:客户的一台AP server,内存使用量一直很大,swap使用量从三月份开始在慢慢增多。怀疑与内存泄露有关,查找了一些资料,发现对于linux真个系统的内存泄露检测工具很少。有如下几个,但是都只针对单个程序。如果测试真个内存的情况,特别是历史记录,不知道还有没有好的工具。Valgrind用C/C++开发其中最令人头疼的一个问题就是内存管理,有时候为了查找一个内存泄漏或者一

2014-04-15 17:12:11 422

原创 如何有效避免内存泄露

内存泄露,是程序设计开发中需要注重的一个问题,它的出现会导致系统异常或者程序崩溃。如果在比较成熟的代码上再去处理memory leak问题,则需要花费了很大的时间和精力去查找,无疑增加了解决的成本和难度,确切地说是补救措施。所以平时需要养成良好的coding习惯。1. 内存泄露的定义:指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应

2014-04-15 12:25:38 1097

原创 linux 各个进程间通讯方式的比较

更新中~

2014-04-14 19:44:38 150

原创 Socket 的阻塞和非阻塞态,以及select模式处理非阻塞态的Recv、Send

非阻塞不同于阻塞模式的地方在于,当网络阻塞时所有i/o调用会立刻返回一个WSAEWOULDBLCOCK,这时候你可以做一切其他事务直到下一个event被触发

2014-04-14 16:17:01 1835

原创 TCP/IP三次握手 的学习笔记及理解

简单的过程如下:客户端A 与 服务器 B 建立 TCP 连接时, 首先  A  向 B 先发送  SYN (同步请求), 然后 B  回复 SYN + ACK(同步请求应答)最后 A 回复 ACK 确认,这样, TCP 的一次连接 (三次握手) 的过程就建立了。在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手来建立一个连接。第一次握手:建立连接时, C

2014-04-14 11:42:26 847

原创 面试题:两个相同struct的变量能否用memcmp比较?

面试的时候,考官问了RT的题目,觉得这题问得比较有水平,所以把它写出来分享。大家知道,结构体里面的变量,如果有的是char型,有的是int型,有的是long型,有的是short型,也有的是未分配的地址等等。想看如下代码:#include #include #include typedef struct{   char a;   int b;}

2014-04-13 23:50:51 2271 1

原创 面试题:链表的一些常规考法

链表的一些常见笔试面试问题总结及代码struct node{int data;struct node* next;};struct node* create(unsigned int n)//创建单链表的程序为:{//创建长度为n的单链表assert(n > 0);node* head;head = new node;head->next = NULL;cout > head->data;if (

2014-04-12 14:20:14 844

原创 面试题:如何删除单链表某节点

想起之前面试,有个面试官给出了一个单链表的head头指针,以及要删除的p节点,让我说出要如何删除该p节点。我爽快的说,只需要获取到p节点的前驱结点p->pre,  p->pre->next  = p->next.  free(p),考官说,是单链表,不是双链表、我又迅速地说,那就借助head指针,一直找,找到p节点,并保留p的前一个指针不就可以了。考官说,要是这个链表数据很多,这样做,

2014-04-12 13:53:54 2227

原创 奇偶校验方法(韦根协议)

最近在了解维根协议方面的内容,ID刷卡现在应用已经非常的普遍了。这里稍微总结下维根协议的知识。韦根协议是国际上同意的标准,由摩托罗拉公司制定的一种通信协议。标准的26bit应该是最常用的一种格式。还有34bit,37bit等韦根协议的数据输出,必须接在MCU的两个可中断GPIO上,这样能及时相应DATA0和DATA1的数据流变化。ID卡模组输出‘0’时,DATA0

2014-04-10 14:41:58 4509

原创 Linux中的常用多线程同步方式

转载自:http://www.embeddedlinux.org.cn/html/xianchengjincheng/201204/07-2029.html 感谢alex分享嵌入式linux中文站给大家介绍三种Linux中的常用多线程同步方式:互斥量,条件变量,信号量。1 互斥锁   互斥锁用来保证一段时间内只有一个线程在执行一段代码。必要性显而易见:假设各个线程向同一个文件顺序写

2014-04-02 17:51:43 420

原创 多进程与多线程的退出状态以及深度比较

LINUX多线程和多进程的应用场景,深度比较,退出状态比较

2014-04-02 17:50:13 828

原创 Linux调试技术

内容:1.熟悉一些常用的调试技巧 2.熟悉gdb调试器的使用 3.熟悉断言的使用,  4.熟悉内存调试1.常用调试技巧(coding完成之后的debg过程) 1.1  常见错误:a.功能错误(需求分析错误);b.设计错误(程序的架构,设计的数据结构,功能实现方式错误);c.code错误(编码错误,如“==”写成“=”);  1.2 Debug一般分为如下5个步骤:     

2014-04-01 16:00:56 394

转载 fedora下安装wireshark

一、安装  以root用户运行:yum install wireshark二、运行 在终端中键入命令: #wireshark bash:wireshark:command not found#whereis wireshark wireshark: /usr/lib/wireshark /usr/share/wireshark #cd /usr/lib/wiresh

2014-04-01 11:27:16 553

原创 快速排序算法

前言:quicksort是冒泡法的改进版,由于quicksort的排序效率在同为0(N*logN)的几种排序方法中效率最高,当面对大量的数据时,使用quicksort能比冒泡法大大节省时间。            quicksort采用了一种分治的策略,通常称为分治法(Divide-and-   ConquerMethod),            基本思想:1.先从数列中取出一个

2014-03-31 19:09:23 343

转载 Socket连接超时

Socket.connect连接超时有二种情况:1.由于网络的问题,TCP/IP三次握手时间>timeout的设置时间。这在国外访问weibo时,并且网络环境极差的情况下有可能发生。解决的办法:调大socket.connect方法中的timeout参数值,比如50s,linux默认最高是70s,如果超过70s没有意义,linux会采用70s.但是当调大之后,发现不到10s就报timeo

2014-03-31 18:02:54 777

转载 P2P网络摄像机

转自百度百科:http://baike.baidu.com/link?url=lW60dL3wQAMByKjbhr1TPBIoXor9rUDQlxSkVpNJUG8gw3BowW1snZEnV0IazrRqbzsYGFpncDHJ7-cqholTmq1概述2工作原理▪ 摄像头模块 ▪ 网络模块 ▪ 外部存储器 ▪ 电源及应用程序 ▪ 监控台界面 3P

2014-03-31 15:49:59 1819

转载 P2P服务器架设

转自:http://www.cnblogs.com/ciey/archive/2009/11/07/1598255.html,感谢分享!一、bt原理介绍传统的文件下载服务都是基于客户机/服务器模型,被下载的文件放在服务器上,用户登录服务器,将该文件下载到本地。在文件下载的过程中,被传输文件的来源和目的端并不对等,服务器只是单向地将文件传送给客户端。        这种传

2014-03-31 15:43:06 1036

转载 Linux进程和线程查看以及管理

1.top 命令详解&进程管理top命令查看系统的资源状况load average表示在过去的一段时间内有多少个进程企图独占CPUzombie 进程 :不是异常情况。一个进程从建立到结束在最后那一段时间遍是僵尸。留在内存中等待父进程取的东西便是僵尸。任何程序都有僵尸状态,它占用一点内存资源,仅仅是表象而已不必害怕。如果程序有疑问有机会遇见,处理大批量僵尸基本有效的办法是重起。kill是

2014-03-31 15:13:34 492

转载 Linux内核编译命令

make tags生成tags文件,供浏览代码使用。make cscope生成cscope索引文件,也是为了方便浏览源代码。make oldconfig在旧的.config基础上生成新的.config,非常有用。make silentoldconfig同上,但比较安静。;)make defconfig生成包含全部默认选项的.config文件。make all

2014-03-31 15:05:04 543

转载 gdb调试

转载 http://blog.csdn.net/forrest2009/article/details/6413785top命令: 查看当前系统中进程使用资源的状况, 类似于windows的任务管理器一:列文件清单1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给

2014-03-30 22:58:48 296

转载 linux 下 进程和线程的区别

1、进程与线程进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥

2014-03-30 22:57:06 341

转载 RTP/RTCP/RTSP/SIP/SDP 关系

1、 RTPReal-time Transport Protocol,是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它

2014-03-22 15:16:51 565 1

原创 Linux下Socket编程

什么是Socket   Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。    Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的 Socket数据传

2014-03-19 17:56:47 588

转载 浅谈模板函数的重载解析优先顺序

转载自:http://blog.csdn.net/kannju/article/details/6740862,kannju的专栏,感谢分享!函数模板可以被重载、显式特化重载、普通函数重载。如以下函数模板的重载声明:namespace LDQ_TEST{ //函数模板定义 template T sum( T, int ); //T

2014-03-14 19:17:16 665

转载 浅谈C++类(1)--概念和构造函数

欢迎转载,但请标明作者 “九天雁翎”,当然,你给出这个帖子的链接更好。类多么重要我就不多说了,只讲讲学习,因为个人认为类的学习无论从概念的理解还是实际代码的编写相对其他C兼容向的代码都是比较有难度的, 对于以前学C 的人来说这才是真正的新概念和内容,STL其实还比较好理解,不就是一个更大的函数库和代码可以使用嘛。虽然vector,string就是类,不过我们却不需要这样去理解他们,就可

2014-03-13 17:03:21 344

转载 c++中的private/protect/public & virtual

private:    私有控制符。这类成员只能被本类中的成员函数和类的友元函数访问。    protected:    受保护控制符。这类成员可以被本类中的成员函数和类的友元函数访问,也可以被派生类的成员函数和类的友元函数访问。    public:    共有控制符。这类成员可以被本类中的成员函数和类的友元函数访问,也可以被类作用域内的其他函数引用。    virtual:    C++通过虚

2014-03-13 16:49:15 517

转载 private,public,protect这三种继承方式相互之间的区别

转自:http://hi.baidu.com/yfdong21/item/77d6b14ad6efbce21281da79,感谢分享!public 意味着在其后声明的所有成员对所有的人都可以取。 private 关键字意味着除了该类型的创建者和类的内部成员函数之外,任何人都不能存取这些成员。 protect 它与private基本相似,只有一点不同:继承的结构可以访问protect

2014-03-13 11:59:14 1268

转载 strcpy函数的实现

大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plaincopychar *my_strcpy(char *dst,const char *src)  {      assert(dst != NULL);      assert(src != NULL);      char *ret = dst;

2014-03-06 11:20:10 428

转载 TortoiseSVN和VisualSVN-Server的配置使用,外网访问SVN版本库

转自http://hi.baidu.com/shanzhai1088/item/541813dd2ceef703d78ed037,感谢分享SVN客户端程序:TortoiseSVNSVN服务器程序:VisualSVN-Server#####################################################################SVN服务

2014-03-06 11:18:12 1605

转载 C语言union关键字

本文来自http://see.xidian.edu.cn/cpp/html/450.html,感谢分享union 关键字的用法与struct 的用法非常类似。union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。例子如下:union

2014-02-27 10:42:37 397

原创 带头结点的链队列实现

队列(queue)在计算机科学中,是一种先进先出的线性表。和栈相反,它只允许在表的一端进行插入,而在表的另一端删除元素。队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。  队列具有先进先出(FIFO)的特点。  队列空的条件: front = r

2014-02-19 16:49:18 1739

mtk release 的 openwrt 源码说明说

MTK 公司 release 的 openwrt 说明书,内核版本是3.10.14

2015-07-22

空空如也

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

TA关注的人

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