- 博客(13)
- 资源 (12)
- 收藏
- 关注
原创 读Head First设计模式小结
设计原则: 1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起 2.针对接口编程,而不是针对实现编程 3.多用组合,少用继承 4.为交互对象之间松耦合设计而努力 5.类应该对扩张开放,对修改关闭 6.要依赖于抽象类,不要依赖于具体类 7.最少知识原则:只和你的密友谈话 8.好莱坞原则:别调用我们,我们会调用你 9.一个类应该只有一个引起变化的原因
2014-05-29 19:45:44 932
原创 C++必知必会(6)
条款55模板的模板参数 见一下stack适配器采用默认Deque的例子 template> class Stack{ public: ~stack(); void push(); private: Conts_; }; 这里,Stack的用户现在必须提供一个模板实参,表示元素的类型,还可以提供一个表示容器的类型(默认为deque),并且容器必须能够容
2014-05-29 16:16:23 961
原创 C++必知必会(5)
条款47模板局部特化 不能对函数模板进行局部特化,所能做的即使重载它们。 但可以对类模板进行局部特化。 template class Heap; //主模板 template classHeap{…}; //局部特化 局部特化的语法类似完全特化,但是他的模板参数列表是非空的。当使用任何(未经修饰的)指针类型来实例化一个Heap时,这个局部特化版将优先于主模板而被采用。进一步而言
2014-05-28 18:22:03 989
原创 C++必知必会(4)
条款35 placement new 直接调用构造函数是行不通的,然而可以通过使用placement new来哄骗编译器调用构造函数: void *operatornew(size_t, void* p) throw() { return p;} placement new是operator new的一个标准的重载版本,也位于全局名字空间中,但和我们通常看到的operator new不同,
2014-05-28 14:23:33 785
原创 C++必知必会(3)
条款26操作符函数查找 class X { public: Xoperator %( const X& ) const; //二元取余操作 XmemFunc1( const X&); voidmemFunc2(); }; 可以采用中缀或函数调用语法来调用这个重载
2014-05-27 21:38:59 749
原创 C++必知必会(2)
17.处理函数和数组声明 指向函数的指针声明与指向数组的指针声明很容易混淆,主要原因在于函数和数组修饰符的优先级比指针修饰符的优先级高,因此通常需要使用圆括号。 int *f1(); //一个返回值为int* 的函数 int (*fp1)(); //一个指针,指向一个返回值为int的函数 const
2014-05-26 22:12:54 860
原创 C++必知必会(1)
条款1数据抽象 抽象数据类型的用途在于将变成语言扩展到一个特定的问题领域。一般对抽象数据类型的定义需要准训以下步骤: 1. 为类型取一个描述性的名字 2. 列出类型所能执行的操作 3. 为类型设计接口 4. 实现类型 条款2多态 多态类型,从基类继承的最重要的多系就是它们的接口,而不是它们的实现。 条款3设计模式 条款4 STL STL优秀思想体
2014-05-23 19:38:12 1506
原创 Linux/UNIX套接字连接
套接字连接 套接字是一种通信机子,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以夸网络进行。套接字的创建和使用与管道是有区别的,因为套接字明确地将客户和服务器区分开来。 套接字连接: 首先,服务器应用程序用系统调用socket来创建一个套接字,它是系统分配给该服务器进程的类似文件描述符的资源,它不能与其他进程共享。 接下来,服务器进程会给套接字起个名字。本地套接字的
2014-05-13 15:38:01 2039
原创 Linux/UNIX之进程间的通信(2)
进程间的通信(2) 有三种IPC我们称为XSI IPC,即消息队列、信号量以及共享存储器,它们之间有很多相似之处。 标识符和键 每个内核的IPC结构(消息队列、信号量或共享存储段)都用一个非负整数的标识符加以引用。例如,为了对一个消息队列发送或取消息,只需要知道其队列标识符。与文件描述符不同,IPC标识符不是小的整数。当一个IPC结构被创建,以后被删除时,与这种结果相关的标识符连续加1,知道
2014-05-13 10:56:07 736
原创 Linux/UNIX进程间的通信(1)
进程间的通信(1) 进程间的通信IPC(InterProcessCommunication )主要有以下不同形式: 半双工管道和FIFO;全双工管道和命名全双工管道;消息队列,信号量和共享存储;套接字和STREAMS 管道 pipe函数 当从一个进程连接到另一个进程时,我们使用术语管道。我们通常是把一个进程的输出通过管道连接到另一个进程的输入。 管道是由调用pipe函数创建的: #i
2014-05-09 18:18:02 801
原创 Linux/UNIX高级I/O
高级I/O 非阻塞IO 非阻塞I/O使我们可以调用open、read和write这样的I/O操作,并使这些操作不会永久阻塞。如果这种操作不能完成,则调用立即出错返回,表示该操作如继续执行将阻塞。 对于一个给定的描述符有两种方法对其指定非阻塞I/O: 1) 如果调用open获得描述符,则可指定O_NONBLOCK标志 2) 对于已打开的一个描述符,则可调用fcntl,由
2014-05-08 16:45:21 1052
转载 Linux 守护进程的编程方法
Linux 守护进程的编程方法 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并
2014-05-08 09:10:34 499
原创 Linux/UNIX线程控制
线程控制 线程属性 调用pthread_create函数的例子中,传入的参数都是空指针,而不是指向pthread_attr_t结果的指针。可以用pthread_attr_t结构修改线程默认属性,并把这些属性与创建的线程联系起来。可以使用pthread_attr_init函数初始化pthreaad_attr_t结构。调用pthread_attr_init以后,pthread_attr_t结构所
2014-05-07 16:49:44 882
深入理解Nginx(Nginx模块开发与架构解析).pdf
2014-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人