隨筆-153  評論-235  文章-19  trackbacks-0
           
          setTimeout(script,millisecond); 是從現在算起多少微秒后運行該代碼(只運行一次)

          setInterval(script,millisecond);  是每隔多少微秒運行一次代碼

          示例:
          1.執行一次
          <span id="time"></span> 秒
          <script type="text/javascript">
          var i = 1;
          var txt = document.getElementById("time");
          function addT(i) {
          txt.innerHTML
          =i;
          }
          setTimeout("addT(i++)",1000);
          </script>


          2.復制執行
          <span id="time">3</span> 秒
          <script type="text/javascript">
          var i = 1;
          var txt = document.getElementById("time");
          function addT(i) {
          txt.innerHTML
          =i;
          }
          setInterval(
          "addT(i++)",1000); 
          </script>

          setTimeout也可以做成重復執行
          <span id="time"></span> 秒
          <script type="text/javascript">
          var i = 1;
          var txt = document.getElementById("time");
          function addT(i) {
          txt.innerHTML
          =i;
          setTimeout(
          "addT(i++)",1000);
          }
          addT(i);
          </script>
          posted @ 2008-07-10 21:36 流浪汗 閱讀(1088) | 評論 (0)編輯 收藏

          linux下的很軟件都是 tar.gz后綴的,解壓久了不用就忙了,寫備忘?,F我知的直接解壓方法有兩種

          1.gunzip與tar

          gunzip < *.tar.gz | tar -xvf -

          2.只用tar
          tar -zxvf *.tar.gz

          說明:
          z表示:通過gzip指令處理備份文件
          x表示:解壓
          v表示:輸出解壓過程信息
          f表示:指定備份文件
          posted @ 2008-07-08 11:14 流浪汗 閱讀(2535) | 評論 (0)編輯 收藏
          solr 1.3 還沒有正式發布,在這里記錄下從solr 1.2的主要改動:
          1. solrj     solr的java客戶端,可以嵌入搜索(不是http/xml交互)
          2. multi-core     多核心——1個web應用可以用多種的搜索服務,即可以多個schema.xml
          3. search components    搜索組件。
          4. distributed search    分布式搜索。

          api的變動:

          1. org.apache.util 包下的大部分類移到org.apache.common.util包下面。
          2. org.apache.solr.request包下面的很多類移到org.apache.solr.common.params包下面。
          3. org.apache.solr.request.StandardRequestHandler 類改為 org.apache.solr.handler.StandardRequestHandler,同時它改為org.apache.solr.handler.SearchHandler的子類
          4. org.apache.solr.request.DisMaxRequestHandler 類改為 org.apache.solr.handler.DisMaxRequestHandler,同時不推薦在 StandardRequestHandler 的初始參數用'defType=dismax' 。
          posted @ 2008-07-08 10:20 流浪汗 閱讀(462) | 評論 (0)編輯 收藏
              solr 分布式其實是分發,這概念像Mysql的復制。所有的索引的改變都在主服務器里,所有的查詢都在從服務里。從服務器不斷地(定時)從主服務器拉內容,以保持數據一致。

          先描述下我的環境:
          solr-master(192.168.1.181), solr-slave(192.168.1.155), jdke1.6.0_06, tomcat-5.5.26, solr-1.2 
          tomcat_home在 /home/chenlb/tomcat-5.5.26
          solr_home在 /home/chenlb/solr-home
          solr解壓后的目錄 /home/chenlb/solr-1.2.0
          最好兩機可以ssh無密碼交互,ssh無密碼登錄請看:http://www.aygfsteel.com/chenlb/archive/2008/07/03/212293.html

              solr的分發是用rsync的。
              快照與分發過程:

          1.snapshooter 命令在主服務器產生快照。一般在commit和optimize之后被solr調用。

          2.snappuller 命令在從服務器運行,所做的事是從主服務器拉最新的快照。 用rsync的daemon模式來運行可以獲得更好的性能與更底的CPU利用率。

          3.snapinstaller 命令在從服務器運行,當從服務器從主服務器拉完快照后才執行。它會通知本地Solr服務器打開一個新的index reader,然后預熱這個新index reader的緩存,此時有請求,原來的index reader繼續為這此請求服務。一但預熱完成,Solr 啟用新的index reader,舊的被消亡。

              Solr 的Distribution(分發) 在Scripts文件里記錄。在solr_home/conf/scripts.conf文件里。

          我現在這樣配置:
          user=chenlb
          solr_hostname
          =localhost
          solr_port
          =8080
          rsyncd_port
          =18080
          data_dir
          =/home/chenlb/solr-home/data
          webapp_name
          =solr
          master_host
          =192.168.1.181
          master_data_dir
          =/home/chenlb/solr-home/data
          master_status_dir
          =/home/chenlb/solr-home/logs

          上面的配置兩機都一樣。

          1.安裝好solr后啟動它們,怎樣在tomcat安裝solr請看:http://www.aygfsteel.com/chenlb/archive/2008/03/25/188459.html
          [chenlb@solr-master ~]$ ./tomcat-5.5.26/bin/startup.sh

          啟用且啟動rsync
          [chenlb@solr-master ~]$ ./solr-home/bin/rsyncd-enable -u chenlb -v
          [chenlb@solr-master ~]$ ./solr-home/bin/rsyncd-start -u chenlb -v


          [chenlb@solr-slave ~]$ ./tomcat-5.5.26/bin/startup.sh

          2.solr-master
          先修改post.sh
          [chenlb@solr-master ~]$ cd solr-1.2.0/example/exampledocs/
          [chenlb@solr
          -master exampledocs]$ vi post.sh
          [chenlb@solr
          -master exampledocs]$
          #把http://localhost:8389/solr/update改下面的
          http://localhost:8080/solr/update

          提交數據
          [chenlb@solr-master exampledocs]$ ./post.sh *.xml

          產生快照
          [chenlb@solr-master ~]$ ./solr-home/bin/snapshooter -u chenlb -v

          說明:由于<listener event="postCommit" class="solr.RunExecutableListener">...</listener>沒有設置成功(出現java.io.IOException: Cannot run program "snapshooter" (in directory "solr/bin"): java.io.IOException: error=2, No such file or directory,現在還沒解決),可以只能手動生成快照(當然也可以cron)

          3.solr-slave
          啟用快照下拉
          [chenlb@solr-slave ~]$ ./solr-home/bin/snappuller-enable -u chenlb -v

          拉快照
          [chenlb@solr-slave ~]$ ./solr-home/bin/snappuller -u chenlb -v

          安裝
          [chenlb@solr-slave ~]$ ./solr-home/bin/snapinstaller -u chenlb -v


          現在可以在solr-slave里看結果了:
          http://192.168.1.155:8080/solr/select?q=solr
          http://192.168.1.181:8080/solr/select?q=solr

          看結果是否一樣。
          posted @ 2008-07-04 16:49 流浪汗 閱讀(3175) | 評論 (0)編輯 收藏

              由于svn服務器的調整,很多項目里的鏈接還是舊的服務器,又由于項目里有些東西還沒有提交,所不能刪除svn的元數據,怎樣才能適應svn的遷移呢?

              我的項目全在Eclipse下面,用subclipse客戶端,在subclipse找了好久沒找到此功能,最后在TortoiseSVN找,找到了右擊本地與svn相連的目錄-->"TortoiseSVN"-->"Reloate..."在to URL那改就行了。^_^
           
              subclipse遠不如TortoiseSVN強大,且它還依賴TortoiseSVN——如果沒有TortoiseSVN,subclipse不能保存密碼。

          posted @ 2008-07-04 11:06 流浪汗 閱讀(1532) | 評論 (1)編輯 收藏
          ssh 無密碼登錄要使用公鑰與私鑰。linux下可以用用ssh-keygen生成公鑰/私鑰對,下面我以CentOS為例。

          有機器A(192.168.1.155),B(192.168.1.181)。現想A通過ssh免密碼登錄到B。

          1.在A機下生成公鑰/私鑰對。
          [chenlb@A ~]$ ssh-keygen -t rsa -''

          -P表示密碼,-P '' 就表示空密碼,也可以不用-P參數,這樣就要三車回車,用-P就一次回車。
          它在/home/chenlb下生成.ssh目錄,.ssh下有id_rsa和id_rsa.pub。

          2.把A機下的id_rsa.pub復制到B機下,在B機的.ssh/authorized_keys文件里,我用scp復制。
          [chenlb@A ~]$ scp .ssh/id_rsa.pub chenlb@192.168.1.181:/home/chenlb/id_rsa.pub 
          chenlb@
          192.168.1.181's password:
          id_rsa.pub                                    100%  223     0.2KB/s   00:00

          由于還沒有免密碼登錄的,所以要輸入密碼。

          3.B機把從A機復制的id_rsa.pub添加到.ssh/authorzied_keys (打錯了,使用下面的代碼塊)文件里。
          [chenlb@B ~]$ cat id_rsa.pub >> .ssh/authorized_keys
          [chenlb@B 
          ~]$ chmod 600 .ssh/authorized_keys

          authorized_keys的權限要是600。

          4.A機登錄B機。
          [chenlb@A ~]$ ssh 192.168.1.181
          The authenticity of host 
          '192.168.1.181 (192.168.1.181)' can't be established.
          RSA key fingerprint is 00:a6:a8:87:eb:c7:40:10:39:cc:a0:eb:50:d9:6a:5b.
          Are you sure you want to 
          continue connecting (yes/no)? yes
          Warning: Permanently added 
          '192.168.1.181' (RSA) to the list of known hosts.
          Last login: Thu Jul  
          3 09:53:18 2008 from chenlb
          [chenlb@B 
          ~]$

          第一次登錄是時要你輸入yes。

          現在A機可以無密碼登錄B機了。

          小結:登錄的機子可有私鑰,被登錄的機子要有登錄機子的公鑰。這個公鑰/私鑰對一般在私鑰宿主機產生。上面是用rsa算法的公鑰/私鑰對,當然也可以用dsa(對應的文件是id_dsa,id_dsa.pub)

          想讓A,B機無密碼互登錄,那B機以上面同樣的方式配置即可。

          參考:SSH-KeyGen 的用法 http://blog.163.com/chen98_2006@126/blog/static/158584272007101862513886/
          posted @ 2008-07-03 12:19 流浪汗 閱讀(13745) | 評論 (3)編輯 收藏
          我用CentOS為例。

          簡介:
              cron來源于希臘單詞chronos(意為“時間”),是linux系統下一個自動執行指定任務的程序。例如,你想在每晚睡覺期間創建某些文件或文件夾的備份,就可以用cron來自動執行。

          CentOS的cron默認是開機啟動的,如果沒有開機啟動可以用chkconfig
          [root@chenlb-pc ~]# chkconfig crond on

          查看crond是否開機啟動
          [root@chenlb-pc ~]# chkconfig --list crond
          crond           0:關閉  1:關閉  2:啟用  3:啟用  4:啟用  5:啟用  6:關閉

          說明已經是開機啟動。

          cron是執行crontab里的任務,所以要把任務加到crontab里。

          1.查看當前用戶的任務。
          [chenlb@chenlb-pc ~]$ crontab -l
          no crontab 
          for chenlb

          現在還沒有任務,可以用crontab -e來編輯任務(可以直接輸入crontab是新建,然后回車,Ctrl+D保存,注意這樣會覆蓋以前的,不建議直接用crontab),然后再新的文件里輸入以下內容。

          2.編輯任務
          [chenlb@chenlb-pc ~]$ crontab -e

          */1 * * * * echo `date` >> /home/chenlb/cron-log.txt

          上面的意思是指每一分鐘打印時間放到/home/chenlb/cron-log.txt文件里,過一分鐘后看是否有效,如下命令。
          [chenlb@chenlb-pc ~]$ tail /home/chenlb/cron-log.txt
          Wed Jul 
          2 15:43:01 CST 2008

          3.刪除任務
          [chenlb@chenlb-pc ~]$ crontab -r


          說明:如果是root除了有以上的功能,還有-u參數為用戶查看、編輯、刪除任務,如用chenlb編輯任務。
          [root@chenlb-pc ~]# crontab -u chenlb -e

          解說下任務的語法:
              min hour day month week user command

          忽略用“*”,每多少的用“/多少”,多個的用“,”,到關系的用“-”

          ---------------------------------來自htmlor's blog的示例----------------------------------------------

          以下是cron語句中的字段與字段說明:

          字段 說明
          1 分鐘(0-59)
          2 小時(2-24)
          3 日期(1-31)
          4 月份(1-12;或英文縮寫Jan、Feb等)
          5 周幾(0-6,0為周日;或單詞縮寫Sun、Mon等)
          6 用戶名(執行命令時以此用戶的身份)
          7 要執行的命令(路徑)

          現在來看第一行:

          12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

          這條語句將在每天的凌晨3點12分(03:12)運行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。>> /dev/null 2>&1 表示把所有標準輸出發送到 /dev/null(linux的回收站),把標準錯誤輸出(2)發送到和標準輸出(1)同樣的地方(即 /dev/null)。運行這行命令將不會產生任何輸出。

          這條語句可以變得稍微復雜一點:

          30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

          它將在6月13日周一的15:30運行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。

          以下語句可以達到同樣的效果:

          30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

          如果你想以用戶joey的身份每小時的第15分鐘運行某個程序,可以使用:

          15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

          其中的星號(*)是通配符,表示cron將忽略這個字段。

          如果你想每兩小時就運行某個程序,可以在小時字段里使用 */2。它將會在2點,4點,6點……22點,24點運行。具體語句如下:

          0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

          cron語句中還可以使用逗號(,)來指定多個時間。例如你想在每小時的15分和30分運行某個程序,可以在分鐘字段使用 15,30

          15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

          如果你想在每月的第一周(即1號到7號)每天的指定時間運行某個程序,可以在日期字段使用 1-7

          15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

          這條語句將在每月的第1-7日每兩小時的15分和30分(02:15,02:30……22: 15,22:30等)運行 /usr/bin/somecommand 命令。

          如果你想在每天的16:18執行一個腳本集合,可以把所有要執行的腳本放到一個目錄中(如 /home/username/cron),可以使用:

          18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

          如果你想保存某個程序的輸出結果, 可以把 >> /dev/null 2>&1 替換為 >> /home/user/somecommand.log 2>&1 。



          參考:http://blog.htmlor.com/2006/07/25/cron_guide/
          posted @ 2008-07-02 16:23 流浪汗 閱讀(5398) | 評論 (0)編輯 收藏
           Solr 涉及的術語,簡單介紹下:
          • Auto-warming(自動預熱) 當打開一個新的緩存時,它把在舊緩存里命中較高的鍵/值添加到新的緩存里。
          • Constraint(限制) 限制對象集的方法。
          • Facet(層面) 對象集的一個方面或特定的一部分,這可以用來資源分類。
          • Filter(過慮器) 它由上下方決定,可能是:
            1. Constraint(限制)的那稱呼。
            2. 限制查詢結果的"fq"參數。
            3. 涉及特定的Lucene的"Filter"類。
          • Solr Home Dir(Solr主目錄) 又叫Solr Home Directory或Solr Home,它是Solr查找配置文件、數據、插件的主要目錄,默認是./solr目錄,可以JNDI配置solr/home屬性,也可配置系統的solr.solr.home屬性。
          • Static warming(靜態預熱) 當newSearcher 和 firstSearcher 的事件監聽器強逼預熱事件時,Solr會根據solrconfig.xml配置里的"static"查詢來填充緩存。

          來源:http://wiki.apache.org/solr/SolrTerminology

           

          說的不對的地方,希望指出,一起學習。

          posted @ 2008-06-27 13:29 流浪汗 閱讀(474) | 評論 (0)編輯 收藏

              兩字符串相似度計算方法有好多,現對基于編距的算法的相似度計算自己總結下。

           

              簡單介紹下Levenshtein Distance(LD):LD 可能衡量兩字符串的相似性。它們的距離就是一個字符串轉換成那一個字符串過程中的添加、刪除、修改數值。

              舉例:

          • 如果str1="test",str2="test",那么LD(str1,str2) = 0。沒有經過轉換。
          • 如果str1="test",str2="tent",那么LD(str1,str2) = 1。str1的"s"轉換"n",轉換了一個字符,所以是1。

          如果它們的距離越大,說明它們越是不同。

           

               Levenshtein distance最先是由俄國科學家Vladimir Levenshtein在1965年發明,用他的名字命名。不會拼讀,可以叫它edit distance(編輯距離)。

           

              Levenshtein distance可以用來:

          • Spell checking(拼寫檢查)
          • Speech recognition(語句識別)
          • DNA analysis(DNA分析)
          • Plagiarism detection(抄襲檢測)

          LD用m*n的矩陣存儲距離值。算法大概過程:

          1. str1或str2的長度為0返回另一個字符串的長度。
          2. 初始化(n+1)*(m+1)的矩陣d,并讓第一行和列的值從0開始增長。
          3. 掃描兩字符串(n*m級的),如果:str1[i] == str2[j],用temp記錄它,為0。否則temp記為1。然后在矩陣d[i][j]賦于d[i-1][j]+1 、d[i][j-1]+1、d[i-1][j-1]+temp三者的最小值。
          4. 掃描完后,返回矩陣的最后一個值即d[n][m]

          最后返回的是它們的距離。怎么根據這個距離求出相似度呢?因為它們的最大距離就是兩字符串長度的最大值。對字符串不是很敏感。現我把相似度計算公式定為1-它們的距離/字符串長度最大值。

           

              源碼:

          package com.chenlb.algorithm;

          /**
           * 編輯距離的兩字符串相似度
           * 
           * 
          @author chenlb 2008-6-24 下午06:41:55
           
          */
          public class Similarity {

              
          private int min(int one, int two, int three) {
                  
          int min = one;
                  
          if(two < min) {
                      min 
          = two;
                  }
                  
          if(three < min) {
                      min 
          = three;
                  }
                  
          return min;
              }
              
              
          public int ld(String str1, String str2) {
                  
          int d[][];    //矩陣
                  int n = str1.length();
                  
          int m = str2.length();
                  
          int i;    //遍歷str1的
                  int j;    //遍歷str2的
                  char ch1;    //str1的
                  char ch2;    //str2的
                  int temp;    //記錄相同字符,在某個矩陣位置值的增量,不是0就是1
                  if(n == 0) {
                      
          return m;
                  }
                  
          if(m == 0) {
                      
          return n;
                  }
                  d 
          = new int[n+1][m+1];
                  
          for(i=0; i<=n; i++) {    //初始化第一列
                      d[i][0= i;
                  }
                  
          for(j=0; j<=m; j++) {    //初始化第一行
                      d[0][j] = j;
                  }
                  
          for(i=1; i<=n; i++) {    //遍歷str1
                      ch1 = str1.charAt(i-1);
                      
          //去匹配str2
                      for(j=1; j<=m; j++) {
                          ch2 
          = str2.charAt(j-1);
                          
          if(ch1 == ch2) {
                              temp 
          = 0;
                          } 
          else {
                              temp 
          = 1;
                          }
                          
          //左邊+1,上邊+1, 左上角+temp取最小
                          d[i][j] = min(d[i-1][j]+1, d[i][j-1]+1, d[i-1][j-1]+temp);
                      }
                  }
                  
          return d[n][m];
              }
              
              
          public double sim(String str1, String str2) {
                  
          int ld = ld(str1, str2);
                  
          return 1 - (double) ld / Math.max(str1.length(), str2.length()); 
              }
              
              
          public static void main(String[] args) {
                  Similarity s 
          = new Similarity();
                  String str1 
          = "chenlb.blogjava.net";
                  String str2 
          = "chenlb.javaeye.com";
                  System.out.println(
          "ld="+s.ld(str1, str2));
                  System.out.println(
          "sim="+s.sim(str1, str2));
              }
          }

          不知sim方法中的公式是合理,個人認為差強人意思,^_^

           

          參考: http://www.merriampark.com/ld.htm

          posted @ 2008-06-25 10:08 流浪汗 閱讀(3844) | 評論 (2)編輯 收藏
              發現中國科學技術大學有快速的CentOS的鏡像。具體設置如下:
          1.以root用戶進入CentOS系統。
          [root@chenlb ~]# cd /etc/yum.repos.d

          2.備份repo
          [root@chenlb yum.repos.d]# mv CentOS-Base.repo  CentOS-Base.repo.save

          3.從USTC下載新的repo
          [root@chenlb yum.repos.d]# wget http://centos.ustc.edu.cn/CentOS-Base.repo

          現在可以yum了。^_^

          鏈接:http://centos.ustc.edu.cn/
          posted @ 2008-06-24 23:45 流浪汗 閱讀(1527) | 評論 (2)編輯 收藏
          僅列出標題
          共16頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 

           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿(14)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞分類

          新聞檔案

          收藏夾

          友情鏈接

          同學鏈接

          學習鏈接

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 560369
          • 排名 - 86

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 长沙县| 博湖县| 柘城县| 香港 | 文昌市| 牡丹江市| 迁西县| 柘荣县| 舟山市| 慈利县| 门源| 健康| 旌德县| 广德县| 青田县| 黑河市| 翁牛特旗| 平谷区| 府谷县| 都匀市| 高雄县| 略阳县| 封丘县| 吉安县| 赤城县| 合江县| 霍邱县| 肥乡县| 德格县| 鄂托克前旗| 尉犁县| 胶州市| 峨边| 霍山县| 伊宁县| 岢岚县| 梨树县| 莲花县| 邹城市| 色达县| 墨玉县|