c++
文章平均质量分 55
iteye_14888
这个作者很懒,什么都没留下…
展开
-
TBB(Intel Threading Building Blocks)学习笔记
TBB(Intel Threading Building Blocks)学习笔记 并行与并发是相对的,OS里讲的是并发而在架构方面更多的是说并行。并行是分多个层面的,个人认为基本上可以分为这么几个层面:1、指令级的并行;即所谓的微程序、指令流水线等,现在cpu的一级缓存、二级缓存都很大,所以这个cache的效果还是比较好的(基于局部性原理)2、线程级的并行...原创 2011-12-09 17:49:22 · 402 阅读 · 0 评论 -
node.js 的异步模型
node.js 的异步模型 一、基本概念 阻塞式IO:cpu一直等到数据准备好了之后才会工作,即从函数调用开始,一直到数据准备好这段时间cpu是干等着的 非阻塞式的IO:数据准备好了之后发一个信号,此后cpu才会处理,即cpu不会干等着 阻塞式:相当于是轮训、非阻塞式相当于是中断 同步执行:语句的先后顺序就是cpu执行指令的顺序 异步执行:写在前面的语句...原创 2012-04-10 13:42:19 · 144 阅读 · 0 评论 -
几种常用编程语言的编程思想和方法
几种常用编程语言的编程思想和方法 搞软件的人,编程语言的掌握是基本功,如果单单是学习语法,最慢的一周之内也应该可以搞定(个人认为 语法层面c++是最复杂的)。不幸的是,软件的本质是逻辑,解决方案的设计是要借助某种解决问题或编程的思想的。本文试图从抽象层面概括一点编程思想方面的东西。 一 c语言 1、相关概念:实模式、保护模式、调度、中断、调用栈、回调……基本上计算机科学里面的基...原创 2012-04-23 13:52:05 · 350 阅读 · 0 评论 -
网游服务端核心技术概述 一
网游服务端核心技术概述 一 一、反外挂 方案:心跳、个性化脚本验证、图片验证、Apex Protect等 二、脚本系统 满足策划变态的需求变更, 方案:类似lua的脚本系统 三、数据安全 添加dba之类的中间层 四、高并发 协程加消息队列,实际上就是尽量不让cpu等待,--------------大系统的瓶颈都是数据库 五、多连接 多层架构,至少...原创 2012-04-23 17:27:18 · 146 阅读 · 0 评论 -
成员函数指针实现的回调
成员函数指针实现的回调 1、回调的类型设置成基类的成员函数,每次set时进行转换 2、回调的参数是menuItem自身 3、回调的实现是 m_pListener->*m_pfnSelector)(this); 即初始化的时候,设置的是监听者(负责处理回调的指针), 回调内的参数是被点击的对象指针,一般情况下 这2个是一致的。 例子:cocos2d-x中的实...原创 2013-06-24 10:48:02 · 143 阅读 · 0 评论 -
cocos2dx游戏的客户端整体框架设计
cocos2dx游戏的客户端整体框架设计: 一、传统的方式 直接在每个场景中放置具体的sprite、node、effect等,之后在update中根据game State来进行update的操作,缺点是update中的逻辑异常复杂,代码很难维护 二、分布式的方式 初始化时: GameScene添加具体的layer,递归的添加每个entity;可以有个Gam...原创 2013-07-03 13:50:37 · 633 阅读 · 0 评论 -
cocos2dx内存相关注意
cocos2dx中内存管理要注意的地方 1、工厂函数create中要注意使用autorelease,体现 谁取得谁释放 的原则 2、如果是直接new出来的,add进入到别的node之后,注意release一次(因为new时引用计数是1),这样在父类进行release时刚好可以释放掉 3、CCArray CCDictionary 实现了对CCObject的管理,使用之前记得数组本身要r...原创 2013-07-16 17:51:08 · 124 阅读 · 0 评论 -
lua 源代码解析
lua 源代码解析 源代码版本:lua-5.2.0 一、概览 1、lua脚本中暴露的库相关 lbaselib.c - 基础函数库(方便使用lua内部的功能) lbitlib.c - 位运算库 lcorolib.c - 协程库 lstrlib.c - 字符串库,提供通用字符串处理功能 lstring.c - 字符串表(保存所有由Lua操作的字符串集合) lmathlib.c...原创 2012-04-26 17:57:21 · 545 阅读 · 0 评论 -
关于各种编码总结
关于各种编码总结 一 、背景知识 1、计算机中所有的数据都用01串来表示,至于一串01到底代表什么是由软件来设定的。 比如:01111101111101010111110111110101 可以理解为一条指令,也可以理解为4个字节的char字符,具体是什么要看这个数据是在代码段还是数据段。 2、字符是人看到的显示效果(实际上人看到的是字符对应glyph渲染到屏幕上...原创 2012-05-03 18:04:40 · 148 阅读 · 0 评论 -
关于cocos2dx中的摄像机
关于cocos2dx中的摄像机 1、CCCamera 默认是从前往后看(center是原点,eye的z值很小,方向是z轴),所以z值越大,越是在前面, 2、球坐标:原点是圆心,仰角theata(从z轴开始),方位角 fai,一般数学坐标系中的逆时针角 3、 CCOrbitCamera::create(float t, float radius, float deltaRadius, ...原创 2013-08-02 15:02:11 · 552 阅读 · 0 评论 -
关于cocos2dx的主循环
关于cocos2dx的主循环 1、调用栈 cocos2d::CCDirector::drawScene() Line 268C++ cocos2d::CCDisplayLinkDirector::mainLoop() Line 1055C++ cocos2d::CCApplication::run() Line 67 + 0x20 bytesC++ 2、drawScene主逻辑...原创 2013-08-02 15:32:59 · 180 阅读 · 0 评论 -
3D MMORPG客户端的一般架构
3D MMORPG客户端的一般架构 一、前言 通常说的游戏指的是real-time interactive video game, 这里面交互性指的是玩家的操作会影响画面的显示(这是与电影、动画片等的区别),由于系统会对玩家的操作进行反馈,所以这类的游戏更真实,更吸引人,real-time 是指玩家的操作、环境的变化必须要实时的在画面上表现出来。普通PC上运行的客户端游戏是video ...原创 2012-05-16 16:58:30 · 451 阅读 · 0 评论 -
linux 网络模型
linux 网络模型 一、基本概念: 1、多路复用: 一根网线可同时传递多个信号(时分或频分复用) 2、linux内核的作用:管理、调度进程,管理内存,管理外设(文件描述符)、驱动程序、网络(先管理再分发) 3、linux中所有外设都是fd(文件描述符),socket也是一种文件 4、非阻塞IO:机器中只有一个网卡,在多路复用环境下,应用程序需要进行网络IO,这时如果网卡还没准备好,应用...原创 2012-06-08 17:23:19 · 160 阅读 · 0 评论 -
Cocos2dx android 部分代码的理解
Cocos2dx android 部分代码的理解 一、概述 基本上是搭建了基本的android app的架子,并对一些系统相关的功能进行了封装 二、java部分的细节 1、入口是 Cocos2dxActivity = Cocos2dxHelper + Cocos2dxGLSurfaceView 2、Cocos2dxHelper 封装系统相关的功能(声音、音效、资源、目录、压...原创 2013-12-25 15:38:20 · 158 阅读 · 0 评论 -
集成spiderMonkey
集成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...原创 2012-06-19 17:31:55 · 134 阅读 · 0 评论 -
网游客户端使用的外部库
游戏客户端是比较庞大的,一般会使用很多不同的模块,以下是某个网游客户端的头文件目录: boost : boost库及代码 cxxtest : 一个自己实现的用于C++的单元测试工具 dbfs : 客户端使用 dbfs 文件系统存放资源脚本等东西 expat : 一个XML解析器, freeimage : 一个图像处理库 freetype : 一个字体引擎,提供统一的接口来访问多种...原创 2012-04-07 11:36:44 · 144 阅读 · 0 评论 -
注册回调机制
某网游服务端的注册回调机制 基本概念 GS:game server 主要是处理游戏逻辑和维护数据,其基本功能是响应客户端的命令。所以GS的核心模块是无限循环取消息、处理消息的过程。网游处理的核心对象是角色,而每个角色的处理逻辑是类似的,所以服务端可以编写通用的流程,分别处理不同状态、环境和属性下的角色逻辑。 服务端代码核心的编程思想是注册、回调。顾名思义,这种机制包括2个过程。 注册:...原创 2012-04-06 10:17:53 · 259 阅读 · 0 评论 -
读代码的方法总结
最近的代码阅读量比较多,有必要对代码阅读的方法进行整理。由于各种语言的差异,以下我会分别总结C、C++和java的代码阅读方法。 C工程 应用服务器或者对性能要求较高的工程会用纯C来写,这种工程是不太好读的。要读这种代码首先需要了解相应的基本概念,其次是一些核心的数据结构和功能模块,再次如果能找到相应的逻辑架构图(因为不涉及实现的细节还是比较容易找到的)会对理解代码有重要的帮助。C的工...原创 2012-04-06 10:17:01 · 114 阅读 · 0 评论 -
facebook hiphop php vm 实现概述
facebook hiphop php vm 实现概述 一、src目录概述: compiler:编译器 expression:php的expression所对应的ast node使用的数据结构 statement:对应php的语句 parser:生成出来ast analysis:静态语义分析(变量类型、作用域、常量表、变量表、函数...原创 2011-12-15 13:12:29 · 188 阅读 · 0 评论 -
facebook hiphop php vm 实现概述(二)
从上文可知,核心的runtime环境的代码在 src/runtme/eval,本文主要简单概述此处的代码实现,下面的叙述按文件夹分类。 一、runtime:运行时的核心数据结构(符号表) 1、assoc_list.cpp 变量关联表 2、code_coverage.cpp 代码覆盖率工具 3、file_repository.cpp php文件的jit缓存 4、va...原创 2011-12-21 09:17:48 · 161 阅读 · 0 评论 -
一些比较出名的开源库和框架
一些著名的开源项目: 0ad 3D游戏 ACE 网络框架 CEGUI 界面库 boost C++库 cocos2d 游戏库 delta3d 游戏引擎 OGRE 渲染引擎 facebook-hiphop php引擎 d2x-xl 游戏 hadoop 分布式文件系统 mangos wow 模拟server opencv 图形库 tbb 并发库...原创 2012-07-08 09:48:19 · 243 阅读 · 0 评论 -
发散式的函数调用组织形式------从apache的挂钩机制中得到的启示
apache利用挂钩(hook)来实现系统的灵活性和可扩展性,内部是使用函数指针来实现的,其实现方式与我前面写的某网游服务端的注册回调机制是一样的。这种结构打破了传统的函数调用的执行流程,任一个步骤都可以进行扩展,而且每个模块还可以保持自己内部的层次化和模块化。 c来模拟C++多态的实现? 程序最终都是以机器码运行的,汇编是机器码的符号映射,所以汇编语言的描述能力和高级语言是一样的,所以C语言...原创 2011-11-02 14:34:14 · 140 阅读 · 0 评论 -
doom3 源代码基本情况
doom3 源代码基本情况 idLib:基础库,提供容器、数学、hash视锥体等 curlib:功能库,网络、加密、协议等 typeinfo:基本框架 game:游戏系统(gameplay这一层)、提供动画、AI、地形察觉、事件、命令、物理、脚本、角色、装备等封装(针对所有游戏) game-d3xp:针对doom3的game封装 d...原创 2011-11-29 13:08:04 · 290 阅读 · 0 评论 -
高级语言虚拟机最简单的jit实现
最简单的jit实现 现在假设目标代码已经生成,要在执行引擎中进行执行,一种传统实现方式是: while(true) { fetch_instruction(handle);// 有一次内存访问 switch(handle.opcode) { case Binary_Add: move r0 arg1; move r1 arg2; ...原创 2012-03-08 16:50:13 · 461 阅读 · 0 评论 -
网游服务端技术总结 基于mangos源码 (一)
整个game server的并发模型 一 概述 game server至少要提供如下几类的功能 : 1、响应客户端请求-------WorldRunnable 2、后台命令 -------CliRunnable 3、分布式架构(RMI等) -------MaNGOSsoapRunnable 可以看到针对这几类功能,mangos都给予了支持。 二、WorldR...原创 2012-03-19 11:20:22 · 337 阅读 · 0 评论 -
网游服务端技术总结 二
GS生命期内主要的事件---------状态机的状态转换主要是基于事件 一 game server状态机 startup LOAD Compile init running shutdown 二 角色状态机 login enter_world enter_map leave_map leave_world relogin logout 三 角色comma...原创 2012-03-19 15:09:30 · 122 阅读 · 0 评论 -
网游服务端技术总结 三
session管理 一、world核心数据结构:环境+session SessionMap m_sessions; Queue m_QueuedSessions; typedef UNORDERED_MAP WeatherMap; WeatherMap m_weathers; 二、WorldSession 核心数据结构 玩家+信道+...原创 2012-03-19 15:13:59 · 137 阅读 · 0 评论 -
网游服务端技术总结 四
game server内嵌的http服务 如何使gs响应http的请求? 基本思路 实现简单的http server框架、具体游戏逻辑转发给内部handler来处理 一 初始化 开启监听线程(协程)检查端口、设置缓冲区大小 每一个socket连过来时 1、开新协程处理(有调度开销) 2、放入共享队列中,由worker线程池共同维护(有数据同步的问题) 设置每个请求U...原创 2012-03-19 15:44:19 · 88 阅读 · 0 评论 -
JDK7 源代码笔记 一
原来写了很多日志,但是都是在人人网,今天准备把这些都搬到iteye来,算是重新整理一下思路吧。 现在JIT很火,据说有的LUA jit的速度与C编译出的程序的速度是相当的,毕竟这方面做的比较早的比较有成果的还是jvm,网上搜了一下,系统分析JVM代码的资料是少的可怜,干脆,我就花点功夫去做个开拓者吧。以下所有分析基于最新jvm 的实现 jdk7的源代码,下载地址如下 http://downl...原创 2012-04-05 16:39:32 · 158 阅读 · 0 评论 -
jvm源代码笔记 二
由于在windows下建立jdk的工程环境非常的麻烦,所以干脆就直接来看了,(一般的读代码最快的方式是打断点,看调用流程),经过艰苦的奋斗,最主要的代码的位置终于找到了。 openjdk\hotspot\src\share\tools\launcher\java.c 中的main函数是整个hotspot虚拟机的入口, 和其他程序一样,main函数是在非常高的抽象程度进行抽象并进而描述主流程...原创 2012-04-05 16:41:38 · 98 阅读 · 0 评论 -
jvm 源代码笔记 三 create_vm 主流程
大地图: main ---JavaMain()---InitializeJVM----InvocationFunctions---LoadJavaVM----JNI_CreateJavaVM---Threads::create_vm hotspot/src/share/vm/runtime/thread.cpp line:2996 Threads::create_vm(JavaVMInit...原创 2012-04-05 16:43:22 · 200 阅读 · 0 评论 -
jvm 源代码笔记 四 jvm主要功能模块
jvm主要功能模块 hotspot/src/share/vm/runtime/init.cpp line:90 init_globals() HandleMark:为线程做标记,便于删除相应范围的handle 1、management_init(主要是进行各种计数的处理) 管理内存、线程、垃圾回收等,内部初始化了 线程服务、运行时服务、类加载服务 2、bytecodes_init ...原创 2012-04-05 16:44:23 · 187 阅读 · 0 评论 -
mangos 的执行模型
mangos 的执行模型 一、线程分布: 1、主线程 main---- Master::Run() ,主要功能:初始化world、创建子线程、回收资源 2、WorldRunnable -------GS主线程 3、CliRunnable -----后台调试线程 4、RARunnable -------事件处理和分发线程 5、MaNGOSsoapRunnable---协议 6、Free...原创 2012-06-21 00:13:44 · 113 阅读 · 0 评论