littleQ

终于明白曾经他们失落的目光,当年的你们是否一样;间有懈怠或有颓放,难知多久方能补上;今起,不再彷徨!

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  33 Posts :: 0 Stories :: 60 Comments :: 0 Trackbacks

2008年11月14日 #

     摘要: 今天参加了公司安排的《六顶思考帽 》的培训,讲师是keylogic的王展程。
且不论王老师讲的如何,就六顶帽子所强调的思想来说,是件很有意思的事情。原作者爱德华·德·博诺 强调的概念是把思想简单话,在同一时间内只使用一个思维去思考。

六顶帽子是哪六顶?
白帽子:中性的事实和数据帽
红帽子:情感帽
黄帽子:乐观帽
黑帽子:谨慎帽
绿帽子………………  阅读全文
posted @ 2008-11-14 19:39 littleQ 阅读(1557) | 评论 (3)编辑 收藏

2008年11月12日 #

支付宝四周年活动(http://4y.alipay.com)上线,积分游乐场有个拉霸游戏,可以抽中D1便利网的44元优惠券。这个优惠券,是购买指定商区的商品才能使用的,但是,我们通过修改页面元素,就可以直接使用优惠券。比如一个42元的商品,本身是不能使用优惠券的,但是这个bug就能让你用上44元优惠券,再加上免运费,就相当于不用花钱就拿到这款42元的商品。 我随便选择一款商品,在结算中心的支付、配送信息页面,选择优惠券的radio是不可选的。

代码是这样子的:
 

只要把其中 的
<input id="radio1" name="radio1" disabled="disabled" type="radio" />修改成<input id="radio1" name="tktid" value="275809" type="radio" />,就可以在购买这款商品的时候使用这张优惠券。在服务器端没有做任何的校验。只是在昨天下午的时候,他们发现了这个bug,并及时做出了修正,并打电话过来说抱歉,不会发货。从客户端到服务器的数据,都是值得怀疑的,不做任何校验就直接处理,在安全上存在很大的漏洞。我相信D1便利网这个bug存在不是一天两天的事情了,如果大家都利用这个bug,而且对方反应比较迟钝的话,等商品都发货了才发现这个bug,就已经是不小的资损了。
完全的概念,必须刻在每一个搞网络的人的脑子里。
posted @ 2008-11-12 09:59 littleQ 阅读(1422) | 评论 (3)编辑 收藏

2008年10月19日 #

关于Spring的事务学习,我觉得klyuan有一篇文章介绍的很不错:http://www.javaeye.com/topic/78674。从这篇文章里,我弄清楚了脏读,幻读等概念。

Spring的默认事务隔离级别ISOLATION_DEFAULT ISOLATION_READ_COMMITTED 提交读;默认事务传播行为是PROPAGATION_REQUIRED,如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。

这里有个很有意思的事情,想和大家一起分享一下。
Class Sample{
    
private int id;
    
private String name;
    
//setters and getters
}


Class A 
{
    
public void functionA(Sample sample){
    
//事务处理,更新sample
    }

}


class B {
    
public void functionB(List samples){
    
//事务处理,遍历samples,调用A的functionA方法
    }

}

代码我就不详细的写出来了,大致的意思大家也应该能看明白,事务的隔离级别和传播行为都是默认的。调用B的functionB方法,大家觉得会出现什么问题?

--EOF--
Spring in action 第二版
转自我的javaeye:http://littlez.javaeye.com/admin/blogs/254980
posted @ 2008-10-19 16:49 littleQ 阅读(1375) | 评论 (5)编辑 收藏

2008年10月14日 #

现在.cn的域名第一年1块钱,淘宝上到处都有的卖。不过还有比这个更便宜的,没想到吧~不仅是便宜,而且还是免费。

CO.CC:Free Domain

当然也不是所有的都是免费的,比如我搜索friends的域名,结果是:
www.friends.co.cc is already registered

下面会显示一些其他类似的域名,比如:
www.7maples.co.cc is available Free
www.friendshotmom.co.cc is available One year domain registration for $18 
www.friends6.co.cc is available One year domain registration for $5
www.xandu.co.cc is available Free
www.friup.co.cc is available Free

等等其他很多域名。要钱不注册,免费的就注册几个玩玩好了。

点击这里去co.cc注册

posted @ 2008-10-14 16:42 littleQ 阅读(1314) | 评论 (4)编辑 收藏

2008年10月10日 #

前段时间做的一个升级包到线上后出了个bug,原因是因为做测试的时候没有完全覆盖到。痛定思痛,决定使用Clover来提高代码的单元测试覆盖率。

开发的IDE是使用的Eclipse3.4,这里主要说一下在Eclipse中如何使用Clover,也是刚使用不久,写在这里和大家探讨一下。

http://www.cenqua.com/download.jspa下载Clover,还需要申请一个license,否则无法使用。我下载了30天试用版。

下载后把Clover压缩包里有两个文件夹,features和plugins。我试着用links的方式安装Clover,不幸的失败了,不知道是不是我哪里配错了,只好直接把两个文件夹解压到ECLIPSE_HOME覆盖。

打开Eclipse,从Window->Show view->other,可以看到Clover的信息:

 

还需要导入clover.license。从Preferences->Clover->License进入:

使用load,导入clover.license。到这里,Clover已经安装完成,开始进入我们的单元测试。

 

我新建了一个project,结构如下:

 

Sample.java和SampleTest.java内容分别是:

package com.lyoe.sample;

public class Sample 
{
    
public Integer add(Integer a, Integer b) 
{
        
if (a == null || b == null
{
            
return null
;
        }

        Integer sum 
= new Integer(a.intValue() + b.intValue());
        
return
 sum;
    }

}


 

package com.lyoe.sample;

import
 com.lyoe.sample.Sample;
import
 junit.framework.TestCase;

public class SampleTest extends TestCase 
{

    
protected void setUp() throws Exception 
{
        
super
.setUp();
    }


    
public void testAdd() {
        Sample sample 
= new
 Sample();
        Integer a 
= new Integer(1
);
        Integer b 
= new Integer(2
);
        Integer c 
=
 sample.add(a, b);
        assertNotNull(c);
    }


    
protected void tearDown() throws Exception {
        
super
.tearDown();
    }


}

 

 右击JunitInAction工程,选择Properties->Clover。上面有一个Enable Clover in this project,勾上,apply->OK.

 

从Window->Show view->other进入,找到Coverage Explorer,打开,看到Clover选项的相关信息:

点击红框内的按钮,会弹出重新构建工程的提示,点击"是"即可。

 

在Coverage Explorer界面下,我们会看到:



 

 

右击SampleTest.java,选择Run as->JUnit Test,结果如下:



 

可以看到Sample.java的覆盖率为71.4%.

 

Clover还可以生成三种测试报告:PDF/HTML/XML。按钮可以在Coverage Explorer那排的选项按钮里找到(run new report)。html的测试报告见附件。

 

到这里,已经算是能在Eclipse中使用Clover的基本功能了,以后慢慢探索,欢迎大家扔砖~

 

posted @ 2008-10-10 19:28 littleQ 阅读(2088) | 评论 (1)编辑 收藏

2008年10月7日 #

用JS实现div的自动滚动。代码如下:
 1<div id="show" style="overflow:hidden;height:210px;">   
 2</div>
   
 3<script>
   
 4function startmarquee(lh,speed,delay)
{    
 5    var
 t;    
 6    var oHeight = 210/** div的高度 **/
  
 7    var p=false
;   
 8    var o=document.getElementById("show"
);    
 9    var preTop = 0
;   
10    o.scrollTop = 0
;    
11    function start()
{    
12        t=
setInterval(scrolling,speed);    
13        o.scrollTop += 1
;    
14    }
    
15    function scrolling()
{    
16        if(o.scrollTop%lh!=0 && o.scrollTop%(o.scrollHeight-oHeight-1)!=0)
{   
17            preTop =
 o.scrollTop;   
18            o.scrollTop+=1
;   
19            if(preTop >= o.scrollHeight || preTop==o.scrollTop)
{   
20                o.scrollTop = 0
;   
21            }
   
22        }
else{   
23
            clearInterval(t);    
24
            setTimeout(start,delay);    
25        }
   
26    }
    
27
    setTimeout(start,delay);    
28}
    
29startmarquee(20,20,1500
);    
30/**startmarquee(一次滚动高度,速度,停留时间);**/
    
31</script>
  
32

推荐一本学习javascript的经典好书:深入浅出JavaScript(图灵计算机科学丛书)
posted @ 2008-10-07 13:45 littleQ 阅读(8312) | 评论 (5)编辑 收藏

2008年10月6日 #

在网上收集到几个当当的优惠券,贴出来给大家共享。

序号 面值 卡号 时间
01 5元 lm163377 2008.09.01-2008.10.31
02 5元 lm163388 2008.09.01-2008.10.31
03 5元 lm163449 2008.09.01-2008.10.31
04 5元 lm163455 2008.09.01-2008.10.31
备注 礼券每张5元,购物金额大于50元

去当当看看

posted @ 2008-10-06 13:09 littleQ 阅读(249) | 评论 (0)编辑 收藏

2008年9月28日 #

转眼又是国庆了,7天假期。还记得去年国庆的时候,正是大四学生忙着找工作的时候,校园招聘也逐渐进入高潮。那时候几个要好的兄弟,很多都是准备考研,也有好几个是考研和找工作两手都抓—我就是其中一个。这是一件很痛苦的事情,每天早上很早就去图书馆占位置,一个杯子,几本书,除了吃饭上厕所,就是把头埋在书里。遇到一家公司有宣讲会了,就会很痛苦的犹豫到底要不要去。我们学院在郊区,而宣讲会招聘会都是在市中心的本部校区。

不管是考研还是找工作,都要做好充足的准备,为了这些去看很多书。考研我就不多说了,因为在两者之间我最后还是选择了工作。

<<程序员面试宝典>>java程序员面试宝典前面这本主要收录的是Cc++的题目。仔细看完这两本,基本能应付大部分C C++Java笔试题。

<<深入理解计算机系统>>:从程序员的角度看计算机系统,求职必备,考研也必备

看完以上三本,一般的IT公司基本都能搞定了。

<<C语言程序设计>>:薄归薄,可是人家是学习C语言的圣经,你也没办法。同样很薄很经典的书还有<<effective C++>><<编程珠玑>><<effective java>>

<<UNIX环境高级编程>>:linux系统程序设计的杀手。

<<算法导论>>:这么闻名的书,还用介绍么?这本书你买一本吧,不买对不起你学了多年计算机。想去好的公司,算法一定不能落下,笔试就专考你算法,不会的话抓狂也没用。

除了两本面试宝典外,其他的书都是找完工作后,都能继续留在你书架上的书,当枕头,当砖头,垫笔记本,都应该留着。

过了笔试关,还有面试关。这年头,面试可是过N关,斩N将的。一定要自信,没自信就已经歇菜一半了。不要小看那些面试官,他们面了那么多人,聊几句就基本能摸清你的底。千万要自信,唬住那些面试官。我进公司后,当时面我的主管对我说,我当时招你就欣赏你的自信。

把面试当聊天,心态要好。不要我,大不了我继续回去考研呗!我当时就这么想的。没了压力,自然就放开了。

求职的道路也许很漫长,也许也和我一样狗屎运好,只面了一家就能拿到心仪的offer。只是,在这个过程中,我们必须保持良好的心态,总会有一家好公司,给我们好offer。微笑,总是更容易让面试官记住你的名字。

posted @ 2008-09-28 21:26 littleQ 阅读(1781) | 评论 (5)编辑 收藏

2008年9月27日 #

Velocity的比较本来很简单,只是它在比较基本类型的时候,不仅比较值是否相等,还会比较类型是否相同。
拿个很简单的例子来说一下:

VelocityContext context = new VelocityContext();
long aLong = 1234L
;
context.put(
"aLong", aLong);


在velocity页面里,进行一个比较:

#if($!aLong==1234)
    类型比较成功
#else
    比较失败
#end

页面肯定会打印出"比较失败".因为在velocity中获取的变量aLong是long类型,而数字1234是默认为int类型的。虽然值相等,可是类型不同。
在velocity里,好像没有方法进行基础类型之间的强制转换,如果你知道的话,请回帖告诉我们。
那现在问题摆在这里,我们想看到"类型比较成功",应该怎么做呢?

修改java代码,把变量aLong强制转换成int类型:

context.put("aLong",(int)aLong).


不过我不是很赞成这种做法,从long强制转换成int类型,很容易造成精度丢失。
还有一种比较直接的方法,不修改java代码,直接修改vm文件:

#if("$!aLong"=="1234")
    类型比较成功
#else
    比较失败
#end


把两边都变成了String类型,就不会出现类型比较失败的情况了。
认识比较肤浅表面,还希望大家多指点一下。

posted @ 2008-09-27 10:08 littleQ 阅读(4085) | 评论 (7)编辑 收藏

2008年9月25日 #

1.td的折断换行显示
比如现在有<td style="width:30px">abcdabcdabcdabcdabcd</td>,由于是英文,是不会自动折断换行的。当然你强制的写成<td style="width:30px">abcdabc</br>dabcdabcdabcd</td>的话……
这时候,你就需要word-wrap:break-word;word-break:break-all;
<td style="width:30px;word-wrap:break-word;word-break:break-all;">abcdabcdabcdabcdabcd</td>
搞定。

2.table的row颜色交替显示
这个有很多方法,用js控制,css控制,很多很多方法,google一下一大把。我常用的就是一句话:
TABLE.result TR{background-color:expression((this.sectionRowIndex%2==0)?"#B1D7E3":"#E3F2FE");height:23px;}
指定table的class即可。
posted @ 2008-09-25 14:48 littleQ 阅读(1530) | 评论 (9)编辑 收藏