自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

iFuMI的博客

坚持的魅力往往在于待回首时总会收获付出的感动-BigoSprite

  • 博客(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 142315 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 522

转载 不使用virtual关键字实现C++多态

#include using namespace std;/* 不使用virtual实现多态可以用成员函数指针完成。 成员函数指针形式:返回类型(A::*指针名)(形参表) 其中A是类类型,即这个指针是指向A类的成员函数的函数指针 例如:int(A::*P)(int,int)这

2017-08-24 10:05:36 1138

原创 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 3357 1

原创 《STL源码剖析》之hashtable

hashtable即散列表,也叫哈希表,它对元素的插入、删除和访问操作具有常数时间复杂度的表现,这种表现不依赖于输入元素的随机性。

2017-07-27 10:39:39 453

原创 《STL源码剖析》之RB-tree

AVL树之外,另一个被广泛运用的平衡二叉搜索树是RB-tree。所谓红黑树,不仅是一个二叉搜索树,它还满足以下性质:性质1. 每个节点是红色或黑色;性质2. 根是黑色;性质3. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质4. 从任一节点到NULL(树尾端)的任何路径都包含相同数目的黑色节点。

2017-07-25 18:42:44 731

原创 平衡二叉搜索树之AVL树

1 什么是二叉搜索树?二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树规则是:(1) 在查找和插入上很有效率,时间复杂度不

2017-07-25 16:30:00 674

原创 5.1.1 二叉搜索树

《STL源码剖析》之二叉搜索树

2017-07-25 15:58:31 572

原创 对含有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 448

原创 一道考查对象模型的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 534

原创 面试题28:不能被继承的类

在C#中定义了关键字sealed,被sealed修饰的类不能够被继承。在Java中同样也有关键字final表示一个类不能被继承。C++11提供final关键字使得类不能够被继承。那么,如何自己实现一个不被继承的类?常规的解法是,把类的构造和析构函数都设置为private即可,然后公有派生;这是因为子类访问不到父类私有属性。这使用了C++构造派生类实例时会自动先调用父类构造函数的特性,同样析构的顺序和

2017-06-13 22:24:52 3319

转载 Unity3d 基于NGUI的虚拟摇杆实现

实现效果预览C#代码实现: 使用NGUI添加虚拟摇杆背景和其子物体按钮,为按钮Attach boxcollider和ButtionScript。为按钮添加如下脚本:注意:其中的静态属性可以在控制物体移动的代码中访问用于控制。using UnityEngine;using System.Collections;public class joyStickControl : MonoBehaviou

2016-11-07 15:43:04 3286 1

原创 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 1824

原创 第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 619

原创 队列

一、队列初探队列(queue)是只允许在一端进行插入操作,在另一端进行删除操作。其中,插入元素(即入队列)的一端为队尾(rear),删除元素的一端为队头(front)。与栈不同的是,队列是一种先进先出的线性表,简称FIFO。假设队列q = (a1, a2, …, an),那么a1为队头,an为队尾。如下图所示: 二、顺序队列的不足假设我们有队列q = (a1, a2, …, an),顺序队列需要建

2016-10-14 11:02:30 697

原创 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 404

原创 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 635

原创 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 637

原创 2.1 Default Constructor的构造操作

编译器何时会自动产生一个default constructor?编译器自动合成的default constructor将会初始化nonstatic member data?程序设计者什么时候需要显式地提供default constructor?程序设计者显式地提供了default constructor,编译器就不再做什么了吗?那么,到底Default Constructor的构造操作是如何运转的呢

2016-10-09 11:09:08 895

原创 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 423

原创 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 738

原创 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 803

原创 2.4 成员初始化列表

当你写下一个constructor时,你就有机会设定class members的初值。要不就是在member initialization list,要不就是在constructor函数本体之内进行初始化。除了以下四种情况,你的任何选择其实都差不多。下面来看看这四种情况下的微妙的陷阱。下面代码片段中的初始化方法是最常见的一种初始化方法,程序可以被 正确运行,但效率不高。class Word{

2016-10-07 15:38:17 391

原创 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 635

原创 指针的类型

一、目的指向class object的指针是如何与一个指向整数或一个指向template vector的指针有所不同?这个问题被很多互联网公司拿来考查面试者,《深度探索C++对象模型》第一章中指针的类型这样写道:“指向不同类型之各指针”间的差异,既不在于指针的表示方法所有不同,也不在于其内容(代表一个地址)不同,而是在于其所寻址出来的object类型不同。二、C++代码#include

2016-10-06 19:28:02 505

原创 Cocos2d-x 3.x 内存管理机制

1 动机虽然目前计算机内存已经非常便宜,但也不是说我们可以毫无节制的不恰当的使用。尤其是移动端的内存很吃紧,整个手机的APP共享那么点内存,说不定手机卡死或者运行的APP被强制退出。了解Cocos2d-x内存管理机制以更好地优化游戏资源,尽量降低不必要的内存开销。2 引用计数的内存管理机制Cocos2d-x采用引用计数管理内存,简单的说:在对象内部添加一个计数器,当外部引用增加时,引用

2016-09-30 19:52:56 409

原创 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 698

原创 Cocos2d-x常用设计模式——单例模式

一、UML图注意:唯一一个私有静态数据成员,构造函数和析构函数声明为私有或保护成员,一个公有的获取单例实例的静态方法。二、Cocos2d-x中经常使用的单例模式代码#include class Singleton{public: static Singleton* getInstance(); void Func();private: Singleton()

2016-09-28 20:57:20 577

原创 C/C++程序的存储空间布局

由于历史原因,C程序一直由下列几部分组成:★ 正文段。这是由C P U执行的机器指令部分。通常,正文段是可共享的,所以即使是经常执行的程序(如文本编辑程序、C编译程序、s h e l l等)在存储器中也只需有一个副本,另外,正文段常常是只读的,以防止程序由于意外事故而修改其自身的指令。★ 初始化数据段,也称为数据段。它包含了程序中需赋初值的变量。例如, C程序中任何函数之外的说明:int

2016-09-28 12:26:27 1829

原创 二、登陆场景界面

目录正文登陆界面的元素有登陆界面背景、游戏版本(文本格式)、游戏名字logo、游戏角色两个及其进入动画、进入游戏和跳动动画及其背景、游戏声明及其背景。这些就是整个登陆界面的元素,有些是Sprite、有些是LabelTTF创建的文本。具体细节见下面代码。一、登陆场景头文件——LoginScene.h#pragma once #include "cocos2d.h"USING_

2016-09-21 15:04:29 850

原创 一、logo载入界面

目录1. 载入logo界面类的实现2. 设置设计分辨率和屏幕分辨率3. 加载游戏资源到缓存内容一、载入logo界面的类游戏在启动时,会有短暂各个公司logo的短暂显示,接着进入另外一个场景(往往是主场景),出现logo的这个场景程序往往在后台做了很多事情,比如:游戏的初始化,加载游戏资源等。今天开发第一个场景——载入logo界面的场景。该场景写在头文件CopyrightLa

2016-09-20 16:42:31 1423

原创 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 1862

原创 Unix网络编程 卷1 第8章: 基本UDP套接字编程(概述及recvfrom/sendto函数)

一、概述使用UDP和TCP编写程序时,我们要了解他们的差异。主要是:TCP是面向连接的可靠的字节流传输协议,UDP是无连接的不可靠的数据报传输协议。不同的协议有不同的使用场合,使用UDP编写的一些常见的应用程序有:DNS(域名系统),NFS(网络文件系统)和SNMP(简单网络管理协议)。下图是典型的UDP客户/服务器程序的函数调用。其中UDP不建立连接,只管使用sendto函数向服务器发送

2016-09-10 17:22:44 1307

原创 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 585

原创 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 767

原创 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 907

原创 座谈会——体会(一)

一、接口思想——接口是程序的源泉和开始二、类封装变化性三、如何改善继承引发的父类子类紧耦合?四、TCP为什么是可靠的?五、客户端和服务器如何检测对方是否还在线?

2016-09-07 21:17:41 658

原创 派生类变量和父类变量同名

如果子类中的变量名和父类中变量名相同,会覆盖父类中的变量吗?#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 1978

原创 操作符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 564

原创 new和delete与内存分配

《Effective C++ 》条款16:成对使用new和delete时要采用相同的形式通常我们使用new和delete有两种情形,一是动态的为一个对象分配内存,另外一种是动态的创建数组。new和delete的使用需遵循许多规则,这里着重理解相同形式这一关键词。

2016-08-29 20:17:12 1869 1

UnityAPI解析pdf

UnityAPI解析pdf 完整版

2016-08-04

Unity3d NGUI实战教程

Unity3d NGUI实战教程pdf文档。我拿积分,你拿资源,谢谢

2016-08-04

安卓多线程时钟

基于JAVA的安卓多线程时钟,简单代码

2016-03-25

Android_SDTxtReadWrite

基于ANDROID的简单SD卡写入读取txt文本文件

2016-03-25

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

TA关注的人

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