- 博客(168)
- 资源 (1)
- 收藏
- 关注
原创 const对象
a)为什么使用const变量来初始化数组,ANSI C的编译器会报告错误?const int n = 5; // 只分配一次内存之后的赋值不再分配而define的每次都分配内存int a[n];在标准C++中,这种写法是对的。只是ANSI C对数组的规定限制了它。在ANSI C中使用enum和#define来定义常量。 b)const使用的基本形式:const type m限定...
2018-10-31 18:44:32 249
原创 linux mongo安装调试常见坑
1.无法远程连接——因为默认配置绑定的是127.0.0.1。修改/etc/mongodb.conf中的bind_ip,改成0.0.0.0就可以连接了。2.如果要在一台机器上跑多个mongodb的话可以把port注释掉,然后启动的时候带上port。参考命令如下:bin/mongod --dbpath data/db --port 27117 --logpath log/log --confi...
2018-07-27 11:25:20 342
原创 linux redis安装调试常见坑
常见的坑1. 在win上下载linux包解压并拷贝到linux上去make——请直接在linux上下载,命令如下$ wget http://download.redis.io/releases/redis-4.0.10.tar.gz$ tar xzf redis-4.0.10.tar.gz$ cd redis-4.0.10$ make2.安装的时候请保证装好的gcc g++ m...
2018-07-27 11:15:38 396
原创 Socket
1. WSAStartup 在使用WinSock API之前,必须调用WSAStartup,调用成功返回0。 int WSAStartup(WORD v, (LPWSADATA)& wd) WORD v: Socket版本,低字节为主版本号,高字节为副版本号。Eg. v1.1 = 0x0101; v2.0 = 0x0002。 (LPWSADATA)& wd: 指向WSADA...
2018-07-27 11:02:32 182
原创 Hook
安装钩子:HHOOK WINAPI SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId);int idHook: 钩子的类型,即它处理的消息类型HOOKPROC lpfn: 钩子子程的地址指针HINSTANCE hMod: 应用程序实例的句柄DWORD dwThreadId: 与安装的钩...
2018-07-27 11:02:17 242
原创 GOF23式——Visitor
意图:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 动机:
2018-07-27 11:02:06 179
原创 GOF23式——Command
意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 动机: ...
2018-07-27 11:01:25 269
原创 GOF23式——Observer
意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 动机:
2018-07-27 11:00:58 142
原创 GOF23式——Strategy
意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 动机:
2018-07-27 11:00:33 113
原创 GOF23式——Template
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 动机: ...
2018-07-27 11:00:22 122
原创 GOF23式——Composite
意图:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 动机:
2018-07-26 11:00:58 219
原创 GOF23式——Decorator
意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 动机:
2018-07-26 11:00:08 180
原创 GOF23式——Adapter
意图:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 动机:图1 Adapter模式(组合方式) 图2 Adapter模式(继承方式)...
2018-07-26 10:59:15 158
原创 GOF23式——Bridge
意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。也就是将系统实现具体功能的部分从系统中剥离,构造一个新的类来负责系统功能的实现。该类与系统为组合的关系。 动机: ...
2018-07-26 10:57:41 197
原创 GOF23式——Prototype
意图:对象的自我复制,通过复制来创建新的对象。 动机:在游戏中,对于粒子特效我们在创建之初并不需要其有很多的不同,而在创建之后各个对象可以有不同的表现。 ...
2018-07-26 10:56:45 108
原创 GOF23式——Builder
意图:将一个复杂对象的构建分割成多个步骤,每个步骤都能接受不同的参数来创建各式各样不同的对象。 动机:在游戏中,我们会有创建Player的需求,每个被创建出来的Player都不一样。我们通过在创建过程中对每个创建步骤使用不同的参数来达到我们的目的。 ...
2018-07-26 10:55:35 270
原创 GOF23式——Singleton
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 动机:在游戏中一般都会有游戏状态管理器。对于它我们希望有如下的特性:全局可访问性,唯一性。对于全局可访问我们只要将其定义为全局变量即可。但我们不能阻止它被创建成多个实例。为了保证唯一性,我们将该类的构造函数设置为私有。这样我们就不能直接创建它的实例。然后通过静态成员变量与静态成员函数来创建该类的实例。 ...
2018-07-26 10:54:31 99
原创 GOF23式——AbstractFactory
意图:AbstractFactory在Factory的基础上进行了进一步的拓展,使得AbstractFactory类也有继承其的子类ConcreteFactory。在此基础上可以创建更多不同类型的Product。 动机:在游戏中,我们会有很多不同类型的怪物。为了使玩家在游戏的进行中获得更多的乐趣,我们希望将怪物的难度分为普通,精英,噩梦三个级别。通过使用AbstractFactor...
2018-07-26 10:53:31 110
原创 GOF23式——Factory
意图:定义了一个抽象类,该类提供接口用以创建对象,并让其子类决定实例化哪一个类。Factory模式延迟实例化其所要创建的类。 动机:在游戏中,我们的主角可能有多种形态,如水上形态,陆上形态和空中形态。在进入场景时,主角可能在水中,在地面或是在空中。在代码中我们无法确定到底要创建的是哪个形态,因为主角的形态会受到多种因素的影响,所以我们希望在程序的运行过程中决定到底要创建的是哪个类。...
2018-07-26 10:52:01 129
原创 存储持续性,作用域和链接性
1.内存相关知识C++使用三种(C++11是四种)不同的方案来存储数据,这些方案的区别在于数据保留在内存中的时间。自动存储持续性:在函数定义中声明的变量(包括函数参数)的存储持续性为自动。它们在程序开始执行其所属的函数或代码块时被创建,在执行完函数或代码块时,它们使用的内存被释放。C++有两种存储持续性为自动的变量。静态存储持续性:在函数定义外定义的变量和使用关键字static定义的变
2016-04-15 14:21:42 468
原创 代码编译
1.编译两个源代码文件在UNIX系统中编译由多个文件组成的C++程序2.头文件管理在同一个文件中只能将同一个头文件包含一次。我们有可能在不知情的情况下将头文件包含多次。有一种标准的C/C++技术可以避免多次包含同一个头文件。它是基于预处理编译器指令#ifndef的。例如:coordin.h#ifndef _COORDIN_H_#define _COORDIN_H_
2016-04-15 13:48:25 582
原创 在Unity3D中使用全局变量
在Unity3D中使用全局变量要注意以下几点1.定义一个Global类,将静态变量写在里面2.Global中不引用MonoBehaviour对象,除非这个对象被执行过DontDestroyOnLoad否则在切换场景时会变成nullusing UnityEngine;using System.Collections;public class GlobalMono : Mon
2016-03-31 11:02:23 22746 3
原创 函数模板
模板函数是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型的方式编写程序,因此有时也被称为通用编程。由于类型是用参数表示的,因此模板特性有时也被称为参数化类型。注意,函数模板不能缩短可执行程序。最终仍将由两个独立的函数定义,就像以手工方式定义了这些函数一样。最终的代码不包含任何模板,而只
2016-03-25 16:32:01 352
原创 Overload(重载) Override(覆写)Overwrite(重写)
C++:Overload(重载):函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。(1)相同的范围(同一个类)(2)函数名相同(3)函数参数不同Override(覆写):从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行
2016-03-24 20:52:26 838
原创 将引用作为函数参数
引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量别名。这种传递参数的方法称为按引用传递。按引用传递允许被调用的函数能够访问调用函数中的变量。C++新增这项特性是对C语言的超越,C语言只能按值传递。按值传递导致被调用函数使用调用程序的值得拷贝。当然,C语言也允许避开按值传递的限制,采用按指针传递的方式。代码:#include #include using na
2016-03-24 17:16:22 1024
原创 递归
C++函数有一些有趣的特点——可以调用自己,这种功能被称为递归。递归在特定的编程中是一种重要的工具。如果递归调用自己,则被调用的函数也将调用自己,这将无限循环下去,除非代码中包含终止调用链的内容。以下代码构造了一颗二叉树并进行遍历。#include #include using namespace std;struct tree{ int data; int lev
2016-03-24 14:20:34 259
原创 共同体union
共同体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构可以同时存储int,long和double。共同体只能存储int,long或double。共同体的句法与结构相似,但含义不同。union one4all{int int_val;long long_val;double double_val;};可以使用one4all来存储int
2016-03-24 10:34:33 757
原创 结构中的位字段
与C语言一样,C++也允许指定占用特定位数的结构成员,这使得创建与某个硬件设备上的寄存器对应的数据结构非常方便。字段的类型应为整形或枚举,接下来是冒号,冒号后面是一个数字,它指定了使用的位数。可以使用没有名称的字段来提供间距。每个成员都被称为位字段。下面是一个例子:struct torgle_register{unsigned int SN : 4; // 4bit for SN va
2016-03-24 10:18:09 2573 1
原创 函数指针
函数指针是指向函数的指针变量。因而函数指针本身首先应是指针变量,只不过该指针变量指向函数。正如指针变量可指向整型变量、字符型、数组一样,这里是指向函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同使用指针变量可引用其他类型变量一样。函数指针有两个用途:调用函数和做函数的参数。函数指针的声明方法为:返回值
2016-03-23 14:05:01 248
原创 OpenGL光照
1. OpenGL光照分类OpenGL光由自发光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和高光(Specular Light)组成自发光(Emitted Light):由物体自身发出并且不受任何光源影响。如果物体本身不发光,则无此属性。环境光(Ambient Light):那些在环境中进行了充分散射,而无法
2016-03-19 17:23:37 1064
原创 AssetBundle
AssetBundle1.使用插件AssetBundleManager1.1 资源导出使用Asset/AssetBundles/BuildAssetBundles进行资源导出,资源导出的时候会根据当前的平台导出成Windows/Android/IOS等。导出的位置在AssetBundles目录下,该目录下会分出Windows/Android/IOS等目录。 1.2 资源加载
2016-03-19 16:39:28 984
原创 射线与长方体
1 Ray-AABB交叉检测算法1.求射线与长方体6个面的距离,确定距离最小的三个面计算射线在这三个面上的交点。从距离最小的交点开始判定是否在AABB盒里2 COCOS3.3 Ray-AABB实现Ray-AABB碰撞检测进行求出射线后,需要做的便是与包围盒的碰撞检测了,如之前的代码所示,在做碰撞检测时,Cocos2d-x 3.3beta0中的Ray类里面为我们提供了
2016-03-19 12:35:40 1469
转载 OBB碰撞检测算法
1 OBB包围盒OBB(Oriented Bounding Box)包围盒也被称作有向包围盒或定向包围盒,它会随着物体的移动、缩放、旋转。简单来说,它就是一个能够旋转的AABB包围盒。在Cocos2d-x中使用过物理引擎的开发者一定见过当我们在物理世界中创建一个物体并开启调试模式时,这个物体会被红色的矩形包围,当物体做平移或旋转时,这个红色矩形也会做同样的操作,这个红色矩形正是该物体的OBB包
2016-03-19 12:31:59 16126
转载 AABB(axis-aligned bounding box)
AABB包围盒在游戏中,为了简化物体之间的碰撞检测运算,通常会对物体创建一个规则的几何外形将其包围。其中,AABB(axis-aligned bounding box)包围盒被称为轴对其包围盒。 二维场景中的AABB包围盒具备特点:(注:由于Cocos2d-x是基于Opengl ES的,所以下图中的所有坐标系均采用右手直角坐标系) (1) 表现形式为四边形,即用四边形包围物
2016-03-19 12:26:16 19259
转载 Box2D射线和AABB碰撞检测
box2d使用了一种叫做slab的碰撞检测算法。所谓slab是指两个平行平面之间的空间,由此我们可以把3D空间中的AABB盒子看做是由AABB的3组平行面形成的3个方向的slab的交集。根据这个定义,我们可以得到以下两个结论:1.如果一个点在AABB中,那么这个点必定同时在这3个slab中。2.如果一条射线和AABB相交,那么这条射线和3个slab的相交部分必定有重合部分。这很容易理解
2016-03-19 12:20:33 1507
tcp服务器客户端demo
2018-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人