- 博客(43)
- 收藏
- 关注
原创 游戏业务逻辑和DB无阻塞实现
程序阻塞的情况通常是等待资源,通常业务逻辑都是附带DB操作的,有时候因为DB阻塞或者执行时间过长,导致业务层的线程给占用,比如开了4个线程来处理业务,那么当4个线程都处理阻塞时,其他新请求业务的用户将得不到满足,不管用户的业务逻辑是否有进行DB操作。通常作法是这样的方法1(...参数){ 1.业务逻辑判断 2.DB操作(一般事务处理) 3.返回}通常是在第2步执行时间过
2012-05-03 11:13:12
897
原创 简单的对对碰小游戏源码
package com.data{ import mx.controls.Button; /** * 格子数据 **/ public class DataItem extends Button { public static const TYPES:Array = [1, 2, 3, 4, 5, 6, 7]; public static const WI
2012-04-30 16:31:32
1473
原创 java flash tcp字节流通信(五)-java 伪事件处理器(新)
package com.event;/** * 事件 */public class Event { /**发起事件的对象*/ private Object source; /**事件类型*/ private int type; /**参数*/ private Object[] args; public Event(int type, Object ...
2012-04-28 17:17:42
433
原创 java flash tcp字节流通信(五)-java 伪事件处理器
package com.event;/** * 事件 */public class Event { /**事件类型*/ private int type; /**参数*/ private Object[] args; public Event(int type, Object ...args){ this.type = type; this.args
2012-04-25 21:43:10
446
原创 java flash tcp字节流通信(四)-flash as3 客户端(粘包/半包处理)
package{ import com.commons.utils.Map; import com.net.tcp.DataCache; import com.net.tcp.DataContent; import com.net.tcp.DataHead; import com.net.tcp.DataPack; import com.net.tcp.DataType
2012-04-25 17:04:09
598
原创 java flash tcp字节流通信(四)-flash as3 粘包/半包处理器(数据缓存)
1.重写socket类package com.net.tcp{ import flash.net.Socket; public class NetSocket extends Socket { public function NetSocket(host:String=null, port:int=0) { super(host, port);
2012-04-25 17:03:02
709
1
原创 java flash tcp字节流通信(四)-java 服务端(粘包/半包处理)
package com.net.test;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSocke
2012-04-25 16:59:59
653
原创 java flash tcp字节流通信(四)-java 粘包/半包处理器(数据缓存)
package com.net.tcp;import java.nio.ByteBuffer;import java.nio.channels.SocketChannel;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * * TCP通信数据缓存(粘包
2012-04-25 16:58:35
856
原创 java flash tcp字节流通信(三)-java StreamObject as3 生成器
package com.net.tcp;import java.io.File;import java.io.FileOutputStream;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.ParameterizedType;import jav
2012-04-25 16:05:23
526
原创 java flash tcp字节流通信(三)-java StreamObject方法生成器
package com.net.tcp;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.ArrayList;impor
2012-04-25 16:03:48
375
原创 java flash tcp字节流通信(二)-flash as3客户端
package{ import com.commons.utils.Map; import com.net.tcp.DataCache; import com.net.tcp.DataContent; import com.net.tcp.DataHead; import com.net.tcp.DataPack; import com.net.tcp.DataType
2012-04-25 12:11:34
519
原创 java flash tcp字节流通信(二)-java 服务端
package com.net.test;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import
2012-04-25 12:10:05
502
原创 java flash tcp字节流通信(一)-flash as3 协议(5)
测试类:package{ import com.commons.utils.Map; import com.net.tcp.DataCache; import com.net.tcp.DataContent; import com.net.tcp.DataHead; import com.net.tcp.DataPack; import com.net.tcp.Da
2012-04-25 03:56:37
510
原创 java flash tcp字节流通信(一)-flash as3 协议(4)
1.数据包头package com.net.tcp{ /** * 数据包头 **/ public class DataHead { /**包头长度*/ public static const DATA_HEAD_LEN:uint = 4; private var _len:uint; public function DataHead(
2012-04-25 03:54:52
591
原创 java flash tcp字节流通信(一)-flash as3 协议(3)
1.先建立一个流对象测试类package com.net.test{ import com.net.tcp.DataPack; import com.net.tcp.DataType; import com.net.tcp.StreamObject; import com.commons.utils.Map; public class TestVO implements
2012-04-25 03:52:07
589
原创 java flash tcp字节流通信(一)-flash as3 协议(2)
1.字义通信流对象接口package com.net.tcp { /** * 通信流对象 **/ public interface StreamObject { /** * 解析 **/ function decode(pack:DataPack):void; /** * 编码 **/ function
2012-04-25 03:47:05
439
原创 java flash tcp字节流通信(一)-flash as3 协议(1)
1.类工具package com.commons.utils{ import avmplus.getQualifiedClassName; import flash.utils.getDefinitionByName; /** * 类工具 **/ public class ClassUtils { public function ClassUti
2012-04-25 03:33:56
519
原创 java flash tcp字节流通信(一)-java 协议(6)
测试代码package com.net.test;public class TestObject { private String name; private Long value; public String getName() { return name; } public void setName(String name) { this.name =
2012-04-24 20:08:16
471
原创 java flash tcp字节流通信(一)-java 协议(2)
定义字节工具(用于解析/编码基本对象)package com.net.tcp;import java.io.UnsupportedEncodingException;/** * * 字节工具类 * */public class ByteUtils { public static byte[] getBytes(Object o){ int len =
2012-04-24 20:05:24
462
原创 java flash tcp字节流通信(一)-java 协议(5)
封装完整的数据包package com.net.tcp;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.List
2012-04-24 19:51:07
443
原创 java flash tcp字节流通信(一)-java 协议(4)
定义数据包内容,为使ByteBuffer创建后能够重用,数据包内容用List存储创建的ByteBuffer,每个ByteBuffer都是固定大小package com.net.tcp;import java.nio.ByteBuffer;import java.util.ArrayList;import java.util.List;/** * * 数据内容 *
2012-04-24 19:50:04
515
原创 java flash tcp字节流通信(一)-java 协议(3)
定义数据包头package com.net.tcp;import java.nio.ByteBuffer;/** * * 数据包头 * */public class DataHead { public final static int HEAD_LEN = 4; /**数据包升序*/ private int len; /**包头buffer(
2012-04-24 19:48:15
424
原创 java flash tcp字节流通信(一)-java 协议(1)
1.定义一个对象流接口package com.net.tcp;/** * * 通信对象流接口 * */public interface StreamObject { /**解析*/ public void decode(DataPack pack); /**编码*/ public void encode(DataPack pack);}
2012-04-24 19:46:06
528
原创 java flash 安全沙箱
flash底层安全机制强制要求flash通信或者跨域访问时,必须从服务端拿到安全策略文件,默认是flash会向服务端843发送报文,当服务端843不开放,或者安全时间(3秒)内无返回时,如果是socket通信,flash会向服务端socket指定端口发送请求报文,如果服务端无返回或返回不是安全策略文件,那么flash将报安全沙箱错误。安全策略文件内容如下:其中domain指定可访问
2012-04-23 15:27:37
832
原创 java多线程开发,锁的管理
java多线程开发,死锁一直是我们纠结的问题,当然,死锁的时候查看线程信息是能找出个所以然来,但一旦到那个地步,估计整个程序架构出现的问题可能就不只一个地方。而解决死锁的方法是注意锁的顺序问题,一个人开发当然好注意,但当多人开发时,这些问题都是会出现的,即使有良好的沟通,但总会出现一些小问题的,比如,A在方法funA1加了lock1,B在方法funB2加lock2,而funA1中需要调用到funB
2012-04-18 18:27:57
507
原创 java nio 值对象发送协议
java tcp通信时发送对象是最好的办法就是把对象按字段打包成字节流,用json和字符串都太占流量了。在游戏开发中,自己搭了一个解析和压缩数据的方法,能将数据类型(整型/长整型/浮点型/双精度浮点型/布尔类型/字符串/流对象/数组)打包成ByteBuffer。1.定义通信数据类型package com.socket.protocol;/** * 通信类型(整型/长整型/浮点型/双
2011-12-28 12:29:07
586
原创 Spring配置mysql连接池,连接超时解决方法
mysql默认连接超时时间为8小时,Spring配置mysql连接池时,长时间不用连接句柄,会造成连接超时,主要是数据库断掉了连接,而程序本身不知道,继续用着已经关闭的连接就会报错,有三种作法可以解决这个问题,一种是改变mysql的my.ini文件,在my.ini里添加wait_timeout=N秒;另外一种作法就是每次用到连接时都检查一下是否超时,不过,这个作法相法不高明;还有一种作法就是利用o
2011-12-13 09:58:23
2071
原创 TCP粘包,半包解决方法
粘包,半包是TCP通信中经常遇到的问题,一般游戏开发中,每条消息都包含消息头,消息类型,以及要处理的数据信息,一般消息头上包含着此条消息内容的长度,一旦socket中读出的内容长度大于消息头长度,我们称之为粘包,反之则称之为半包。游戏开发中,一般每个socket中伴随着自定义缓存区,用于存储上一次未处理完的未完整信息。我之前开发的游戏用的是java nio方式通信,java.nio.channel
2011-12-12 21:20:27
775
原创 解决MyEclipse ant的build.xml编译时Error starting modern compiler
<br />出现这个错误主要是因为MyEclipse的jdk版本和本机虚拟机的jdk版本不同,解决途路就是把两个jdk的版本换一样了,可以换本机的虚拟机,也可换MyEclipse的jdk,如果换MyEclipse的jdk,可以这样换window ->Prefrences->Java->Compiler->Compiler compliance level: 选JDK1.x 随便 一个项目下右键:Properties-Java Build Path->Libraries->右边选 Edit Library -
2010-12-26 17:12:00
1124
原创 JMS应用
<br /> JMS(Java Message Service,Java消息服务)是一组Java应用程序接口(Java API),它提供创建、发送、接收、读取消息的服务。<br /> <br /> JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JML 客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以
2010-12-23 10:49:00
476
原创 解决EJB3.0发布时出现javax.naming.nameNotFound的问题
一般出现这个问题主要是因为jndi没找到,我们可以新添加一个jndi,比如jndi为tqueue,在JBoss根目录/server/default/deploy下的mail-service.xml文件中加入如下: queue/tqueue jboss.mq:service=DestinationManager 重启JBoss问题即解决。
2010-12-23 10:29:00
649
原创 struts2.x的优点
<br />Struts2是在WebWork2基础发展而来的。<br />1.在软件设计上struts2没有像struts1那样跟ServletAPI和StrutsAPI有着紧密的耦合,Struts2的应用可以不依赖于ServletAPI和StrutsAPI。Struts2的这种设计属于无侵入式设计,而Struts1却属于侵入式设计。<br />public class OrderListAction extends Action{<br /> public ActionForward execute(Ac
2010-11-04 15:19:00
319
原创 利用java反射机制,将数据库结果集封装成对象
源码如下:import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util
2010-10-23 14:50:00
1163
原创 Struts多模块
Struts多模块间的跳转(1)用SwitchAction,主要用于实现页面的跳转 (2)全局转发和局部转发,用于实现模块间的跳转 (3)采用html:link标签 web.xml:actionorg.apache.struts.action.ActionServletconfig/WEB-INF/struts-config.xmlconfig/manage
2010-10-23 10:29:00
481
原创 js数据动态绑定
这是以前项目开发中用的JS-AJAX-JSON动态数据绑定databind.js源码// JavaScript Document//定义解析类function DataBind(){};//扩展类型var extend_obj = {};//给解析类增加变量与方法DataBind.prototype={ selectList : new Array(), radioList : new Array(), lineNum : 0,
2010-10-23 01:16:00
1576
原创 java-mysql数据库连接池
闲来无事,写了一个MySql数据库连接池工程结构如图源码如下:DBConnectioin.java如下package com.database;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;public class DBConn
2010-10-22 19:11:00
2767
原创 js特效-渐现、一边进入、拌动、两边向中间弹出窗口
此特效需要本人所写的前几个JS特效源码filter.jsdrop.jsbounce.jsblind.jsclip.jsslide.js如有需要,请看本人前几篇博客,由于本人比较懒散,所以源码的注示比较少,请原谅js源码dialog.js// JavaScript Document/* * @function dialog * @description dialogId对话框id,effect特效(可选,默认随机),className对话框样式(默认dialog,可选),templateHtml对话框内容(
2010-10-20 22:18:00
928
原创 js特效-下拉菜单
js源码slide.js:// JavaScript Document/** * @function slide向一边显示块 * @direction objId显示块的id,direction方向,speed速度 */function slide(objId, direction, speed, destorySign){ var effect = this; var obj = null; var top = 0; var bottom = 0; var left = 0; var right = 0
2010-10-20 21:50:00
370
原创 js特效-渐现菜单
js源码filter.js:// JavaScript Document/** * @function filter渐现显示 * @direction objId显示块的id,speed速度 */function filter(objId, speed){ var effect = this; var obj = null; var speed = speed ? speed : 10; var timer = null; var opacity = 0; var init = function(){
2010-10-20 21:45:00
393
原创 js特效-渐现进入菜单、窗口
js源码:// JavaScript Document/** * @function drop渐现进入 * @direction objId显示块的id,direction方向(up,down,left,right),speed速度 */function drop(objId, direction, speed, destorySign){ var effect = this; var obj = null; var top = 0; var left = 0; var container = null;
2010-10-20 21:40:00
381
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人