- 博客(117)
- 资源 (5)
- 收藏
- 关注
原创 node.js 之 Redis
redis数据库1、 Redis是一个key-value类型的内存数据库,而key全部都是 字符串 、哈希表(map)、列表(list)、集合(set)、有序集。 2、 Redis是通过MULTI/DISCARD/EXEC/WATCH这4个命令来实现事务功能。事务提供了一种“将多个命令打包,然后一次性、按顺序执行”的机制,在事务完成之前,客户端的其他命令都是阻塞状态。node 使用redis安
2016-07-21 00:40:36
881
翻译 架构,性能和游戏
在我们一头扎入模式之前,我想先讲一些对软件架构和其在游戏上的应用的理解, 也许能帮你更好的理解这本书的其余部分。 至少,在你被卷入一场关于软件架构有多么糟糕(或多么优秀)的辩论时, 这可以给你一些武器支援。软件架构是什么?如果你把本书从头到尾读一遍, 你不会找到在3D图形背后的线性代数或者游戏物理背后的微积分。 这书不会告诉你如何用α-β修剪你的AI树,也不会告诉你如何在音频中模拟房间中的混响。相
2016-06-02 17:36:21
5838
转载 nodejs + redis/mysql 连接池问题
连接池是必须的么?连接池的作用主要是较少每次临时建立连接所带来的开销。初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接池的。但是这只是我们初步下意识的感觉,下面我们详细分析来看看这个结论对是不对。先从简单的redis开始。redis服务器也是运行在单线程上的。俩都是单线程,看起来更加坚定不需要连接池的结论了。从详细的图像来看看nodejs 连接 redis用连接池有没有
2016-05-09 12:50:03
1760
转载 javascript 中的call、apply、bind
一、call()和apply()方法1.方法定义call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 this
2015-12-02 11:59:31
946
转载 javascript使用注意的问题
1、在对大量数据作处理时,尽量避免循环嵌套。 因为循环嵌套的处理时间会随着数据量的增加成指数级增长,所以应尽量避免。遇到这种情况,如果没有更好的办法,一般采取的策略是以空间换时间,即建立一张二级循环数据的Hash映射表。当然,还要具体情况具体分析。还有一点要说的是,某些方法本身就是一个循环体,如Array.sort()(该方法应该是用了两层循环实现),在使用的时候需加注意。 2、尽量
2015-10-29 18:39:13
444
原创 js中的匿名函数和闭包总结篇
匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。一.匿名函数//普通函数function box() { //函数名是box return 'Lee';}//匿名函数function () { //匿名函数,会报错 return 'Lee';}//通过表达式自我
2015-10-29 17:50:33
3361
3
原创 Javascript中的面向对象
ECMAScript有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。一.创建对象创建一个对象,然后给这个对象新建属性和方法。var box = new Object(); //创建一个Object对象box.name = 'Lee';
2015-10-26 18:02:43
440
原创 变量、作用域及内存
JavaScript的变量与其他语言的变量有很大区别。JavaScript变量是松散型的(不强制类型)本质,决定了它只是在特定时间用于保存特定值的一个名字而已。由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变。一.变量及作用域1.基本类型和引用类型的值ECMAScript变量可能包含两种不同的数据类型的值:基本类型值和引用类型值。基本类型值指的是那
2015-10-25 18:03:32
478
原创 Function类型
在ECMAScript中,Function(函数)类型实际上是对象。每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针。一.函数的声明方式1.普通的函数声明function box(num1, num2) { return num1+ num2;}2.使用变量初始化函数var box= functio
2015-10-25 16:55:14
535
原创 js基础知识总结篇
javascript在学习过程中的重点易忘的部分的总结~基本类型 注意: JavaScript 不区分整数值和浮点数值,所有数字在 JavaScript 中均用浮点数值表示。 0.1+ 0.2 = 0.30000000000000004 单元运算符 + 也可以把数字字符串转换成数值 如果给定的字符串不存在数值形式,函数会返回一个特殊的值 NaN
2015-10-16 20:55:06
2542
1
转载 Cocos2D-X设计模式:委托模式
一、前言在讨论cocos2d-x里面的委托模式之前,先来讲讲什么是委托,以及c++里面如何实现委托。委托通常还会跟回调、闭包联系在一起,而委托和委托模式也有一点区别。下面先看看委托模式的例子一个打印机类的委托模式实现:class RealPrinter { // the "delegate"public: void print() { //do something
2015-09-02 09:42:22
1092
转载 Cocos2D-X设计模式:中介者模式
1、应用场景谈到中介者模式这个词,我马上就想到了cocos2d-x里面的CCDirector类。这个类除了应用了单例模式,还应用了中介者模式。Why?因为它封装了Scheduler、ActionManager、TouchDispatcher、KeypadDispatcher和Accelerometer这五个对象的交互。它使得这几个对象之间的交互不需要显式地相互引用,使其耦合度变低。当然更多的是使得我
2015-09-01 17:31:12
582
转载 Cocos2D-X设计模式:观察者模式
1、应用场景前面在介绍单例模式的时候,提到了一个类NotificationCenter,它除了应用单例模式以外,还应用了观察者模式。NotificationCenter类是观察者模式中的目标对象,而NotificationObserver则是观察者。(注意目前,cocos2d-x 3.0已经把该类deprecated了,替代方案是使用EventDispatcher的Custom Event来替代)一
2015-09-01 17:10:36
743
转载 Cocos2D-X设计模式: 组合模式
1、应用场景Cocoa编程框架APPKit和UIKit都应用了组合模式,各种各样的View及其派生类组成了一棵树状结构的层级视图,而这里面就应用了组合模式。当然,Cocos2D-x里面的Node组织方式也采用的是这个方法,最终游戏界面中的Nodes也会形成一棵树。说到树,我们马上就会想到树根,树干和树叶。一棵树一般只包含一个根,若干树干和大量的叶子。同时,树干长在树根上,树叶长在树干上。对应于Coc
2015-09-01 16:00:28
612
转载 Cocos2D-X设计模式:防御式编程模式
声明:防御式编程是提高程序代码质量的一种手段,它不能算是真正意义上的模式。但是,这里,我还是要给它冠之以“模式”二字。原因有三:cocos2d-x的框架源代码大量采用了防御式编程技术,用来确保框架的代码质量和稳定性。标题党,引起大家对于防御式编程的重视。特别是当大家给cocos2d-x贡献源代码的时候,更应该要注意保证代码质量。防御式编程非常重要,运用得当可以减少被bug折腾的时间。1.应用
2015-08-28 16:05:53
426
转载 Cocos2D-X设计模式:外观模式
1.应用场景Cocos2d-x里面有一个非常明显的地方使用了外观模式,它就是SimpleAudioEngine。因为它为CocosDenshion这个子系统的一组接口提供了一个一致的界面,同时定义了一个高层接口,方便客户使用该子系统。对于大多数用户来讲,游戏中操作声音,无非就是播放背景音乐和音效。CocosDenshion这个子系统封装了OpenAL,屏蔽了OpenAL操作声音的低级API。它提供了
2015-08-28 15:51:47
762
转载 Cocos2D-X设计模式:管理者模式
*管理者(Manager)就是专门负责管理其它类的实例的类,比如Cocoa里面的NSFontManager、NSInputManager、NSFileManager和NSLayoutManager类。此模式和“二段构建模式”一样,也没有出现在GoF的23个设计模式中,但是《Cocoa设计模式》一书中有提及 管理者模式,大多数时候都被实现成一个单例。然后会在程序各个地方被使用到,除非是万不得已,建
2015-08-28 14:59:02
614
转载 Cocos2D-X 设计模式:二段构建模式
所谓二段构建,就是指创建对象时不是直接通过构建函数来分配内存并完成初始化操作。取而代之的是,构造函数只负责分配内存,而初始化的工作则由一组合起来,完成最终对象的构建。因为在《Cocoa设计模式》一书中,把此惯用法称之为“Two Stage Creation”,即“二段构建”。Cocos2D-X 3.0以后的二段构造更纯粹了,它把所有类的构造函数、析构函数以及init方法全部变成protect
2015-08-28 14:45:02
715
转载 Cocos2D-X设计模式:单例模式
本系列文章将按照如下思路进行模式挖掘: – 找出某个设计模式的应用场景(类、类结构、对象结构,必要时结合UML类图) – 分析为什么要使用此模式(即设计决策) – 使用此模式的优缺点是什么(任何事务都有两面性,设计模式也不例外) – 此模式的定义及一般实现(这个在GoF的经典书籍里面有) – 在游戏开发中如何运用此模式(自己对于模式运用场景的理解) – 此模式经常与哪些模式配合使用(这个也基本是从G
2015-08-28 14:16:20
1939
转载 详解 Android 的 Activity 组件
Activity 的生命周期和 J2ME 的 MIDlet 一样,在 android 中,Activity 的生命周期交给系统统一管理。与 MIDlet 不同的是安装在 android 中的所有的 Activity 都是平等的。Activity 的状态及状态间的转换在 android 中,Activity 拥有四种基本状态:Active/Runing一个新 Activity 启动入栈后,它在屏幕最
2015-08-28 10:53:36
100
原创 win32(十五)
一 线程局部存储 Thread Local Storage 1 由于多个线程使用同一个变量,各个线程 都对变量进行操作,那么变量的值会被不同 线程操作覆盖。 通常 变量A <-- 线程A <-- 线程B TLS 变量A <-- 线程A 变量A <-- 线程B 2 TLS
2015-08-25 17:54:46
336
原创 win32(十四)
一 Windows进程 1 Windows进程 进程一个容器,包含了应用程序实例的各种 资源。Windows多任务的操作系统,因此可以 同时执行多个进程。 2 Windows进程的一些特点 2.1 进程中包含了执行代码等资源。 2.2 进程都具有私有的地址空间。 2.3 每个进程都有一个ID,标识进程。 2.4 每个进程都有自己的安全属
2015-08-25 17:53:45
346
原创 win32(十三)
Windows的内存管理一 地址空间 1 地址空间 一个程序最大的寻址范围。对于Win32操作系统 最大的寻址范围是2的32次方,0-0xFFFFFFFF。 这个寻址范围由CPU决定。CPU的寻址范围越大, 程序难度降低。 2 地址空间的划分 通常情况下: 2.1 用户空间 地址范围 0 - 0x7FFFFFFF(2G),运行 应用程序
2015-08-25 17:52:42
289
原创 win32(十二)
一 Windows卷(Volumn) 1 卷的获取 GetLogicalDrives 返回一个DWORD值,这个值 的每个位代表是否存在相应的卷 GetLogicalDriveStrings 获取一个所卷的盘符 的字符串 DWORD GetLogicalDriveStrings( DWORD nBufferLength,//BUF
2015-08-25 17:51:45
384
原创 win32(十一)
一 Windows的库 由于项目的复杂程度,或者为了提高代码的 重用率等等,所以才引入了库程序。 库包含两种: 1 静态库:扩展名为LIB的文件,是不能被 加载的程序,可以理解为目标程序的 归档。 2 动态库:扩展名是DLL的文件,是可以被 应用程序加载的程序。二 静态库 1 静态库的特点 1.1 目标程序的归档
2015-08-25 17:49:40
314
原创 win32(十)
一 组合框 ComboBox 1 组合框的样式 1.1 简单组合框 CBS_SIMPLE 1.2 下拉式组合框 CBS_DROPDOWN 能输入或者从下拉列表中选择 1.3 下拉列表式组合框 CBS_DROPDOWNLIST 只能从下拉列表中选择 2 组合框的使用 2.1 组合框的创建 窗口类名称是 COMBOBOX, 使用
2015-08-25 17:48:21
419
原创 win32(九)
一 对话框 1 对话框的分类 2 对话框的基本使用方式 3 对话框资源 4 有模式对话框的使用 5 无模式对话框的使用 5.1 添加对话框资源 5.2 定义窗口处理函数 BOOL CALLBACK DialogProc( HWND hwndDlg, // handle to dialog box UIN
2015-08-25 17:47:05
473
原创 win32(八)
一 位图的使用 1 位图 - 通过保存图像上每个点的颜色,生成相应 的位图文件。 光栅图 - 可以理解为图像点阵的保存 矢量图 - 可以理解为绘图命令的保存 2 位图资源的使用 2.1 加载位图资源 HBITMAP LoadBitmap( HINSTANCE hInstance, //位图资
2015-08-25 17:45:29
320
原创 win32(七)
一 Windows绘图 1 图形绘制 1.1 图形绘制的方式 获取到绘图句柄-设备描述表(DC),使用相应 的绘图的API,在设备上绘制图形. 1.2 颜色 R\G\B三色, 每种颜色8位, 共24位颜色. 32位颜色: 颜色数量24位颜色, 多出来的8位 表示灰度. 16位: 颜色数量2的16次方.
2015-08-25 17:44:01
315
原创 win32(六)
一 系统菜单 1 执行系统提供的窗口命令,例如最大化、关闭 等命令。本质上和普通菜单一样,所以我们也 可以在程序中使用这个菜单 2 系统菜单的使用 2.1 获取系统菜单 GetSystemMenu HMENU GetSystemMenu( HWND hWnd, //要获取的窗口句柄 BOOL bRev
2015-08-25 17:42:08
363
原创 win32(五)
一 鼠标消息 1 鼠标消息 1) 基本鼠标消息 WM_LBUTTONDOWN 左键按下 WM_LBUTTONUP 左键抬起 WM_RBUTTONDOWN 右键按下 WM_RBUTTONUP 右键抬起 WM_MOUSEMOVE 鼠标移动 2) 双击消息 WM_LBUTTONDBLCLK 左键双击
2015-08-25 17:41:00
315
原创 win32(四)
一 Win32消息机制 1 消息机制 过程驱动:程序是按照我们预先定义好的顺序 执行,每执行一步,下一步都已经按照预定 的顺序继续执行,直到程序结束。 事件驱动:程序的执行顺序是无序的。某个时间 点所执行的代码,是由外界通知。由于我们 无法决定用户执行顺序,所以代码的执行也是 无序。 Win32的消息机制 - 事件驱动
2015-08-25 17:39:23
328
原创 win32(三)
一 窗口注册和创建1 Win32窗口程序创建步骤1.1 WinMain入口函数的定义1.2 WindowProc函数的定义1.3 注册窗口类 RegisterClass/RegisterClassEx1.4 创建窗口 CreateWindow/CreateWindowEx1.5 窗口的显示和刷新 ShowWindow/UpdateWindow1.6 消息处理 GetMess
2015-08-25 17:35:08
323
原创 win32(二)
一 NMAKE和Makefile 1.1 NMAKE - 命令解释器,根据Makefile文件中 定义的脚本,完成项目的编译等操作。 1.2 Makefile - 定义编译/链接等脚本语言。 1.3 Makefile文件的编写 1.3.1 基本语法规则 window.exe:window.obj // 依赖行 cl.exe window.c /c
2015-08-25 17:33:36
250
原创 win32(一)
Win32 Windows编程 1 Windows编程基础 2 Windows文字的编码 3 窗口程序 4 窗口消息 5 菜单和加速键 6 绘图 7 对话框 8 基本控件 .....一 Windows编程基础 1 Win32应用程序的基本类型 1.1 控制台程序 不需要完善的Windows窗口,可以使
2015-08-25 17:26:10
367
转载 cocos3.x 优化提升渲染速度
COCOS2DX 3.0 优化提升渲染速度 Auto-batching最近在看COCOS2DX 3.0的Auto-batching合批与Auto Culling动态缩减功能简介 在游戏的绘制渲染中,往往消耗很多资源和内存,当绘制精灵数量越多,游戏的卡顿会很明显,为了优化和提升渲染效率。Cocos2d-x为我们提供了Auto-batching和SpriteBatchNode。 A
2015-08-24 15:53:21
922
转载 cocos3.0+ shader
cocos2d的shader都是共用的, 存放在 GLProgramCache 中。 当setGLProgram() 的时候是从GLProgramStateCache 中寻找是否有这个shader的State, 有就返回,这个也是共用的,任意一个GLProgramState修改了, 都会影响到使用这个shader的对象添加shader的方法:先编写shader: (直接复制cocos/rende
2015-08-24 15:15:29
1052
原创 shader三种变量类型(uniform,attribute和varying)
1.uniform变量在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用。(相当于一个被vertex和fragment shader共享的全局变量) uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息。 以下是例子:uniform mat4 viewProjMatrix; //投影+视图矩阵uniform mat4 vi
2015-08-20 17:27:09
620
转载 cocos2dx 3.x bindings-generator(Part two)
本想利用 cocos2d-x 自付的工具 bindings-generator 来将专案内的几个自写控件 binding 到 lua 下便于在 script 下控制,结果……真是他喵的坑啊….QAQ cocos2d-x 3.0rc0 范例的 simple_test 的环境太单纯了,并且没有用到 cocos2d 内的任何物件,故!在撰写自己的 .ini 档时会遇上一狗票问题,于是要回头参考 tool
2015-08-20 10:16:21
1115
docker性能.pdf
2020-01-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人