- 浏览: 242644 次
- 性别:
- 来自: 北京
最新评论
-
saiyaren:
你对hiphop的深入程度到了什么程度了?想和你进行探讨一下
facebook hiphop php vm 实现概述 -
eric_weitm:
lj3362569 写道可以再讲具体点么?还有现有的hipho ...
facebook hiphop php vm 实现概述 -
lj3362569:
可以再讲具体点么?还有现有的hiphop不支持哪些功能?
facebook hiphop php vm 实现概述
文章列表
js 设计模式
参考资料:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/
一 单例
var SingletonTester = (function(){
// args: an object containing arguments for the singleton // 构造函数在匿名闭包内,所以外部不可见
function Singleton( args ) {
// set args variable to args passed or empty object if none ...
node.js 的异步模型
一、基本概念
阻塞式IO:cpu一直等到数据准备好了之后才会工作,即从函数调用开始,一直到数据准备好这段时间cpu是干等着的
非阻塞式的IO:数据准备好了之后发一个信号,此后cpu才会处理,即cpu不会干等着
阻塞式:相当于是轮训、非阻塞式相当于是中断
同步执行:语句的先后顺序就是cpu执行指令的顺序
异步执行:写在前面的语句不一定先执行,具体执行的时间不确定(一般是事件触发的)
可以看出,非阻塞io肯定要与异步执行结合才能保证程序逻辑的正确性,node.js中使用的是非阻塞的io
二、初衷
node.js的初衷是解决IO密集型的 ...
高级语言虚拟机 扫盲系列
本系列文章主要是总结、整理一些高级语言虚拟机实现的原理和方法,希望可以帮助到感兴趣的同学。本系列初步确定会包含如下内容:
一 什么是虚拟机?
二 运行时环境的基本结构
三 脚本层线程的调度
四 基本内存管理策略
五 jit
六 脚本与runtime的交互
游戏客户端是比较庞大的,一般会使用很多不同的模块,以下是某个网游客户端的头文件目录:
boost : boost库及代码
cxxtest : 一个自己实现的用于C++的单元测试工具
dbfs : 客户端使用 dbfs 文件系统存放资源脚本等东西
expat : 一个XML解析器,
freeimage : 一个图像处理库
freetype : 一个字体引擎,提供统一的接口来访问多种字体格式文件
buildvalue : 一个用于将mapping中的value构建成字符串的工具
csoap : 一种用纯C实现的SOAP协议,主要面向client/server模式
gloox : 一个跨平台的C+ ...
某网游服务端的注册回调机制
基本概念
GS:game server 主要是处理游戏逻辑和维护数据,其基本功能是响应客户端的命令。所以GS的核心模块是无限循环取消息、处理消息的过程。网游处理的核心对象是角色,而每个角色的处理逻辑是类似的,所以服务端可以编写通用的流程,分别处理不同状态、环境和属性下的角色逻辑。
服务端代码核心的编程思想是注册、回调。顾名思义,这种机制包括2个过程。
注册:将新的功能添加进系统(松散、异步的);
回调:在合适的时机使新加入的功能起作用。
基于这种机制的代码组织形式与windows里面基于消息的编程模式类似。
具体应用:
1、服务端各个子模块(d模块)统一通过
re ...
扩展和相关架构
扩展和与Java程序设计语言紧密相关的架构(按字母排序)。
Groovy ,一种用纯Java实现的脚本语言,Python的强有力竞争者
JAIN (Java API for Integrated Networks)Java综合网络应用程序开发接口
JAI,(Java Advanced Imaging)Java进阶图像
Java EE(原名J2EE),Java平台企业版
Java ME(原名J2ME) ,Java平台微型版为PDA和智能手机开发的移动版本
Java SE(原名J2SE),Java平台标准版
JDBC ,(Java Database Connecti ...
最近的代码阅读量比较多,有必要对代码阅读的方法进行整理。由于各种语言的差异,以下我会分别总结C、C++和java的代码阅读方法。
C工程
应用服务器或者对性能要求较高的工程会用纯C来写,这种工程是不太好读的。要读这 ...
Java 编程的动态性
参考资料:IBM开发者资料
参考地址 http://www.ibm.com/developerworks/cn/java/j-dyn0429/
一 类加载器
C语言程序执行过程:编译、链接(生成可执行文件)、操作系统的装载程序将其装入内存(建立进程)来运行
java程序的 ...
学术界与游戏开发相关的期刊和会议(这可都是精华啊):
花了一点时间收集了一些相关的资料,算是做个准备吧,呵呵。
第一部分acm经典资料:
ACM Transactions on Graphics (TOG)
Applied Perception in Graphics and Visualization
International Conference on Computer Graphics and Interactive Techniques
ACM SIGGRAPH symposium on Interactive 3D Graphics and Games
Non-Photore ...
jvm主要功能模块
hotspot/src/share/vm/runtime/init.cpp line:90 init_globals()
HandleMark:为线程做标记,便于删除相应范围的handle
1、management_init(主要是进行各种计数的处理) 管理内存、线程、垃圾回收等,内部初始化了 线程服务、运行时服务、类加载服务
2、bytecodes_init 建立好字节码相关的表结构,便于后面利用查表实现相应的逻辑
3、classLoader_init 统计class,维护classpath、class与字节码等之间的映射关系
4、codeCache_init(); ...
大地图: main ---JavaMain()---InitializeJVM----InvocationFunctions---LoadJavaVM----JNI_CreateJavaVM---Threads::create_vm
hotspot/src/share/vm/runtime/thread.cpp line:2996
Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain)
1、hotspot/src/os/windows/vm/os_windows.cpp line:3498 os::init()
win3 ...
由于在windows下建立jdk的工程环境非常的麻烦,所以干脆就直接来看了,(一般的读代码最快的方式是打断点,看调用流程),经过艰苦的奋斗,最主要的代码的位置终于找到了。
openjdk\hotspot\src\share\tools\launcher\java.c 中的main函数是整个hotspot虚拟机的入口,
和其他程序一样,main函数是在非常高的抽象程度进行抽象并进而描述主流程,进行必要的初始化之后,
JavaMain在新的线程中开启并开始执行java的main class。从jvm本身启动的角度来看,最主要的流程是通过
一个回调来进行的,此回调函数通过 InvocationFun ...
原来写了很多日志,但是都是在人人网,今天准备把这些都搬到iteye来,算是重新整理一下思路吧。
现在JIT很火,据说有的LUA jit的速度与C编译出的程序的速度是相当的,毕竟这方面做的比较早的比较有成果的还是jvm,网上搜了一下,系统分析JVM代码的资料是少的可怜,干脆,我就花点功夫去做个开拓者吧。以下所有分析基于最新jvm 的实现 jdk7的源代码,下载地址如下 http://download.java.net/openjdk/jdk7/ 我所使用的源代码的版本是 openjdk-7 build143 。
一、hotspot 入口 openjdk-7-ea-src-b142-12_m ...
因女友原因,本人要到 沈阳、青岛或大连工作,恳请各位老大推荐一下这3个地方好一点、厚道一点的企业,另外如果可以的话 请大家推荐合适的工作。 本人基本情况:
项目经验:(以时间倒序)
1、移植经典策略游戏 x-com到html5(client)和node.js(server)平台;目前,我主要实现了EditableText, Label, ListView, Button等基于canvas的控件、base内的所有界面、client端的整体框架、Base内的所有数据结构、server端的消息router、以及client与server端基本消息通信机制。
2、基于three.js 实现网页3D客户 ...
browser request client端源代码解析
main.js 入口,处理html最外层界面的回调
app.js 总配置接口
game.js 游戏主逻辑
继承关系:Entity---character-----player----warrior
主渲染循环 game.start --------game.click
初始化:main.js----initApp---initGame
Game的主要组件 renderer、updater、bubbleManager(弹出菜单)、audioManager、chatinput、pathfinder、playe ...