- 博客(149)
- 资源 (4)
- 问答 (4)
- 收藏
- 关注
原创 count(1)、count(*)与count(列名)的执行区别
执行效果:1. count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了! 从执行计划来看,count(1)和count(*)的效果是一样的。 但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。 如果count(1)是聚索引,id,那肯定是c
2017-09-10 11:04:17
144969
15
原创 一个关于多态的问题
2018华为daniuchang一面#include using namespace std;class A{public: virtual void func(int a = 0){ cout << a << endl; }};class B : public A{public: virtual void func(int b = 1){ cout
2017-08-25 14:45:43
574
转载 不使用virtual关键字实现C++多态
#include using namespace std;/* 不使用virtual实现多态可以用成员函数指针完成。 成员函数指针形式:返回类型(A::*指针名)(形参表) 其中A是类类型,即这个指针是指向A类的成员函数的函数指针 例如:int(A::*P)(int,int)这
2017-08-24 10:05:36
1238
原创 2018届秋招提前批阿里在线编程
/*幼儿园有10个小朋友,把1 – 20中所有奇数数字的卡片分别发给这10个小朋友。集合的时候小朋友们排成一排,组成一个由数字组成的字符串,如59731315….11917,但是老师发现少了一个小朋友,你能帮忙找出少掉的那个小朋友吗?1 3 5 7 9 11 13 15 17 19// 1 7// 3 2// 5 2// 7 2// 9 2思
2017-08-06 21:05:40
3418
1
原创 《STL源码剖析》之hashtable
hashtable即散列表,也叫哈希表,它对元素的插入、删除和访问操作具有常数时间复杂度的表现,这种表现不依赖于输入元素的随机性。
2017-07-27 10:39:39
505
原创 《STL源码剖析》之RB-tree
AVL树之外,另一个被广泛运用的平衡二叉搜索树是RB-tree。所谓红黑树,不仅是一个二叉搜索树,它还满足以下性质:性质1. 每个节点是红色或黑色;性质2. 根是黑色;性质3. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质4. 从任一节点到NULL(树尾端)的任何路径都包含相同数目的黑色节点。
2017-07-25 18:42:44
783
原创 平衡二叉搜索树之AVL树
1 什么是二叉搜索树?二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树规则是:(1) 在查找和插入上很有效率,时间复杂度不
2017-07-25 16:30:00
739
原创 对含有virtual function的class求sizeof
#include using namespace std;class A{public: virtual void func_1() {} virtual void func_2() {} virtual ~A() {}};class B{public: virtual void func_3() {}};class C : public B{public:
2017-07-20 11:35:38
508
原创 一道考查对象模型的C++笔试题
#include using namespace std;class parent{ int i;protected: int x;public: parent() { x = 0; i = 0; } void change() { x++; i++; } void display();};class son :public parent{public: void m
2017-07-20 11:02:17
578
原创 面试题28:不能被继承的类
在C#中定义了关键字sealed,被sealed修饰的类不能够被继承。在Java中同样也有关键字final表示一个类不能被继承。C++11提供final关键字使得类不能够被继承。那么,如何自己实现一个不被继承的类?常规的解法是,把类的构造和析构函数都设置为private即可,然后公有派生;这是因为子类访问不到父类私有属性。这使用了C++构造派生类实例时会自动先调用父类构造函数的特性,同样析构的顺序和
2017-06-13 22:24:52
3438
转载 Unity3d 基于NGUI的虚拟摇杆实现
实现效果预览C#代码实现: 使用NGUI添加虚拟摇杆背景和其子物体按钮,为按钮Attach boxcollider和ButtionScript。为按钮添加如下脚本:注意:其中的静态属性可以在控制物体移动的代码中访问用于控制。using UnityEngine;using System.Collections;public class joyStickControl : MonoBehaviou
2016-11-07 15:43:04
3367
原创 Cocos2d-x 3.x 生成和加载plist文件
一、创建plist文件在学习《Cocos2d-x 3.x游戏开发之旅》时,点击完屏幕以创建很多炮塔的(x, y)坐标,使用ValueMap把炮塔坐标写入plist文件,保存当前玩家创建的炮塔,以便再次进入游戏时还原之前的炮塔(根据坐标)。下面是创建plist文件的函数:void TowerPosEditorScene::outputPosToPlistFile(){ String* s_p
2016-10-26 22:48:56
1935
原创 第5章 散列——分离链接法
#include <iostream>using namespace std;typedef int ElementType;struct ListNode{ ElementType elem; ListNode* next;};struct HashTable{ int tableSize; ListNode* *lists;};// 散列函数unsig
2016-10-18 15:58:23
682
原创 队列
一、队列初探队列(queue)是只允许在一端进行插入操作,在另一端进行删除操作。其中,插入元素(即入队列)的一端为队尾(rear),删除元素的一端为队头(front)。与栈不同的是,队列是一种先进先出的线性表,简称FIFO。假设队列q = (a1, a2, …, an),那么a1为队头,an为队尾。如下图所示: 二、顺序队列的不足假设我们有队列q = (a1, a2, …, an),顺序队列需要建
2016-10-14 11:02:30
875
原创 3.3 Data Member的存储
一、Static Data MembersStatic data members,处于class之外,存放在程序的data segment之中。每一个static data member只有一个实例,并被视为一个global变量(但是只在class生命范围内可见)。static data member经常通过类名和“作用域运算符”调用静态数据成员,也可以通过 class object(虽然经常不需要
2016-10-09 21:10:11
453
原创 3.4 “继承”与Data Member
一、基本Class模型在C++继承模型中,一个derived class object所表现出来的东西,是其自己的members加上其base class(es) members的总和。置于derived class members和base class(es) members的排列顺序,则未在C++ Standard中强制指定:理论上编译器可以自由安排之。在大部分编译器的上头,base class
2016-10-09 17:17:38
687
原创 3.2 Data Member的布局
一、预热在讨论Data Member布局之前,先看比较常见的笔试题目: 1、 空class class X{};sizeof(X) : 1。空的class中没有任何data member,大小不应该是0吗?大小之所以为1,是因为编译器安插进去一个char,所以空class实际上隐藏1字节的大小。 2、没有virtual 成员函数的classclass Point3d{public:
2016-10-09 15:04:11
698
原创 2.1 Default Constructor的构造操作
编译器何时会自动产生一个default constructor?编译器自动合成的default constructor将会初始化nonstatic member data?程序设计者什么时候需要显式地提供default constructor?程序设计者显式地提供了default constructor,编译器就不再做什么了吗?那么,到底Default Constructor的构造操作是如何运转的呢
2016-10-09 11:09:08
965
原创 2.3 程序转化语意学
一、显式的初始化操作X x0;void foo_bar(){ X x1(x0); X x2 = x0; X x3 = X(x0);}二、参数的初始化把一个class object当做参数传给一个函数(或者作为一个函数的返回值),相当于以下操作:X xx = arg;其中,xx代表形式参数或返回值,arg为真正的参数值(即实参)。下面这样的调用方式:// 已知foo函
2016-10-08 20:17:10
473
原创 4.2 Virtual Member Functions(虚拟成员函数)
一、两个基本概念我们已经讨论过virtual function的一般实现模型:每个class 有一个virtual table,内含该class中有作用的virtual function的地址,然后每一个object有一个vptr,指向virtual table的所在。在C++中,多态表示“以一个public base class的指针(或引用),寻址出一个derived class object“
2016-10-08 15:48:27
836
原创 4.1 Member Function的各种调用方式
一、初探Static Member已知Point3d类包含三个data members:float _x, _y, _z;和两个member functions: normarlize()和magnitude()。其中,成员函数的的定义如下:Point3d Point3d::normarlize() const{ register float mag = magnitude();
2016-10-08 12:32:07
916
原创 2.4 成员初始化列表
当你写下一个constructor时,你就有机会设定class members的初值。要不就是在member initialization list,要不就是在constructor函数本体之内进行初始化。除了以下四种情况,你的任何选择其实都差不多。下面来看看这四种情况下的微妙的陷阱。下面代码片段中的初始化方法是最常见的一种初始化方法,程序可以被 正确运行,但效率不高。class Word{
2016-10-07 15:38:17
439
原创 2.2 Copy constructor的构造操作
一、三种情况下的“一个object的内容会作为另一个object对象的初值”1.显式赋初值 class X{ ... }; X x; X xx = x;2. 作为函数形参 void func(X x);void bar() { X x; //... func(x); //...
2016-10-07 12:33:50
684
原创 指针的类型
一、目的指向class object的指针是如何与一个指向整数或一个指向template vector的指针有所不同?这个问题被很多互联网公司拿来考查面试者,《深度探索C++对象模型》第一章中指针的类型这样写道:“指向不同类型之各指针”间的差异,既不在于指针的表示方法所有不同,也不在于其内容(代表一个地址)不同,而是在于其所寻址出来的object类型不同。二、C++代码#include
2016-10-06 19:28:02
553
原创 Cocos2d-x 3.x 内存管理机制
1 动机虽然目前计算机内存已经非常便宜,但也不是说我们可以毫无节制的不恰当的使用。尤其是移动端的内存很吃紧,整个手机的APP共享那么点内存,说不定手机卡死或者运行的APP被强制退出。了解Cocos2d-x内存管理机制以更好地优化游戏资源,尽量降低不必要的内存开销。2 引用计数的内存管理机制Cocos2d-x采用引用计数管理内存,简单的说:在对象内部添加一个计数器,当外部引用增加时,引用
2016-09-30 19:52:56
460
原创 Cocos2d-x常用设计模式——观察者模式
一、动机及适用情况二、类图三、C++代码实现 3.1 头文件Observer.h#include #include using namespace std;// 抽象类class Observer{public: virtual void update() = 0;};class Subject{public: virtual void attach
2016-09-29 16:01:19
764
原创 Cocos2d-x常用设计模式——单例模式
一、UML图注意:唯一一个私有静态数据成员,构造函数和析构函数声明为私有或保护成员,一个公有的获取单例实例的静态方法。二、Cocos2d-x中经常使用的单例模式代码#include class Singleton{public: static Singleton* getInstance(); void Func();private: Singleton()
2016-09-28 20:57:20
643
原创 C/C++程序的存储空间布局
由于历史原因,C程序一直由下列几部分组成:★ 正文段。这是由C P U执行的机器指令部分。通常,正文段是可共享的,所以即使是经常执行的程序(如文本编辑程序、C编译程序、s h e l l等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改其自身的指令。★ 初始化数据段,也称为数据段。它包含了程序中需赋初值的变量。例如, C程序中任何函数之外的说明:int
2016-09-28 12:26:27
1901
原创 二、登陆场景界面
目录正文登陆界面的元素有登陆界面背景、游戏版本(文本格式)、游戏名字logo、游戏角色两个及其进入动画、进入游戏和跳动动画及其背景、游戏声明及其背景。这些就是整个登陆界面的元素,有些是Sprite、有些是LabelTTF创建的文本。具体细节见下面代码。一、登陆场景头文件——LoginScene.h#pragma once #include "cocos2d.h"USING_
2016-09-21 15:04:29
948
原创 一、logo载入界面
目录1. 载入logo界面类的实现2. 设置设计分辨率和屏幕分辨率3. 加载游戏资源到缓存内容一、载入logo界面的类游戏在启动时,会有短暂各个公司logo的短暂显示,接着进入另外一个场景(往往是主场景),出现logo的这个场景程序往往在后台做了很多事情,比如:游戏的初始化,加载游戏资源等。今天开发第一个场景——载入logo界面的场景。该场景写在头文件CopyrightLa
2016-09-20 16:42:31
1488
原创 C语言中指针的传值和传址
#include #include void Func(char* p){ p = (char*)malloc(50);}void main(){ char* cptr = NULL; // cptr是指向某个内存块的地址,这里是NULL内存块;而在Func函数中,char* p = cptr // 因此这里为一个NULL malloc,程序结果不会输出hello wo
2016-09-18 19:36:51
1901
原创 Unix网络编程 卷1 第8章: 基本UDP套接字编程(概述及recvfrom/sendto函数)
一、概述使用UDP和TCP编写程序时,我们要了解他们的差异。主要是:TCP是面向连接的可靠的字节流传输协议,UDP是无连接的不可靠的数据报传输协议。不同的协议有不同的使用场合,使用UDP编写的一些常见的应用程序有:DNS(域名系统),NFS(网络文件系统)和SNMP(简单网络管理协议)。下图是典型的UDP客户/服务器程序的函数调用。其中UDP不建立连接,只管使用sendto函数向服务器发送
2016-09-10 17:22:44
1393
原创 Unix网络编程 卷1 第11章:名字与地址转换(udp_client_connect_connect)
一、udp_client、udp_connect、udp_server函数UDP用于访问getaddrinfo的比较简单的接口函数主要为udp_client、udp_connect和udp_server函数,这三个函数定义于《Unix网络编程 卷1:套接字联网API》(简称UNP)的头文件unp.h。udp_client函数用于创建未连接UDP套接字,udp_connect函数用于已连
2016-09-10 16:34:45
641
原创 Unix网络编程 卷1 第3章:套接字编程简介(套接字地址结构)
一、IPv4套接字地址结构IPv4套接字地址结构通常称为“网际套接字地址结构”,它以sockadd_in命名。头文件及声明如下:#include struct sockaddr_in{ uint8_t sin_len; sa_family_t sin_family; /*AF_INET*/ in_port_t
2016-09-09 19:58:11
836
原创 Unix网络编程 卷1 第8章:基本UDP套接字编程(UDP回射客户/服务器程序: main/dg_echo/dg_cli)
一、目的该博文主要整理《Unix网络编程 卷1:套接字联网》(第三版)以下节目的程序,基础知识详见8.1和8.2节。8.3 UDP回射服务器程序:main函数8.4 UDP回射服务器程序:dg_echo函数8.5 UPD回射客户程序:main函数8.6 UDP回射客户程序:dg_cli函数二、完整代码服务器端代码如下:udpserv.c#include #incl
2016-09-08 14:00:09
980
原创 座谈会——体会(一)
一、接口思想——接口是程序的源泉和开始二、类封装变化性三、如何改善继承引发的父类子类紧耦合?四、TCP为什么是可靠的?五、客户端和服务器如何检测对方是否还在线?
2016-09-07 21:17:41
724
原创 派生类变量和父类变量同名
如果子类中的变量名和父类中变量名相同,会覆盖父类中的变量吗?#include class B{public: B(){ a = 1; } void printVar(){ std::cout << a << std::endl; } int a;};class D : public B{public: D(){ a = 2; } int a; };void
2016-09-05 19:03:24
2059
原创 操作符sizeof
一、使用sizeof计算普通变量所占的空间在64位Windows7系统中测试,示例代码如下:#include using namespace std;void func(char str[100]){ cout << sizeof(str) << endl;}void main(){ char charArr[] = "hello"; char *charPtr =
2016-08-31 11:26:20
622
原创 new和delete与内存分配
《Effective C++ 》条款16:成对使用new和delete时要采用相同的形式通常我们使用new和delete有两种情形,一是动态的为一个对象分配内存,另外一种是动态的创建数组。new和delete的使用需遵循许多规则,这里着重理解相同形式这一关键词。
2016-08-29 20:17:12
1974
1
想搭建一款流媒体服务器
2016-03-18
QT做计算器时,把pushButton拖到Grid Layout上
2016-03-17
正则表达式匹配main函数块
2016-03-11
读取文件夹中所有文件的名称(含后缀)
2016-02-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人