- 浏览: 26523 次
- 性别:
- 来自: 北京
最新评论
-
Sev7en_jun:
Sev7en_jun 写道我的mm.cfg内容如下
Error ...
win7下flex日志输出 -
Sev7en_jun:
我的mm.cfg内容如下
ErrorReportingEnab ...
win7下flex日志输出 -
lifeng_2009:
你好,请问能否控制日志输入文件的路径?
win7下flex日志输出 -
carmarx:
这游戏现在多了一个加密手续,虽然理解起来很容易(就异或一个私有 ...
倾城源码导读之二 -
jayjayjays:
倾城 没用mina?
倾城服务器源码解读(一)
文章列表
今天被win7下的flex日志输出墨迹了1个小时。。。记录下来,留给后来人。
首先要安装flash debug调试,然后把mm.cfg拷贝到C:\Users\{用户名}下,日志输出位置为C:\Users\{用户名}\AppData\Roaming\Macromedia\Flash Player\Logs文件夹下。
最后推荐一套flex的日志框架http://code.google.com/p/log4as3/
dennis_zane 写道
随着并发数量的提高,传统nio框架采用一个Selector来支撑大量连接事件的管理和触发已经遇到瓶颈,因此现在各种nio框架的新版本都采用多个 Selector并存的结构,由多个Selector均衡地去管理大量连接。这里以Mina和Grizzly的实现为例。 在Mina 2.0中,Selector的管理是由org.apache.mina.transport.socket.nio.NioProcessor来处理,每个NioProcessor对象保存一个Selector,负责具体的select、wakeup、channel的注册和取消、读写事件的注册和 ...
- 2009-11-03 17:24
- 浏览 1425
- 评论(0)
线程模型
NIO的选择器采用了多路复用(Multiplexing)技术,可在一个选择器上处理多个套接字,通过获取读写通道来进行IO操作。由于网络带宽等原因,在通道的读、写操作中是容易出现等待的,所以在读、写操作中引入多线程, ...
- 2009-11-01 12:39
- 浏览 2033
- 评论(0)
上一篇我是对消息类中用到的bytebuffer类进行了解释。这篇就简单的解释下消息类。先看message类,它是对消息进行了封装,没有什么特别的地方。AppMessage类继承与消息类,此类的作用是对消息进行初始化并提供了消息的复制。其 ...
- 2009-11-01 09:39
- 浏览 2815
- 评论(1)
第一次把代码解读写出来,可能不够理想还请大家包含。对于游戏源码的欣赏,我一般只看一个地方通信层。所以我的解读也就只针对通信曾。当全部代码解读完后,我将对倾城通信层的设计与实现提出意见,以及希望各位高手 ...
- 2009-11-01 09:37
- 浏览 4080
- 评论(1)
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user ...
- 2009-11-01 02:03
- 浏览 1252
- 评论(0)
在Socket应用开发中,还有一个话题是讨论的比较多的,那就是数据接收后如何处理的问题。这也是一个令刚接触Socket开发的人很头疼的问题。
因为Socket的TCP通讯中有一个“粘包”的现象,既:大多数时候发送端多次发送的小数据包会被连在一起被接收端同时接收到,多个小包被组成一个大包被接收。有时候一个大数据包又会被拆成多个小数据包发送。这样就存在一个将数据包拆分和重新组合的问题。那么如何去处理这个问题呢?这就是我今天要讲的通讯协议。
所谓的协议就是通讯双方协商并制定好要传送的数据的结构与格式。并按制定好的格式去组合与分析数据。从而使数据得以被准确的理解和处理。
那么我们如何去制定通讯协议 ...
- 2009-11-01 01:33
- 浏览 1593
- 评论(0)
同步在网络游戏中是非常重要的,它保证了每个玩家在屏幕上看到的东西大体是一样的。其实呢,解决同步问题的最简单的方法就是把每个玩家的动作都向其他玩家广播一遍,这里其实就存在两个问题:1,向哪些玩家广播,广播 ...
- 2009-10-21 16:39
- 浏览 1416
- 评论(0)
一般来说,client和server之间的数据交换,分为几个优先级,大部分情况下是下面3种:1. 不可以丢失,但是不要求速度。2. 不可以丢失,但是要求速度,确并不是非常严格。3. 可以丢失,但是要求速度
对于1来说,最直接的例子就是聊天信息,动态的地图信息。这些数据不是time-critical的,所以应该使用TCP连接。 在大多数情况下,有专门的 voice/chat server和map server,client到每个server有个TCP连接。一个client有多少个连接根据需要决定。同时有2-3个连接并没有多大开销。当然,如果开销很大,就是程序设计的问题了。其实你想想开BT的时候 ...
- 2009-10-20 00:23
- 浏览 1667
- 评论(0)
十五年前,多处理器系统是高度专用系统,要花费数十万美元(大多数具有两个到四个处理器)。现在,多处理器系统很便宜,而且数量很多,几乎每个主要微处理器都内置了多处理支持,其中许多系统支持数十个或数百个处理 ...
- 2009-10-20 00:19
- 浏览 737
- 评论(0)
Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 ...
- 2009-10-19 23:48
- 浏览 736
- 评论(0)
volatile, 用更低的代价替代同步为什么使用volatile比同步代价更低?同步的代价, 主要由其覆盖范围决定, 如果可以降低同步的覆盖范围, 则可以大幅提升程序性能. 而volatile的覆盖范围仅仅变量级别的. 因此它的同步代价很低.volatile原理是什么?volatile的语义, 其实是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我.(工作内存详见java内存模型)因此, 当多核或多线程在访问该变量时, 都将直接操作主存, 这从本质上, 做到了变量共享.volatile的有什么优势?1, 更大的程序吞吐量2, 更少的代码实现多线程3, 程序的伸缩性较好4, 比较好 ...
- 2009-10-19 22:54
- 浏览 1106
- 评论(0)
如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。例如:
Java代码
class T {
transient int a; //不需要维持
int b; //需要维持
}
class T {
transient int a; //不需要维持
...
- 2009-10-19 22:31
- 浏览 983
- 评论(0)
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
把Java对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为Java对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。
一. JDK类库中的序列化API
java.io.ObjectOutputStream代表对象输出流 ...
- 2009-10-19 22:25
- 浏览 812
- 评论(0)
java在序列化的时候涉及到很多检查,serialVersionUID就是其中一个。
那这个serialVersionUID有什么用处?
这个值可以由类指定,也可以不指定。如果不指定的话java会根据class计算serialVersionUID,相当于hash的原理(但不是hash不要混淆),只要类没有变化,计算出来的serialVersionUID也会变化。
它用在反序列化的时候“检查”当前的类是不是已经被修改过。如果发现serialVersionUID对不上号,那么会抛出 java.io.InvalidClassException的异常,这种情况发生在由于种种因素修改了序列化对 ...
- 2009-10-19 22:02
- 浏览 2322
- 评论(0)