Fork me on GitHub

在Spring中利用Mock对HttpServletRequest进行单元测试

编写单元测试时的注意事项

根据软件开发过程中的TDD理论,在我们编写自己的代码时,要尽量使得该代码能够进行单元测试。为了能够使得代码可以进行单元测试,我们在给接口或方法传入参数时要尽量传入简单参数,避免传入HttpServletRequest , ServletContext等和web上下文相关的复杂对象。但仍有部分情况下基于代码简洁性和可维护性的考虑,我们需要传入HttpServletRequest对象,此时对此类方法进行JUnit单元测试时会较为困难,本文介绍一种在Spring中通过Mock来模拟HttpServletRequest对象进行JUnit单元测试的方法。

Mediawiki添加回到顶部的方法

Mediawiki维基百科系统所采用的框架,适合于需要快速搭建知识分享的场合。采用Mediawiki生成的知识共享平台和维基百科的操作与使用类似,都支持采用Markdown语法来编辑。在有些时候,某些词条的内容很长,使得浏览器出现了滚动条,如果能仿照微博等网站添加一个回到顶部的功能,将会给我们的使用带来很大的便利,本文介绍一种实现方法:

[译] Java Volatile 关键字详解

本文翻译自 Java Volatile Keyword

Java关键字volatile用于将一个Java变量标记为在主内中存储,更准确的解释为:每次读取一个volatile变量时将从电脑的主内存中读取而不是从CPU缓存中读取,每次对一个volatile变量进行写操作时,将会写入到主内存中而不是写入到CPU缓存中。

事实上,从Java5之后,volatile关键字不仅仅可以用来确保volatile变量是写入到主内存和从主内存读取数据,我会在下面的章节进行详细的介绍:

Windows中由于系统权限不同导致的mysqldump不生效的原因分析

项目中用到了MySQL数据库的备份功能,通过调用Java程序中的Runtime来执行mysqldump命令自动的生成相关的MySQL数据库文件以供恢复之用。相关的代码如下:

Runtime runtime = Runtime.getRuntime();
String mysqlCmd = "mysqldump" + " -u" + username + " -p" + password + 
           "  -h " + databaseAddress + " " +databaseName;
Process process = runtime.exec(mysqlCmd);

但是在客户那里实际使用时,有时候会出现在cmd中MySQL命令可以正常识别但是程序不能正常执行的情况,报错信息如下: