- 浏览: 253216 次
- 性别:
- 来自: 宁波
最新评论
-
wangxiang243:
文件保存为utf8编码格式就可以了吧
java.util.Properties 乱码问题解决方案 -
uyiab:
真心感谢,之前搞了一套2.1.4的程序,一直发生这个问题,找了 ...
如何解决cocos2dx2.1.4回到前台后出现的黑屏现象 -
Tongqing-Qiu:
我用的Intellij IDEA集成的GIT工具,挺方便的。有 ...
git分支、合并的使用记录 -
nbtlxx:
...
三星s7572无法显示toast的问题解决 -
kouwoo:
这篇文章对我非常有用,谢谢
三星s7572无法显示toast的问题解决
文章列表
上次简单介绍了Server的写法,这个类比较简单,主要的功能包括:
1. 初始化,包括玩家列表、游戏桌子列表
2. 接收手机客户端连接
3. 启动网络连接处理
今天主要介绍:网络通讯类和业务处理类
Network类:
主要负责:
1. 接收手机客户端的连接
按照协议读取数据后,添加到消息队列
此处需要处理同步问题
2. 取出消息队列,调用业务逻辑类进行处理
主要是根据消息的cmdType
3. 发送消息
依次读取发送消息队列的消息,
按照协议,依次将cmdType, playerId, msg.length, msg 发送到客户端
具体代码如下:
/** ...
使用statement进行数据的查询,基本步骤如下:
* 1. 初始化simpleDbSource对象
* 2. 获得getconnection
* 3. createStatement 获得查询语句
* 4. executeUpdate, 执行更新语句
* 5. 关闭使用的statement, connection, 注意次序不要弄错
*
* 注意:更新语句,执行过一次后,column需要递增,否则报错
/**
*
*/
package db;
import java.io.FileNotFoundException;
import java.io.IO ...
- 2009-06-26 09:33
- 浏览 1587
- 评论(0)
今天继续学习了connectionPool的概念,就是设置一个list来保存数据库连接对象。
在需要使用连接对象时,从list中获取,如果list为空的情况下,才生成新的connection
下面是具体的代码和配置文件。
/**
*
*/
package db;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
/**
* @author sean
*
...
- 2009-06-25 10:41
- 浏览 2031
- 评论(0)
今天学习了用配置文件和实现接口等方式来访问数据库。
知识点1. 采用系统api的properties方法来加载配置文件,根据Key,value方式来读取数据库配置信息, driver, url, username, password。
知识点2. 使用接口方式来实现获得数据库连接以及关闭连接
后续还将学习数据库访问连接池等技术。
上述的代码都来自与java学习笔记.
/**
*
*/
package db;
import java.io.FileNotFoundException;
import java.io.IOException;
import java. ...
为了更好的理解手机网络游戏的架构和开发技巧,本人在他人手机网络象棋的基本上,进一步进行网络通信部分的修改和优化,采用socket方式进行数据通信。
以下是server的Server.java的简介。
此类主要负责:
1. 游戏共用数据的初始化
playerMap.clear() 玩家容器的清空
Desk[] 遍历数组,赋控制
2. 启动serversocket, 等待client连接
3. 连接客户端后,将socket作为参数,启动独立线程独立读写、逻辑业务(第二篇重点描述)
具体代码如下:
/**
*
*/
package net.tuolian.ne ...
- 2009-06-24 22:56
- 浏览 1362
- 评论(0)
[置顶] 如何遍历一个hashmap
- 博客分类:
- 网络编程
今天在项目中使用hashmap
1. hashmap.put(playerid, player)
2. 遍历hashmap
依次取出其中的player value,
查看是否有需要发送的数据
如果有的话,就使用输出流进行write操作
碰到的问题,就是元素取出后强行Cast,发送类型转换异常
下面是正确的代码片段:
Iterator it = playerMap.entrySet().iterator();
while (it.hasNext()) {
//先获得map.entry, 然后在通过getValue()方法得到需要的值
Map.Entry ...
- 2009-06-18 17:51
- 浏览 1250
- 评论(0)
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author Administrator
*
* 第一个serlvet,没有具体的业务 ...
- 2009-06-18 11:02
- 浏览 4074
- 评论(0)
package nio;
import java.nio.ByteBuffer;
public class TypesInByteBuffer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ByteBuffer buffer = ByteBuffer.allocate(64);
buffer.putInt(30);
buffer.putLong(999999999 ...
- 2009-06-18 09:53
- 浏览 1169
- 评论(0)
今天生成servlet,然后启动tomcat, 系统报错:
java.lang.UnsupportedClassVersionError: Bad version number in .class file
解决办法:
eclipse的compiler的jdk版本是6,而tomcat所用的jdk版本是1.5
eclipse的compiler的jdk版本,tomcat所用的jdk版本都设置成一致就可以了
eclipse的compiler修改方式:
preference/java/compiler: compiler comliance level: 1.5
原则上就是和tomca ...
今天碰到一个关于反射的例子,写出一个简单的测试代码,作为记录。
package reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class MainClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
...
- 2009-06-16 09:11
- 浏览 1366
- 评论(0)
今天学习下Concurrent包内线程池的创建、任务执行和关闭,感觉有不少知识点需要总结和整理。
详见具体代码及注释
/**
*
*/
package network;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ExecutorService;
import java.util.co ...
- 2009-06-13 11:21
- 浏览 2585
- 评论(0)
这个类的功能:
1. 利用httpClient开源组件,简化访问web
2. 利用sogou的开放查询接口,进行手机号码归谁查询
注意此处用的HttpClient的版本号为3.1
目前新版本有些api接口做了调整,暂时没有时间测试
/**
*
*/
package demo;
import java.io.IOException;
import java.util.Scanner;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.Http ...
- 2009-06-13 10:00
- 浏览 2625
- 评论(0)
前阵子做的一个lucene全文检索的小例子,里面涉及jdbc的批量更新,在此发布出来,与大家共享。
也是作为自己学习过程的复习和记录。
找个类的主要功能如下:
* 1. 读取包含专业词库的txt文件
* 2. 根据中文分词组件进行切分
* 3. split方法处理,返回字符串数组
* 4. 写出到txt文件输出
* 5. 使用sql批量更新方式插入数据库
*/
/**
*
*/
package net.tuolian.product.utils;
import java.io.BufferedReader;
import java.io.Buffered ...
1.和NIOServer建立连接new Socket(ip, port)
* 2.获得Scanner.next(System.in):输入内容
* 3. 将要发送的字符串内容进行处理
* a. 获得int len = str.getByte().length
* b. 将len 进行byte 处理,依次发给server
* dos.write((byte)temps.length&0xff);
dos.write((byte)temps.length>>8&0xff);
* c. 将数据本身发送给NioServer
* ...
- 2009-06-10 11:12
- 浏览 3353
- 评论(0)
最近由于项目需求,参考有关的代码,学习封装了一个队列
主要技术点:
1. 进入队列,需要判断是否isFull(),
2. 出队列, 需要判断isEmpty(),
3. 队列允许插入任何对象
4. 最后一个知识点就是lock.lock(), finally{lock.unlock()}
每次相关操作就需要进行加锁和解锁
/**
*
*/
package util;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* ...
- 2009-06-06 11:56
- 浏览 2101
- 评论(0)