<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆:6 文章:0 評論:31 引用:0
    BlogJava 首頁 發新隨筆
    發新文章 聯系 聚合管理

    2010年8月31日

        今天終于考完junipor的免費大餐,一共5門,雖然不是非常的難,但也耗費了不少時間。總結一下,JNO-100別看是最低級的,由于其分數線要非常高,要85分,所以這門是最難的一門,很多人也是載在這門課程上的,過了這門,后面的jno-331,400為80分及格就顯的簡單多了,至于jno342,350的及格線為70分加上前面的熟讀題目基本就是輕松過關了。
         哪位兄弟也想考該類認證,我可以分享考試用的題庫。但由于不知道如何上傳。留email吧
    posted @ 2010-08-31 01:10 飛刀和雨 閱讀(213) | 評論 (0)編輯 收藏

    2007年5月17日

     

    RubyJava之間的比較

    (飛刀和雨)

    1. 基本類型的比較Ruby的基本數據類型

    1數值型(numeric)

    Java擁有8種主治類型, Boolean,byte,char.short,int,long,float,double.在開發中我們往往只常用到boolean, char, int & double 

    Ruby則巧妙的使用了2 FixnumBignum,而且ruby不需要你去定義這個數字類型,只需你輸入個數,ruby會自動地進行必須的轉換。用戶不必擔心數字之間的差別

     

     

    ruby

    Java

    字符串轉數字

    N = ‘400’.to_i

    N= new Integer(“400”).intValue( );

    隨機數

    A = rand(5)

    Random random = new java,util.Random();

     int A = random.nextInt(5);

     

    Ruby提供良好的數學運算公式,這些是java.math 所不能夠比擬的

    1. 對數的使用:Math.loh(1)    Math.log10(1000)

    2. 求矩陣算法,求解線形的方程組,復數的使用

     

    2. 字符串類型(String

    Java中處理字符串一般都是使用String類或者StringBuffer類,而ruby的使用則更加的方便和快速。Ruby的字符串的大小是可變的。可以無需使用更多的時間和內存。

     

     

    ruby

    Java

    打印時變量帶入字符串

    Puts “This is #{number}”

    System.out.println(“This is ”+number);

    字符與值轉換

    ?a è97

    int x = (int)’a’;

    大小寫轉換

    s,downcase

    s.lowerCase();

    或得字符串部分

    s[3.5]

    s.indexOf(3,5);

     

     

    3. 范圍類型。

    這類的文件是java所沒有的,所以對于很多開發人員來說這是一個很新的類型,

    代表了一個系列的值,當然

    使用s..es…e。后面的一個不包括最后一個值

    (-1..-5).to_a

    posted @ 2007-05-17 15:18 飛刀和雨 閱讀(1909) | 評論 (0)編輯 收藏

    2006年8月18日

         摘要: 對 Cocoon 的認識和初步理解(飛刀和雨): ? 目標 ...  閱讀全文
    posted @ 2006-08-18 15:00 飛刀和雨 閱讀(1539) | 評論 (0)編輯 收藏

    2006年3月2日

         摘要: 關于luncene 內層的研究 (飛刀和雨)   這是很久以前做lucene 時的總結,現在已經不用去研究那些代碼,但還是分享出來給大家以幫助。謝謝1.       從Index開始 無論哪種搜索引擎,都會需要自建一個index,所有的搜詞準確率及快速性很大程度上取決于這類的問題。因此在建索引文件的時候,我們首先要弄清楚l...  閱讀全文
    posted @ 2006-03-02 23:31 飛刀和雨 閱讀(1872) | 評論 (2)編輯 收藏

    2006年2月13日

         摘要: 周六買了個netgear路由,討價還價310買下,誰知道里面的安裝說明書不詳細,弄了一晚上沒弄出來,周日中午打車去換了個,半小時搞定,看來電腦城里次品還是蠻多的,希望大家買電腦的時候要測試好在買,否則來回出租車費加上,估計可以換個108M的了。裝好后在網上閑逛時發現有關這款路由的安裝指南,居然是doc形式,難怪搜索不容易找到,現在取其精華,給以后購買者點幫助,呵呵。 第1步 將WGR614v...  閱讀全文
    posted @ 2006-02-13 17:11 飛刀和雨 閱讀(6886) | 評論 (0)編輯 收藏

    2005年11月4日

    關于GoogleSuggest功能的實現

    @@@使用AjaxLucene對其進行完美實現@@@ (飛刀和雨)

     

    大家都對Googlesuggest的功能大概很有興趣吧,我們覺得既然Google做的出,那么我們也能做出來,先對其進行分析,1.對于網頁客戶端的按鍵的動態變化,Ajax是最好的選擇, google_suggest.JPG

    2.如果數據庫的選擇,則可以有多種選擇得,BerkeleyDB, Derby甚至自己做個txt文本文件,把所需要的單詞和result數目放在文本文件里都能夠實現,但今天我們有了一個很好的索引工具Lucene。加上Lucene對我的吸引力,因此今天我們用上大炮,卸去鳥槍。開始我們的開發之路。

     

    首先,我們先建立個demo的框架,我就做了個這樣的一個html文件,用了一個form,一個search_suggest.JPG 

    輸入的文本框,一個多選項和一個確認按鍵。后面兩個沒什么好說的,主要是文本框的設計,我做了以下的定義,<input  type="text" size=60 id="userid" name="q" autocomplete="off" onKeyUp="validate(event);"> 這樣autocompleteoff指取消網頁的cache,這樣就不會彈出以前打過的字的窗口,造成混亂。onKeyUp是實現ajax的關鍵,相應鍵盤輸入的操作。

     

    其次,開始我們的Ajax了,顧名思義,Ajax指異步的javascriptxml. 我們的所有工作都會在javascript中完成,至于ajax原理,很多地方都有很詳細的解釋,這里就指列應用了。

     validate(e){

            var key=e.KeyCode;  //獲得輸入的鍵值

      //定義按鍵只對字母數字,空格,回車,Insdel有效,可以避免一些無效的相應,并//轉發urlservlet,那么我們只要等servlet返回xml就可以了

      if (key>=48 && key<=90 || key==8 || key==32 || key== 45 || key==46){

           var url = "LuceneSearch?id=" + encodeURI(idField.value);

                req.open("GET", url, true);

              req.onreadystatechange = processRequest;

               req.send(null);

        }

    }

    這時,可以通過Ajax3req的請求進行向服務器發送,我們這里只要等待服務器返回的xml就可以了。

           function processRequest(){

                 if(req.readyState==4){

                        if(req.status==200){

                               parseMessages();

                      }else{

                               clearTable();

                         }

                  }

    }

    這里我們通過返回的狀態, 得到一個XmlHttpreadyState=4表示servlet的操作結束,status

    =200則表示Http得到正常的返回,這時調用parseMessage()就可以對所得到的XmlHttp進行操作,

          function parseMessages(){

                  var products = req.responseXML.getElementsByTagName("products")[0];

                  for (loop=0;loop<products.childNodes.length);loop++){

                         var product = products.childNodes[loop];

                         var productname = product.getElementsByTagName("pname")[0];

                         var productnumber = product.getElementsByTagName("pnumber")[0];

                  }

    }

    這里我們就在javascipt里就得到了我們所需要的詞的namenumber,然后就只要在javascript里填入一些特效,便能很方便的實現Googlesuggest.

     

    其次,我們所需要的就事編寫我們現在的LuceneSearchservlet. 這里因為通過get方式傳遞,這不對于開發j2ee的程序員來說,就是小菜一碟,我們只要定義doGet(req, res)就能可以了實現了。從這里我們得到了Text文本框里的字符串值。

    public class LuceneSearch extends HttpServlet{

           public  void doGet(HttpServletRequest request, HttpServletResponse  response)

        throws IOException, ServletException {

                  String targetId = request.getParameter("id");

           }

    }

    然后我們需要對這些字符串進行清理,去掉些無效的符號,然后把多余空格合并,成為一種真正的需要的字符串,然后我們需要用Lucene來進行搜索,先把Document把數據從數據庫里讀出來,然后制成Index。然后用Search來進行搜索,這里Lucene提供了很好的搜索方式,搜索分兩種方式,一種是單個單詞,這個就比較好辦,Lucene 提供了開頭匹配的方法PrefixQuery(), 直接套用就可以了

                          PrefixQuery query = new PrefixQuery(new Term("keyword", targetId));

                             IndexSearcher searcher = new IndexSearcher(directory);

                             Hits hits = searcher.search(query,sort);

                             for(int i=0; i<hits.length();i++){

                                              sb.append("<product>");

                                            sb.append("<pname>"+hits.doc(i).get("keyword")+"</pname>");

                                            sb.append("<pnumber>"+hits.doc(i).get("number")+"</pnumber>");

                                            sb.append("</product>");

                                }

    這樣我們就把搜索到的詞和數量都放進Xml里了這樣就出來了。

    search_demo1.JPG

    我們還可以注意到如果所需要的詞并不在開頭也能得到實現。

     

    對于詞組就比較費盡,因為首先要保證前面詞的位置性,可以任意放置,最后一個詞則必須以開頭為基準進行模糊查找,這樣才能實現其功能,還好Lucene還是考慮到了這點,有個PhrasePrefixQuery()的方法,稍稍加以改進便可以實現,

                  //首先要把詞組用split以空格分開

                  String[] targetIdArray = targetId.split(" ");

                   PhrasePrefixQuery query = new PhrasePrefixQuery();

                   for(int i=0; i<targetIdArray.length-1;i++){

                       query.add(new Term("keyword",targetIdArray[i]));

                   }

                   query.setSlop(4);        //設置詞前后位置移動范圍。

                   LinkedList termsWithPrefix = new LinkedList();

                   IndexReader ir = IndexReader.open(directory);

                   TermEnum te = ir.terms(new Term("keyword", targetIdArray[targetIdArray.length-1]));

                   do {

                      if (te.term().text().startsWith(targetIdArray[targetIdArray.length-1])) {

                            termsWithPrefix.add(te.term());

                      }

                   } while (te.next());

    這樣我們先得到最后一個單詞為開頭的詞,然后加到PrasePrefixQuery

                   query.add((Term[])termsWithPrefix.toArray(new Term[0]));

                   Hits hits;

                   hits = searcher.search(query, sort);

                   for(int i=0; i<(hits.length()>20?20:hits.length());i++){

                         sb.append("<product>");

                         sb.append("<pname>"+hits.doc(i).get("keyword")+"</pname>");

                         sb.append("<pnumber>"+hits.doc(i).get("popularity")+"</pnumber>");

                         sb.append("</product>");

                  }

    這樣我們就可以得到我們所需要的詞組了。如圖所示,很方便吧,這里就基本完成了google

    search_demo2.JPG

    所代表的suggest功能,當然,javascript里面還有一些上下鍵,鼠標移動事件的觸發,加在一起就會把我們的網頁弄得很完美了。但這些都不是重點,我們主要是對門戶網站功能的實現,如果有問題和建議,可以給我留言,謝謝。

    posted @ 2005-11-04 16:45 飛刀和雨 閱讀(3636) | 評論 (29)編輯 收藏
    CALENDER
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(4)

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜


    Powered By: 博客園
    模板提供滬江博客

    主站蜘蛛池模板: 情侣视频精品免费的国产| 久久免费视频观看| 亚洲AV乱码久久精品蜜桃| 青青草免费在线视频| 国产一级婬片A视频免费观看| 亚洲理论片在线中文字幕| 可以免费观看一级毛片黄a| 日本免费xxxx| 免费成人在线电影| 美美女高清毛片视频黄的一免费| 亚洲精品动漫在线| 亚洲乱亚洲乱淫久久| 亚洲人成网站影音先锋播放| 国产在线观看免费视频播放器| 精品久久久久久久久免费影院| 成人无码a级毛片免费| A级毛片成人网站免费看| 国产一区二区三区亚洲综合| 亚洲AV无码一区二区大桥未久| 亚洲国产精品综合久久20| 亚洲国产日韩在线人成下载| 亚洲福利一区二区三区| 亚洲VA中文字幕无码一二三区| 最近2019免费中文字幕视频三| 福利片免费一区二区三区| 国产亚洲福利一区二区免费看| 日本亚洲欧美色视频在线播放| 久久亚洲精品无码gv| 日本高清不卡中文字幕免费| 免费国产污网站在线观看不要卡| 美女免费视频一区二区| 免费无码黄网站在线看| 亚洲一级毛片免费看| 天天看片天天爽_免费播放| 亚洲国产精品一区二区第一页免 | 亚洲色偷偷偷网站色偷一区| 亚洲人色大成年网站在线观看| 久久久久亚洲精品无码网址色欲| 日本精品久久久久久久久免费 | 亚洲乱码卡一卡二卡三| 欧洲精品码一区二区三区免费看|