当前位置: 首页 > news >正文

JUnit学习摘要+入门实例

1.学习摘要

  看《重构-改善既有代码的设计》这本书的时候,里面提到测试环境对于重构的重要性,想到之前在编写代码的时候都是通过System.out和alert来做测试,非常麻烦,而且不够正规,对于即将步入工作的人来说,一个正规的写代码习惯和测试习惯是非常重要的,因此我觉得好好学学如何使用JUnit。

  在JUnit和单元测试入门简介一文中提到“JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test的对象;当调用TestSuite对象的run()方法是,会遍历自己容纳的对象,逐个调用它们的run()方法”。

  这又让我想起自己前段时间在读的《研磨设计模式》这本书,读了前面的九章,写了一些博客,但是还没有整理,不过大多也忘了。可能自己没有真正理解吧。其实,一时的理解,如果没有在实际项目中应用,还是很容易遗忘的。希望自己能在重构项目的时候多用一些设计模式上的内容。《研磨设计模式》这本书中的第15章讲的就是组合模式(Composite),有空了就去看一看。

  在使用eclipse进行junit的时候,添加junit包才发现有junit3和junit4两个版本,这两者的区别可以参考JUnit测试框架之JUnit3和JUnit4使用区别的总结。

2.入门实例

步骤1:创建待测试类

首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释中都有说明。该类代码如下:

package xw.calculator;
public class Calculator {

private static int result; // 静态变量,用于存储运行结果
public void add(int n) {
result = result + n;
}
public void substract(int n) {
result = result - 1; // Bug: 正确的应该是 result =result-n
}

public void multiply(int n) {
} // 此方法尚未写好

public void divide(int n) {
result = result / n;
}

public void square(int n) {
result = n * n;
}

public void squareRoot(int n) {
for (;;)
; // Bug : 死循环
}

public void clear() { // 将结果清零
result = 0;
}

public int getResult() {
return result;
}
}

步骤2:在eclipse中为项目添加JUnit环境

右键JUnit_Test项目,在build path中“add library”,添加JUnit,如下图所示:

步骤3:创建测试类

右键Calculator类,选择“new",创建JUnit Test Case

步骤4:修改测试用例代码

测试用例代码如下:

package xw.calculatortest;
import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

import xw.calculator.Calculator;

public class CalculatorTest {
private static Calculator calculator = new Calculator();

// 复原操作,表明对每个Test方法测试以后都会进行这个方法操作。
@Before
public void setUp() throws Exception {
calculator.clear();// 结果清零
}

@Test
public void testAdd() {
// fail("Not yet implemented");
calculator.add(2);
calculator.add(3);
assertEquals(5, calculator.getResult());
}

@Test
public void testSubstract() {
// fail("Not yet implemented");
calculator.add(10);
calculator.substract(2);
assertEquals(8, calculator.getResult());
}

// 忽略标注,表明这个方法功能还没有实现
@Ignore("Multiply() Not yet implemented")
@Test
public void testMultiply() {
fail("Not yet implemented");
}

@Test
public void testDivide() {
// fail("Not yet implemented");
calculator.add(8);
calculator.divide(2);
assertEquals(4, calculator.getResult());
}

// Timeout参数表明了你要设定的时间,单位为毫秒,因此1000就代表1秒。
@Test(timeout = 1000)
public void squareRoot() {
calculator.squareRoot(4);
assertEquals(2, calculator.getResult());

}

/**
* square1/square2/square3分别用来测试正数,0,复数的平方
*/
@Test
public void square1() {
calculator.square(2);
assertEquals(4, calculator.getResult());
}

@Test
public void square2() {
calculator.square(0);
assertEquals(0, calculator.getResult());
}

@Test
public void square3() {
calculator.square(-3);
assertEquals(9, calculator.getResult());
}
}

参数化测试与运行器(Runner)

考虑一种场景,如果要单独测试正数的平方,0的平方以及负数的平方,那么就要创建三个测试方法来进行测试,这样会显得特别繁琐,如步骤4中最后的三个测试方法square1()、square2()和square3()。JUnit考虑到了这种情况,提出了参数化测试方法。这个时候运行器也不是默认的运行器,而是通过@RunWith(Parameterized.class)来标注。

参数化测试代码如下所示;

