littleQ

          終于明白曾經他們失落的目光,當年的你們是否一樣;間有懈怠或有頹放,難知多久方能補上;今起,不再彷徨!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            33 Posts :: 0 Stories :: 60 Comments :: 0 Trackbacks

          2008年9月25日 #

               摘要: 今天參加了公司安排的《六頂思考帽 》的培訓,講師是keylogic的王展程。
          且不論王老師講的如何,就六頂帽子所強調的思想來說,是件很有意思的事情。原作者愛德華·德·博諾 強調的概念是把思想簡單話,在同一時間內只使用一個思維去思考。

          六頂帽子是哪六頂?
          白帽子:中性的事實和數據帽
          紅帽子:情感帽
          黃帽子:樂觀帽
          黑帽子:謹慎帽
          綠帽子………………  閱讀全文
          posted @ 2008-11-14 19:39 littleQ 閱讀(1577) | 評論 (3)編輯 收藏

          支付寶四周年活動(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 閱讀(1438) | 評論 (3)編輯 收藏

          關于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 閱讀(1389) | 評論 (5)編輯 收藏

          現在.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 閱讀(1335) | 評論 (4)編輯 收藏

          前段時間做的一個升級包到線上后出了個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 閱讀(2103) | 評論 (1)編輯 收藏

          用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 閱讀(8339) | 評論 (5)編輯 收藏

          在網上收集到幾個當當的優惠券,貼出來給大家共享。

          序號 面值 卡號 時間
          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 閱讀(264) | 評論 (0)編輯 收藏

          轉眼又是國慶了,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 閱讀(1813) | 評論 (5)編輯 收藏

          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 閱讀(4107) | 評論 (7)編輯 收藏

          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 閱讀(1547) | 評論 (9)編輯 收藏