自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 数据结构-外部排序

外部排序分为两个独立的阶段。首先,将含有n个记录的文件分为若干长度为l的子文件(归并段),依次读入内存并用内部排序方法进行排序,将排序后的子文件重新写入外存。然后对这些归并段进行逐趟归并。  提高外排的效率应主要着眼于外存信息的读写次数,而这与归并的趟数成正比。对m个初始归并段进行k路平衡归并时,m越小或k越大,便能减少趟数。  当k越大,归并时,需要的比较次数就越多,可以利用败者树减少比

2015-07-26 17:13:47 424

原创 数据结构-内部排序

1.插入排序  直接插入排序,当关键字已经有序时,需要比较n-1次,不需要移动。平均情况下,时间复杂度为O(n^2)。  折半插入排序,可以减少比较次数,但不能减少移动次数;2-路插入排序,需要n个记录的辅助空间,可以一定程度的减少移动次数。  希尔排序的基本思想是先将整个待排记录序列分割成若干子序列分别进行直接插入排序,待整个序列“基本有序”时,再对全体记录进行一次直接插入排序。

2015-07-26 16:56:16 566

原创 数据结构-查找

1.静态查找表(顺序查找、折半查找、插值查找、静态最优查找树、静态次优查找树、分块查找)  插值查找适合关键字均匀分布的有序表。  如果有序表中各记录的查找概率不等,则使查找性能达最佳的判定树是其带权路径长度之和取最小值的二叉树,即静态最优查找树。构造静态最优查找树的时间代价较高,一般以次优查找树代替。构造次优查找树的方法是,取第i个节点作为根节点,使得左右子树的权值差最小。然后递归进行。

2015-07-26 16:06:11 318

原创 c++对象模型-semantics of construction

1.虚基类的构造函数由最底层的类的构造函数调用。所以对处于虚继承中间层的类的构造函数,有时(本身就是最底层的时候)需要调用基类的构造函数,有时(本身由更底层构造函数调用的时候)不需要。所以编译器会生成两个版本。2.vptr的初始化操作在base class constructors 调用之后,在“member initialization list”或程序员的代码之前。

2015-07-16 20:43:26 300

原创 c++对象模型-the sematics of function

1.多重继承下的虚函数

2015-07-16 16:08:40 241

原创 c++对象模型-the semantics of data

1.origin.x=0.0;  pt->x=0.0; 这两者有什么差异:当pt的继承结构中含有虚基类,且x是从虚基类继承而来时,由于静态不知道pt指向哪个类的对象,x的offset必须动态时才能确定。但origin就没有这个问题。2.继承与数据成员  只有继承无多态:子类对象中的基类部分,与基类对象中的布局完全一致。  加上多态:在对象头部加一个虚函数表指针。  多重继承

2015-07-16 15:32:57 324

原创 数据结构-图

1.最小生成树prim算法:一开始集合U只有一个顶点u0,每次从U和V-U之间选一条代价最小的边u0v0,将v0并入U,直到U=V。设图中有n个顶点,每次得一个顶点,且每次得顶点都要求代价最小的边,所以时间复杂度为O(n^2)。与边数无关,因此适合求边稠密的图的最小生成树。kruskal算法:每次选择代价最小的边,同时要求边的两个顶点落在不同的连通分量上。在选取最小代价的边时,至多对e条边

2015-07-15 09:26:44 280

原创 c++对象模型-the semantics of constructors

1.default constructor 的构建,除了以下四种情况,啥都不做  1)带有default constructor的member class object:需要调用member的constructor  2)带有default constructor的base class :需要调用base的constructor  3)带有一个virual function 的clas

2015-07-14 19:49:57 236

原创 c++primer要点-特殊工具与技术

