22
2014
01

数据库连接池丢失连接异常

最近做的一个服务端项目,用DBCP创建数据库连接池,连接MySQL。服务器挂了几天,客户端请求时偶尔会发现java.sql.SQLException: Already closed异常。检查并没有发现业务逻辑错误。仔细查找资料得知:当一个连接长时间没有数据请求时,MySQL会根据超时时间关闭这个连接。而DBCP并不知道连接已经关闭了,再通过这个连接请求数据库就会抛出这个异常。

解决方法:给DBCP设置一个验证查询,在每次取出连接时验证连接的有效性。如果验证失败,则从池中去除这个连接,并尝试取出另一个。

看上去很麻烦,其实DBCP提供了很简单的方法:


        //SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.

        //如果指定,则查询必须是一个SQL SELECT并且 必须返回至少一行记录

        ds.setValidationQuery("select 1");

        //指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个

        ds.setTestOnBorrow(true);


15
2014
01

RoboVM(Libgdx)创建IOS项目如何使用内购

    RoboVM已经很好地支持IOS,但之前还不能实现支付。所以你会发现早期的(事实上是两个月以前)RoboVM主页上的App都是免费的。最近有个第三方的开源工具包robovm-ios-bindings不但可以实现IOS内购,还添加了adcolony、facebook、gamecenter、mopup、google play等主流SDK的支持,并且已经有项目很好地集成了。

…………

Snip20140114_1.png

14
2014
01

平台统计SDK

        移动市场对数据越来越敏感,不光是网游,单机也随着弱联网趋势开始注重分析用户数据和行为。对于个人开发者来说,让APP记录行为并上传,服务端进行分析并进行页面展示,实在是劳心费神。

        好在市面上已经有不少专注于用户统计的第三方SDK,这里推荐一下友盟:http://www.umeng.com/

06
2014
01

中国游戏机正式解禁

国内游戏机终于解禁了,一代人的期盼终于成真。但可笑的是,居然有很多反对的声音,无知的人认为游戏只有血腥、暴力和浪费生命。他们一定不知道什么叫第九艺术,根本想不到优秀的游戏作品比电影、小说有内涵得多,优秀的作品中蕴藏童话、震撼、哲理、玄妙。无知的人才不知道《生化危机》、《寂静岭》、《杀手47》、《波斯王子》等等都是改编自游戏。中国有千千万万游戏工作者默默奋斗着,他们都期待自己民族的游戏登上国际一流的展台。

31
2013
12

推荐游戏《兄弟:双子传说》

61KBsyLqi7L._SL1024_.jpg

这两天大概花了三个小时通关了一款游戏,叫《兄弟:双子传说》。其实光看截图很难被吸引,实际玩了以后根本停不下来,上一次被同类型的游戏吸引是两年前玩的《心灵杀手》,《兄弟:双子传说》虽然没有那么紧张刺激,但也颇具特色,引人入胜。我简单评测一下:

操作:操作非常新颖,一个人控制两个角色,非常考验左右脑协调,哈哈,关操作这一点创新就值得一玩!

画面:算不上以画面取胜的游戏,跟大作比有一些差距。但也绝对属于本世代主流水平,虽然阴影、环境光效都比较一般,但是出色的水面效果以及宏大的场景建模增色不少。溪流、山谷、雪地还有远处的星空和极光,场景美不胜收。

音效:配合场景,音效搭配得敲到好处,有欢快,有感伤。另外,游戏几乎没有对话和语音,只有关键时刻哥哥弟弟会相互叫唤一下,似乎是叫的对方的名字,但由于太简短,总感觉像哑巴一样,有些怪怪的。

剧情:主线很俗套,总结下来就是为了给父亲治病,兄弟俩历险取药的故事。不过主线俗归俗,玩家虽然能预料到接下来发生什么,但仍然会被生动、细致的刻画打动,感染力十足。

游戏性:游戏谈不上需要多大的技巧,解密也相对简单。但最大化地利用操作特色、细致地故事描写、丰富生动的场景刻画,让我们感受到了设计者的心血。从头到位,两三个小时的流程,历经多个截然不同场景的冒险,伴随角色情感的变化,就像看完一部悠扬而伤感的电影,回味无穷。

27
2013
12

JavaFX中UI线程冲突问题

与Android一样,JavaFX也不允许在UI线程之外对高级界面进行更新,比如网络线程返回了数据,想要在界面上刷新出来,如果在网络线程里直接处理就可能抛出异常。Android可以通过Handler发送Message实现像通知UI线程,保证线程安全,JavaFX也有类似的方法。

1).javafx.concerrent.Worker接口,主要提供了Task和Service两个类,用来建立能与UI线程安全通信的线程。Task和Service区别不大,Service提供了一些重置、重启之类的方法,可以理解成Task是执行一次性的任务,Service提供服务。示例:

25
2013
12

不要错过圣诞节的游戏折扣哈!

迎接圣诞节,Steam和亚马逊都推出了大力度的游戏促销活动!Steam各种三折二折,亚马逊折扣力度也不小,购买还反5$的购物卷,花手机游戏的钱就能支持正版,大家千万不要错过啦。

steamcn.png


amazoncom.png


20
2013
11

IOS平台运行Libgdx初步测试

DSC_6250.png

分别用自己的小游戏和公司的一个项目试了一下Libgdx0.9.9版在IOS上的运行情况。

效率很好,没有出现平台差异(除了分辨率),没有发现之前旧版Robovm在模拟器上音效不正常的问题,旧版Libgdx不支持java.net包的问题也因为使用RoboVM解决了。唯一发现的问题就是Android以及其它平台可以使用OGG音频问题,而IOS上会报错说找不到文件路径,换成mp3、wav没有问题。

08
2013
11

推荐两个服务器性能测试工具

  1. ab

  2. 这其实是apache里提取出来的工具,用于测试Http连接性能,吐吞量等。

    使用方法如下:

    1.png

07
2013
11

Libgdx更新0.9.9版

最近Libgdx更新了0.9.9版,做了大量的改进与修复。如3D的API更加完善,正式支持安卓X86模拟器,第三方游戏制作工具的集成等。在我看来,最具有里程碑意义的就是正式使用RoboVM替代IKVM,从此可以更健壮、高效地使用Java开发IOS程序了,并且也不存在之前monotouch授权费用的问题。

RoboVM最近也更新了0.0.6版,提供了IOS7的支持,虽然版本号较低,作者也声称目前还不建议正式商用。但从运行opengl程序、libgdx项目甚至JavaFX的效果来看,RoboVM已渐渐趋于成熟,APPSTORE上也已有两款项目使用RoboVM开发。