學習筆記,每一天我們都在進步。
新年快乐!
2008/05/26 10:22
玩 Linux 最常見的方式就是切 Partition 做多重開機, 讓 GRUB 寫入 MBR 做開機選單. 但是若不小心把 Linux Partition 刪掉了, 或是哪天不想玩 Linux 了, 想恢復為 Windows 單一作業環境的時候, 就得把 Windows Pre-Boot 程式寫回 MBR 的前 446 Bytes 喔!

方法一:使用 DOS / Win9x / ME 開機片開機

開機後在 MS-DOS 模式下執行 fdisk /mbr
重新啟動電腦即可


方法二:使用 Windows 2000 / XP 光碟片開機 (過程中需要 Administrator 密碼)

在 Welcome to Setup (歡迎使用安裝程式) 畫面中按 R 或 F10 進入「Windows 修復主控台」

進入主控台後, 輸入 fixmbr
重新啟動電腦即可

詳細操作過程請參考微軟官方網頁 - Windows XP 修復主控台的說明
2008/02/26 16:03
Tags: ,
Apache中URL的Rewrite
现在讲究面向搜索引擎的开发。当我们使用jsp时,搜索引擎的收藏效果不是很好,所以我们可以转义这样的URL。比如:我们可以借助rewrite使用/blog/user/0.html来访问/blog/user/blog_show.jsp?userid=0使搜索引擎更容易搜集到我们的网站信息。具体配置很简单,介绍如下

首先:还是打开%Apache2%\conf文件夹,找到http.conf文件,搜索rewrite找到#LoadModule rewrite_module modules/mod_rewrite.so,将它前面的#去掉。
然后在你要使用的VirtualHost中加入

RewriteEngine   on
#打开rewrite引擎
RewriteLog       logs/rewrite.log
#rewrite日志,可选配置,建议使用
RewriteLogLevel 3
#rewrite日志等级,默认为0不记录,所以只要使用日志,就要配置,3就全记录了,可以更大但没有什么意义。
RewriteRule     /blog/user/(.+)\.html$ /blog/user/blog_show.jsp?userid=$1  [PT ]
#转义的规则,使用正则表达式(我也不熟,自己去研究吧),我上面的例子是将/blog/user/*.html的URL转义成/blog/user.blog_show.jsp?userid=*。
注意后面的 PT 这是保证你这样转义之后Apache能将它转给Tomcat否则Apache会自己处理这个链接,造成什么也得不到。
注意 PT ,[R]的区别,使用 PT 在客户地址栏的显示还是*.html,如果将 PT 换成[R]则地址栏也会显示成.jsp
2008/01/29 16:37
Tags: ,
Lucene是可以做到的,利用lucene的Filter,具体可以查看lucene的api中的org.apache.lucene.search.CachingWrapperFilter,它可以缓存上次的搜索结果,从而实现在结果中的搜索。

测试实例:
package com.wsjava;
import java.io.IOException;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.CachingWrapperFilter;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryFilter;

public class IndexTest {

        /**
         * @param args
         * @throws ParseException
         * @throws IOException
         */
        public static void main(String[] args) throws IOException, ParseException {
                index();
                search("day"); //简单搜索
                searchInResult("day", "you"); //在结果集中搜索
        }
        
        public static void index() throws IOException {
                IndexWriter writer = new IndexWriter("d:/tesindex",new SimpleAnalyzer(), true);
                writer.setMaxMergeDocs(1000);
                writer.setMergeFactor(100);
                for (int i = 0; i < 10; i++) {
                        Document doc = new Document();
                        String content = "How do you do?";
                        if (i >= 5) {
                                content = "What's a good day. ";
                        }
                        if (i >= 7) {
                                content = "Nice day. Thanks you!";
                        }
                        doc.add(new Field("content", content, Field.Store.YES,Field.Index.TOKENIZED));
                        writer.addDocument(doc);
                }

        }
        