1.new表达式执行了3步操作:1)调用operator new 标准库函数分配内存;2)运行相应的构造函数构造对象;3)返回指向该对象的指针  delete表达式的2步操作:1)执行对象的析构函数;2)调用operator delete库函数释放内存  应用程序可以在全局作用域中定义operator new 函数和operator delete 函数,也可以将它们定义为成员函数;当定义成

2015-07-11 18:23:05 339

原创 c++primer要点-异常、命名空间、多继承

1.编译器使用异常抛出表达式来对异常对象进行拷贝初始化,该表达式决定了异常对象的类型;进入catch语句后,通过异常对象初始化异常声明中的参数。2.throw;//重新抛出语句,将当前异常对象沿着调用链向上传递。catch(...) 捕获所有异常。3.要想处理构造函数初始值抛出的异常,必须将构造函数写成函数try语句块。4.一个noexcept函数抛出了异常,程序会terminate;

2015-07-11 17:20:05 285

原创 c++primer要点-模板与泛型编程

1.当调用一个函数模板时,编译器用函数实参来推断模板实参,并实例化一个特定版本的函数;也可以提供显示模板实参。2.除了定义类型参数,还可以在模板中定义非类型参数,我们通过一个特定的类型名来指定非类型参数;实例化时,非类型参数被用户提供的或编译器推断的值代替,这些值必须是常量表达式。3.默认情况下,一个类模板的成员函数只有当程序用到它时才实例化4.显示实例化可以避免多个文件实例化相同模板

2015-07-11 14:04:28 408

原创 c++primer要点-面向对象程序设计

1.不论从基类派生出来多少个派生类,对于每个静态成员来说都只存在唯一实例,静态成员遵循通用的访问控制规则。

2015-07-11 12:22:26 481

原创 c++primer要点-重载运算与类型转换

1.与iostream兼容的输入输出运算符必须是普通的非成员函数;下标运算符必须是成员函数2.lambda表达式被编译器翻译成一个未命名类的未命名对象,在这个类中含有一个重载的函数调用运算符;function类能够将相同调用形式的不用可调用对象类型统一起来3.类型转换运算符将一个类类型的值转换成其他类型;类型转换函数必须是成员函数,不能声明返回类型,形参列表必须为空  explicit

2015-07-10 20:48:37 302

原创 c++primer要点-拷贝控制

1.=default 显式要求编译器生成合成版本;=delete 定义为删除的函数阻止拷贝。2.右值引用只能绑定到将要销毁的对象;std::move 获得绑定到左值上的右值引用  移动构造函数的第一个参数应该是该类型的右值引用,移动操作不应抛出异常,可以指明noexcept承诺。标准库容器能对异常发生时其自身行为提供保障。例如,vector的push_back可能需要移动元素。当vecto

2015-07-10 19:58:20 355

原创 c++primer要点-标准库

1.谓词是一个可调用的表达式,其返回结果是一个能用作条件的值。2.lambda表达式:[capture list](parameter list) -> return type { function body }  捕获列表只用于局部非静态变量,被捕获变量的值在lambda创建时拷贝  隐式捕获:在捕获列表中写一个=(值捕获)或&(捕获引用),由编译器推断要使用的变量  对于值捕获

2015-07-10 16:52:00 260

原创 c++primer要点-类

1.常量对象,以及常量对象的引用或指针都只能调用常量成员函数。2.友元的声明仅仅指定了访问的权限3.mutable声明的数据成员即使在const成员函数中也能被修改4.如果没有在构造函数的初始值列表中显式的初始化成员,则该成员将在构造函数之前执行默认初始化。随着构造函数一开始执行,初始化就完成了。  构造函数的初始值有时必不可少:当成员是const或引用;当成员是类类型且没有定义构

2015-07-10 13:38:06 290

原创 c++primer 要点-函数

1.当用实参初始化形参时会忽略掉顶层constvoid fun(const int i){}void fun(int i){} //错误:重定义底层const是可以重载的。2.在不同的作用域中无法重载函数名,在c++语言中,名字查找发生在类型检查之前。3.局部变量不能作为默认实参。除此之外,只要表达式的类型能转换成形参所需要的类型,改表达式就能作为默认实参。用作默认实参的名字在

