很长时间没有更新了,很想来写点什么,可有时无从下手,不知道说点啥,写点java方面的吧,很长时间没有研究新技术了,方向把握不准,怕误人子弟。
说说自己吧,好像要说的事情太多,又是没有头绪,最近感觉自己失去了生活的目标,不知道是为了啥,做一天和尚撞一天钟,得过且过。实在是惭愧。
学习吧,没有动力了,静不下心来,刚想敲几行代码,又跑到网上溜达去了,反正是左一下右一下没有重点。生活应该有激情不是吗。
最近玩上了网游,堕落了啊,以前声称自己对网游从不感冒的我,也沦落到这个地步,世界变化真快啊,今天的想法总是能够战胜昨天的想法,不可思议。
上个月还结婚了,算是完成人生当中的一件大事,应该为自己庆祝一下,也算是没有让父母等的时间太长,尽了一份孝心。同时也算是给认识了多年的女友一个交代,都住在一起很长时间了,没有一个说法是不行的,婚礼嘛,就是为了告诉大家我结婚了,同时希望能够得到大家的承认和祝福,哎!一切还算顺利,难道我是被婚姻冲昏了头脑?
再往前还记得自己在下决心减肥,现在看来好像没有效果,我的毅力哪去了,缺少一个能拿皮鞭抽我的人啊,呵呵。
祝愿自己能够找回充满激情的生活。
这是一个鲁中南地区非常流行的益智棋类对战游戏。
在网上找了n久也没有人发现有人写出来过,估计是这种游戏流行面比较窄,很多人都不了解。所以决心把它写出来,就当作弘扬民族文化了。
这里的游戏规则不是我自己创立出来的,只凭着当年玩的时候留下的记忆,写出来的。尤其是在我上初中的时候,风靡的不得了,因为道具准备简单,就地捡一些石子和木棍,然后在地上画个棋盘就可以玩了。咱当年也是打遍全班无敌手(没吹牛。。。)
还是先介绍一下怎么玩吧
本程序用java开发socket通信,需要安装jdk1.4+ java web start的运行环境,如果没有安装jdk请从http://java.sun.com/javase/downloads/index.jsp 下载。
游戏下载地址:http://www.flyox.com/fivetiger/fivetiger.jnlp
启动游戏后会出现以下画面。

这是一个两人对战游戏,一共五行五列,在交叉点上下棋,双方轮流走棋,一次只能下一个棋子或者移动一个棋子,目标是努力组成图形吃掉对方棋子,同时阻止对方形成图形。吃光对方旗子者为胜利方。
第一步 建立游戏
点击右上角的【创建游戏】按钮,建立游戏,然后等待另一方加入游戏。
第二步。加入游戏
点击加入游戏下拉框,里面会显示已建立游戏者的ip,选中之后建立连接,就可以开始游戏了。
第三步 开始游戏
在右侧会显示游戏状态和当前走棋者。
游戏共分两个阶段:
第一阶段:下棋,在十字交叉点上安放自己的棋子。目标是努力形成图形(图形如下所示)并阻止对方形成图形。形成图形者可以压掉对方1~3个棋子。
第二阶段:走棋,在下棋阶段所有的棋子安放满了之后就可以开始走棋了,如果轮到走棋者无棋可走的话,双方可以相互拔掉对方一个棋子(已组成图形的不可以拔),走棋过程当中如果形成了图形,也可以拔掉对方1~3个棋子。
第四步:一方棋子被拔光之后为失败。一局结束之后自动开始下一局。
图形说明:0代表其他(包括对方棋子,空白,被压棋子)1代表自己的棋子,只要有形成以下图形的就可以拔掉对方1~3个棋子(从四个方向看棋子构成的图形)
图形:3斜,可以拔掉对方1颗棋子,共4种
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
4斜 可以拔掉对方2颗棋子,共4种
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
0 0 0 0 0
通天棍 可以拔掉对方3颗棋子,共2种
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
1五虎 可以拔掉对方1颗棋子,共4种
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
2五虎 可以拔掉对方2颗棋子,共4种
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
中五虎 可以拔掉对方3颗棋子,共2种
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
0 0 0 0 0
0 0 0 0 0
方 可以拔掉对方1颗棋子,共16种
0 0 0 1 1
0 0 0 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
很久很久以前。有这样的一个场景:
一个白胡子老头,和一个活蹦乱跳的小孩,来到一棵大树下,两个人就地画出了一个棋盘,五行五列,然后捡了一些石子和小木棍当作棋子,下起了棋来,
这个棋就是《五虎》,后来周围聚了一些看棋的人,然后越聚越多,然后就有人学着也玩起了这个棋,不一会的功夫整个树下就聚满了人群。
大家一盘一盘的较量起来,周围还不时有诸葛先生指点江山,不亦乐乎。
就这简单的25个棋子,却蕴含着无穷的智慧与乐趣!对启迪思维、开发智力、锻炼拼搏进取精神有很大的帮助。
大家一起来玩吧。希望你是第一个爬到网上,下起了《五虎》然后传播给大家的人。
欢迎交流,联系方式:s u n w e i 2 5 0 @ g m a i l . c o m
生死不离,你的梦落在哪里
想着生活继续
天空失去美丽,你却等待明天站起
无论你在哪里,我都要找到你
血脉能创造奇迹
你的呼喊就刻在我的血液里
生死不离,我数秒等你消息
相信生命不息
我看不到你,你却牵挂在我心里
无论你在哪里,我都要找到你
血脉能创造奇迹
搭起双手筑成你回家的路基
生死不离,全世界都被沉寂
痛苦也不哭泣
爱是你的传奇,彩虹在风雨后升起
无论你在哪里,我都要找到你
血脉能创造奇迹
你一丝希望是我全部的动力
由奥运会文化活动处处长王平久连夜创作
经过半个多月的努力,我的八国军旗终于有了一个样子了,先献上图片给大家看看。

