- 博客(8)
- 收藏
- 关注
原创 RPG游戏服务器怪物轮训机制
一般的RPG游戏,都有怪物轮训机制,会将所有场景地图下的怪物和玩家遍历一遍,往往要花很久的时间,这个地方可以做一下优化,将尚未激活的怪物,处于游走状态的怪物,独立出来,不放在场景轮询里,这样可以让这批怪物占用比较少的CPU时间。 具体方法是,单独的一个线程来处理这些怪物,更新他们的状态,包括停止,巡逻等,怪物刚创建的时候,由这个线程来管理,1s一次更新怪物的状态,如果有移动的话,广播位置...
2012-08-12 12:36:24 625
原创 socket服务器针对客户端ip变更的处理办法
现在碰到了一个棘手的服务器问题,描述如下:服务器采用netty的tcp协议作为client-server的通讯方式,tcp的好处是与客户端的连接为长连接,消息格式精简,传递比较快速,而且服务器可以发送push消息。但现在的问题是,公司的网络出口ip经常会变更,而tcp是根据ip+port来判断客户端连接的,因此随着ip的变化,该连接肯定失效了。游戏会发生让玩家重新登陆的情况,这样的话,玩家是无法接...
2012-02-12 18:48:12 1884 1
原创 jdk 5并发包中CopyOnWrite类的用法
jdk 5的concurrent包中,添加了几个CopyOnWrite开头的类,包括CopyOnWriteHashMap,CopyOnWriteArrayList,CopyOnWriteArraySet。 copy-on-write模式声明了,为了维护对象的一致性快照,要依靠不可变性(immutability)来消除在协调读取不同的但是相关的属性时需要的同步。对于集合,这意味着如果有大量的读(即 ...
2012-02-12 15:16:20 155
原创 TooTallNate-Java-WebSocket源码解析
github上比较流行的java websocket框架,主要包括以下内容: 1.WebSocketServer对象server的入口,每次都只需要创建一个实例,可以接受所有的websocket请求,内部采用NIO作为底层io框架,主要有两部分组成: run()方法中用while创建一个循环,不断轮训NIO的channel,处理的内容包括:接收NIO请求(isAccep...
2012-01-17 11:33:06 943
原创 mysql配置优化实践
我们游戏采用了mysql作为数据库软件,几经优化,已经相对稳定,有连续几个月稳定运行的记录,不过最近发生了比较诡异的现象,数据库有100多个进程突然锁住,用show processlist命令查看,几分钟之内一直是这些进程在执行相同的sql,没有任何结束的迹象,导致tomcat应用服务器飙升到线程池的最大线程,500个线程,然后停止响应。 show processlist看到的lock现象...
2011-09-03 16:34:42 127
原创 jetty集成spring配置
jetty是一个轻量级的java web容器,已经变得越来越流行,比较好的一点是它可以作为组件嵌入到java应用中,而不需要像tomcat一样将web项目部署到某个目录下,当然 tomcat也有自己的embeded版本。Google甚至选择了jetty而放弃了tomcat,可见jetty的受欢迎程度。下面提供一个spring集成jetty应用的一种方式,场景是,web server情况下,jett...
2011-08-13 13:38:34 430
原创 玩家被踢下线原因分析
我们游戏在开心网上线之后,最高有一千多的同时在线人数,不过好景不长,有几天晚上8-10点之间,发生了所有玩家被踢下线的情况。 一次发生在晚上9点左右,此时人数在持续上升,突然发生玩家全部掉线,当时几个同事都在现场,查看数据库状态show processlist,发现有几百个请求正在进行中,有几张myisam表处于lock状态,试图重启数据库,不过非常缓慢,查看tomcat日志发现,玩家掉线...
2011-08-07 13:05:33 557
原创 ajax无刷新二级联动下拉菜单
演示DEMO地址:http://222.205.42.210/js/select/selectChange.html,ajax无刷新二级联动下拉菜单,用JavaScript操作XML文件的DOM,实现下拉菜单内容的动态显示。主要由3个文件组成:man.js ; selectChange.html ; serverDoc.xml/*main.js * ajax无刷新二级联动下拉菜单(
2006-02-28 23:10:00 6617
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人