使用WebSocket导致jUnit单元测试报No suitable default RequestUpgradeStrategy found错误的解决方法

若在SpringMVC项目中使用了WebSocket,在运行jUnit单元测试时,可能会报如下错误:

Caused by: java.lang.IllegalStateException: No suitable default RequestUpgradeStrategy found

若出现上述异常,在Maven的pom.xml中添加如下依赖,问题即可解决:

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>7.0.52</version>
<scope>test</scope>
</dependency>

Reference:
StackOverflow

基于JavaFX的2048游戏

游戏截图 | Game screenshot

Gui2048

源代码 | Source code

https://github.com/houseyoung/Gui2048

如何运行本游戏 | How to run this game

1.在命令提示符(Windows)/终端(OS X或Linux)中进入src目录。
2.执行javac *.java
3.执行java Gui2048 (可在本命令后附加一些参数,详情见下文。)

1.Open src folder in Command Prompt(Windows)/Terminal(OS X or Linux).
2.Execute javac *.java
3.Execute java Gui2048 (You can add some command line arguments after this command, see below for details.)

如何玩本游戏 | How to play this game

方向键 -> 控制方块移动。
s键 -> 保存游戏。
u键 -> 撤销移动。只可撤销一步。
r键 -> 将所有方块顺时针移动。

Arrow keys -> Move the tiles.
"s" key -> Save the board.
"u" key -> Undo. User can only do undo once at a time.
"r" key -> Rotates the board by 90 degrees clockwise.

命令行参数 | Command line arguments

-s [size] -> 设置游戏的维数。若不使用该参数,游戏维数默认为4x4。
-i [file] -> 从保存的文件中读取游戏。当-i与-s参数同时存在时,-s参数不起作用,游戏采用保存的文件中定义的维度。
-o [file] -> 设置保存游戏时存储的文件名。若不使用该参数,默认使用"2048.board"存储。

-s [size] -> Specifies the size of the 2048 board, the default size is 4.
-i [file] -> Specifies a 2048 board that should be loaded. If both -s and -i are used, then the size of the board will be determined by the input file.
-o [file] -> Specifies a file that should be used to save the 2048 board. If none specified then the default "2048.board" file will be used.

一个基于Lucene的全文搜索引擎

本系统基于Lucene 4.6.0,使用庖丁解牛(Paoding Analyzer)作为中文分词器,使用Spring MVC作为Web框架。
本系统对src\webapps\resources\Doc目录中的Word文档进行索引,其中默认放置了30篇文档。

源代码下载:https://github.com/houseyoung/IR-Homework3
在线访问本系统:http://ir.houseyoung.cn (不能访问)

系统截图:
首页:
首页
搜索结果列表:
搜索结果列表
文档在线查看:
文档在线查看

代码功能简要说明:
IndexService:建立索引。系统启动时自动执行此方法。
SearchService:根据用户输入的关键词执行搜索。
WordToHtmlService:将Word文档的内容转换为符合HTML格式的内容。目前仅对文字进行了处理,表格与图片暂不支持。

本系统是XXXXXX大学信息与软件工程学院《信息检索》课程的大作业,因时间及能力所限,存在问题在所难免。各位在运行时遇到什么问题,或者对本系统有什么建议,可以在本篇博客下评论,笔者将会尽力进行解答。也欢迎各位来一起完善这个系统。

使用MyBatis查询int类型字段,返回NULL值时报异常的解决方法

使用MyBatis查询一个int类型的字段,若查询不出结果,返回NULL值后会报异常。例如,用SELECT name FROM user WHERE id = #{id}进行查询,若传入的id值在数据库中不存在,语句将返回NULL,此时MyBatis会报如下异常:
org.apache.ibatis.binding.BindingException: Mapper method 'com.XXXXX' attempted to return null from a method with a primitive return type (int).

若遇到该问题,可使用MySQL的IFNULL函数和MAX函数,将返回的NULL值转换为0。例如,可将上述SQL语句改为:
SELECT IFFULL(MAX(name),0) AS name FROM user WHERE id = #{id}

在Mac OS X中安装Maven

一、安装、配置JDK

安装Maven前,请先确保JDK已经安装、配置完成。

二、下载Maven

撰写本篇博文时,Maven的最新版本是3.3.1,读者可在http://maven.apache.org/download.cgi中下载自己需要的Maven版本。在这里,我下载的是apache-maven-3.3.1-bin.tar.gz。

三、解压、放置在合适的路径

1、将下载好的Maven解压,得到apache-maven-3.3.1文件夹。
2、打开Finder,按快捷键Shift+Command+G(或点击菜单:前往->前往文件夹),输入/usr/local。
3、在/usr/local目录下新建“maven”目录。
4、将第一步解压得到的apache-maven-3.3.1文件夹移动到/usr/local/maven目录下。

四、配置环境变量

1、打开终端
2、创建.bash_profile文件(如文件已存在,则该条命令不生效):输入 touch .bash_profile
3、使用系统自带文本编辑软件打开.bash_profile文件:输入 open -e .bash_profile
4、增加以下几行代码,保存并退出:

export M2_HOME=/usr/local/maven/apache-maven-3.3.1
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

5、重新启动终端,输入 mvn -v,出现类似如下几行的文字,即为安装成功:

Apache Maven 3.3.1 (cabXXXXXXXXXXXXXXXXXXXXXXX; 2015-03-14T04:10:27+08:00)
Maven home: /usr/local/maven/apache-maven-3.3.1
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home:
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.10.3", arch: "x86_64", family: "mac"