- 浏览: 242699 次
- 性别:
- 来自: 北京
最新评论
-
saiyaren:
你对hiphop的深入程度到了什么程度了?想和你进行探讨一下
facebook hiphop php vm 实现概述 -
eric_weitm:
lj3362569 写道可以再讲具体点么?还有现有的hipho ...
facebook hiphop php vm 实现概述 -
lj3362569:
可以再讲具体点么?还有现有的hiphop不支持哪些功能?
facebook hiphop php vm 实现概述
文章列表
cocos2dx内存相关注意
- 博客分类:
- c++
cocos2dx中内存管理要注意的地方
1、工厂函数create中要注意使用autorelease,体现 谁取得谁释放 的原则
2、如果是直接new出来的,add进入到别的node之后,注意release一次(因为new时引用计数是1),这样在父类进行release时刚好可以释放掉
3、CCArray CCDictionary 实现了对CCObject的管理,使用之前记得数组本身要retain,否则数组会被干掉;如果obj只在数组中被管理,obj被放入后记得release一下(因为在放入数组时已经retain了一次)
初始化
CCArray *tmpArray = ...
cocos2dx游戏的客户端整体框架设计:
一、传统的方式
直接在每个场景中放置具体的sprite、node、effect等,之后在update中根据game State来进行update的操作,缺点是update中的逻辑异常复杂,代码很难维护
二、分布式的方式
初始化时:
GameScene添加具体的layer,递归的添加每个entity;可以有个GameWorld或GameDataManager来管理所有的数据,使用监听者模式来注册具体的layer(实现网络的回调的数据监听)。 网络回调函数解析出数据之后,更新
相应的数据,进而更新每个具体界面li ...
成员函数指针实现的回调
- 博客分类:
- c++
成员函数指针实现的回调
1、回调的类型设置成基类的成员函数,每次set时进行转换
2、回调的参数是menuItem自身
3、回调的实现是 m_pListener->*m_pfnSelector)(this); 即初始化的时候,设置的是监听者(负责处理回调的指针),
回调内的参数是被点击的对象指针,一般情况下 这2个是一致的。
例子:cocos2d-x中的实现
1、CCObject.h
typedef void (CCObject::*SEL_MenuHandler)(CCObject*); // 定义回调类型
#define ...
android中的多线程
一、基于消息队列的handler机制,别的线程与自己进行交互,需要使用消息队列,这样可以实现功能的分离和处理的异步,
Android中对消息队列进行了封装,具体的:
1、Looper 负责维护并发安全的消息队列
2、handler 负责进行消息的入队、出队,以及消息的处理函数 void handleMessage(Message msg)
3、Message 是OS系统内抽象的数据结构
4、相互关系:handler操作的是具体Looper代表的消息队列(不指定时默认是当前线程的looper),并且每个线程有自己的消息队列,因此别的线程可以通过handle ...
unity3d中的坑和解决方案
unity3d是一个很牛x的引擎,当然其也有一些东西是不太好或者说不习惯的,下面列举一些:
1、制作特效时,使用animation记录的位置是相对位置,如果直接放到别的节点下会出问题;
解决方法:在特效根节点的上一层加上一个transform是(0,0,0) (0,0,0)(1,1,1)的父节点,之后再使用和处理父节点
2、使用NGUI制作界面时,ui特效会有位置对不上的问题(美术不会用ngui,使用原始的模型+材质贴图的形式来做特效)
解决方法:让美术将特效直接做到ui上面
3、美术制作的特效导出时丢失材质和贴图
解决方 ...
一些著名的开源项目:
0ad 3D游戏
ACE 网络框架
CEGUI 界面库
boost C++库
cocos2d 游戏库
delta3d 游戏引擎
OGRE 渲染引擎
facebook-hiphop php引擎
d2x-xl 游戏
hadoop 分布式文件系统
mangos wow 模拟server
opencv 图形库
tbb 并发库
three。js js3d渲染引擎
v8 js引擎
monkeySpider js引擎
node js server端
wxwidget c++界面库
qt c++界面库
sgs ...
mangos 的执行模型
一、线程分布:
1、主线程 main---- Master::Run() ,主要功能:初始化world、创建子线程、回收资源
2、WorldRunnable -------GS主线程
3、CliRunnable -----后台调试线程
4、RARunnable -------事件处理和分发线程
5、MaNGOSsoapRunnable---协议
6、FreezeDetectorRunnable
7、线程池 Master::Run----WorldSocketMgr::StartNetwork---WorldSocketMgr::StartReactiveIO ---R ...
集成spiderMonkey
文档 :https://developer.mozilla.org/En/SpiderMonkey/JSAPI_User_Guide
https://developer.mozilla.org/en/How_to_embed_the_JavaScript_engine
一、hello world基本流程:
JS_NewRuntime
JS_NewContext
JS_SetOptions
JS_SetErrorReporter
JS_NewCompartmentAndGlobalObject ------创建global对象 ...
linux 网络模型
一、基本概念:
1、多路复用: 一根网线可同时传递多个信号(时分或频分复用)
2、linux内核的作用:管理、调度进程,管理内存,管理外设(文件描述符)、驱动程序、网络(先管理再分发)
3、linux中所有外设都是fd(文件描述符),socket也是一种文件
4、非阻塞IO:机器中只有一个网卡,在多路复用环境下,应用程序需要进行网络IO,这时如果网卡还没准备好,应用程序有2个选择:
1》等着网卡可用, 如read时网卡上有数据,write时输出缓冲有空间;这时进程会停下来,所以叫阻塞IO
2》先问一下网卡是否可用,不能用就先处理后面的事情,(非阻塞IO)
5、数 ...
3D MMORPG客户端的一般架构
一、前言
通常说的游戏指的是real-time interactive video game, 这里面交互性指的是玩家的操作会影响画面的显示(这是与电影、动画片等的区别),由于系统会对玩家的操作进行反馈,所以这类的游戏更真实,更吸引人,real-time 是指玩家的操作、环境的变化必须要实时的在画面上表现出来。普通PC上运行的客户端游戏是video game的一种,其利用通用的计算机实现了实时交互性的效果。
本质上PC是数字计算机,即信号是离散的(与连续相对)、数字的,所有连续的效果通过足够快的更新画面来实现,实际上电影、电视都是用离散来模拟连续 ...
关于各种编码总结
一 、背景知识
1、计算机中所有的数据都用01串来表示,至于一串01到底代表什么是由软件来设定的。
比如:01111101111101010111110111110101 可以理解为一条指令,也可以理解为4个字节的char字符,具体是 ...
lua的并发哲学
实现并发:1、多线程(本质是共享内存数据、所以要同步多线程) 2、协程(本质是单线程、需要保证不阻塞)
协程的好处:
1、不用线程调度所以可以更充分利用cpu、
2、不处理线程同步减少bug、
3、不会为了效率而故意打断逻辑上一致的代码块(所有有IO的地方后续的代码都要放在回调里),
虚拟机内部在IO函数上yield和resume,回调对用户是屏蔽的
缺点:一个协程阻塞会堵住所有的协程,所以要特殊处理IO
协程体系下的调度器:简单的顺序调度就可以有很高的吞吐率。
一个示例性框架
threads = {} --可以被调度的协程
function receive(c ...
lua 源代码解析
源代码版本:lua-5.2.0
一、概览
1、lua脚本中暴露的库相关
lbaselib.c - 基础函数库(方便使用lua内部的功能)
lbitlib.c - 位运算库
lcorolib.c - 协程库
lstrlib.c - 字符串库,提供通用字符串处理功能
lstring.c - 字符串表(保存所有由Lua操作的字符串集合)
lmathlib.c - 数学库
loslib.c - 操作系统相关库,时间、环境、语言、执行程序等
liolib.c - 输入输出库
loadlib.c - 模块库(实现require函数,package函数)
ldblib.c - 调试库 ...
网游服务端核心技术概述 一
一、反外挂
方案:心跳、个性化脚本验证、图片验证、Apex Protect等
二、脚本系统
满足策划变态的需求变更,
方案:类似lua的脚本系统
三、数据安全
添加dba之类的中间层
四、高并发
协程加消息队列,实际上就是尽量不让cpu等待,--------------大系统的瓶颈都是数据库
五、多连接
多层架构,至少分登陆服、CCS、GS等层次结构
几种常用编程语言的编程思想和方法
搞软件的人,编程语言的掌握是基本功,如果单单是学习语法,最慢的一周之内也应该可以搞定(个人认为 语法层面c++是最复杂的)。不幸的是,软件的本质是逻辑,解决方案的设计是 ...