<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[裴小星的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xxing22657</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xxing22657]]></copyright><item><title><![CDATA[Nutch 源代码分析(1) Crawl 类]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84181694</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84181694</guid><author>xxing22657</author><pubDate>Fri, 06 Apr 2012 23:20:28 +0800</pubDate><description><![CDATA[　　（以下分析针对的是 nutch 1.4）

　　Crawl 类是运行抓取程序的入口，代码不多，但关联的其他类不少。
　　抓取的流程是：

　　1. 将初始的 URL 地址注入到 crawlDb 

　　2. 从crawldb中生成一个url的子集用于抓取
　　3. 抓取网页
　　4. 分析网页
　　5. 更新 crawlDb ，增加新抓取的 url

　　6. 循环执行...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(13)：OutputBuffer，BasicOutputBuffer 和 PoolOutputBuffer ]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84166734</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84166734</guid><author>xxing22657</author><pubDate>Sun, 11 Mar 2012 21:47:18 +0800</pubDate><description><![CDATA[　　在之前的源代码分析中我们经常遇到神秘的 OutMessage 类的实例，并调用它的 writeInt，query 等方法与 MongoDB 数据库进行交互。
　　但 OutMessage 继承了 BSONEncoder 类，而 BSONEncoder 的 writeInt 等方法实际上是委托给 OutputBuffer 类的实例执行的。
　　因此为了弄清楚 OutMessage 类的实例的...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(12)：GridFSFile、GridFSDBFile 和 GridFSInputFile ]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84160358</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84160358</guid><author>xxing22657</author><pubDate>Tue, 28 Feb 2012 21:41:22 +0800</pubDate><description><![CDATA[　　GridFSFile 类表示 GridFS 中的文件的信息，它是一个抽象类，分别被 GridFSDBFile （表示从数据库中读取的文件） 和 GridFSInputFile（表示将要保存到数据库中的文件 ） 继承。

　　GridFSFile 类包含下列属性（相应地有一系列的  get 方法）
[code]
    Object _id;                // 文件的唯...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(11)：GridFS 类]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84159726</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84159726</guid><author>xxing22657</author><pubDate>Mon, 27 Feb 2012 21:42:18 +0800</pubDate><description><![CDATA[　　GridFS 类在 com.mongodb.gridfs 包中的地位类似于 Mongo 类在 com.mongodb 包的作用，主要是提供对外的接口。
　　它的各个方法是分别委托给不同的类执行的，尤其是 DBColletion 类的实例 _filesCollection  和 _chunkCollection 。

　　我们先看看它的构造函数：
[code]
    /**
   ...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(10)：com.mongodb 总结]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84159219</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84159219</guid><author>xxing22657</author><pubDate>Mon, 27 Feb 2012 09:34:58 +0800</pubDate><description><![CDATA[　　com.mongodb 是 MongoDB Driver 核心类所在的包。其中 Mongo 类是整个 Driver 的入口点。 

　　下面列出之前对这个包中的几个主要类的介绍：

　　Mongo 表示一个数据库实例，可能包含多个 Server 。 
　　[url]http://xxing22657-yahoo-com-cn.iteye.com/blog/1236186[/url]...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(9)：com.mongodb.DBport]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84159040</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84159040</guid><author>xxing22657</author><pubDate>Sun, 26 Feb 2012 19:12:30 +0800</pubDate><description><![CDATA[　　DBPort 是表示数据库端口的类，分别用 call 和 say 方法实现读取和写入操作。
　　这两个方法都调用了 go 方法。
[code]
    // 读取操作
    Response call( OutMessage msg , DBCollection coll )
        throws IOException {
        return go( msg ...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(8)：com.mongodb.RelicaSetStatus]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84158982</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84158982</guid><author>xxing22657</author><pubDate>Sun, 26 Feb 2012 16:45:45 +0800</pubDate><description><![CDATA[　　RelicaSetStatus 用于读取集群中的服务器节点的信息。

　　getMaster 方法和 getASecondary 方法分别可用于以获取 master 节点和 secondary 节点。
　　内部类 ReplicaSetStatus.Node 包含了节点的状态信息，内部类 ReplicaSetStatus.Node.Updater 用于实例化一个定时更新节点状态的线程。
...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(7)：com.mongodb.DBAPILayer]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84157402</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84157402</guid><author>xxing22657</author><pubDate>Thu, 23 Feb 2012 09:40:05 +0800</pubDate><description><![CDATA[　　DBAPILayer 继承了抽象类 DB ，主要借助内部类 DBApiLayer.MyCollection 实现具体的数据库操作。
DB 类的介绍可以参考：[url]http://xxing22657-yahoo-com-cn.iteye.com/blog/1291183[/url]

[align=center][size=medium][b]借助 DBApiLayer.MyColle...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(6)：com.mongodb.DBTCPConnector]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84156726</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84156726</guid><author>xxing22657</author><pubDate>Wed, 22 Feb 2012 09:04:20 +0800</pubDate><description><![CDATA[　　DBTCPConnecror 是对 DBPort 类的封装，借助 DBPort 实现读写操作、获取服务器状态等。
[align=center][size=medium][b] say 方法和 call 方法 [/b][/size][/align]
　　DBTCPConnecror 类中比较值得分析的是 say 方法和 call 方法的实现：
[code]
// 执行写操作
Write...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(5)：com.mongodb.DB]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84094046</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84094046</guid><author>xxing22657</author><pubDate>Sun, 04 Dec 2011 20:15:38 +0800</pubDate><description><![CDATA[DB 表示数据库连接，是一个抽象类，部分核心功能由子类提供，由 DBApiLayer 继承。

[align=center][size=medium][b]由子类实现的抽象方法[/b][/size][/align]
[code]
// 开始数据库连接
public abstract void requestStart();
// 结束数据库连接
public abstract voi...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(4)：com.mongodb.DBCursor]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84086028</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84086028</guid><author>xxing22657</author><pubDate>Sun, 20 Nov 2011 22:47:33 +0800</pubDate><description><![CDATA[　　DBCurosr 是 DBCollection 的 find 方法返回的对象，可以设置 skip、limit 等属性之后，执行查询，得到查询结果，
　　用法如下：
[code=&quot;java&quot;]List obj
     = collection.find( query ).skip( 1000 ).limit( 100 ).toArray();[/code]
　　DBCursor 类的方...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(3)：com.mongodb.DBCollection]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84081387</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84081387</guid><author>xxing22657</author><pubDate>Sun, 13 Nov 2011 07:41:28 +0800</pubDate><description><![CDATA[　　DBCollection 是表示数据集合的抽象类，它的实现可以简单地分为两类：
　　一类是抽象方法，由子类（DBApiLayer.MyCollection）实现；
　　另一类委托给类型为 &quot;DB&quot; 的属性 _db，_db 实际上是 DBApiLayer 类的实例（DBApiLayer 继承抽象类 DB）；

　　因此，DBCollection 类是实现细节与 DBApiLayer 关系...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(2)：com.mongodb.Mongo]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84060238</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84060238</guid><author>xxing22657</author><pubDate>Sat, 05 Nov 2011 06:31:43 +0800</pubDate><description><![CDATA[　　Mongo 表示一个数据库实例，可能包含多个 ServerAddress 和多个 DB。
　　本文将介绍 Mongo 类中的三个重要方法：构造方法，获取所有数据库的名称，通过名称获取指定的数据库

[size=medium][align=center][b]构造方法[/b][/align][/size]
　　实现如下：
[code=&quot;java&quot;]
// 构造方法
// repli...]]></description><category></category></item><item><title><![CDATA[MongoDB Java Driver 源码分析(1)：Package 概述]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84059462</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84059462</guid><author>xxing22657</author><pubDate>Fri, 04 Nov 2011 07:58:36 +0800</pubDate><description><![CDATA[　　MongoDB Java Driver 包含 7 个主要的 Package，本文将对包之间的依赖关系进行分析，并简要描述买个包的功能，并对每个包中的主要类的作用进行简要说明。

[align=center][size=medium][b]包之间的依赖关系[/b][/size][/align]

　　下图展示了包之间的依赖关系：

[align=center][img]http://...]]></description><category></category></item><item><title><![CDATA[PandaJS: Rhino + MongoDB + Server-side JQuery Template]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84021128</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84021128</guid><author>xxing22657</author><pubDate>Thu, 22 Sep 2011 12:36:31 +0800</pubDate><description><![CDATA[[size=large][align=center][b]PandaJS: Rhino + MongoDB + Server-side JQuery Template[/b][/align][/size]
　　PandaJS 是基于 Rhino、MongoDB、Server-side jQuery Template 的 JS 编程工具包，目标是使用更一致的方式编写客户端和服务器端的 js 代码。...]]></description><category></category></item><item><title><![CDATA[PandaJS 使用说明(1.10)：小结]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84010847</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84010847</guid><author>xxing22657</author><pubDate>Thu, 01 Sep 2011 07:45:03 +0800</pubDate><description><![CDATA[[size=large][align=center][b]PandaJS 使用说明(1.10)：小结[/b][/align][/size]
　　PandaJS 是基于 Rhino、MongoDB、Server-side jQuery Template 的 JS 编程工具包，目标是使用更一致的方式编写客户端和服务器端的 js 代码。它采用嵌入式的 Jetty 作为 Web Server，依赖于 J...]]></description><category></category></item><item><title><![CDATA[PandaJS 使用说明(1.9)：编写测试]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84010166</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84010166</guid><author>xxing22657</author><pubDate>Wed, 31 Aug 2011 08:13:36 +0800</pubDate><description><![CDATA[[size=large][align=center][b]PandaJS 使用说明(1.9)：编写测试[/b][/align][/size]
　　PanadaJS 的测试库是在 junit 3 的基础上修改而成的，界面上使用的是 swing，我已经将修改后的 junit 工程放在 svn 上了：
　　[url]https://pandajs.googlecode.com/svn/trunk/j...]]></description><category></category></item><item><title><![CDATA[PandaJS 使用说明(1.8)：配置文件]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84008848</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84008848</guid><author>xxing22657</author><pubDate>Mon, 29 Aug 2011 07:48:01 +0800</pubDate><description><![CDATA[[size=large][align=center][b]PandaJS 使用说明(1.8)：配置文件[/b][/align][/size]

　　配置文件的目的是把经常变化的部分提取出来，以便修改。相比 XML，直接用 js 进行配置会更为直截了当一些。
　　在现在的 HelloPanda 工程中有三类配置文件：
　　首先是 lib 和 server 的配置，在程序启动时生效，不支持热部...]]></description><category></category></item><item><title><![CDATA[PandaJS 使用说明(1.7)：权限控制和数据校验]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84008600</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84008600</guid><author>xxing22657</author><pubDate>Sun, 28 Aug 2011 11:57:38 +0800</pubDate><description><![CDATA[[align=center][size=large][b]PandaJS 使用说明(1.7)：权限控制与数据校验[/b][/size][/align]
　　利用上一篇文章提到的 proxy 对象，我们还可以实现权限控制和数据校验。
　　权限控制的思路是截获对 page.* 和 api.* 的调用，并利用 session 中记录的用户角色信息进行权限检查；
　　数据校验将重用校验代码，在客户端...]]></description><category></category></item><item><title><![CDATA[PandaJS 使用说明(1.6)：日志与 proxy 对象]]></title><link>https://blog.youkuaiyun.com/xxing22657/article/details/84008371</link><guid>https://blog.youkuaiyun.com/xxing22657/article/details/84008371</guid><author>xxing22657</author><pubDate>Sat, 27 Aug 2011 13:52:25 +0800</pubDate><description><![CDATA[[size=large][align=center][b]PandaJS 使用说明(1.6)：日志与 proxy 对象[/b][/align][/size]
　　这篇文章里我们将继续探讨日志处理(panda.log)和 proxy 对象(panda.proxy)。结合使用 panda.log 和 panda.proxy 可以实现灵活的日志处理，有效地分离业务逻辑和日志记录的代码。panda.lo...]]></description><category></category></item></channel></rss>