- 博客(35)
- 资源 (6)
- 收藏
- 关注
原创 hello world, ruby
用java用了一段时间,有些腻了,而且ruby又是如此之火,所以想看个究竟,虽然我工作中使用ruby的可能性不大,但多学一门新语言总归没什么坏处,而且还可以吸收一些新的东西。ruby是一种强大的脚本语言,作为脚本语言还有perl和python,我都没用过,为什么会单单选择ruby,我也说不出个所以然(也许ROR的原因),网上也有相关讨论。下面让我们来看看Programming Ruby-2
2006-05-28 23:59:00 2321
原创 Hibernate中的检索1-----主控对象
Hibernate 配置文件中的会出现4种检索方式 1. 立即检索2. 延迟加载3. outer-join4. batch-size 对于主控对象来说,只会有前面两种方式 对于主控对象的检索通常有3种方法 1. load2. get3. find hbm样例:name="com.mofile.baby.domain.Baby"
2006-05-26 17:12:00 1645
原创 hibernate中的级联关系小结
hibernate中的级联关系有下面几类: none save-update delete all delete-orphan all-delete-orphan我通常会用到none,save-update,all-delete-orphan,而且还是在一对多和多对多的情况 none就不用说了,在保存,更新,删除
2006-05-26 16:11:00 2184
原创 hibernate中的save和saveOrUpdate(单主键情况)
在单主键情况,两个方法到底有啥区别:如果持久对象使用了自增长的单主键(一般情况下也都是这么做)。通常两者没什么区别。但是如果持久对象使用自己赋值的单主键,那么使用saveOrUpdate就不大合适了。例如:如果你将一个持久对象的主键赋值了,你本想插入这条记录,但实际上执行的是更新,因为hibernate会认为你的主键存在了,那么它会采用更新。但如果你使用save,那么hibernate直接插入数据
2006-05-25 15:41:00 8236 5
原创 使用js控制图片尺寸
需求: 用户上传图片后,前台显示,如果不对显示进行控制,图片会变形 onload="if(this.width>200 && this.width300) this.width=380;">用户上传图片的尺寸通常无法控制,(当然你也可以在后台代码中对上传的图片进行处理,这样可以对图片的显示作精细的控制),如果你觉得麻烦的话 ,完全可以通过js作些控制,虽然粗糙但可行且简单。 注意
2006-05-25 15:08:00 5581
转载 Tomcat启动分析
1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet container. (Singleton) 1.2 - Service A Service element represents the combination of one or more Co
2006-05-21 19:07:00 2510 3
原创 webwork配置中应该避免的一个错误(包名重复)
1) 1.1)xwork.xml如下: 。。。。 index.xml"/> error.xml"/> 。。。。 1.2)index.xml如下: name="front-core" namespace="/front" extends="front-default">
2006-05-19 01:06:00 2485
原创 一个简单的tomcat部署方案
需求如下: 要将widow下开发的web应用部署到linux的机器下 step1)在本地使用ant将项目打成war ant脚本如下:
2006-05-19 00:25:00 3929
原创 深入分析webwork中的文件上传机制
点击上传按钮后,webwork的程序流如下: step 1)进入ServletDispatcher.service public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException { ........ request =
2006-05-17 01:33:00 3770 6
原创 javascript中使用正则表达式
使用正则表达式写js函数使得函数变得相当简单看看下面两个例子://判断一个输入是不是正整数function plusIntegerCheck(s){ if(s.match(/^[1-9]/d*$/)) return true; return false; }//trim空格function trim(s){ var destString=s.rep
2006-05-16 11:40:00 2815 1
原创 验证码的工作原理
验证码通常在输入页面,主要是为了防止无聊人士通过循环提交攻击服务器验证码的工作机制如下step1)必须有个生成验证码的冬冬1.1)验证码的显示validate.do" width="130" height="20">1.2)验证码的产生validate.do通常是个servlet,核心实现如下public void service(HttpServletRequest request, HttpS
2006-05-15 01:07:00 8967
原创 webwok中的封装页面数据研究(上)-两种实现方式
webwok中的封装页面数据研究(上)-两种实现方式本文的前提是,你愿意将页面数据封装为一个对象(是否封装还得看实际情况,如果页面数据特别少也没这个必要)。封装页面数据是否使用ModelDrivenInterceptor有时候还真与个人使用习惯有点关系看下面的实现action1:public class VoteAction implements Action, ModelDriven {。。。。
2006-05-14 23:56:00 1926
原创 webwok中的封装页面数据研究(下)-ModelDrivenInterceptor分析
ModelDrivenInterceptor使传值变得方便,但它本身并不负责注入值看看其核心源代码: protected void before(ActionInvocation invocation) throws Exception { Action action = invocation.getAction(); if (action instanceof Mod
2006-05-14 23:42:00 1973
原创 freemark中的占位list的使用
需求如下:服务器最多有5个磁盘,至少一个,在修改服务器时需要显示5个磁盘占位,如果那个磁盘占位有信息,就显示可用如下代码: 磁盘${diskindex}:路径:尺寸:磁盘${i}:路径:尺寸:引申一下:如果一个项目中有多个占位list 的使用,那么可把这段代码重构成一个宏
2006-05-14 19:15:00 3305 3
原创 服务器上页面路径小结
1)以“/"开头表示绝对路径,从服务器根目录开始,例如"/page/signup/index.jsp"2)没有以”/"开头表示相对路径假设当前页面为/page/signup/index.jsp2.1)页面中的某个路径为index2.jsp或者./index.jsp,那么表示/page/signup/index.jsp2.2)页面中的某个路径为../index.jsp,那么表示/page/index
2006-05-14 18:44:00 1449
原创 Hibernate中的级联一对多关系
两个pojo,Baby 和Baby File对应数据库中表baby和babyfile.两个表有外键关联,且babyfile的外键不能为空配置了个单向一对多,级联关系为save-update/** * * @author weip * @time 2006-5-10 16:23:19 * @return Set * * @hibernate.set
2006-05-14 18:33:00 4964
原创 Dbunit中DatabaseOperation.DELETE和DatabaseOperation.DELETE_ALL的差别
DatabaseOperation.DELETEThis operation deletes only the dataset contents from the database. This operation does not delete the entire table contents but only data that are present in the
2006-05-13 15:51:00 4571 1
翻译 Dbunit最佳实践
原文:http://dbunit.sourceforge.net/bestpractices.htmlBest Practices Use one database instance per developer Good setup dont need cleanup! Use multiple small datasets Pe
2006-05-13 15:23:00 2650
原创 Lucene到底是个什么东西
Lucene是个开源的搜索引擎,如果你的项目的一些信息需要被搜索,但又没有合适的搜索工具,那么你应该考虑使用它.为什么我会使用这个玩意?我的前一个项目是关于网络视频的,里面牵涉到对视频作搜索(废话), 主要是对视频的描述做一些灵活的搜索,起初我使用了MySql的全文索引,似乎事情到此截止了,但后来我发现MySql全文索引对中文支持很差(也许是我对MySql没有很深入的研究导致的,大家可以关注海量科
2006-05-13 07:05:00 2268 1
原创 测试驱动和用例驱动的联合实践
用例驱动方法来自UP,由jacobson提出,并成为UP中最闪亮的瑰宝和核心,用例驱动主张一切来自需求,这本身非常正确,但用例之后的分析,设计过程被一些敏捷专家所诟病,认为这个过程太过重量级,因为需求一直在变,而且随着项目的进展,设计会弱化,同时还得保持分析文档,设计文档和代码的同步,如果能时刻保持增量和迭代那么还好,否则就是灾难了。测试驱动则采取另外的思路,非常轻型的分析和设计,所有的代码从测试
2006-05-13 06:22:00 1855
原创 使用junitperf做性能测试
private static Test createFullTextVideoSearchDaoImpl2LoadTest() { //1个线程0.4s+,10个线程3s+,100个线程35s+int maxUsers = 100;long maxElapsedTime = 1500; Test testCase = new FullTextVideoSearchDaoIm
2006-05-12 17:49:00 1423
原创 JUnitPerf 之Timed Tests
1.1)to create a timed test that waits for the completion of the ExampleTestCase.testOneSecondResponse() method and then fails if the elapsed time exceeded 1 second Code example: long maxEl
2006-05-12 17:48:00 1227
原创 编写freemarker的宏
例子如下: = 1024*1024*1024)>= 1024*1024)>= 1024)> 一个显示size的宏,以sizedisplay.ftl保存,如果别的ftl要用这个宏,引入该页面l">,然后${displaySize(mvl.flvSize?if_exists)} fre
2006-05-12 17:44:00 2852
原创 webwork中路径
如果你在http://tv.mofile.cn/dnekcab/tologin.htm页面中有个到http://tv.mofile.cn/dnekcab/admin/Login.do的链接,那么这样写 如果是到http://tv.mofile.cn/dnekcab/Login.do的链接,那么这样写也可以是 即页面的路径和链接的路径相同,可以写相对路径如后者(也可以
2006-05-12 17:13:00 1445
原创 xwork配置文件中chain和redirect的用法区别
a) type="chain">ListAll b) type="redirect">List.do redirect会丢掉以前的请求参数,重订向到新页面,且新页面会显示List.dochain不会丢掉以前的请求参数,但新页面仍旧显示AddMachine.do
2006-05-12 17:12:00 1977 1
原创 Hibernate中Query.uniqueResult();
如果有多个值抛错如果有值且只有一个,返回一个object如果没值,返回null
2006-05-12 17:03:00 13193 2
原创 与当前时间比较的需求的一个实现方案
某个时间和当前时间的比较 private static final long DURATION = 1000L * 60 * 30; //红颜色表达式即表示半小时,依此类推 Date time = dbvote.getTime(); if ((System.currentTimeMillis() - time.getTime())
2006-05-12 16:03:00 1771
原创 easymock中遇到方法调用次数错误的问题
一个测试,测试两个动作见*1,*2public void testVoteCheck() throws Exception { //*1 测试找不到结果,返回true mockVoteDao.getVote("192.168", 1); EasyMock.expectLastCall().andReturn(null); EasyMock.r
2006-05-12 15:25:00 3077
原创 dbunit中关于插入datetime的问题
背景:dbunit mysql如果你使用dbunit,你必须得准备数据集文件如果你的mysql中的某个列是datetime型那么你准备数据时就该注意一下比如一条记录:time=20060512 ip=191 type=1 babyid=1 />插入数据库时会报错: org.dbunit.dataset.datatype.TypeCastException: Error type
2006-05-12 11:35:00 4129
原创 freemarker中list排序
作为一个页面引擎freemarker实在是方便又强大,与webwork结合使用实在是强有时候你需要在页面上对list排序,虽然你也可以在后台代码中完成,但这个可能要看具体情况排序的样本代码如下:?sort_by("monthlyViewedCount") as tvl>.............................................monthlyViewedCount是l
2006-05-11 17:19:00 7574 1
原创 webwork中文件上传实现
step1:页面定义如下 ......................... 省略 step2 action 如下 public class UploadAction extends ActionSupport { .....................................
2006-05-11 16:52:00 3451
原创 列名的小陷阱
背景:使用hibernate将某个对象的属性(对应某个表中的列)都取为character,结果在保存该对象时报错,然后将表中的列名改了一下,就好了,说明建表的时候应该避免将列名取为character,这种出错与hibernate无关,属于关键字误用
2006-05-11 16:34:00 1257
原创 徒劳的拦截器的后处理
想通过拦截器的后处理改变页面的显示结果 ,发现行不通.看看以下的调用栈就知道: at com.opensymphony.webwork.ServletActionContext.getServletContext(ServletActionContext.java:105) at com.opensymphony.webwork.views.freemarker.FreemarkerR
2006-05-10 01:19:00 1263
原创 EasyMock实践指南
EasyMock是个mock框架,用于动态产生mock对象,mock对象主要是用来模拟真实环境中的对象,原理上你应该为每个被依赖的接口准备mock对象,但那样实在太麻烦,无端的会产生很多mock类,所以EasyMock派上用场了!注意EasyMock2.0不能为非接口产生mock对象 EashMock的使用模式1)记录 mockobj.someMethod();2) 如果该
2006-05-08 17:12:00 3215
原创 dbunit实践指南
什么是dbunit以及为什么要使用它? dbunit是一个基于junit扩展的数据库测试框架。它提供了大量的类对与数据库相关的操作进行了抽象和封装,虽然在80%的情况,你只需使用它极少的api。它通过使用用户自定义的数据集以及相关操作使数据库处于一种可知的状态,从而使得测试自动化、可重复和相对独立。虽然不用dbunit也可以达到这种目的,但是我们必须为此付出代价(编写大量代
2006-05-08 15:37:00 11453 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人