初步打算是这样的:上边一对,下边一对,每个队伍轮流攻击对反,杀光对方,或者抗掉对方所有的旗为胜利方。
走棋的规则也是照抄四国军棋。
目前基本功能已完成一半。有登录,进入房间,选择棋桌坐下,调整布局和棋子之间相互吃子等。
将来需要做的功能有,做一个广播寻找主机的方法,目前是直接指定了服务器ip,房间数据的实施刷新,目前是选定座位坐下之后,不再更新房间数据。
另一个重要的地方就是走棋的功能需要完善,这个功能完成了就是判断输赢啦。可能写着写着还会发向有更多的功能要写。
这段时间有一个重大修改就是:
一开始打算把数据通信功能使用nio实现,这一部分基本完成的时候发现了MINA(异步连接框架)这个好东西,有点相识恨晚的感觉。于是决定使用mina重新写我的数据通信部分,做这个决定确实很痛苦,因为好不容易写好的东西推到重写,不过人家MINA包装的NIO确实好,咱也用不着再去造轮子,先拿来用上再说。
通过这一段时间的写代码最大的感受就是:增加了学习的动力,享受写代码带来的乐趣。
一、为多个项目指定使用哪个log4j文件
情况一:多个小项目合成一个大项目,多个小项目有自己不同的入口,这个时候如果使用同一个log4j文件,各个项目的输
出会混乱在一起,如果拆分成多个小项目,看起来又比较散不太好管理。
情况二:一个项目实施在linux上,编写在windows上,log4j的输出目录/opt/xxx/web.log
这个时候开发者被迫必须在本机的workspace所在的目录加入一个opt/xxx/web.log的目录和文件
同时,大多数情况下linux上的服务是不须要输出log到Console,只要输出到文件
而windows大部份是只须要输出到console,不须要输出到文件
本地调试的时候log4j的级别多是debug ,而实际实施的时候多是之上的级别
造成须要不停的修改log4j的属性文件,cvs同步的时候不停的提示
也许你说可以整个项目完成再来写log4j的属性文件,但有的时候这个效果并不好。
因为还有这种时候,项目完成(包括log),反复测试的这段时间。
解决:解决办法很简单,建立一个log4j的配制文件的目录,在这个目录下为每个小项目建立一个目录,
每个目录下放着自己的log4j配制,然後把这些目录作为每个小工程的classpath的第一个,ok上边的问题就
解决了。这个时候可以写一个log4j放在src下,用来开发时候调试用,而真正服务器上使用的都在各自的文件夹下
二,为默写包,某些类定义不同的log4j级别
是否想过这中需求呢,一个项目调试的时候,希望其中默写包不打出log信息。
比如struts的包,spring的包,还有你引用的别人已经开发好包,或者你自己写的类,但是你不想看到这个
类的log信息.但是你须要调试当前的一些class,log级别必须设置在debug级别
这个时候可以在log4j的属性文件中加入如下内容:
log4j.logger.包名or类名=高的级别
例如:
log4j.logger.org.springframework=error
三、注意事项
1 public void execute() {
2 // ..
3 logger.debug( " aa " + " bb " + " cc " );
4 }
5
是否这么写过呢?这样写是有些问题的。当你把log级别调整到info或者更高的时候,log信息是不输出了
但是字符串的拼接一样进行了,使你的程序效率降低,实验一下
1 public void execute() {
2 // ..
3 logger.debug(getStr());
4 }
5 public String getStr() {
6 System.out.println( " execute getStr " );
7 }
8
调整log4j属性文件级别到info 结果getStr()照样执行了
解决办法:
1 public void execute() {
2 // .
3 if (logger.isDebugEnabled()) {
4 logger.debug(getStr());
5 }
6 }
7
准备写一个八国军旗。
上辈人说的好,三天不学习,赶不上刘少奇。
jdk都到了1.6了,现在还在用着1.4,压抑啊。
精力旺盛的人总是闲不住。一有时间就研究点新东东,不学习会赶不上刘少奇的!研究归研究,不实际动动手,那还就是没有成就感~。
因为比较喜欢下四国军棋,下久了,就开始研究它是怎么写出来的,其实就是想看看有没有漏洞,做个弊,多弄点分什么的,嘿嘿!(目的不纯啊)
四国军棋已经有了,再写一个java版四国军棋岂不是很没有新意,咱写多国的。(其实八国军旗也新意不到哪里)
因为我只对java熟,没有其他选择只能用java,听说jdk1.6当中的swing有了很大的性能改善,暂定用它。
希望能在internet上运行,所以用不打算用udp的方式,免得丢包是麻烦,不过据说暗黑还有cs都是基于udp的,
因为前一阵研究了一翻nio,打算练习练习socket,于是选中tcp通信方式。有点为了技术而技术的感觉。
人家QQ游戏默认采用TCP通讯方式,端口443(是常见端口)。同时也支持HTTP代理模式及SOCK5代理模式,
我就不管这么多了一个端口就OK,能玩起来就很满意了。其他的地方照着葫芦画瓢。
参考qq游戏,有大厅,有房间,有棋桌。大厅那东西也不是我一个人能完成的,本着简单实用的原则,先跑起来,以后再慢慢扩大。
计划是这样的:一个服务端用来建立服务器,维护所有人的信息,保存所有棋桌的布局,判断胜负。
客户端负责显示布局,响应用户操作。
说白了,这种java2D的游戏就是如何通知各方在各自的JPanel上画东西,然后维护一堆数据。
可能其中会遇到一些困难,兵来将挡,水来土淹吧。
希望能够早点写完,并能玩起来,期待吧!
另外想研究udp的看看java版飞鸽的源代码是个不错的主意.
Java反射机制
摘要
Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。本文借由实例,大面积示范Reflection APIs。
关于本文:
读者基础:具备Java 语言基础。
本文适用工具:JDK1.5
关键词:
Introspection(内省、内观)
Reflection(反射)
HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC 2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内 容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的 实体内容。
Web层框架的下一个王者,如果不是纯Ajax,将是业界的悲哀。
理想的Web层模型应该是:
浏览器完全负责界面构造和流转(服务器对界面构造和流转只提供HTML服务,即由www服务器提供静态HTML页面,而不是由应用服务器提供动态页面);而应用服务器只提供业务服务,即只接受业务请求(http Request的含义与传统不同,服务器不参与界面层功能)。