        //简单实现对qw的搜索.
        public static void search(String qw) throws IOException, ParseException {
                QueryParser queryParser = new QueryParser("content",new SimpleAnalyzer());
                Query query = queryParser.parse(qw.trim());
                QueryFilter filter = new QueryFilter(query);
                
                search(query, filter);
        }
        
        //在搜索oldqw的结果集中搜索qw.
        public static void searchInResult(String qw, String oldqw) throws ParseException, IOException {                
                QueryParser queryParser = new QueryParser("content",new SimpleAnalyzer());
                Query query = queryParser.parse(qw.trim());
                Query oldQuery = queryParser.parse(oldqw.trim());
                QueryFilter oldFilter = new QueryFilter(oldQuery);
                CachingWrapperFilter filter = new CachingWrapperFilter(oldFilter);
                
                search(query, filter);
        }
        
        private static void search(Query query, Filter filter) throws IOException, ParseException {
                IndexSearcher ins = new IndexSearcher("d:/tesindex");
                Hits hits = ins.search(query, filter);
                for (int i = 0; i < hits.length(); i++) {
                        Document doc = hits.doc(i);
                        System.out.println(doc.get("content"));
                }
                System.out.println();
        }
}

上面是简单的测试程序。当然在实际应用中可以做得比较复杂。
2008/01/02 18:34
“囚徒困境”最早是由美国普林斯顿大学数学家曾克1950年提出来的。他当时编了一个故事向斯坦福大学的一群心理学家们解释什么是博弈论,这个故事后来成为博弈论中最著名的案例。故事内容是:两个嫌疑犯(A和B)作案后被警察抓住,隔离审讯;警方的政策是“坦白从宽,抗拒从严”,如果两人都坦白则各判8年;如果一人坦白另一人不坦白,坦白的放出去,不坦白的判10年;如果都不坦白则因证据不足各判1年。在这里,博弈者就是两个嫌疑犯,他们每个人都有两个选择,即坦白和不坦白。
    最终结果是A和B均选择了坦白。这是因为,假定A选择坦白的话,B最好是选择坦白,因为B坦白判8年而抵赖却要判10年;假定A选择抵赖的话,B最好还是选择坦白,因为B坦白不被判刑而抵赖却要被判刑1年。即是说,不管A坦白或抵赖,B的最佳选择都是坦白。反过来也一样,不管B是坦白还是抵赖,A的最佳选择也是坦白。结果,两个人都选择了坦白,各被判刑8年。在(坦白、坦白)这个组合中,A和B都不能通过单方面的改变行动增加自己的收益,于是谁也没有动力游离这个组合,因此这个组合叫做纳什均衡。
    囚徒困境所反映出的深刻问题是,人类的个人理性有时能导致集体的非理性——聪明的人类会因自己的聪明而作茧自缚。
2008/01/02 18:29
Tags: ,
200W以下的数据量全部加载到内存最简单的方式是修改Lucene(1.9版本)源码 org.apache.lucene.index.IndexReader文件的第127行 将
return open(FSDirectory.getDirectory(path, false), true);
修改为
return open(new RAMDirectory(FSDirectory.getDirectory(path, false)), true);

将133行的
return open(FSDirectory.getDirectory(path, false), true);
修改为
return open(new RAMDirectory( FSDirectory.getDirectory(path, false)), true);
这样就可以在查询的时候将所有索引一次加载到内存,查询响应时间即使是第一次查询,也会小于0.1秒,但仅适用于索引文档数量不超过200W个,并且平均的页面大小不超过10K,文献检索系统 ,这种方式尤其适合。
创建索引的时候也能够使用 RAMDirectory , 比FSDirectory 要快很多 。

令一种方法:

FSDirectory directory = FSDirectory.getDirectory(args[0], false);   1

RAMDirectory directory = new RAMDirectory(args[0]);                 2

用2代替1即可

分页: 1/46 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]