- 博客(14)
- 资源 (26)
- 收藏
- 关注
转载 Embrace Change
We all have a unique way of communicating our story, a way that reflects our life experience. The photographer uses a camera, the artist a brush, and the musician a melody or rhythm. But as the year
2013-06-27 22:14:39 1569
转载 C++单例模式实现技巧介绍
C++是一款应用非常广泛的计算机编程语言。它支持多种程序设计风格,其中包括对面向对象设计的支持。今天为大家介绍的C++单例模式也称为单件模式、单子模式。使用单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出等。C++单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显得很
2013-06-26 08:33:34 751
转载 C语言类型转换 .
类型转换是C语言中常识性的知识点,但不注意又会有让人迷惑的时候,来看一道笔试题:以下两个程序片段A和B,问那个for循环能运行?A:unsigned short i; unsigned short index=0; for(i = 0; i { ... ...}B: unsigned short i; unsigned long inde
2013-06-21 16:09:26 850
原创 写一个C宏,实现大小端之间的转换
#define sw16(x) \ ((short)( \ (((short)(x) & (short)0x00ffU) (((short)(x) & (short)0xff00U) >> 8 ) )) 假设x=0xaabb(short)(x) & (short)0x00ffU) 与将16位数高8位置0 成了0x00bb 然后
2013-06-21 13:48:04 8212
原创 Linux中断扫盲篇
什么是中断?Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。第一种方案会让内核做不少的无用功,因为轮询总会周期
2013-06-17 13:15:40 1055
转载 伙伴算法
如上图所示,首先先来了解下linux内存管理的架构,用于了解伙伴算法所在的位置。 伙伴算法在内存管理中用来消除外部碎片,用Wolfgang Mauerer(《深入linux内核架构》的作者)的话说“伙伴系统基于一种相对简单然而令人吃惊的强大算法,已经伴随我们几乎40年。它结合了优秀内存分配器的两个关键特征:速度和效率。” 这张图能较直观的反映伙伴系统在内存管
2013-06-14 17:12:13 1218
原创 基于Linux伙伴算法和DirecfFB架构的帧缓冲驱动层内存管理的一个实现
1.初始化帧缓冲驱动的管理 在InitFBManagement。未完待续
2013-06-14 13:21:39 997
原创 面向对象概念:重载和覆盖
一、从定义上来说: 重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 覆盖:是指子类重新定义父类虚函数的方法。 成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual
2013-06-08 16:14:37 1812
原创 面向对象概念:字段、属性和方法
1、字段和属性的概念和区别 字段:一个成员,它表示与对象或类关联的变量 在面向对象里,属性表示的是一个对象的状态,既然是状态那么肯定是用来获取或设置的。 在Java里,为了避免外界对属性的直接访问,从而建议程序员对于每个属性,都应该提供getter和setter来保护。 在C#里,为了更直接和方便的处理属性这一字段,从而提供了“属性”这一特
2013-06-08 15:20:08 7928
原创 实例解析使用指针作为函数参数传递需要注意的问题
1. 试图用指针参数申请动态内存void GetMemory(char *ip, int num){ ip = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100); // str 仍然为 NULL strcpy(str, "hello"); //
2013-06-08 13:26:14 1412
原创 通过2个实例理解:不要返回指向栈内存的指针
一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)--------由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap)-----一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
2013-06-08 12:59:39 3274 1
原创 嵌入式Linux系统性能优化的一些着手点
系统软件性能低下的问题,主要与三种因数有关:CPU、内存、IO。 如何优化系统的性能? 第一步,找出系统性能的瓶颈。(1)程序的运算量很大,CPU过于繁忙,CPU是瓶颈。 可以通过top命令观察CPU的利用率情况。(2)过多或过于频繁的读写文件、内存等I/O操作,CPU更多的是处于等待,(存储设备、网络设备、异步IO)等I/O操作是性能瓶颈。(3)内存不够。物
2013-06-06 15:52:39 2749
原创 线程阻塞的一种情况
阻塞状态是正在运行的线程遇到某个特殊情况。例如,延迟、挂起、等待I/O操作完成等。 进入阻塞状态的线程让出CPU,并暂时停止自己的执行。线程进入阻塞状态后,就一直等待,直到引起阻塞的原因被消除,线程又转入就绪状态,重新进入就绪队列排队。 例如:线程A等待线程B的数据,线程B等待线程A的数据,互相等待,就会陷入阻塞,这也是一种线程阻塞。下面的例子:假设线程A获得了mutex锁,这时另外
2013-06-05 17:22:11 3057
转载 Linux避免死锁的一些机制
转自博客:http://www.cnblogs.com/huyc/archive/2012/12/18/2823647.html 死锁应该有3个原因:1.独占资源2.循环等待3.不可剥夺网上看到的4个条件,实际上还是3个,因为请求和等待导致的死锁毕竟有点让人难堪,实际上的死锁多是因为请求等待导致的循环等待。在用户态,由于Linux提倡进程之间的公平,线程之间甚至没有
2013-06-05 16:20:24 1693
深入浅出gSOAP C++移植和开发
2013-11-18
Linux/unix shell-scriptting编程经典PPT
2011-05-01
嵌入式Linux应用程序开发详解(完整版)
2011-04-04
GNU/Linux Application Programming(英文版)
2011-04-04
Linux_Posix多线程编程原理与实践(中文版)
2011-04-04
IP+Telephony(关于SIP和H323的经典英文书籍)
2010-08-26
Object-Oriented+Programming+And+The+Objective-C+Language.pdf
2010-03-31
ubuntu系统管理教程
2009-05-14
Teach Yourself C in 21 Days
2009-05-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人