摘要: Warning: Cannot modify header information - headers already sent by ......打开 php.ini 然后把 output_buffering 设为 on 。重起 阅读全文
posted @ 2010-06-20 22:41 刘宇石 阅读(167) 评论(0) 推荐(1) 编辑
摘要: Windows下的Memcache安装:1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。NOTE: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。4.下载php_memcache.dll,请自己查找对应的php版本的文件5. 在C:\winnt\php.ini 加入一行 阅读全文
posted @ 2010-06-19 23:20 刘宇石 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 首先验证码的原理就是,画一张图片,然后在这张图片上写一些字,然后加一些干扰的线条,像素点之类的东西就ok了, 这里要使用php那就要知道php中画图的函数是那些,然后拿来用便是了。 如果要用php的画图函数,首先要启用这个模块的功能。就是把php.ini中php_gd2.dll前面的注释去掉就好了。 阅读全文
posted @ 2010-05-30 23:49 刘宇石 阅读(8449) 评论(3) 推荐(0) 编辑
摘要: final:修饰符,如果一个类被声明为final,意味着他不能再派生出新的子类,不能作为父类被继承。把变量或者方法定义为final可以保证他们不会被改变,被定义为final的变量必须赋初值。finally:异常处理时用来最好执行任何清理操作。finalize:Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对 阅读全文
posted @ 2010-03-16 01:16 刘宇石 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 顾名思义,成员函数指针就是一个指向类的成员函数的指针,那么它与普通的函数指针有什么不同呢?首先他们都是指向函数的指针只不过成员函数指针指向的是成员函数。在声明的时候需要所属类名和(::)作用域运算符:void (ClassName::*pFunc) (int, int); 还有就是在使用的时候需要通过相应类的对象来调用。class Mammal{public: Mammal():itsAge(1) { cout << "Mammal constructor..."n"; } virtual ~Mammal() { cout << " 阅读全文
posted @ 2009-03-07 01:08 刘宇石 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 函数指针顾名思义,就是指向函数的一个指针,就像数组的名字就是一个指向数组第一个元素的指针。同样的,函数的名字也是一个指向一个函数的指针常量。 通常来说,不应该使用函数指针,使用函数指针能够支持具备面向对象的某些修点的编程风格;然而,如果编写的是高度动态的,需要基于运行阶段的决策执行不同操作的程序,函数指针可以提供可行的解决方案。而有的时候这个解决方案更加方便和简洁。 函数指针的声明方法: long (*pFuncOne) (int, int); 这是指向一个有两个int型参数,返回值为long型的一个函数指针。注意中间的括号是必不可少的,如果去掉就变成了一个返回long型的指针的函数了,而不. 阅读全文
posted @ 2009-03-04 01:40 刘宇石 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 每个类在实例化的时候都有他自己的成员变量,这个成员变量是其他实例所不可见的即使它们是从同一个类实例化而来。那么当我们需要同一种类共享一个变量或者函数怎么办呢?这个时候静态成员数据就发挥了它的作用,静态成员数据相对于同种类之间是全局的,而相对于其他不同的类却是局部的。这就好像是一种全局数据和成员数据的折衷。 我们在声明静态变量的时候只要在声明变量和函数的前面加上static就可以了: static int age; 但是要使用它的时候,我们需要对它进行初始化: 对象::age = 0; 因为在创建对象的时候静态变量并没有被分配内存空间,所以我们需要对它初始化,因为它并不在这个对象中,它是属于这. 阅读全文
posted @ 2009-03-02 02:24 刘宇石 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 在程序中,有些时候我们的基类是不需要实例化的,比如有一个基类哺乳动物,这个在程序实现的时候没有必要把他实例化出来。而只是一个种群的抽象描述,也无法进行实例化。所以在C++ 我们可以创建一种叫做抽象数据类型的类。这个类只是用来继承的,单独没有实例化,没有意义。其实这也是减少了程序员编写代码后调试的调试难度。在编译器中如果用户对抽象类进行实例化,那么编译器就会报错。 c++中通过提供纯虚函数来支持抽象类,就是说,只要类中包含至少一个纯虚函数那么这个类就是抽象类。 纯虚函数的定义方法就是把虚函数初始化为0: virtual void GetAge() const {} = 0;这样派生类在继承这个. 阅读全文
posted @ 2009-02-28 00:45 刘宇石 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 前面说了多重继承但是只是讲了他的提出和一些好处,其实还是有些问题的,多重继承增加了累的继承层次的复杂性,并且它的调试难度也增加了, 这些是很多人不愿意看到的事情。这样也就增加了开发的风险。所以能够想办法用单继承的来实现的东西最好避免使用多重继承。 还有一种做法是使用混合类或者叫功能类,这个类中只放一些方法,来等待调用,这些方法都是共通的一些方法,而真正的数据都是存在于其他的类中。很多类都可以同他一起派生出新的类出来,但我们不必担心会有同名方法的存在,因为方法很多都是在这个功能类中。 这里说到同名方法,解决同名方法的问题还可以利用虚继承的方法,如果有个Animal类,从他派生出来的Horse类. 阅读全文
posted @ 2009-02-28 00:12 刘宇石 阅读(986) 评论(0) 推荐(0) 编辑
摘要: 这个用代码实现起来很简单。只是在声明子类的时候继承多个父类就行了: class Man {....} class Spider {...} class SpiderMan : public Man, public Spider {...} 但是之所以提出这个概念,是为了更清晰的程序结构,如果不用多重继承的话,那么我们就需要把一些需要的属性,比如上面人的一些属性,和蜘蛛的一些属性一同提取出来上交到他们的父类,然后再继承下来新的SpiderMan子类,但是这样又有些违背的基类的一些理念,我们把一些个性的属性发在了基类里面。 好吧为了避免这样的情况发生我们把其中的一个子类的属性发在另一个子类里面然. 阅读全文
posted @ 2009-02-27 01:36 刘宇石 阅读(194) 评论(0) 推荐(0) 编辑