手游服务端框架之使用事件驱动模型解决业务高耦合

游戏里经常有这样的业务,当玩家触发某个动作时,有若干与之关联的业务也要一起执行。诸如这样场景,我们选择引入事件驱动模型来帮助我们解决业务代码耦合的问题。本文实现一个工具库,来解决监听器与事件多对多的关联问题。...
阅读(148) 评论(0)

Netty网络聊天室之使用spring管理各种组件

spring是web开发的宠儿,不管mvc框架选择structs还是SpringMVC,IOC容器都是选择Spring。Spring有两个主要的作用,一个是IOC(依赖反转),另一个是AOP(面向切面编程)。在我们的聊天室,我们也将使用Spring容器来管理各种组件。...
阅读(118) 评论(0)

Netty网络聊天室之会话管理

浏览器第一次与服务器建立连接的时候,服务器就会自动为之分配一个Session。在我们的聊天室,也可以使用Session来判断用户是否经过登录验证,保存用户的各种信息,向客户端发送消息。这极大方便了程序对客户端的管理。...
阅读(2595) 评论(8)

手游服务端框架之GM金手指的设计

游戏开发需要一些命令,能够像金山游侠这种软件一样,修改游戏里的玩家或公共服务的数据。在游戏项目里,这些命令统称为GM命令。本文将介绍实现gm系统的一种方式。...
阅读(283) 评论(0)

手游服务端框架之使用Guava构建缓存系统

缓存,在项目中的应用非常之广泛。诸如这样的场景,某些对象计算或者获取的代码比较昂贵,并且在程序里你不止一次要用到这些对象,那么,你就应该使用缓存。缓存,在项目中的应用非常之广泛。诸如这样的场景,某些对象计算或者获取的代码比较昂贵,并且在程序里你不止一次要用到这些对象,那么,你就应该使用缓存。...
阅读(226) 评论(0)

手游服务端框架之配置与玩家数据库设计

一款网络游戏的设计,至少需要策划数据库和用户数据库两种数据库。本文主要介绍这两种数据库的设计及使用,同时,介绍如何通过ORM框架来完成玩家数据的持久化。...
阅读(1246) 评论(0)

手游服务端框架之消息线程模型

玩家的消息请求如果放在mina的io线程池进行处理,当业务处理非常耗时,会严重影响io的吞吐量。所以,我们应该另起用于处理业务逻辑的线程池,采用生产者消费者模型,异步处理玩家请求。...
阅读(1397) 评论(2)

手游服务端框架之使用控制器来处理玩家消息

经典web开发项目通常采用三层架构来组织代码。典型的,第一层为表现层,通常使用MVC模式;第二层为业务逻辑层,该层主要是各种service业务操作类;第三层则为数据访问层。类似的,我们的游戏项目也可以采用上面的三层架构,使用Controller注解对应MVC模式的控制器,使用RequestMapper注解对应的消息处理。...
阅读(493) 评论(0)

手游服务端框架之网关

游戏服务器的网关,主要是用于手机客户端与游戏业务服务端通信的中转器,负责接收来自手机客户端的请求协议,以及推送服务端的响应包。在建立socket连接之后,服务端需要知道客户端发来的数据流是什么含义,同时,客户端也要能知道服务端推送的数据内容。这便有了消息编码器解码器的设计。...
阅读(828) 评论(2)

自定义orm框架解决玩家数据持久化问题

使用持久化框架诸如Hibernate过于重量级,使用原生jdbc又显得非常啰嗦。本文通过几百行代码,演示一个轻量级的持久化框架。可以用于游戏服务端的数据持久化方案。...
阅读(2306) 评论(0)

细数jdk库的四宗罪

众所周知,jdk库非常庞大,有非常多精心设计的工具可以拿来用;而且,jdk版本的向下兼容性也做得非常好,升级版本对旧项目来说没多大困难。由于这两点原因,jdk不可避免地存在一些设计上的缺陷。为了保障旧项目开发的利益,这些设计缺陷只能随着众多版本被继承下来。个人总结了一下JDK设计里出现的“四宗罪”,算是一种反面教材,在平时自己的开发设计上应该避免。...
阅读(355) 评论(0)

双向rpc

RPC基于请求-响应模式,因此属于单向服务。也就是说,服务端无法主动向客户端推送数据。本文使用百度的jprotobuf-rpc底层框架,打造一个允许双向通信的rpc通信框架。...
阅读(1168) 评论(0)

游戏服务器关于玩家数据的解决方案

玩家数据是游戏系统的血液,必须保证有高效正确的处理方案。本文将从持久层框架的选择、数据表结构设计以及数据入库模型三个方面,讨论玩家数据的相关解决方案。...
阅读(1988) 评论(0)

查看生产环境的内存数据

维护生产环境项目的时候,在排查问题的过程中,有时强烈希望查看内存中的一些数据,却苦于没有办法将这些值输入到终端或日志中。 本文将使用动态执行脚本和使用自定义类加载器执行临时代码两种方式查看远程内存数据。...
阅读(3767) 评论(0)

Object的wait()与Thread的sleep()之间的异同点

Object类的wait()方法与Thread类的sleep()方法都可以用于处理线程间的协作运行。但两者的应用场合是非常不同的,本文将主要介绍两个方法的不同之处,同时通过一个简短程序,希望读者能够直观地了解两者是如何处理当前线程的锁资源。...
阅读(609) 评论(0)
19条 共2页1 2 下一页 尾页
    个人资料
    • 访问:102631次
    • 积分:1430
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:0篇
    • 译文:0篇
    • 评论:27条
    博客专栏
    最新评论