自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Clyde学习笔记三(Config)

在clyde中,几乎所有的外部资源都是以config的形式存在。每个config都有一个name来唯一标识这个config。ManagedConfig是所有config的基类,它是一个抽象类,定义了一些最基础的方法,ParameterizedConfig是它直接的子类。 1. ParameterizedConfig ParameterizedConfig引入了parameter这一...

2012-07-19 16:28:40 189

原创 3D MMO Demo

今天终于把Demo搞出来了。

2011-06-02 15:53:22 142

Clyde学习笔记二(CoordIntMap)

CoordIntMap是一个基类为Map数据结构,是存储游戏地图场景数据的基础数据结构,在应用中一共涉及到3个类,第一个自然是CoordIntMap,另外还有Coord和Cell,Cell定义在CoordIntMap中,是一个内部类。 Coord用一个int来表示和存储一个2D的坐标,在存储和表示之前分别需要encode和decode。 /** * Encodes t...

2011-05-23 17:11:35 135

原创 Clyde学习笔记一(Scope)

Scope相关的接口、类都定义在expr这个包中,官方的说明很简单,只有一句话:expr - expression evaluation and symbol binding,但scope这个概念却很重要,可以说是整个clyde框架的核心基石之一。那么它到底是个什么概念,又起到了什么作用呢?首先它是一个接口,在这个接口中,最重要的就是下面这个方法: public <T> T g...

2011-04-09 13:57:27 170

原创 Narya性能测试(二)

 本来想用LoaderRunner对Narya的网络性能再做一次测试,LR的java vuser可以直接用java来编写测试脚本,本来还是挺方便的,但是不知道为什么脚本一跑起来就报这么个错: Error (-17998): Failed to get [param not passed in call] thread TLS entry. 实在是有点郁闷的,网上搜索了很久也...

2011-01-12 21:37:36 157

原创 Narya性能测试(一)

Narya是基于NIO的网游服务器底层通讯引擎,并在其上做了对象的序列化,可以直接做方法的远程调用。今天有时间测试了下其性能。 测试环境如下 服务器CPU:Intel Xeon   X3220  2.40GHz 四核内存:8G操作系统:Red Hat Enterprise Linux Server release 5.4, 内核版本为2.6.18-164.el5PAE...

2010-12-29 16:15:00 132

B+树的Java实现

B+树的定义:  1.任意非叶子结点最多有M个子节点;且M>2;2.除根结点以外的非叶子结点至少有 M/2个子节点;3.根结点至少有2个子节点;4.除根节点外每个结点存放至少M/2和至多M个关键字;(至少2个关键字)5.非叶子结点的子树指针与关键字个数相同;6.所有结点的关键字:K[1], K[2], …, K[M];且K[i] < K[i+1];7...

2010-12-19 18:02:30 159

原创 理解矩阵(三)

这两篇文章发表于去年的4月。在第二部分结束的时候,我说:       “矩阵不仅可以作为线性变换的描述,而且可以作为一组基的描述。而 作为变换的矩阵,不但可以把线性空间中的一个点给变换到另一个点去,而且也能够把线性空间中的一个坐标系(基)表换到另一个坐标系(基)去。而且,变换点 与变换坐标系,具有异曲同工的效果。线性代数里最有趣的奥妙,就蕴含在其中。理解了这些内容,线性代数里很多定理和规则会变得更...

2010-06-19 16:52:40 72

原创 理解矩阵(二)

接着理解矩阵。 上一篇里说“矩阵是运动的描述”,到现在为止,好像大家都还没什么意见。但是我相信早晚会有数学系出身的网友来拍板转。因为运动这个概念,在数学和物理里是跟微积分联系在一起的。我们学习微积分的时候,总会有人照本宣科地告诉你,初等数学是研究常量的数学,是研究静态的数学,高等数学是变量的数学,是研究运动的数学。大家口口相传,差不多人人都知道这句话。但是真知道这句话说的是什么意思的人,好...

2010-06-19 16:42:05 70

原创 理解矩阵(一)

前不久chensh出于不可告人的目的,要充当老师,教别人线性代数。于是我被揪住就线性代数中一些务虚性的问题与他讨论了几次。很明显,chensh觉得,要让自己在讲线性代数的时候不被那位强势的学生认为是神经病,还是比较难的事情。 可怜的chensh,谁让你趟这个地雷阵?!色令智昏啊! 线性代数课程,无论你从行列式入手还是直接从矩阵入手,从一开始就充斥着莫名其妙。比如说,在全国一般工科院...

2010-06-19 16:34:18 83

发一个2D MMO Demo

利用Threerings框架制作了一个2D MMO的Demo,实现了人物在地图上移动,并且支持多个客户端。 运行方式: 1.下载压缩包并解压,例如到目录demo2. 打开命令行,进入到demo目录,运行server.bat,启动服务端3. 再打开一个命令行,进入到demo目录,运行client someUserName,启动一个客户端4. 再打开一个命令行,进入到dem...

2010-06-14 16:06:03 192

原创 在eclipse中调试ant任务

如果要在gameGarden下开发游戏的话,因为游戏会运行在sandbox中,服务端和客户端都将用ant任务来启动,这给开发调试带来了很多的困难。下面介绍一种可以在eclipse中调试ant任务的方法。 首先在build.xml中复制server任务到一个新的任务,比如叫做server-debug,在启动虚拟机的时候加入下面的这条语句。 <jvmarg value="-Xru...

2010-06-03 21:35:09 352

基于Java的2D mmorpg开源引擎Threerings系列之五(实战五子棋)

Threerings公司在其核心的三个框架(narya, nenya, vilya)之上又封装了一层toybox,构成所谓的gameGarden,使用这个gameGarden可以快速的构建属于你自己的多人在线小游戏,并且还可以上传到gameGarden的主页上http://www.gamegardens.com/,同所有人一同来分享。 更难得的是,Threerings在gameGarden...

2010-05-18 11:53:30 236

基于Java的2D mmorpg开源引擎Threerings系列之四(实战聊天室)

通过前面几篇文章的介绍相信大家对Threerings这个框架已经有了初步的了解了,不过理论再多始终还是理论,只有通过不断实践才能真正掌握,今天我们就来应用这个框架来创建一个简单的聊天室程序,下图是这个聊天室应用的客户端界面,简单的包括了聊天记录区域,用户列表,聊天室编号列表和用户输入等。整个应用分为服务端和客户端两个部分。源代码可以在这里下载聊天应用程序helloworld。  在...

2010-05-07 13:49:47 233

基于Java的2D mmorpg开源引擎Threerings系列之三(Invocation Service)

通过前两篇文章的介绍,大家应该对Threerings框架有了初步的了解,前面笔者也提到过客户端对服务端的请求主要是通过对服务的调用来实现,即InvocationService,这种调用与Java API中的远程方法调用有点类似。而Threerings在框架层面对这个机制提供了完善的支持。今天我们就来对这个InvocationService来仔细研究一番。其实在前面的例子中,我们已经接触过了Invo...

2010-05-06 12:19:38 136

原创 一道应聘智力题的编程求解

请编程解决如下难题:前提:1、有五栋五种颜色的房子2、每一位房子的主人国籍都不同3、这五个人每人只喝一种饮料,只抽一种牌子的香烟,只养一种宠物4、没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料提示:1、英国人住在红房子里2、瑞典人养了一条狗3、丹麦人喝茶4、绿房子在白房子左边5、绿房子主人喝咖啡6、抽PALL MALL烟的人养了一只鸟7、黄房子主人抽DUNHILL烟8、住在中间那间房子的人喝牛...

2010-03-04 22:05:28 249

原创 基于Java的2D mmorpg开源引擎Threerings系列之二(分布式对象)

通过我们上一篇的介绍,大家应该对Threerings这个引擎有了一个初步的认识。在引擎的核心框架之一的Narya中,主要包括了presents,crowd和bureau三个package,而presents则包括了今天我们要介绍的DObject部分。 presents这个包或者说框架是对底层网络通讯的一层封装,将底层的网络通讯的实现细节抽象成对象与事件(object和event),以供建造...

2010-02-22 19:50:39 204

原创 基于Java的2D mmorpg开源引擎Threerings系列之一(概述篇)

Threerings是Three Rings Design公司旗下的一款基于Java并完全具备开发出商业品质的2D mmorpg游戏的开源引擎。Three Rings Design是一家位于美国总部在加州旧金山的网游开发商,但又不同于一般网游开发商的是,该公司旗下的所有游戏都抛弃了砍怪升级,打装备pk的老套路,而是着重于游戏性本身,从非常与众不同的视角来开发它的游戏,让人有完全耳目一新的感觉,大家...

2010-02-10 00:13:58 407

原创 基于Struts2+Spring+iBatis的web应用最佳实践系列之七(Demo篇)

终于来到了本系列的最终篇,demo已经制作好,可以在此下载demo.rar 在下载和使用demo之前,请确保以下环境被正确安装和配置。 jdk,这个就不说了,相信大家都能搞定。 maven2,可以去maven的主页下载http://maven.apache.org/download.html,解压后请正确配置maven home,并将maven的bin目录加入到path变量...

2010-02-08 15:01:26 117

原创 基于Struts2+Spring+iBatis的web应用最佳实践系列之六(验证码篇)

本篇主要讨论下如何使用Struts2实现一个通用的验证码(checkcode)功能。 首先我们要有一个CheckCodeSession类,用来保存我们生成好的checkcode。这个类很简单,主要就是保存了验证码本身,创建时间以及是否有效的标志。 public class CheckCodeSession { private String checkCode;//验证码 p...

2010-02-05 18:34:12 81

原创 基于Struts2+Spring+iBatis的web应用最佳实践系列之五(分页篇)

分页也是一个大家经常讨论的话题,网上也有过很多的分页方法的介绍,但往往仅仅只是局限在web层或数据访问层的一个分页组件,对于一个典型的三层web应用来说笔者还没有见到过一个完整的例子。又或者是使用了这个组件后往往还要手工书写繁琐的代码。在这里笔者就象大家介绍一种基于Struts2+Spring+iBatis三层框架结构,而不用手工写一行代码的分页组件(或者说框架)。 首先,在web层我们可...

2010-02-05 17:13:57 103

原创 基于Struts2+Spring+iBatis的web应用最佳实践系列之四(CRUDL篇)

让我们首先来看一下什么是CRUD,CRUD即Create-Read-Update-Delete的英文缩写,不过笔者还要在这里加上个L,即List,合起来即CRUDL。CRUDL这种场景或者说模式在绝大部分的应用当中都很常见,那么,每写一个应用如果都要重复一遍这样的劳动显然显得十分的繁琐,那有没有一种优雅、干净的办法实现简单的CRUDL呢?笔者在此就向大家介绍一种只需要极少量的代码和简单的配置就能实...

2010-02-04 23:08:10 157

原创 基于Struts2+Spring+iBatis的web应用最佳实践系列之三(访问控制篇下)

在本系列的上一篇中我们介绍了一个基于cookie的访问控制方法,细心的读者一定会发现,这种方法的实现还是最终基于Struts2的拦截器机制,也就是说它只能保护web应用中的action资源,对于Struts2的应用来说,除了aciton外,一定会有不少的jsp页面。那么,我们又该如何实现对于jsp页面的访问控制呢?其实对于这样的问题,笔者在网络看到过已经不止一次了,下面我们就来介绍一种对于jsp页...

2010-02-03 18:47:29 62

原创 基于Struts2+Spring+iBatis的web应用最佳实践系列之二(访问控制篇上)

访问控制对于一个web应用来说几乎是不可或缺的。当访问web应用当中的某些资源时,如果你这时还没有登录,那么就会被重定向到登录页面,只有在登录之后才会被允许访问。经常上网的朋友对这样一个场景一定不会陌生。那么,如何实现对部分访问受限的url进行保护呢?笔者在这里向大家介绍一种基于cookie的实现方法。  当用户登录的时候我们就在httpResponse中写入一个cookie,这个cook...

2010-02-03 15:40:53 79

原创 基于Struts2+Spring+iBatis的web应用最佳实践系列之一(自动配置篇)

由于最近有点时间,便想动手写点东西,其一算是对自己这段时间来项目经验的一个总结,其二也希望能和大家探讨下最佳实践这个主题。说来也怪,网络上关于这三个框架的介绍很多,整合的教程也很多,但绝大多数都属于入门级别,浅尝则止,对于探讨如何在实际项目中用好他们,如何发挥出整合后的巨大威力的文章却很少,甚至连javaEye都没有最佳实践这个分类。不知道是大家的忽视还是那些大牛们藏着掖着不愿拿出来与大家分享。但...

2010-02-02 00:13:36 110

原创 深度探索观察者模式

在GOF的设计模式一书中将观察者定义为一种对象的行为模式,又叫做发布-订阅模式(Publish/Subscribe)、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动...

2010-01-29 11:42:33 114

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除