隨筆:6 文章:0 評(píng)論:31 引用:0
          BlogJava 首頁(yè) 發(fā)新隨筆
          發(fā)新文章 聯(lián)系 聚合管理

          2010年8月31日

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

          2007年5月17日

           

          RubyJava之間的比較

          (飛刀和雨)

          1. 基本類(lèi)型的比較Ruby的基本數(shù)據(jù)類(lèi)型

          1數(shù)值型(numeric)

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

          Ruby則巧妙的使用了2類(lèi) FixnumBignum,而且ruby不需要你去定義這個(gè)數(shù)字類(lèi)型,只需你輸入個(gè)數(shù),ruby會(huì)自動(dòng)地進(jìn)行必須的轉(zhuǎn)換。用戶(hù)不必?fù)?dān)心數(shù)字之間的差別

           

           

          ruby

          Java

          字符串轉(zhuǎn)數(shù)字

          N = ‘400’.to_i

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

          隨機(jī)數(shù)

          A = rand(5)

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

           int A = random.nextInt(5);

           

          Ruby提供良好的數(shù)學(xué)運(yùn)算公式,這些是java.math 所不能夠比擬的

          1. 對(duì)數(shù)的使用:Math.loh(1)    Math.log10(1000)

          2. 求矩陣算法,求解線(xiàn)形的方程組,復(fù)數(shù)的使用

           

          2. 字符串類(lèi)型(String

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

           

           

          ruby

          Java

          打印時(shí)變量帶入字符串

          Puts “This is #{number}”

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

          字符與值轉(zhuǎn)換

          ?a è97

          int x = (int)’a’;

          大小寫(xiě)轉(zhuǎn)換

          s,downcase

          s.lowerCase();

          或得字符串部分

          s[3.5]

          s.indexOf(3,5);

           

           

          3. 范圍類(lèi)型。

          這類(lèi)的文件是java所沒(méi)有的,所以對(duì)于很多開(kāi)發(fā)人員來(lái)說(shuō)這是一個(gè)很新的類(lèi)型,

          代表了一個(gè)系列的值,當(dāng)然

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

          (-1..-5).to_a

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

          2006年8月18日

               摘要: 對(duì) Cocoon 的認(rèn)識(shí)和初步理解(飛刀和雨): ? 目標(biāo) ...  閱讀全文
          posted @ 2006-08-18 15:00 飛刀和雨 閱讀(1539) | 評(píng)論 (0)編輯 收藏

          2006年3月2日

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

          2006年2月13日

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

          2005年11月4日

          關(guān)于GoogleSuggest功能的實(shí)現(xiàn)

          @@@使用AjaxLucene對(duì)其進(jìn)行完美實(shí)現(xiàn)@@@ (飛刀和雨)

           

          大家都對(duì)Googlesuggest的功能大概很有興趣吧,我們覺(jué)得既然Google做的出,那么我們也能做出來(lái),先對(duì)其進(jìn)行分析,1.對(duì)于網(wǎng)頁(yè)客戶(hù)端的按鍵的動(dòng)態(tài)變化,Ajax是最好的選擇, google_suggest.JPG

          2.如果數(shù)據(jù)庫(kù)的選擇,則可以有多種選擇得,BerkeleyDB, Derby甚至自己做個(gè)txt文本文件,把所需要的單詞和result數(shù)目放在文本文件里都能夠?qū)崿F(xiàn),但今天我們有了一個(gè)很好的索引工具Lucene。加上Lucene對(duì)我的吸引力,因此今天我們用上大炮,卸去鳥(niǎo)槍。開(kāi)始我們的開(kāi)發(fā)之路。

           

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

          輸入的文本框,一個(gè)多選項(xiàng)和一個(gè)確認(rèn)按鍵。后面兩個(gè)沒(méi)什么好說(shuō)的,主要是文本框的設(shè)計(jì),我做了以下的定義,<input  type="text" size=60 id="userid" name="q" autocomplete="off" onKeyUp="validate(event);"> 這樣autocompleteoff指取消網(wǎng)頁(yè)的cache,這樣就不會(huì)彈出以前打過(guò)的字的窗口,造成混亂。onKeyUp是實(shí)現(xiàn)ajax的關(guān)鍵,相應(yīng)鍵盤(pán)輸入的操作。

           

          其次,開(kāi)始我們的Ajax了,顧名思義,Ajax指異步的javascriptxml. 我們的所有工作都會(huì)在javascript中完成,至于ajax原理,很多地方都有很詳細(xì)的解釋?zhuān)@里就指列應(yīng)用了。

           validate(e){

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

            //定義按鍵只對(duì)字母數(shù)字,空格,回車(chē),Insdel有效,可以避免一些無(wú)效的相應(yīng),并//轉(zhuǎn)發(fā)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);

              }

          }

          這時(shí),可以通過(guò)Ajax3個(gè)req的請(qǐng)求進(jìn)行向服務(wù)器發(fā)送,我們這里只要等待服務(wù)器返回的xml就可以了。

                 function processRequest(){

                       if(req.readyState==4){

                              if(req.status==200){

                                     parseMessages();

                            }else{

                                     clearTable();

                               }

                        }

          }

          這里我們通過(guò)返回的狀態(tài), 得到一個(gè)XmlHttpreadyState=4表示servlet的操作結(jié)束,status

          =200則表示Http得到正常的返回,這時(shí)調(diào)用parseMessage()就可以對(duì)所得到的XmlHttp進(jìn)行操作,

                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里填入一些特效,便能很方便的實(shí)現(xiàn)Googlesuggest.

           

          其次,我們所需要的就事編寫(xiě)我們現(xiàn)在的LuceneSearchservlet. 這里因?yàn)橥ㄟ^(guò)get方式傳遞,這不對(duì)于開(kāi)發(fā)j2ee的程序員來(lái)說(shuō),就是小菜一碟,我們只要定義doGet(req, res)就能可以了實(shí)現(xiàn)了。從這里我們得到了Text文本框里的字符串值。

          public class LuceneSearch extends HttpServlet{

                 public  void doGet(HttpServletRequest request, HttpServletResponse  response)

              throws IOException, ServletException {

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

                 }

          }

          然后我們需要對(duì)這些字符串進(jìn)行清理,去掉些無(wú)效的符號(hào),然后把多余空格合并,成為一種真正的需要的字符串,然后我們需要用Lucene來(lái)進(jìn)行搜索,先把Document把數(shù)據(jù)從數(shù)據(jù)庫(kù)里讀出來(lái),然后制成Index。然后用Search來(lái)進(jìn)行搜索,這里Lucene提供了很好的搜索方式,搜索分兩種方式,一種是單個(gè)單詞,這個(gè)就比較好辦,Lucene 提供了開(kāi)頭匹配的方法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>");

                                      }

          這樣我們就把搜索到的詞和數(shù)量都放進(jìn)Xml里了這樣就出來(lái)了。

          search_demo1.JPG

          我們還可以注意到如果所需要的詞并不在開(kāi)頭也能得到實(shí)現(xiàn)。

           

          對(duì)于詞組就比較費(fèi)盡,因?yàn)槭紫纫WC前面詞的位置性,可以任意放置,最后一個(gè)詞則必須以開(kāi)頭為基準(zhǔn)進(jìn)行模糊查找,這樣才能實(shí)現(xiàn)其功能,還好Lucene還是考慮到了這點(diǎn),有個(gè)PhrasePrefixQuery()的方法,稍稍加以改進(jìn)便可以實(shí)現(xiàn),

                        //首先要把詞組用split以空格分開(kāi)

                        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);        //設(shè)置詞前后位置移動(dòng)范圍。

                         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());

          這樣我們先得到最后一個(gè)單詞為開(kāi)頭的詞,然后加到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功能,當(dāng)然,javascript里面還有一些上下鍵,鼠標(biāo)移動(dòng)事件的觸發(fā),加在一起就會(huì)把我們的網(wǎng)頁(yè)弄得很完美了。但這些都不是重點(diǎn),我們主要是對(duì)門(mén)戶(hù)網(wǎng)站功能的實(shí)現(xiàn),如果有問(wèn)題和建議,可以給我留言,謝謝。

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

          常用鏈接

          留言簿(4)

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜


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

          主站蜘蛛池模板: 新营市| 淄博市| 锦州市| 舒城县| 鄯善县| 任丘市| 庆城县| 磐安县| 加查县| 五大连池市| 庆安县| 宁安市| 儋州市| 城固县| 丰镇市| 东台市| 平南县| 赤壁市| 兴宁市| 江川县| 留坝县| 陆川县| 洪江市| 慈利县| 宜昌市| 邵武市| 东海县| 湘西| 永善县| 罗江县| 章丘市| 大化| 福泉市| 宁化县| 潮州市| 根河市| 剑河县| 成安县| 龙门县| 大关县| 永靖县|