2015-07-10 13:13:35 255

原创 c++primer要点-语句

1.case标签必须是整形常量表达式2.如果在某处一个带有初值的变量位于作用域之外,在另一处该变量位于作用域之内,则从前一处跳到后一处是非法行为。  case true:        string file_name; //错误        int ival = 0 ; //错误        int jval ;//正确        break;  case f

2015-07-10 13:01:34 376

原创 c++primer要点-表达式

1.递增递减运算符必须作用于左值运算对象。前置版本将对象本身作为左值返回,后置版本将对象原值的副本作为右值返回。优先使用前置版本,因为后置版本需要将原值存储下来,如果我们不需要的话,就是一种浪费。2.运算对象可按任意顺序求值:*beg = toupper(*beg++);//错误:该赋值语句未定义。3.箭头运算符返回左值,点运算符依赖成员所属对象。4.条件运算符的两个表达式都是左值或能

2015-07-10 11:01:29 305

原创 c++primer要点-字符串、向量和数组

1.列表初始化:用花括号初始化变量,如果初始值存在丢失信息的风险,编译器将报错  默认初始化:内置类型的变量初始值由位置决定  直接初始化:string s5(“hiya”);  拷贝初始化:string s5 = “hiya”;  值初始化:vector svec(10);如果元素为内置类型,则初始值为0,否则由类默认初始化

2015-07-10 10:46:46 289

原创 c++primer 要点-变量和基本类型

1.const 对象必须初始化,默认情况下仅在文件内有效。2.顶层const表示指针本身是个常量 : int *const p = &i;3.对象拷贝时,顶层const不受影响;对于底层const,非常量可以转换为常量,反之不行4.auto 会忽略引用和顶层const,decltype会保留。另外,如果表达式的内容是解引用或加括号的变量,decltype得到引用类型

2015-07-10 10:15:14 239

原创 VMX学习-VM entries

VM entry 执行下列步骤:1. 基本检查,如CPL==0? ; current VMCS is not shadow ?等2.对VMCS VMX控制域和主机状态域的检查    1) VMX控制域:保留位设置是否正确,控制位的设置是否冲突,VM退出和进入控制域的设置是否正确    2) 主机控制寄存器和MSR的设置是否正确    3) 主机段寄存器和描述符表寄存器3.检

2015-07-09 15:20:42 585

原创 VMX学习-VMX Non-Root Operation

1.触发vmexit的指令。无条件:CPUID、INVEPT等vmx指令。根据vmcs:HLT,IN\OUT等,LGDT等,cr0\cr3\cr4\cr8处理指令,MSR处理指令,VMREAD\VMWRITE等。2.其它原因:中断,异常,VMX抢占时钟等3.改变行为的指令,如mov to cr4,某些位必须保持

2015-07-09 10:54:11 1069

原创 VMX学习-VMCS

VMCS: 版本标识,vmx终止标识,数据数据部分包括:1.客户机状态,用于vm进入和退出时载入和保存客户机状态。包括:控制寄存器、段寄存器、MSR、RIP、RSP中断状态等2.主机状态,vm退出时载入主机状态。包括控制寄存器、段寄存器、MSR、RIP、RSP3.VM执行控制域,规定各种VM退出事件、EPTP、vm-function 控制等4.VM退出控制域,规定vm退出时的行

2015-07-09 10:44:51 620

原创 VMX学习-enabling and entering VMX operation

1. 设置CR4.VMXE[bit13] = 12. 执行vmxon

2015-07-09 10:15:25 313

转载 C++ vtable layout

A virtual table (vtable) is a table of information used to dispatch virtual functions, to access virtual base class subobjects, and to access information for runtime type identification (RTTI)

2015-07-07 11:31:17 359

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除