上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 19 下一页
摘要: 参考:1. 深入理解Linux网络技术内幕 PartIII 2. Essential Linux Device Driver Chap15 3. Linux 内核源码剖析——TCP/IP 实现 5. rtl8139too.c 2010.4 修订 6. Linux 内核 2.6.33 7. google当你在写一个网卡驱动的时候回接触到3个重要的数据结构:1. struct sk_buff sk_buff 结构贯穿整个协议栈2. struct net_device 该结构定义了网卡驱动和协议栈之间的接口3. I/O 总线相关的结构,比如 struct pci_... 阅读全文
posted @ 2012-08-04 21:08 KingsLanding 阅读(1308) 评论(0) 推荐(0) 编辑
摘要: Array 是一种大小固定的顺序容器。array 的申明:template <class T, size_t N>class array;Array内部只存储所包含的数据,哪怕是大小也只不过是个模板参数。和普通使用‘[]’语法申明的数组相比,只不过显得更加高效(操作高效),因为这个类添加了一系列的全局成员函数用来操作这些元素。下面来列一些主要的操作:// ‘[]’ 操作#include <iostream>#include <array> int main (){ std::array<int,10> myarray; unsigned int 阅读全文
posted @ 2012-08-02 22:54 KingsLanding 阅读(7026) 评论(0) 推荐(1) 编辑
摘要: 很多人以为“指向数组的指针”就是“指向指针的指针”,于是有人写这样的代码:int a[3][4];int **p = a;//错误 这个代码的错误之处在于a是一个数组,它的成员也是数组,所以a叫做“数组的数组”——C++中严格说来没有二维数组。那么,你要用一个指针来记录a,就要用一个能表示“数组的数组”的指针,以下代码是正确的:int (*p)[4] = a;//正确 只有这样才能保证++p使p指向a的下一对像(该对像是一个数组)。 顺便提一句:不要写成“int *p[4];”来看一下指针数组的指针怎么用,既然都是指针也应该支持动态内存分配,下面的例子展示了如何对数组的指针动态分配内存:... 阅读全文
posted @ 2012-07-30 22:25 KingsLanding 阅读(418) 评论(0) 推荐(1) 编辑
摘要: C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不上在嵌入式系统上。如果上述任何问题的答案是“是”的话,那么我知道我得认真考虑我是否应该去做这份工作。从面试.. 阅读全文
posted @ 2012-07-30 21:47 KingsLanding 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 面向对象编程的三要素:数据抽象、继承以及动态绑定。这里讨论一个算术表达式树问题,如(-5)*(3+4)对应的表达式树为:我们希望通过调用合适的函数来创建这样的树,然后打印该树完整的括号化形式。例如:Expr t = Expr("*", Expr("-",5), Expr("+", 3, 4));cout << t << endl; 输出结果为:((-5)*(3+4))此外我们不想为这些表达式的表示形式操心,也不想关心它们内存分配和回收的事宜。从上面图我们可以看出,图中有两种对象节点和箭头。每个节点包含一个值—— 阅读全文
posted @ 2012-07-28 22:25 KingsLanding 阅读(2379) 评论(2) 推荐(0) 编辑
摘要: 上一回讨论的句柄技术有一个明显的缺点:为了将句柄捆绑到类T的对象上,必须要新定义一个具有类型为T的成员对象的新类。这个毛病相当麻烦,如果想新设计一个类的句柄类,就需要新定义两个类。C++之父提到过一种定义句柄类的技术可以弥补这一个缺点,主要思想就是将引用技术从数据中分离出来,把引用计数放到句柄类自己的对象之中。class Handle{ public: // 和前面一样 private: Point *p; int *u;};这里不再有指向UPoint的指针,我们使用指向Point的指针和指向一个int的指针表示引用计数。使... 阅读全文
posted @ 2012-07-27 22:22 KingsLanding 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 第五章介绍了代理类,这个类能让我们在一个容器中存储类型不同但相互关联的对象。这种方法需要为每个对象创建一个代理,并要将代理存储在容器中。创建代理将会复制所代理的对象。 如果想避免这些复制该怎么做呢?可以使用句柄类。它允许在保持代理的多态行为的同时,还可以避免进行不必要的复制。 处于多态的环境中,我们可以知道对象的基类类型,但是不知道对象本身的类型或者怎么样复制这种类型的对象。 如果多个指针指向同一个对象,就必须考虑要在什么时候删除对象。不能太早也不能太晚,太早删除,就会有某个仍然指向它的指针存在,再使用这个指针就会产生未定义行为。删除得太晚又会占用本来早该另作它用的空间。 需要一种... 阅读全文
posted @ 2012-07-26 23:12 KingsLanding 阅读(1060) 评论(0) 推荐(1) 编辑
摘要: 前言: OOP 的 意思 在我看来就是使用继承和动态绑定的编程方式。继承是一种抽象,它允许程序员在某些时候忽略相似对象之间的差异,又在其他时候利用这些差异。 C++ 程序员都应该知道,只有在程序通过指向基类对象的指针或基类对象的引用调用虚函数时,才会发生运行时的多态现象。 对象的创建和复制不是运行时多态的,这一点严重影响了类的设计。所以,容器——无论是类似于数组或者结构体的内建容器还是用户自定义容器类——只能获得编译时类型一致的元素值。如果有一系列类之间存在继承关系,当我们需要创建、复制和存储对象,而这些对象的确切类型只有到运行时才能知道时,则这种编译时的检查会带来一些麻烦。 通常,解... 阅读全文
posted @ 2012-07-25 22:49 KingsLanding 阅读(956) 评论(0) 推荐(1) 编辑
摘要: 一. 你需要一个构造函数吗? 构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的特点:1.构造函数的命名必须和类名完全相同。2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用。 有些内太简单,它们的结构就是它们的接口,所以不需要构造函数。但是一般情况下都需要构造函数来初始化成员变量。二.. 阅读全文
posted @ 2012-07-25 21:56 KingsLanding 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 传统业务结构下,由于多种技术之间的孤立性(LAN 与 SAN),使得数据中心服务器总是提供多个对外 I/O 接口(在此,可理解成服务器的网卡):用于数据计算与交互的 LAN 接口以及数据访问的存储接口,某些特殊环境如特定 HPC(高性能计算)环境下的超低时延接口。服务器的多个 I/O 接口导致了数据中心环境下多个独立运行的网络同时存在,不仅使得数据中心布线复杂,不同的网络、接口形体造成的异构还直接增加了额外人员的运行维护、培训管理等高昂成本投入,特别是存储网络的低兼容性特点,使得数据中心的业务扩展往往存在约束。 数据中心里会有两个网络,一个是前端 IP 网络,后端可能会是光纤网络,都会在... 阅读全文
posted @ 2012-07-21 10:41 KingsLanding 阅读(448) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 19 下一页