- 博客(19)
- 资源 (12)
- 收藏
- 关注
转载 一致hash算法
一致性 hash 算法( consistent hashing )张亮源地址:http://blog.csdn.net/sparkliang/article/details/5279393consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在 cache 系统中应用越来越广泛;1
2012-04-26 22:04:43 544
转载 N个平面可以把空间分成几部分
在立体几何的中有一个问题:“3个相互平行的平面可将空间分成几部分?”正确的解答:“4个部分.”接着提出:“3个平面可将空间分成几部分?”的问题,由于去掉了“相互平行”的条件,这个问题必须分类讨论回答.当3个平面相互平行时,分空间为4个部分;当有且仅有两个平面平行时,分空间为6个部分;当3个平面两两相交于一条直线时,分空间为6个部分;当3个平面两两相交,3条交线不交于同一点时,分空间
2012-04-24 16:51:35 5232
转载 Kernel的管理事项
一般来说,Kernel 为了达成使用者所需要的正确运算结果,他必须要管理的事项有: • 系统调用接口(System call interface) : 为了方便程序开发者可以轻易的透过与 kernel 的沟通,将硬件的资源进一步的利用, 于是需要有这个简易的接口来方便程序开发者。 • 进程管理(Process control) : 总有听过所谓的『多任务环境』吧?一部计算机
2012-04-22 16:19:36 440
原创 类模板中的友元
普通友元 非模板类或非模板函数可以是类模板的友元: template class Bar { // grants access to ordinary, nontemplate class and function friend class FooBar; friend void fcn();
2012-04-19 19:40:07 884
原创 显式指定函数模板的形参使用的类型
在某些情况下,不可能推断模板实参的类型。当函数的返回类型必须与形参表中所用的所有类型都不同时,最常出现这一问题。在这种情况下,有必要覆盖模板实参推断机制,并显式指定为模板形参所用的类型或值。方法一:可能是强制 sum 的调用者将较小的类型强制转换为希望作为结果使用的类型template T sum(T, U);int i; short s; sum(static_cas
2012-04-19 18:20:37 3079
翻译 类模板的成员函数与普通函数模板的区别
类模板的成员函数本身也是函数模板。像任何其他函数模板一样,需要使用类模板的成员函数产生该成员的实例化。与其他函数模板不同的是,在实例化类板形参由调用该函数的对象的类型确定。例如,当调用 Queue 类型对象的 push 成员时,实例化的 push 函数为 void Queue::push(const int &val) 对象的模板实参能够确定成员函数模板形参,这一事实
2012-04-19 18:17:38 6471
转载 解决图像刷新问题的VC++双缓冲方法
在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。 因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM
2012-04-19 16:54:07 2180
翻译 关键概念:名字查找与继承
关键概念:名字查找与继承 理解 C++ 中继承层次的关键在于理解如何确定函数调用。确定函数调用遵循以下四个步骤: 1. 首先确定进行函数调用的对象、引用或指针的静态类型。2. 在该类中查找函数,如果找不到,就在直接基类中查找,如此循着类的继承链往上找,直到找到该函数或者查找完最后一个类。如果不能在类或其相关基类中找到该名字,则调用是错误的。 3. 一旦找到了该名字,就进行
2012-04-18 14:15:12 514
转载 作用域与成员函数
作用域与成员函数在基类和派生类中使用同一名字的成员函数,其行为与数据成员一样:在派生类作用域中派生类成员将屏蔽基类成员。即使函数原型不同,基类成员也会被屏蔽。class Base{public: int Get(){ return 0; }};class Child:public Base{public: int Get(int i){ return i; }
2012-04-18 14:04:39 1524
翻译 构造函数和析构函数中的虚函数
如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数自身类型定义的版本。考虑如果从基类构造函数(或析构函数)调用虚函数的派生类版本会怎么样。虚函数的派生类版本很可能会访问派生类对象的成员,毕竟,如果派生类版本不需要使用派生类对象的成员,派生类多半能够使用基类中的定义。但是,对象的派生部分的成员不会在基类构造函数运行期间初始化,实际上,如果允许这样的访问,程序很可能会崩溃。
2012-04-18 13:35:08 525
转载 static_cast 、dynamic_cast、const_cast 和 reinterpret_cast
3.1 static_cast用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成子类表示
2012-04-18 11:18:00 424
原创 单例类
1.概念 《设计模式》一书中对于Singleton模式是这样定义的:保证一个类有且仅有一个实例,并且提供了一个全局的访问点。 在JAVA语言中单例类的一个重要的特点是类的构造函数是私有的,从而避免外界利用构造函数直接创建出任意多的实例。直接指出的是,由于构造函数是私有的,因此此类不能被继承。2.动机 在很多操作中,比如建立目录,打印机,数据库连接都需要这样的单线程操作,如果一个类有多个
2012-04-17 22:59:13 795
原创 友元类与继承
C++ Primer中有如下描述:友元关系不能继承。基类的友元对派生类的成员没有特殊访问权限。如果基类被授予友元关系,则只有基类具有特殊访问权限,该基类的派生类不能访问授予友元关系的类。 然而通过实践发现,VS编译器并没有安装上述描述来处理,下面的规则与上述描述相悖,却符合VS编译器的处理规则。注:有待通过g++编译器来验证。1 友元类的继承问题1.1 A类的友元B的派生类C
2012-04-17 20:40:37 11982 3
原创 构造函数与初始化
先See代码:#include using namespace std;class Base{public: Base(){} //如果这里不写,会这么样? int m_i;};int main(){ Base b; cout<<b.m_i<<endl; system("pause"); return 0;} 如果没有自己写构造函
2012-04-17 13:54:52 639
转载 c++ premier 学习日志
c++ premier 学习日志 第一章 快速入门1. 每个C++程序都包含一个或多个函数,而且必须有一个命名为main。函数由执行函数功能的语句序列组成;2. main函数是唯一被操作系统显式调用的函数;3. main函数的形参个数是有限的4. 函数体是函数定义的最后部分,是以花括号开
2012-04-17 13:45:02 2631
原创 多态的核心--虚函数--静态类型和动态类型
静态类型(在编译时可知的引用类型或指针类型)动态类型(指针或引用所绑定的对象的类型这是仅在运行时可知的)#include using namespace std;class A{public: A() { fun(); };//private: //如果这里设置为private则编译不通过 virtual void fun(int i=10)
2012-04-16 20:56:13 819
翻译 istream_iterator ostream_iterator
ostream_iterator 对象必须与特定的流绑定在一起。在创建 istream_iterator 时,可直接将它绑定到一个流上。另一种方法是在创建时不提供实参,则该迭代器指向超出末端位置。ostream_iterator 不提供超出末端迭代器。 在创建 ostream_iterator 对象时,可提供第二个(可选的)实参,指定将元素写入输出流时使用的分隔符。分隔符必须是
2012-04-15 16:43:13 707
转载 CAnimateCtrl
要播放avi首先要打开avi,可以使用open成员函数。open函数有两种类型:BOOL CAnimateCtrl::Open(LPCTSTR lpszName)BOOL CAnimateCtrl::Open(UINT nID)第一种要传送的参数为avi的地址,格式为字符串,第二种为int型,是在项目中的资源号(需要事先导入avi文件)。打开文件后就可以控制avi的播放了,下面
2012-04-06 15:45:46 1406 1
转载 一个C++应用程序的启动过程
一个C++应用程序的启动过程 其实是系统调用CRT,然后CRT调用的WinMain. a.shell调用CreateProcess激活App.exe b.系统产生一个进程内核对象,使用计数值加1 c.系统为此进程产生4GB的地址空间 d.加载器将必要的码加载到上述地址空间中,包括App.exe的程序,资料以及所需要的dll。它们被记录在可执行文件PE格式的.
2012-04-06 10:49:03 1043
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人