- 博客(18)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
转载 归并排序及其适用范围
====[[C语言]]====/*=============================================================================## FileName: merge_sort_in_c.c# Desc: 归并排序## Author: gavinyao# Email: gav
2014-03-31 22:23:54 2647
转载 堆排序
#include using namespace std;/* #堆排序#% #数组实现#%*///#筛选算法#%void sift(int d[], int ind, int len){ //#置i为要筛选的节点#% int i = ind; //#c中保存i节点的左孩子#% int c = i * 2 + 1; //#+1的目的就是为了解决节点从0开
2014-03-31 22:18:37 607
原创 自己写一个string类
头文件:#ifndef _STRINGS_#define _STRINGS_#include using namespace std;class Strings{ friend ostream& operator<<(ostream& os, const Strings& s);public: Strings(); Strings(char *s); Strings(co
2014-03-28 17:42:59 917
转载 向基类构造函数传递参数
引言:继承固然为我们节省了不少的时间和工序,但是由于子类是由基类派生出来的,因此我们在创建派生类的对象时,仍然需要对基类进行初始化。原因也不难理解,因为子类将基类的所有成员都继承了过去,所以被继承的成员也会出现在子类里,那么我们在构造一个子类的对象时,就会难免调用基类的构造函数。在创建派生类的构造函数时,有两种方法可以对数据进行初始化。第一种:在派生类中创建一个构造函数,然后初始化所以
2014-03-26 10:02:09 6207 3
原创 Qt学习经历
一个Qt的小例子#include #include #include #include int main(int argc, char* argv[]){ QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); //connect QObject::c
2014-03-25 21:55:49 576
原创 智能指针
在类中有指针成员时,使用复制拷贝函数可以使每一个类的对象都有一份自己的指针成员指向的拷贝,以防止如果被拷贝的对象XIGOU,复制的对象的指针成员成为野指针。另一种避免这种结果的途径就是智能指针。智能指针的一种实现方式是指针成员所指空间建立一个计数器,而不是区复制这个空间。每当这个拥有这个指针成员的对象被复制一次,这个计数器就加1.具体情况是这么个样子:代码:#include
2014-03-24 20:36:12 578
原创 大整数C++类的实现
#include#include#include#includeusing namespace std;class BigInt{public: // 操作符重载:1. 参数数目。2. 什么操作符重载应该设为成员函数。 friend ostream& operator << (ostream& out,BigInt& bint); BigInt(); BigInt(unsign
2014-03-24 19:12:07 739
转载 航空售票例子之服务器端的线程设计
服务器端在监听客户端的请求采用了一个线程,在为每个客户请求时又安排了一个线程。下面是用来监听客户端请求的线程所执行的函数:
2014-03-23 15:09:47 833
转载 服务器端的线程缓冲区
服务器端用来处理客户请求时采用了多线程。为每一个线程分配了一个处理信息的缓冲区。/*定义线程缓冲区的使用状态*/#define BUFF_OCCUPIED 1#define BUFF_FREED 0/*线程缓冲区结构*/typedef struct thread_buff_struct_t { /*线程缓冲区底索引号*/ int buff_index; /*保存对应线程底线程号
2014-03-23 12:26:10 1381
转载 一个售票工具之消息格式
一个Linux的航空售票小项目,自己做了一遍。这里再细细地了解一下。首先客户端与服务器之间传递的消息的格式:#define INITIAL_VALUE 65535/* MESSAGE TYPE OF CLIENT */#define DISCONNECT 0#define BUY_TICKET 1#define INQUIRE_ONE 2#define INQUIRE_ALL
2014-03-23 11:26:49 591
原创 pthread多线程
int pthread_join(pthread_t thread, void **retval);返回值:若成功则返回0,否则返回错误编号。调用该函数的线程将一直阻塞,直到指定的线程thread调用pthread_exit,从启动例程中返回或者被取消。看如下程序:#include #include void* printMsg1(void *data){ printf(
2014-03-13 15:49:41 526
原创 使用C++写抽象工厂模式涉及到的一些问题
代码是摘自《C++高级编程第二版》具体类图如下:代码如下:汽车类:#include class Car{public: virtual void info() = 0;};class Ford : public Car{public: virtual void info() { std::cout<< "Ford" << std::endl; }};
2014-03-09 17:20:40 742
原创 C++成员函数返回对象的引用
在C++类的成员函数中,包含了一个隐含的this指针。一般情况下,并不会显示地使用this指针,即通过”this->XXX“来使用类的成员。但是在成员函数返回对该调用函数的对象的引用时,会显示的使用this。为什么要返回调用该函数的对象的引用呢?C++ Primer 4里说用户希望能将几个操作连接成一个独立的表达式,例如下面:myScreen.move(4,0);myScreen.set
2014-03-08 15:54:17 2442
原创 组合模式
组合模式其实就是一个树状结构,其中有点包含组合,有的点就是叶子。组合模式中定义了一个包含了组合和叶子的抽象类,由于我们在使用时组合和叶子都继承了这个抽象类,所以为了避免叶子类使用了组合的方法,抽象类中的每一个方法都抛出一个异常。所以叶子子类重新定义了与自己相关的方法,组合子类重新定义了与自己相关的方法。如果它们调用了和自己不相关的方法,则抛出异常。组合模式中的抽象类有两个责任,一个是叶子责
2014-03-05 16:34:50 576
原创 C++容器的实现
现在的面试经常问到vector或queue怎么实现,好烦啊。由于刚刚看了迭代器设计模式一文,文中讲解了Java Collection Framework的框架,它们都实现了下面这个接口:所以,可以依靠这个接口实现我们自己的C++的容器类,有时间一定试一试,顺便与STL做一些比较。具体拿出其中的一个方法,比如iterator()方法来阐述一下如何实现。首先我们定义一个Iterat
2014-03-05 15:03:11 650
原创 设计模式之2迭代器原则
找出具有多重责任的类:设计原则:类的每个责任都有改变的潜在区域。超过一个责任,意味着超过一个改变区域。这个设计原则告诉我们,尽量让每个类保持单一责任。在迭代器模式中,对象集合类不仅要完成自己的事情(管理某种聚合),还要同时承担更多的责任(例如遍历)。这是对象集合类的两个责任,违反了我们的设计原则,所以把其中的一个责任(遍历)委托给了迭代器类。我对这个设计原则和文中的解释的理解为,设
2014-03-05 10:33:43 665
原创 C++的类成员
函数成员:1. 形参:A. 函数的形参可以是指针。在被调用函数中,对形参指针做修改并不影响实参的值,但是对形参指针所指向对象的修改将会影响实际的值。B. 实参是大型对象时,复制对象所付出的的时间和存储空间代价往往过大。对于这种情况形参应该定义成为引用或指针类型。C. 如果使用引用形参的唯一目的是避免复制参数,则应该将形参定义为const引用。D. ??const引用和
2014-03-04 16:13:07 717
原创 在Nginx中发现的trick
在判断HTTP发送方的请求方法时,可以这么来判断:if(!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))){ return NGX_HTTP_NOT_ALLOWED;}这个条件判断是要求请求方法必须是get或head,其他底不予处理。
2014-03-03 18:22:14 608
航空售票小系统
2014-03-23
flex在线视频聊天
2010-08-22
Eclipse的使用问题
2010-11-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人