package xw.calculatortest;
import static org.junit.Assert.*;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import xw.calculator.Calculator;
@RunWith(Parameterized.class)
public class SquareTest {
private static Calculator calculator = new Calculator();
private int param;
private int result;

@Parameters
public static Collection data() {//定义测试数据的集合
return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9 }, });
}

// 构造函数,对变量进行初始化,参数的顺序与数据集成的顺序相关
public SquareTest(int param, int result) {
this.param = param;
this.result = result;
}

// 复原操作,表明对每个Test方法测试以后都会进行这个方法操作。
@Before
public void setUp() throws Exception {
calculator.clear();// 结果清零
}

@Test
public void testSquare() {
calculator.square(param);
assertEquals(result, calculator.getResult());
}
}

打包测试

考虑另外一种场景,如果一个项目中有许多个测试类,一个一个去运行会非常繁琐,这个时候就可以考虑使用打包测试。将所有需要运行的测试类集中起来,一次性的运行完毕,大大的方便了我们的测试工作。

右键Calculator类,新建一个JUnit Test Suite,如下图所示。

然后选择需要打包测试的测试类,如下图所示:

打包测试类叫做AllTests,需要打包测试的三个测试类是CalculatorTest,SquareTest和test。点击Finish完成打包测试,生成的打包测试类大吗如下:

package xw.calculatortest;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({ CalculatorTest.class, SquareTest.class, test.class })
public class AllTests {

}

运行结果如下:



 

 

 



