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

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

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

    隨筆-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 流浪汗 閱讀(1080) | 評論 (0)編輯 收藏

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

    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 流浪汗 閱讀(2531) | 評論 (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 流浪汗 閱讀(452) | 評論 (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.tkk7.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.tkk7.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 流浪汗 閱讀(3166) | 評論 (0)編輯 收藏

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

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

    posted @ 2008-07-04 11:06 流浪汗 閱讀(1524) | 評論 (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 流浪汗 閱讀(13739) | 評論 (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 流浪汗 閱讀(5387) | 評論 (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 流浪汗 閱讀(470) | 評論 (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 流浪汗 閱讀(3833) | 評論 (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 流浪汗 閱讀(1521) | 評論 (2)編輯 收藏
    僅列出標題
    共16頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 亚洲中字慕日产2021| 免费一本色道久久一区| 亚洲精品动漫免费二区| 亚洲天堂中文字幕| 久久久久久亚洲精品不卡| 成人免费视频小说| 9277手机在线视频观看免费| 免费国产污网站在线观看不要卡| 亚洲中文字幕一二三四区苍井空| 亚洲av无码乱码国产精品fc2 | 亚洲嫩草影院久久精品| 亚洲精品成人区在线观看| 拍拍拍又黄又爽无挡视频免费| 99re在线精品视频免费| 免费观看久久精彩视频| 成人精品视频99在线观看免费| 立即播放免费毛片一级| 亚洲国产精品无码久久| 亚洲日本乱码卡2卡3卡新区| 亚洲精品美女在线观看播放| 亚洲国产精品国自产电影| 亚洲国产精品久久久天堂| 国外亚洲成AV人片在线观看| 亚洲天堂中文字幕在线| 亚洲国产成人久久综合碰| 免费A级毛片无码A| 国产传媒在线观看视频免费观看| 毛色毛片免费观看| 毛片网站免费在线观看| 成人毛片免费观看视频大全| 成人毛片免费观看视频| 免费看AV毛片一区二区三区| 韩国日本好看电影免费看| 国产美女精品视频免费观看| 永久免费视频网站在线观看| 台湾一级毛片永久免费| 国产乱子精品免费视观看片| 91精品免费国产高清在线| 国产一卡2卡3卡4卡2021免费观看| 4399好看日本在线电影免费| 无码免费午夜福利片在线 |