25匹马决赛出前3名
7场的方案分5组 比赛5次(ABCDE)决出 A1 A2 A3 A4 A5B1 B2 B3 B4 B5C1 C2 C3 C4 C5D1 D2 D3 D4 D5E1 E2 E3 E4 E5再比赛1次A1 B1 C1 D1 E1比赛至少可以淘汰2组假设&n...
过河 手电筒 面试题
四个人过河,只有一个手电筒,单独过河时间分别为:1分钟,2分钟,5分钟,10分钟。河上的木桥每次只能通过2个人。在桥上的人手中必须要有手电筒。要求4个人用17分钟时间到达对岸。桥中间不能折返。让1分钟和2分钟的先过,然后让2分钟的回来.10分钟和5分钟的再过,让1分钟的回来,1分钟和2分钟再过,为2分钟,最后的结果就是2+...
B+和二叉树的区别
二叉树的每个结点至多有2个结点 或者只有1个左结点B树 1。根结点至少有2个结点,2。除根结点和失败结点外的所有结点至少有m/2上取整个子结点,3。所有的失败结点均处在同一层上。左结点小于右结点。B+树是B-树的变形,B+树的所有关键字都出现在叶结点上,上面各层结点中的关键码均是下一层相应结点中最大关键码...
红黑树和平衡二叉树的区别
红黑树和平衡二叉树(AVL树)类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。红黑树和AVL树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是AVL树中的非常严格的...
c++内存中字节对齐问题详解
一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对...
类成员函数的重写,重载和隐藏的区别
重写和重载的区别范围的区别:被重写的和重写的函数在两个类中,而重载和被重载的函数在同一个类中参数的区别:被重写函数和重写函数的参数列表一定相同,而被重载函数和重载函数的参数列表一定不相同virtual的区别:重写的基类中被重写的函数必须有virtual修饰,而重载函数和被重载函数可以有也可以没有隐藏和重写,...
内存表和临时表的区别
内存表:1. 参数控制:max_heap_table_size2. 到达上线后报错。3. 表定义保存在磁盘上,数据和索引保存在内存里面。4. 不能包含TEXT,BLOB等字段。临时表:1. 参数控制:tmp_table_size。2. 到达上线后创建文件在磁盘上。3. 表定义和数据都在内存里。4. 可以包含TEXT, BLOB等字段。由于直接使用临时表来创建中间...
算法双端冒泡排序
点击(此处)折叠或打开void BidBubbleSort( int array[], int n){ int low, high, flag, i; low = 0; high = n-1; while(low
设计模式:享元模式
一、引子让我们先来复习下java中String类型的特性:String类型的对象一旦被创造就不可改变;当两个String对象所包含的内容相同的时候,JVM只创建一个String对象对应这两个不同的对象引用。让我们来证实下着两个特性吧(如果你已经了解,请跳过直接阅读第二部分)。先来验证下第二个特性:public class TestPa...
设计模式:外观模式
动机(Motivate): 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化。那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依赖解耦?意图(Intent): 为子系统中的一组...
C++ primer智能指针(HasPtr)实现
智能指针显然是C++吸引人的地方之一,必须掌握。看了《C++primer》,里面着重讲了智能指针的实现方式。书中说到: “HasPtr(注:就是自定义的智能指针)在其它方面的行为与普通指针一致。具体而言,复制对象时,副本和原对象将指向同一基础对象。如果通过一个副本改变基础对象,则通过另一个对...
C++ 智能指针详解
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有...
对mysql explain讲的比较清楚的
在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。explain 返回了一行记录,它包括了 select语句中用到的各个表的信息。这...
mysql优化笔记
第一步 测量时间花在什么地方,无法测量就无法优化实际地讨论两种类型的性能剖析:基于执行时间的分析和基于等待的分析。基于执行时间的分析研究的是什么任务的执行时间最长,基于等待的分析则是判断任务在什么地方被阻塞的时间最长。理解性能优化1.值得优化的查询2.异常情况3.未知的未知4.被掩藏的细节对系统进...
设计模式:装饰模式
一、装饰模式简介(Brief Introduction)动态地给一个对象添加一些额外的职责。优点:把类中的装饰功能从类中搬移出去,这样可以简化原有的类。有效地把类的核心功能和装饰功能区分开了。 二、解决的问题(What To Solve)已经开发完毕的对象,后期由于业务需要,对旧的对象...
设计模式:组合模式
组合模式:将对象组合成树型结构以表示‘部分-整体’的层次结构。组合模式使用户对单个对象和组合对象的使用具有一致性。需求中体现部分和整体层次的结构时,已经你希望用户可以忽略组合对象与单个对象的不同,统一使用组合结构中的所有对象时,就应该考虑使用组合模式点击(此处)折叠或打开...
C++中的虚继承的构造
多继承中被当做基类来虚继承的类是虚基类。虚基类:使用关键字virtual继承的基类。即使同一类在层次中作为虚基类出现多次,派生类对象中虚基类部分也只出现一次。在非虚基类中,构造函数只能初始化自己的直接基类,当对一个类进行虚继承的时候,由最底层的派生类初始化那个类,因此最底层的派生类应包含用于其他所有...
C++虚函数bug
点击(此处)折叠或打开class Base{private: virtual void f() { cout<<\"Base::f\"<<endl; } virtual void g() { cout<<\"Base::g\"<<endl; }};class DeriveC...
Mysql源码分析2
get_options()出现在init_common_variables中Get server options from the command line, and perform related server initializations.struct system_variables global_system_variables;struct system_variables max_system_variables;system_variables 解释如下 How dynamically allocated system variab...
伙伴算法例子
二进制地址为011011110000,大小为4(10进制数)和16(10进制数)块的伙伴地址分别为:?地址011011110000,可以被2^(2+1)整除,所以伙伴地址是其下半部,加4就行,所以答案是011011110100;16大小时,不能被2^(4+1)整除,所以伙伴地址是其上半部,地址减去16,结果为0110 1110 0000。至于为什么这样整除决定,请查看伙伴地...