相关文章:

  • how to send blogs to wordpress through the windows live writer
  • [转]MS Sql 7105错误
  • C#之向ListView视图插入数据...
  • 简单防御“高斯炮”
  • 架构之路--实战项目记录(一) 概述
  • SENDMAIL引发的血案
  • Windows Phone 7完整版模拟器
  • java 分卷 zip
  • 追赶法解方程
  • 诺基亚接连巨亏:死守塞班难学摩托罗拉
  • java Runtime
  • iphone 开发常用代码2
  • ActivityManager: Warning: Activity not started,...
  • 细说进程、应用程序域与上下文之间的关系(三)—— 深入了解.NET上下文
  • shell十三问-3) 別人 echo、你也 echo ,是问 echo 知多少
  • sharepoint修改密码
  • winxp---执行任务计划
  • 判断Linux/Unix为32位或64位
  • 4006.Cacti集监控IBM刀片服务器温度和风扇运行状态
  • 3001.Linux维护和管理培训.实操考核A
  • 使用批处理build vs2005的工程
  • 6016.Linux shell脚本编程规范(第1版)
  • 4-26 pixel赋值问题 mbcmp函数 宏定义
  • 云计算解决方案--百度文库
  • Git 命令行(cygwin) + Git Extensions + Git Source Control Provider
  • linux的telnet
  • canda broad cast
  • 【编程好习惯】引入中间变量使程序更易读
  • ASP.NET页面传值之Server.Transfer
  • oscache 与 ehcache的对比
  • 案例分享:Windows Phone上的移动浏览体验
  • 最普通IT男-苦逼coder杂谈
  • 冷备份实验,裸设备上备份
  • 如何让团队更高效
  • sencha touch 2中list控件分组排序
  • $.getjson遇到的几个问题-json返回数据中带有html标签的输出
  • 在.NET外散步之我爱贪吃蛇Python -常见数据结构(新浪和百度云平台即将推出Python免费空间)...
  • oracle 学习笔记 flashback query
  • linux最佳搭配
  • mooon-agent核心设计图
  • 有道翻译与VS2010滚动栏自动反弹冲突问题
  • 高性能 Windows Socket 服务端与客户端组件(HP-Socket v1.0.1 源代码及测试用例下载)...
  • Linux平台vsftp创建帐号
  • 自娱自乐的小题目(6)
  • 1、虚拟机安装
  • Liferay 启动过程分析16-初始化插件
  • 乱谈技术线的成长
  • python学习之课后习题
  • c# List 里面的Linq方法
  • 基于HTTP协议的轻量级开源简单消息队列服务:HTTPSQS
  • PHP可以通过什么组件上传大文件
  • 公安部计算机信息安全产品质量监督检验中心的质量责任和权限
  • 誉赐 PC阳光板www.ycpc.icoc.cn/详尽概述
  • c#(asp.net/core)杂谈笔记
  • zabbix通过skype发送报警消息之切换平台
  • SQL Server Collation介绍及其变更对数据的影响
  • 你能给我的手机推荐一款安全软件吗?
  • WordPress分页插件WP-PageNavi分页导航nofollow
  • windows交互式登陆
  • 修改整合的Jfinal的Model自动绑定表插件 AutoTableBindPlugin
  • GetLogicalDrives,GetLogicalDriveStrings,GetDri...
  • java基础----对象的创建过程(初始化、析构、清理)
  • PIX的A/S测试
  • shell 踢人办法
  • 有关top命令中的%st,sar命令中的%steal .
  • NYOJ 3(多边形重心)
  • flex 学习笔记 tree的各个子级的颜色
  • Codejock Xtreme MFC 图形界面控件包
  • ******多个政府网站 嫌犯潜逃永州落网
  • Oracle数据库基础入门视频合集
  • Nginx的Upstream负载均衡模块
  • 用C语言统计给定文本文件中汉字的个数
  • HDOJ 1035 模拟 水
  • Sybase ASE15.7静默安装
  • struts2与json的整合
  • mysql 帮助文档使用
  • svn服务端及客户端搭建和使用(一)
  • lvs nginx-proxy nginx 取用户真实IP
  • mysql数据备份3种方案
  • android 名称解释
  • 用“看板图”实现敏捷项目的可视化
  • VSS2005安装和配置过程中遇到的问题
  • android scroll 中 scroll Bar 修改
  • python网络编程学习笔记(5):socket的一些补充
  • 数据库中有哪些连接方式
  • SQL Server数据行的物理空间分配
  • 企业机房升温-谁之过?
  • JSP WEB开发入门基础到高手进阶教程001
  • Android 的 Recovery 模式分析
  • cygwin+hadoop+eclipse (三) 运行wordcount实例
  • Java基础-控制流程-3. 确定循环
  • 系统运行后修改linux系统时区
  • 统一项目管理平台(UMPlatForm.NET) - 5.1 数据字典管理模块
  • 计算机必懂的54个英文单词和缩写
  • MVC2学习
  • 步步为营:因为数据库正在使用,所以无法获得对数据库的独占访问权
  • UML类与类的关系, 总算理解了关联和依赖在实际中的区别
  • thinkphp的项目分组
  • Dijkstra算法|单源最短路径|贪心算法
  • Java IO学习7:打印流
  • .Hbase批量导入数据应用
  • jetty快速入门与嵌入使用 jetty
  • JS中某事件需要同时调用几个function另类解决办法。
  • Roboter's blog » python 读取ini文件
  • 反射实体列表
  • oracle backup imp/exp
  • 网易的企业免费邮箱和腾讯的企业邮箱
  • 清空SQL数据库日志
  • C 阶段性总结
  • 网络设备更换、域架构项目小结
  • java 使用 poi 操纵 excel2003 经验总结
  • 通用表格打印1
  • 玩转位图(bitmap)
  • 设置密码框
  • 利用python并发模块进行网站的状态检测
  • 虚拟化系列-Citrix XenServer 6.1 XenMotion与HA
  • zoj 3284 Matrix Processing(二维树状数组)
  • awk学习笔记(16) - 字符串函数
  • bgp属性分析--ORIGIN
  • Nginx模块开发(10)—limit_req模块分析
  • java web 分页 基于sql 2005 数据库
  • 块级元素水平,垂直居中的两种方式
  • CFileFind的文件名大小写问题
  • XSD
  • 安装Lync Server 2013
  • Sendmail with Attachment script
  • spring(12)
  • Qt 多级menu
  • 编写在浏览器中不弹出警告的ActiveX控件
  • 企业邮箱能设置个人昵称吗,如何设置?
  • 判断输入的年月日是否合法
  • 解决精简版的XP下,无法使用运程桌面
  • VS2008对话框显示语言(中文、英文)设置
  • 拉登游戏开发--分布式计算服务机客户机程序设计
  • windows下kangle虚拟主机-easypanel跑iis6.0开php空间并支持ZendOptimizer教程
  • 查找并删除 文件
  • 如何计算两向量的夹角
  • 世界之窗浏览器 v 3.6.1.0 [官方最新版]
  • 设置ubuntu Android sdk JDK环境变量
  • 安卓智能手机刷机前的准备工作
  • HTTP协议 (五) 代理
  • C#获取 Flv视频文件播放时间长度等信息
  • Ubuntu下搭建C/C++开发环境
  • 职场上的高调与低调
  • 2012第51周星期二
  • C#关于AutoResetEvent的使用介绍[转载]
  • jQuery .tmpl(), .template()学习资料小结
  • Linux下如何禁止某个用户登录方法
  • nmake命令行编译Qt项目
  • linux下载地址
  • Winform获取本地IP和外网IP
  • linux下查看表类型注释命令@tcc
  • checksum建立的索引
  • 向上走与向下走
  • jdbc的commit和rollback
  • [unity3d]插件2d toolskit
  • RHEL 6.3 KVM 虚拟机安装配置管理
  • 设计模式读书笔记之结构型模式
  • C/C++去除字符串首尾空白字符
  • 数学之美系列八-- 贾里尼克的故事和现代语言处理
  • CentOS 6.3最小化安装后,有些必备工作才可以正常使用
  • 网页小工具(学习中国象棋)
  • Android通讯录(一)
  • linux 下svn安装
  • zTree——删除所有节点
  • Java 7:最新特性更新、代码示例及性能测试
  • 25年面试官首次揭秘——世界500强面试题之微软面试题
  • eclipse tomcat cannot create a server using the...
  • 浅谈 System.Linq.Enumerable.AsEnumerable 方法
  • 配置终端服务和远程桌面服务器身份验证和加密级别
  • 内存不能为read故障分析
  • 用scanf函数输入数据,字符数据的输入输出
  • git简易入门
  • 原生App VS 移动Web App
  • innodb引擎
  • 16进制颜色与UIColor互转
  • Image Gallery
  • NPColorPicker
  • 在yii中加入mongodb扩展
  • [AX]AX2012 AIF(五):使用文档服务更新数据
  • 用例子来学习正则表达式
  • Cisco 静态NAT、动态NAT配置
  • 反射的基础(二):构造器类的使用
  • 设置域用户帐户密码策略
  • Linux上修改open files数目
  • Oracle软件安装及手工建库
  • windows 任务管理中各个内存项的含义
  • DDD~microsoft NLayerApp项目中的层次结构图
  • phonegap 总结
  • Linux CentOS上用iptables设置防火墙遇到的问题
  • Unofficial Windows Binaries for Python Extensi...
  • BlueHost怎样创建MySQL数据库
  • 随记:Linux下LVM安装配置及使用
  • 报告发现最新版Java存在一个安全漏洞
  • DBCS和UCS编码相关
  • 【备份】golang开发环境搭建
  • Ubuntu系统详细分析【1-10】
  • 0301_互连模拟
  • 在静态页面html中跳转传值
  • 在TabActivity中无法使用bindService的解决方法
  • Linux cache清理
  • 【python】正则表达式re模块
  • php中json_encode中文编码问题(转)
  • 屏幕设计设置默认值
  • javascript二级省市select联动菜单
  • 关于bridge-nf-call-iptables的设计问题
  • Redis开源文档《Redis设计与实现》
  • zabbix从入门到精通之---Zabbix proxy的配置(一)
  • 也谈zabbix性能优化
  • python while循环语句
  • 操作事故
  • v$session.sql_id为NULL或不准确的BUG
  • CentOS 6.3_Nagios安装笔记
  • 关于启动Activity之间的及普通按钮的点击事件
  • VS2010与VS2012变化的快捷键
  • 【框架设计】泛型的应用
  • Win8 内置游戏应用更新 中文翻译错误得以修正
  • 安卓开发_使用AlertDialog实现对话框
  • IE8 -- 此网页上的问题导致 Internet explore 关闭并重新打开该选项卡
  • 揭示Win32 API拦截细节/API hooking revealed (2)
  • 代码预览器
  • 静态页面对seo优化之详解
  • Oracle数据库之SQL单行函数---字符函数之TRIM
  • selenium-webdriver——让chrome跑起来
  • HTTP协议之Content-Encoding - 天下无贼 - 51CTO技术博客
  • iOS网络编程-ASIHTTPRequest小例子-数据请求队列
  • 设置SQLSERVER的错误日志数量和查找SQLSERVER安装错误日志
  • qt中将数据库中的数据显示
  • Linux 中断总结
  • Git常用命令查询
  • Oracle脚本(三)
  • fieldset
  • 在托管 Windows 服务中承载 WCF 服务
  • Java网络编程之实现HTTP断点续传下载工具(附源代码)
  • 停止标记NYOJ 一个简单的数学题 南工330停止标记
  • s3c2440的pwm输出
  • hadoop之安全模式,HDFS的读取,写入
  • TurboMail 邮件系统V5.2.0新品发布会盛况直击
  • JS 表单submit() 提交无效的问题
  • php[6491]: segfault at * rip * rsp * error 6
  • 个位百位AS3实现经典算法(二) 水仙花数
  • MSDN关于消息和消息队列的详细解析
  • burpsuite上传截断拿shell
  • 泛型类型(Generic Type)
  • [AX]AX2012 帮助服务
  • 教你编写高性能的mysql语法
  • java的传值和传址问题
  • 读书笔记--精通CSS高级Web标准解决方案(一)---CSS基础
  • [解题报告]HDU 2019 数列有序!
  • C#线程入门
  • 获取当前粘贴板数据
  • System Center Configuration Manager 文档
  • 【erlang ~ 4 days】 Day # 1.1 History
  • android笔记集one
  • 初建博客
  • 组成原理说明------地址对齐
  • 查询数量查看表的所有相关列信息
  • 版本设置X:none node Title golang版本错误
  • 自定义Button按钮
  • WinForm开发之点滴整理
  • 命令端口C++检测本地网络端口占用
  • 执行挂起状态线程的终止与暂停
  • Ubuntu系统lamp环境下安装wordpress、zencert和mangento程序网站
  • 创新 应用:物流公共信息平台的生命-黄惠良
  • 如何让你的网站快速被百度收录。
  • 设置源ARM中断处理_S3C2440
  • Div总在右下角的CSS实现方法
  • 各种不同服务器301重定向设置代码大全
  • POJ-3621 Sightseeing Cows 01分数(参数搜索)规划问题-最优比率环
  • AS3程序性能优化建议
  • AIX ksh使用小技巧
  • NspAction与JsonAction区别与用法
  • malloc和new的区别和联系
  • gtShell - 为你常用的目录建立标签并快速跳转
  • Python学习笔记一(Python数据类型)
  • 直线距离uva 11168 Airport(训练指南)
  • RESTful Web Service - JAX-RS Annotations
  • WPF控件 ProgressBar
  • 通用权限系统快速开发框架
  • MyEclipse Hibernate反向工程生成实体类
  • mysql事务支持
  • poj2070
  • 安全卫士分析--号码归属地
  • vc 实现打印机打印功能
  • 思科路由器Ez***解决地址重叠测试
  • Python的特色
  • awk 常用功能
  • Object-c 学习笔记
  • 计算机科学,大一学生怎样来爱你(文PPT)
  • Linux Shell脚本测试案例(一)
  • javascript 浮点计算问题解决思路
  • 使用jQuery.form插件,实现完美的表单异步提交
  • 保龄球计分
  • fedora安装java
  • 批处理学习笔记系列
  • Memcacher win7 安装测试
  • H3CTE讲师分享H3C认证培训实验9 IP基础
  • Failed to push selection: Read-only file system
  • 安卓缓存图片
  • 新手 开灯关灯效果
  • 【解决IE地址栏不见了问题】
  • 算法 后减前最大值,zt
  • POST的Response数据问题
  • Ioc思想
  • javascript与php数据交换之json
  • Maven图文闪电入门
  • HDU多校练习第一场4608——I_Number
  • 用正则表达式去除标点符号
  • 苹果开发者中心宕机8天终于回归
  • JAVA中的文件及目录处理类--File
  • Java生成唯一GUID UUID
  • Java菜鸟学习笔记--面向对象篇(十八):对象转型多态
  • centos6.4用cloudera manager安装hadoop2.0.0-cdh4.3.0集群(二)
  • apache日志文件 accesslog
  • “能耗大户”数据中心供配电系统
  • BGP十三条选路原则
  • 体验式培训之“盲人与哑巴”
  • pure-ftpd 配置
  • EMOS批量创建用户邮箱
  • 盗梦空间http://acm.nyist.net/JudgeOnline/problem.php?pid=125
  • 活动目录实战之六 使用ADMT 3.2迁移用户和计算机
  • PHP数据结构之实现链式二叉树与遍历
  • CentOS 安装 PPTP ××× 客户端安装脚本
  • android下的jni
  • 被什么文档折腾死了
  • 虚拟机常见的几种上网方式
  • java 捕获转换
  • SQL群集多实例卸载、安装
  • Android 编程下的计时器
  • Chromium学习笔记
  • 一点 误删,
  • 最小堆实现优先队列:Python实现
  • 参看服务器版本
  • Android -- TabHost
  • 关于SVN更新时文件加锁的小结
  • mysqludf_json将关系数据以JSON编码
  • mysql表utf-8 字符串入库编码异常
  • EmEditor中正则表达式
  • php结合nginx,mysql
  • 22个最难的汉字
  • java 7 collection 详解(一)
  • (面试题)用折半查找法在一组整形数组中查找某个数据
  • mysql dba系统学习(18)mysql主从复制的实现
  • java web分享ppt大纲 -- servlet包
  • android使用protobuf实现网络订单管理功能
  • 博客园我来了!
  • eclipse 插件 subclipse plugin 中修改已经登录的帐户密码的方法
  • Tcmalloc优化Mysql内存管理
  • 编码风格之变量的命名规则
  • Android学习笔记之如何将数据保存到SDCard
  • C51寄存器详解(Reg51.h)
  • OSPF协议的配置
  • named 委派与转发
  • [转]Linux芯片级移植与底层驱动(基于3.7.4内核)
  • chrome developer tool 调试技巧2
  • login RPi via serial port
  • 计算机辅助设计(湖南省首届“湘邮科技杯”大学生程序设计大赛试题)
  • CSS优先级、引入方式、Hack
  • angular 和 backbone 区别
  • mysql的limit经典用法及优化
  • Xen虚拟机加入Puppet环境如何解决时间同步问题
  • Cocos2D-X笔记(1)制作一个动态的精灵
  • T3500通过PXE克隆报“Unable to Control A20 Line XMS Driver not installed”
  • STL总结之list
  • LVS-DR+Ldirectord+FreeNas实现负载均衡群集
  • Gitlab的管理使用手册
  • Oracle SQL性能调整注意事项
  • C语言入门篇-07
  • 卡巴斯基安全软件2014(78三年,逢周一68)时间:2013.10.1-2013.10.31
  • .NET(C#):觉察XML反序列化中的未知节点
  • CF 354E DFS
  • dos 备份小记
  • [转] Js获取 本周、本月、本季度、本年、上月、上周、上季度、去年时间段
  • 把Ubuntu打造成Mac Macbuntu
  • letter-spacing和word-spacing之间的区别
  • Java 中override、overload、overwrite区别,以及与多态的关系
  • HAProxy + Keepalived实现MySQL的高可用负载均衡
  • Ynote源码涉及功能解剖
  • 部署项目到weblogic时提示文件被锁,导致报错
  • Android SurfaceView概述
  • Visual Studio 2013 编译Notepad++源码
  • CloudStack + KVM + HA
  • quest词根
  • Starship Troopers
  • 应用chroot构建最小运行系统
  • M2M技术、标准与智慧城市顶层设计方法
  • windows与Linux间远程拷贝文件(pscp命令)
  • 卷影副本(Shadow Copies)
  • Sql不区分大小写查询
  • 打开应用中SQLite文件的方法
  • linux下配置PPTP协议×××
  • mysql服务启动失败原因
  • 数据库文件备份与恢复案例
  • Session一次错误记录
  • C++对二进制文件的操作实例
  • Windows8、Windows8.1使用便签工具
  • 《Linux Shell脚本攻略》读书笔记第二章 命令之乐
  • 企业网站电子邮件营销的优势与转化率分析
  • Render OpenCascade Geometry Curves in OpenSceneGraph
  • 如何写一份交互说明文档
  • TableView数据源方法的执行顺序
  • 《编写可维护的 JavaScript》读书笔记第7章:事件处理
  • Python一个很好玩的特性decorator
  • 快速测试UTF8编码的文件是不是加了BOM,不限PHP
  • Redis 的安装
  • cocos2dx打飞机项目笔记一:项目结构介绍
  • Microsoft.AspNet.Identity 的简单使用
  • Windows Server 2008 R2远程用户数设置
  • UITableViewCell 添加 checkbox 多选
  • 修改cas登陆页面-服务器端
  • 【基于zxing的编解码实战】zxing项目源码解读(2.3.0版本,Android部分)
  • 三星t959手机sim卡网络解锁pin码处理方法
  • HashMap源码注释
  • No Dialect mapping for JDBC type 错误分析,Hibernate和数据库类型对应
  • sql中的类型转换
  • 算法四:回溯和分支界定
  • 快排序和堆排序,最小堆、最大堆
  • javascript div z-index, input tabindex属性说明
  • 关于Xcode的Other Linker Flags
  • makefile--编译出现,未定义的字符
  • 【转载】实用的人际关系经验
  • 【Java多线程】写入同一文件,自定义线程池与线程回收利用2
  • 谷歌眼镜设计规范之度量和网格
  • 大数据的Java/Hbase+C云平台开发技术 课程
  • Ubuntu Eclipse 解决中文乱码
  • 代码的发表测试
  • (转)为什么用ls和du显示出来的文件大小有差别?
  • 编写自己的Windows Live Writer插件
  • 预处理开始
  • windows安装软件最好使用独立的文件夹
  • Android ROM 小白普及
  • Poj/OpenJudge 1094 Sorting It All Out
  • 升级LINUX内核(支持8G内存)的命令
  • iOS中关于文件操作
  • Struts1和Struts2的特点、工作流程及差异性
  • 怎样删除Weblogic Domain?
  • 拯救安卓手机的数据(无法进入系统只能打开recovery)
  • 人生什么不能等?
  • TDD 测试驱动开发
  • nginx下apk下载,ie9的问题
  • 登录功能验证处理
  • 华农js抢课神器
  • Codeforces Round #232 (Div. 1) 解题报告
  • Lucene学习笔记:一,全文检索的基本原理
  • eclipse: workspace出错导致无法启用的解决
  • vs2005新建项目中没有ASP.NET WEB应用程序的解决方法
  • 小代码编写神器:LINQPad 使用入门
  • 数据库系统的并发控制的两种实现模型
  • WSGI、flup、fastcgi、web.py的关系
  • java实现基于关键字的文件夹(文件)的搜索、文件夹(文件)的复制、删除
  • RMAN 总括 组成 配置 检测
  • H3C WA2220E-AG 设置本地MAC+PSK认证:mac-and-psk
  • php 选择排序
  • 基础正则表达式
  • Android简单的发短信示例
  • android链接
  • python语法32[装饰器decorator](转)
  • EditPlus+NAnt构建轻巧的.NET开发环境
  • ibatis.net:尽可能的使用匿名类型替换 Hashtable
  • linux下搭建apache+mysql+php环境(LAMP)
  • ios获取设备的唯一标识mac address
  • 面向对象技术之系统分析:类图
  • lisp_sicp
  • Java SE 8新特性
  • 逻辑卷的拉伸及缩减
  • C++ 如何有效地使用对话框
  • 分别通过【buildpath】和【lib】倒入JAR包有什么不同
  • Nginx ~模块详解~
  • Windows和Linux DNS Cache清理
  • hudson构建配置
  • response.setHeader()的用法 (转别人转的)
  • Xcode快捷键—图文详解
  • 常用 shell sql 命令
  • N1考试必备词汇
  • come back 继工作1年1一个月随想
  • 元数据(MetaData)
  • 主成分分析(PCA)实现代码
  • 第一个IOS应用终于审核通过了,好开心!
  • MSExchangeIS ID8528 日志提示邮箱已满报警
  • X-Japan
  • Cocos2d-x schedulers 定时器
  • MongoDB数据文件内部结构
  • HDU 2602
  • python的分布式任务并行处理框架Jug简单使用
  • 单实例
  • Exchange2010批量建用户及通讯地址簿更新
  • sersync实现多台服务器实时同步文件
  • 关于listener
  • CGPathAddArc
  • Hadoop YARN最近几个新特性
  • ssh日志记录
  • Chrome浏览器模拟手机访问网站
  • 关于页面 reflow 和 repaint
  • Oracle单实例数据库迁移到Oracle RAC 环境之(3)--主备库Switchover
  • Oracle中索引的使用 索引性能优化调整
  • java CopyOnWriteArrayList的使用
  • [转].net中的认证(authentication)与授权(authorization)
  • 一个oracle并发性问题的分析和解决
  • java-第三章-从键盘输入3个整数,然后将输入的整数按照从小到大的顺序放在abc,并输出3个变量的值...
  • spring Quartz基于配置文件和注解的实现