- 浏览: 242641 次
- 性别:
- 来自: 北京
最新评论
-
saiyaren:
你对hiphop的深入程度到了什么程度了?想和你进行探讨一下
facebook hiphop php vm 实现概述 -
eric_weitm:
lj3362569 写道可以再讲具体点么?还有现有的hipho ...
facebook hiphop php vm 实现概述 -
lj3362569:
可以再讲具体点么?还有现有的hiphop不支持哪些功能?
facebook hiphop php vm 实现概述
文章列表
一、文件功能概览
1、main.js 入口,封装网络IO、GS配置、后台监控接口等
2、worldserver.js GS(一条线),维护玩家、NPC、怪物、道具、物品、地图、刷怪区、主城等,
需要玩家间交互的逻辑,以此处作为交互的接口
3、Map.js 维护整张地图数据,其中包括zone尺度、刷怪区、障碍点、常规实体、坐标与grid索引相互转换等
4、checkpoint.js 刷新点
5、Area.js 某块地图区域
6、chestarea 和平区
7、mobarea 刷怪区
8、chest 宝箱
9、mob 怪物
...
game server内嵌的http服务
如何使gs响应http的请求? 基本思路 实现简单的http server框架、具体游戏逻辑转发给内部handler来处理
一 初始化
开启监听线程(协程)检查端口、设置缓冲区大小
每一个socket连过来时 1、开新协程处理(有调度开销) 2、放入共享队列中,由worker线程池共同维护(有数据同步的问题)
设置每个请求URI对应的回调接口
二 服务期
1、一个socket数据到来后,开新线程,解析http数据,分析出请求的uri、回调、关闭socket、关闭线程(因为http是无连接的)
2、一个socket到来时,其被放 ...
session管理
一、world核心数据结构:环境+session
SessionMap m_sessions;
Queue m_QueuedSessions;
typedef UNORDERED_MAP<uint32, Weather*> WeatherMap;
WeatherMap m_weathers;
二、WorldSession 核心数据结构 玩家+信道+消息队列
Player *_player;
WorldSocket *m_Socket;
ACE_Based::LockedQueue<WorldPa ...
GS生命期内主要的事件---------状态机的状态转换主要是基于事件
一 game server状态机
startup
LOAD
Compile
init
running
shutdown
二 角色状态机
login
enter_world
enter_map
leave_map
leave_world
relogin
logout
三 角色commands的命令种类
login、auction, buy, chat, express, move, task, select_menu_item, stall……
四 server端service的组织
1、结构化(纯c实现) clo ...
整个game server的并发模型
一 概述
game server至少要提供如下几类的功能 :
1、响应客户端请求-------WorldRunnable
2、后台命令 -------CliRunnable
3、分布式架构(RMI等) -------MaNGOSsoapRunnable
可以看到针对这几类功能,mangos都给予了支持。
二、WorldRunnable响应客户端请求的并发实现
game server会提供很多服务,如组队、加好友、交易、走路、战斗……,从宏观上讲这些服务是同时对外提供的,另外IO操作是费时的,
必须将IO与逻辑处理分开,这样的话一个基本 ...
最简单的jit实现
现在假设目标代码已经生成,要在执行引擎中进行执行,一种传统实现方式是:
while(true)
{
fetch_instruction(handle);// 有一次内存访问
switch(handle.opcode)
{
case Binary_Add:
move r0 arg1;
move r1 arg2;
call binary_add(); // 多一次跳转(相对于直接调用binary_add),cpu的cache用不上
break;
case Binary_sub:
mov ...
从上文可知,核心的runtime环境的代码在 src/runtme/eval,本文主要简单概述此处的代码实现,下面的叙述按文件夹分类。
一、runtime:运行时的核心数据结构(符号表)
1、assoc_list.cpp 变量关联表
2、code_coverage.cpp 代码覆盖率工具
3、file_repository.cpp php文件的jit缓存
4、variable_environment.cpp 维护各个函数、变量等所属的环境(如所属的类、作用范围等)
5、variant_stack.cpp 变量栈结构(可以用于记录函数调用关系)
6、eval_stat ...
facebook hiphop php vm 实现概述
一、src目录概述:
compiler:编译器
expression:php的expression所对应的ast node使用的数据结构
statement:对应php的语句
parser:生成出来ast
analysis:静态语义分析(变量类型、作用域、常量表、变量表、函数表……)
ffi:多语言交互层(大概是实现胶水的接口)
hphp:入口
idl:接口定义
system:php这一层的系统环境
third_party:借用的第三方包
util:工具类
runtime:整个转换器的 ...
TBB(Intel Threading Building Blocks)学习笔记
并行与并发是相对的,OS里讲的是并发而在架构方面更多的是说并行。并行是分多个层面的,个人认为基本上可以分为这么几个层面:1、指令级的并行;即所 ...
doom3 源代码基本情况
idLib:基础库,提供容器、数学、hash视锥体等
curlib:功能库,网络、加密、协议等
typeinfo:基本框架
game:游戏系统(gameplay这一层)、提供动画、AI、地形察觉、事件、命令、物理、脚本、角色、装备等封装(针对所有游戏)
game-d3xp:针对doom3的game封装
doomDll:doom游戏
cm:collisionModel 碰撞模型
framework:程序整体的框架等
sound:音效
sys:window ...
JS实现的JVM源代码分析
今早看到iteye上的消息(详见 http://www.iteye.com/news/23443),说是用JS实现了jvm,于是乎我就去看了下其实现的源代码,现在把我看到的分享给大家。
从https://github.com/nurv/BicaVM下载源代码,源代码中
lib:使用的外部的库
runtime:java核心运行时(.class)
src: js 源代码
webserver:python写的mini web server
1、src中的代码的基本信息:
preload.js : 工具函数,方便加载别的js代码
...
android sdk api的层次结构
最近看了几眼android的java API(4.0版本),稍微整理了一下,由于本人现在并未从事android开发,有不对的地方还请各位牛人指正一下。
一、系统级:android.accounts android.app
1、OS 相关
android.os
android.os.storage
android.hardware(传感器)
android.security
android. ...
apache利用挂钩(hook)来实现系统的灵活性和可扩展性,内部是使用函数指针来实现的,其实现方式与我前面写的某网游服务端的注册回调机制是一样的。这种结构打破了传统的函数调用的执行流程,任一个步骤都可以进行扩展, ...