07 2011 档案

摘要:这篇文章将继续上一篇的问题,实现我们的iunit框架与Guice框架的整合,这个模块主要用于那些用Guice来做DI容器的项目做测试用的,包括guice框架的启动与在测试类中自动注入@Inject标注的字段1.目标测试类的庐山真面目package com.crazycoder2010.guice.sample; import org.junit.Test; import com.crazycoder2010.iunit.AbstractIUnitTestCase; import com.crazycoder2010.iunit.GuiceStratupListener; import co.. 阅读全文
posted @ 2011-07-31 11:51 java简单例子 阅读(546) 评论(0) 推荐(0) 编辑
摘要:上篇文章罗列了整个框架的核心接口,这篇文章将提供IunitExecutionListener的一个实现类-DatasetProviderListener,主要用来将测试数据插入到数据库中,待测试完成后自动删除数据1.dbunit为核心的db测试 dbunit是个很好的数据库测试框架,提供了多种准备数据的操作策略来简化测试数据的插入或更新操作,参考http://www.dbunit.org/components.html#deleteall操作描述DatabaseOperation.UPDATE使用准备数据更新现有db中的数据(根据准备数据主键ID值),如果数据库中不存在准备数据中的ID,报错退 阅读全文
posted @ 2011-07-30 21:48 java简单例子 阅读(237) 评论(0) 推荐(0) 编辑
摘要:第二节里我们介绍了iunit整体的设计思路以及核心类之间的关系,这篇将以源码+解释的方式来演示核心类的实现方式1.IUnitRunner 类这个类是测试的入口类,直接继承自junit4.8的BlockJunit4ClassRunner,在构造函数里,我们把iunit框架的扩展功能添加了进来,因为整个框架呃设计都是基于Listener的,所以只需要把监听器在框架运行的时候加载进来即可--见构造函数,listener的注册是通过注解来进行的,因为测试类本身可能会有继承关系,因此需要遍历父类中的Listener,把子类+所有父类中的Listener合并起来,当然还要注意剔除掉重复注册的Listene 阅读全文
posted @ 2011-07-30 11:56 java简单例子 阅读(187) 评论(0) 推荐(0) 编辑
摘要:第一节里介绍了我们框架设计的目标,这篇主要介绍的是这个框架主要的设计思路和关键技术点1.如何扩展junit的功能,使junit在启动时可以做一些我们定制化的功能? junit4建立了以Runner为核心的测试框架运行机制,在junit3的版本中,我们知道要运行一个junit测试用例,必须继承一个TestCase基类,junit4则不需要这个限制,只需要标注一下要运行测试的方法为@Test就可以了,怎么做到的呢?就是这个Runner机制,这里不介绍Junit4的运行机制,可以从org.junit.runner.BlockJUnit4ClassRunner中得到答案,像spring test框架也 阅读全文
posted @ 2011-07-30 09:28 java简单例子 阅读(356) 评论(0) 推荐(0) 编辑
摘要:1.先从问题说起 写过程序的同学都知道,做好单元测试提高代码覆盖率对整个项目意味着什么,但是做好单元测试并不是一件那么简单的事情,因为实际业务逻辑和运行环境的复杂性,导致了我们的单元测试代码不可能都像那些helloWord那么简单,比如现在的业务系统绝大多数都是基于数据库的,怎么做单元测试才能做到每次做单元测试时都是一个干净的测试环境-即上次单元测试的数据库操作不会影响本次测试的结果(比如一个createUser操作,第一次单元测试运行成功了,但是第二次运行却失败了,因为代码里做了重名判断),还有web层的单元测试如何进行,web框架如何启动,那些万恶的httpServletRequest,H 阅读全文
posted @ 2011-07-29 00:12 java简单例子 阅读(280) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>#include <vector>using namespace std;int main(){ vector<int*> b; for(int i=0; i<5; i++) { int j = i; //j始终是同一个地址 int *jp = &j; b.push_back(&j); int* p = *(b.end()-1); int value1 = *p; cout << value1 << " "; } cout << endl;.. 阅读全文
posted @ 2011-07-28 23:01 java简单例子 阅读(135) 评论(0) 推荐(0) 编辑
摘要:下面一段源自huffman编码,其中体现了堆的具体过程。weight为类的成员变量。void HuffmanTree::CreateDate(){ weight = new int[5];//程序在开始时,weight指向不确定位置 //直到CreateDate运行完成,将所有数据存在连续堆中,然后将weight指向这片区域。 weight[0] = 10; weight[1] = 5; weight[2] = 7; weight[4] = 13;}程序开始,初始化时,weight指向不确定位置,当上面程序在内存中运行时,将各个数据存储在堆中,运行完成后,将... 阅读全文
posted @ 2011-07-28 12:38 java简单例子 阅读(349) 评论(0) 推荐(0) 编辑
摘要:赫夫曼编码是该思想的应用,将频率出现较多的字母定义为长度较短的二进制,将出现频率小的定义为长度大的二进制,这样有效的提高了存储能力,赫夫曼树的用处还很多,这种思想可以提高程序运行效率,如在多个判断语句中,可以将访问较多的条件放在第一个位置,减小其访问权重。#ifndef HUFFMANNODE_H#define HUFFMANNODE_H#include <iostream>using namespace std;class HuffmanNode{public: HuffmanNode(); HuffmanNode(int weight); void SetWeight(int 阅读全文
posted @ 2011-07-28 11:26 java简单例子 阅读(211) 评论(0) 推荐(0) 编辑
摘要:JDK1.5以后提供了导入静态方法的功能,例如,我们可以通过以下方式导入Matchers.equalToimport static org.hamcrest.Matchers.equalTo;注意有个static静态标识符用的时候直接使用就可以了,而不用再去调用Matches.equalTo()equalTo("Hello, Kevin");等价于Matches.equalTo("Hello, Kevin")问题:eclipse中的alt+/快捷键可以提供代码提示功能,特别我们在写类的时候,很有用,但是很多时候我们想让eclipse也能直接提示这些常用静 阅读全文
posted @ 2011-07-26 22:22 java简单例子 阅读(2388) 评论(0) 推荐(0) 编辑
摘要:这是自己学C语言时,突发奇想写一个计算一学期平均绩点的小程序,当时很兴奋,觉得有收藏价值。所以自己收藏一下!当然写得还是很一般。#include <stdio.h>void main(){int i=0;int j=0;int test_lessons=0;int check_lessons=0;char check_level[5];float check_credit[20];float test_credit[20];float check_point[20];float test_point[20];float total1=0.00;float total2=0.00;f 阅读全文
posted @ 2011-07-25 21:03 java简单例子 阅读(196) 评论(0) 推荐(0) 编辑
摘要:#ifndef RECORD_H#define RECORD_H#include <iostream>using namespace std;class Record{ public: Record(); Record(string name, int age); virtual ~Record(); void Display(); protected: private: public: string name; int age;};#endif // RECORD_H#ifnde... 阅读全文
posted @ 2011-07-25 14:53 java简单例子 阅读(304) 评论(0) 推荐(0) 编辑
摘要:1.C++的标准库中没有定义null,所以要用NULL。2.window文件名不区分大小写,所以写程序时头文件中字母不区分大小写。3.可以使用二叉树方法来解决任意一个字符的编码不是另一个字符的前缀的问题。(例如赫夫曼编码)4.变量的声明定义。以及变量的有效范围,系统分配的地址,在编程过程中值得注意。(在我的“变量存放问题”中做了解答)5.switch语句中要注意到的一点case结束的时候要加上break;不然程序会继续进行下边的case语句。6.类对操作符直接进行使用时,一般需要对操作符进行重载,但c++中“=”有默认的重载,即类中的成员依次赋值。 阅读全文
posted @ 2011-07-25 14:16 java简单例子 阅读(116) 评论(0) 推荐(0) 编辑
摘要:二叉树的遍历如果使用递归调用基本没什么问题,这里主要是讲如何使用非递归方法实现二叉树的遍历。由于递归调用程序实际上使用了栈来保存方法中的变量值,在非递归遍历的方法中我们需要基于栈的方法。先来看看这个方法01/// <summary> 02/// 非递归中序遍历二叉树 03/// </summary> 04/// <param name="root"></param> 05static void InOrderTraverse(BinaryTreeNode root) 06{ 07BinaryTreeNode temp = ro 阅读全文
posted @ 2011-07-25 13:51 java简单例子 阅读(1952) 评论(0) 推荐(0) 编辑
摘要:一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。 4、文字... 阅读全文
posted @ 2011-07-25 13:45 java简单例子 阅读(116) 评论(0) 推荐(0) 编辑
摘要:递归算法向非递归算法转换递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持递归,这就需要把递归算法转换为非递归算法。 将递归算法转换为非递归算法有两种方法,一种是直接求值,不需要回溯;另一种是不能直接求值,需要回溯。前者使用一些变量保存中间结果,称为直接转换法;后者使用栈保存中间结果,称为间接转换法,下面分别讨论这两种方法。1. 直接转换法直接转换法通常 阅读全文
posted @ 2011-07-25 09:31 java简单例子 阅读(1765) 评论(0) 推荐(0) 编辑
摘要:C++和C在linux下编程和与在WINDOWS下有什么区别[ 标签:c++ 编程,c++,linux ] 说下C的函数库 有什么区别就行了。C++是不是没区别? 函数库的区别linux下的C函数库和windows下的函数库系统调用的机制不一样Glibc包含了主要的C库。这个库提供了基本例程,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等等。所说的机制不一样不单是指中断号的问题,中断号也是通过input参数和output把函数地址和输出地址定位在寄存器的,那些函数在windows和linux下的实现应该是不一样的,就拿文件系统来说,ext3和fat32的怎么可. 阅读全文
posted @ 2011-07-24 17:28 java简单例子 阅读(2838) 评论(0) 推荐(0) 编辑
摘要:1.从apache网站下载James服务器http://james.apache.org/2.解压找到bin目录,运行run.bat3.新增系统用户 打开一个新的命令行窗口,输入命令telnet localhost 4555 出现以下界面,要求输入LoginId,输入root回车,然后出现提示要求输入密码,也是root回车,成功后会提示可以 输入help查看james提供的命令行命令,添加新用户命令为adduser,adduser admin 111111表示添加一个帐号名为admin,密码为111111的email帐号 阅读全文
posted @ 2011-07-24 11:28 java简单例子 阅读(325) 评论(0) 推荐(0) 编辑
摘要:1.项目背景 设计一个通用的邮件发送模块,为上层应用提供服务,对上层屏蔽掉发送邮件的细节,上层只需要简单的调用即可,要求可以实时发送但又不能影响效率,对发送失败的邮件系统可以记录下来,以便后期重发2.需求分析 关键点有 2.1邮件内容的存放 a)直接把邮件内容写死在代码里,然后拼接成一个很长的字符串,缺点也很明显,要改邮件的内容必修修改代码,重新编译打包 b)邮件内容与代码相分离.将邮件的内容文件化,java代码中只是引用模板的位置,然后解析模块中的内容输出,这种方案有着更高的可维护性,扩展起来也更方便 2.2发送邮件的效率 发邮件是一件很耗费性能的操作,如果系统中会频繁用到邮件发送... 阅读全文
posted @ 2011-07-24 10:21 java简单例子 阅读(3998) 评论(0) 推荐(1) 编辑
摘要:基于struts2的程序设计中,一定会用到struts自带的标签库,提供了一些常用的表单元素和逻辑控制标签的封装,而我们在项目中常用的分页标签却没有直接提供,通过学习struts2的源码分析我们可以看到,struts2的标签库默认是使用freemarker模板技术实现的,如图在各个单独的模板里定义了具体的页面展现元素,因此我们可以参考官方标签的做法来定制我们的分页标签1.编写分页组件类Pagination这个类用于向模板中传递参数使用的package com.crazycoder2010.demo.pagination; import javax.servlet.http.HttpServl. 阅读全文
posted @ 2011-07-19 23:30 java简单例子 阅读(5302) 评论(0) 推荐(1) 编辑
摘要:用到了maven的compiler插件,只要在pom文件里引入该插件即可<plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> < 阅读全文
posted @ 2011-07-19 20:09 java简单例子 阅读(11162) 评论(0) 推荐(0) 编辑
摘要:sitemmesh是一个页面装饰框架,利用它可以很简单的对整个系统进行统一架构装饰,比如一个应用系统的web层可能就是top+left+content+footer四个部分组成(下图)使用sitemesh定义好一个统一的框架后,程序员只需要关注动态的内容部分就可以了,而不需要在每个页面去单独的include一堆的footer,left,header之类的公共部分--框架只是一个工具,存在的目的在于提高生产率,减少重复劳动。以下是这个sitemsh的装饰页面源码<%@ page contentType="text/html; charset=GBK"%> < 阅读全文
posted @ 2011-07-17 08:35 java简单例子 阅读(6805) 评论(1) 推荐(0) 编辑
摘要:在项目中用到了hibernate,是通过在 jboss里设置一个jndi数据源去访问的,web环境下运行每问题 ,但是在用junit对其做单元测试时,启动hibernate报错2982 [main] INFO org.hibernate.util.NamingHelper - JNDI InitialContext properties:{}2982 [main] WARN org.hibernate.impl.SessionFactoryObjectFactory - Could not bind factory to JNDIjavax.naming.NoInitialContextExc 阅读全文
posted @ 2011-07-16 22:37 java简单例子 阅读(354) 评论(0) 推荐(0) 编辑
摘要:一回调函数我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而 那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。至于如何定义回调函数,跟具体使用的 API函数有关,一般在帮助中有说明回调函数的参数和返回值等。C++中一般要求在回调函数前加CALLBACK( 阅读全文
posted @ 2011-07-15 18:14 java简单例子 阅读(1138) 评论(0) 推荐(1) 编辑
摘要:一个项目离开了商业性很难得到长久蓬勃的发展。Meego诞生以来也是历经波折。回顾过去的Android的道路,开源与合作无疑为他的发展提供了很大的动力,时至今日他已能够与苹果的iOS一争高下。但就目前Android来看,其燎原之势在目前已趋于缓和。根据【eoe Android 前线资讯】自今年初以来的苹果iPhone市场份额增长势头不减,苹果iPhone在智能手机市场的份额,已经上升到27%。而谷歌Android系统的份额没有增长,这是Android发布以来,首次出现增长停滞现象。在Android产品不断推广的过程中,也能够看到不少问题。虽然Android系统的市场占有率目前占据第一,但在商业盈 阅读全文
posted @ 2011-07-15 17:11 java简单例子 阅读(142) 评论(0) 推荐(0) 编辑
摘要:value_type& operator [] (int location) { return *(sqlist+location); }//例如:value_type类型的一个temp,temp[10], 就是temp.operator [](10); MyVector& operator = (MyVector& mv) { if (&mv == this) { return *this; } cout << "重写 = :" <<endl; Clear(); ... 阅读全文
posted @ 2011-07-15 17:09 java简单例子 阅读(381) 评论(0) 推荐(0) 编辑
摘要://List.h#ifndef LIST_H#define LIST_H#define MAXSIZE 100#include <iostream>using namespace std;template <class T> class List{ public: List(); virtual ~List(); void InitList(); void Insert(int pos, T val); //返回插入的内容 T Del(int pos); ... 阅读全文
posted @ 2011-07-15 16:05 java简单例子 阅读(175) 评论(0) 推荐(0) 编辑
摘要:i= 0; while(1) { cin >> data[i]; if(data[i]==0) { break; } i++; } 阅读全文
posted @ 2011-07-15 13:10 java简单例子 阅读(233) 评论(0) 推荐(0) 编辑
摘要:一行代码即可搞定,绕了n个圈才找到var jsonString ='{"jsonSupportBean":{"errorMessage":"Duplicate label group name of 'Kevin6666'.","message":null,"result":null,"success":false}}';var json = $.parseJSON(jsonString );alert(json.jsonSupportBean 阅读全文
posted @ 2011-07-13 21:50 java简单例子 阅读(256) 评论(0) 推荐(0) 编辑
摘要:又到春天了,大学生们又该忙找工作了。我作为一个人到中年的职场油子谈谈招聘, 望能对大家的择业有所帮助吧。 首先要解开一个误区,那就是应届的大学毕业生很难找工作。 对于我而言,我这么多年从来没有歧视过应届毕业生。而且我身边的很多公司,包 括我的同行,也都不歧视。这点大家大可放心。 通常来说,一个公司的业务模块无外乎两大块。一大块是商务性的业务模块,包括 了销售、市场、客户管理等等,有的公司把项目管理也划到了这一块,也有的公司反之 。而我这么多年一直从事的工作,就是市场部的工作。 除了商务性的业务模块之外,剩下的就是生产、研发性的业务模块了。比如系统开 发、测试、项目实施、项目管理、系... 阅读全文
posted @ 2011-07-13 18:20 java简单例子 阅读(137) 评论(0) 推荐(0) 编辑
摘要:MFC中处理消息的顺序1. AfxWndProc()接收消息,寻找消息所属的CWnd对象,然后调用AfxCallWndProc( )。2. AfxCallWndProc()存储消息(消息标识符和消息参数)供未来参考,然后调用WindowProc( )。3. WindowProc()发送消息给OnWndMsg( ),如果消息未被处理,则发送给DefWindowproc( )。4. OnWndMsg()首先按字节对消息进行排序,对于WM_COMMAND消息,调用OnCommand()消息响应函数;对于WM_NOTIFY消息调用OnNotify()消息响应函数。任何被遗漏的消息将是标准消息。OnWn 阅读全文
posted @ 2011-07-02 15:45 java简单例子 阅读(167) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示