<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>coderplay's weblog</title>
    <description></description>
    <link>http://coderplay.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>lucene2.3.2与2.2.0建索引的速度比较</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/221316" style="color:red;">http://coderplay.javaeye.com/blog/221316</a>&nbsp;
          发表时间: 2008年07月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>文本材料大小: 43.9 MB<br />
文件数目: 19997个<br />
分析器:&nbsp;&nbsp;&nbsp; lucene标准StandardAnalyzer<br />
<br />
lucene-2.2.0 <br />
索引大小: 16,901,638 字节<br />
耗时:<br />
158094 total milliseconds<br />
110437 total milliseconds<br />
106328 total milliseconds<br />
<br />
<br />
lucene-2.3.2 <br />
索引大小: 16,177,772字节<br />
默认16M缓存耗时:<br />
15407 total milliseconds<br />
15500 total milliseconds<br />
设置64M缓存耗时:<br />
13578 total milliseconds<br />
13984 total milliseconds<br />
13359 total milliseconds<br />
15500 total milliseconds</p>
<p>&nbsp;</p>
<p>可以看出2.3比2.2建索引的速度要快5~10倍。原理请看2.2的DocumentWriter和2.3的DocumentsWriter.</p>
<p>2.3采用in-memory模型。</p>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/221316#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 29 Jul 2008 22:42:02 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/221316</link>
        <guid>http://coderplay.javaeye.com/blog/221316</guid>
      </item>
      <item>
        <title>关于分布式lucene</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/212320" style="color:red;">http://coderplay.javaeye.com/blog/212320</a>&nbsp;
          发表时间: 2008年07月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>有NFS, haproxy/lvs等解决方案。</p>
<p>或者基于HDFS自己实现一个能提供多个客户端同时写Index的文件系统</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>为什么不用hadoop的HDFS?</strong>
</span>
 </p>
<p>原因有三:</p>
<p>1. HDFS多个client写同一个index. 但我们希望能够实现此功能,以达到并行建立索引的目的。</p>
<p>2. lucene的索引一般包括几种不同的文件。这些文件大多会比HDFS的64M块要小，所以用HDFS存储不是很有效。</p>
<p>3. 以后hadoop的底层可能会建立一个抽象层。这个抽象层可以适用于各种不同的存储方式(不光是HDFS)和并行处理服务。</p>
<p>&nbsp;</p>
<p>另外，自己建立一个lucene特有的索引存储，可以加深对hadoop架构的认识。</p>
<p>&nbsp;</p>
<p><span style="font-size: medium;"><strong>基本设计</strong>
</span>
</p>
<p>&nbsp;</p>
<p>占个位先 </p>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/212320#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 Jul 2008 14:15:00 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/212320</link>
        <guid>http://coderplay.javaeye.com/blog/212320</guid>
      </item>
      <item>
        <title>职友集的搜索</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/211475" style="color:red;">http://coderplay.javaeye.com/blog/211475</a>&nbsp;
          发表时间: 2008年07月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>我先试了一个搜索&ldquo;和服&rdquo;，这个词，返回1092条结果。不过应该都是没用的。</p>
<p>且看前面几条：</p>
<p><a href="http://so.jobui.com/goUrl.php?goUrl=http%3A%2F%2Fjobs.chinahr.com%2Fhtml%2F2007-04%2F26%2F20040819011591000017.htm%3Fjtr%3D1263948973" onclick="rcd(12)" target="_blank"></a>
<a href="http://so.jobui.com/goUrl.php?goUrl=http%3A%2F%2Fjobs.chinahr.com%2Fhtml%2F2007-04%2F26%2F20040819011591000017.htm%3Fjtr%3D1263948973" onclick="rcd(12)" target="_blank"> 财务软件实施和服务顾问&nbsp;&nbsp;&nbsp;&nbsp; 参考工资&nbsp;&nbsp; 查看人脉<br />
<br />
服务经理和服务工程师Service Manager and Engineer&nbsp;&nbsp; 参考工资&nbsp;&nbsp; 查看人脉<br />
<br />
服务经理和服务工程师Service Manager and Engineer&nbsp;&nbsp; 参考工资 </a>
</p>
<p>&nbsp;</p>
<p>看样子是采用的二元分词做的。</p>
<p>&nbsp;</p>
<p><a href="http://shenghuo.google.cn" target="_blank">http://shenghuo.google.cn</a> 是google生活方面的垂直搜索引擎。貌似刚刚起步，主要是中华英才网, 51job, 智联招聘几个网站的资料。搜索&ldquo;和服&rdquo;这个词，只有两条结果。第一条与服装有关，但不是&ldquo;和服&rdquo;本身的意思，暂时不能判断是不是基于统计的方法。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/211475#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Jul 2008 12:45:49 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/211475</link>
        <guid>http://coderplay.javaeye.com/blog/211475</guid>
      </item>
      <item>
        <title>单分派与多分派,聊天记录</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/203290" style="color:red;">http://coderplay.javaeye.com/blog/203290</a>&nbsp;
          发表时间: 2008年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>2007-12-17 23:06:01 lct<br />
The solution to these problems is to replace<br />
dynamically-dispatched messages with one or more statically-bound procedure calls<br />
wherever possible, to inline-expand the callee methods whenever the callee is small (a<br />
common case given the presence of accessor methods, user-defined control structures, and<br />
standard operations like addition implemented as methods), and to eliminate creations of<br />
closures whenever no more references to the closures remain after inlining their bodies.<br />
&nbsp;<br />
<br />
2007-12-17 23:06:08 lct<br />
这什么意思 <br />
<br />
2007-12-17 23:06:16 lct<br />
&nbsp;inline-expand ？？？？？？？ <br />
<br />
2007-12-17 23:06:32 coderplay<br />
上下文是? <br />
&nbsp; <br />
<br />
2007-12-17 23:07:08 lct<br />
就是那篇的3 Language Implementation Research<br />
&nbsp;<br />
<br />
2007-12-17 23:07:35 lct<br />
profile？？？？？？？？大纲？？？ <br />
<br />
2007-12-17 23:07:46 coderplay<br />
估计你是看不懂了.呵呵 <br />
&nbsp; <br />
<br />
2007-12-17 23:07:59 coderplay<br />
profile是一个专业术语 <br />
&nbsp; <br />
<br />
2007-12-17 23:08:07 lct<br />
[/流汗]赶紧帮我看看啊[/撇嘴] <br />
<br />
2007-12-17 23:08:14 lct<br />
明天还得上台讲呢 <br />
<br />
2007-12-17 23:08:23 lct<br />
我都看不懂， <br />
<br />
2007-12-17 23:08:23 coderplay<br />
是用来观察程序哪里运行最耗时间,最占内存. <br />
&nbsp; <br />
<br />
2007-12-17 23:08:44 lct<br />
profile怎么翻译 <br />
<br />
2007-12-17 23:10:02 lct<br />
剖面？？？可否？ <br />
<br />
2007-12-17 23:10:25 coderplay<br />
就是profile, 没有翻译 <br />
&nbsp; <br />
<br />
2007-12-17 23:10:47 coderplay<br />
剖析应该比较准确 <br />
&nbsp; <br />
<br />
2007-12-17 23:11:35 lct<br />
哦 <br />
<br />
2007-12-17 23:11:54 lct<br />
看了，你对文章大意理解如何 <br />
<br />
2007-12-17 23:12:39 lct<br />
The set of classes computed for each expression is different than the information available<br />
from static type declarations. The set of classes is a specific list of concrete classes, with no<br />
ambiguity or open-endedness. A static type declaration, on the other hand, specifies an<br />
interface to an expression, but provides no information about what classes might implement<br />
that interface.<br />
&nbsp;<br />
<br />
2007-12-17 23:12:57 lct<br />
ambiguity or open-endedness.？？？？？？？？？ <br />
<br />
2007-12-17 23:14:20 coderplay<br />
也有不懂的地方,我得花时间... <br />
&nbsp; <br />
<br />
2007-12-17 23:15:32 coderplay<br />
这个论题很窄嘞 <br />
&nbsp; <br />
<br />
2007-12-17 23:15:46 lct<br />
compile-time method lookup,<br />
？？？？？？？？ <br />
<br />
2007-12-17 23:15:46 coderplay<br />
涉及到的具体东西很多 <br />
&nbsp; <br />
<br />
2007-12-17 23:16:05 lct<br />
太具体，太专业了 <br />
<br />
2007-12-17 23:16:23 coderplay<br />
compile-time method lookup,编译期的方法查找 <br />
&nbsp; <br />
<br />
2007-12-17 23:16:32 lct<br />
我觉得我完全没有那个背景知识，很难理解 <br />
<br />
2007-12-17 23:16:35 coderplay<br />
对应的是 run-time method lookup <br />
&nbsp; <br />
<br />
2007-12-17 23:16:42 lct<br />
好 <br />
<br />
2007-12-17 23:17:12 coderplay<br />
我要花一个半小时看完 <br />
&nbsp; <br />
<br />
2007-12-17 23:17:35 lct<br />
perform method lookup&nbsp;&nbsp;&nbsp;&nbsp; ？ <br />
<br />
2007-12-17 23:17:47 lct<br />
我花了两三天 <br />
<br />
2007-12-17 23:18:00 coderplay<br />
那你等下吧,不要先提.我现在才看第一段 <br />
&nbsp; <br />
<br />
2007-12-17 23:33:10 lct<br />
When static class analysis cannot determine a tight bound on the set of possible classes of the<br />
receiver of some message,<br />
&nbsp;<br />
<br />
2007-12-17 23:37:43 coderplay<br />
晕... <br />
&nbsp; <br />
<br />
2007-12-17 23:37:49 coderplay<br />
好像很难解释 <br />
&nbsp; <br />
<br />
2007-12-17 23:38:40 coderplay<br />
你知道重载,重写的区别? 还有它们与多态的联系吗? <br />
&nbsp; <br />
<br />
2007-12-17 23:39:01 lct<br />
忘了 <br />
<br />
2007-12-17 23:39:13 coderplay<br />
还有面向对象的消息传递 <br />
&nbsp; <br />
<br />
2007-12-17 23:39:18 coderplay<br />
这好像很难说... <br />
&nbsp; <br />
<br />
2007-12-17 23:39:24 coderplay<br />
换一篇吧... <br />
&nbsp; <br />
<br />
2007-12-17 23:39:40 lct<br />
呵呵，哪来得及，明天早上8点 <br />
<br />
2007-12-17 23:39:51 lct<br />
死马当活马医了 <br />
<br />
2007-12-17 23:40:03 coderplay<br />
他开始说的是设计了一种叫cecil的语言 <br />
&nbsp; <br />
<br />
2007-12-17 23:40:38 lct<br />
嗯 <br />
<br />
2007-12-17 23:40:52 coderplay<br />
语言设计分两类, 一种是追求语言的表达能力, 还有一种是追求语言的运行性能 <br />
&nbsp; <br />
<br />
2007-12-17 23:41:28 lct<br />
These results indicate that intraprocedural optimizations of messages speed Cecil programs<br />
by at least a factor of two.<br />
<br />
&nbsp;<br />
<br />
2007-12-17 23:41:29 coderplay<br />
他设计的cecil语言能和c++一样高效,但比c++更规范,更灵活 <br />
&nbsp; <br />
<br />
2007-12-17 23:41:36 lct<br />
a factor of two.？？？？？ <br />
<br />
2007-12-17 23:42:00 coderplay<br />
不要去钻哪个字的意思啊 <br />
&nbsp; <br />
<br />
2007-12-17 23:42:20 lct<br />
a factor of two.？？？？？ <br />
<br />
2007-12-17 23:42:29 lct<br />
这是关键意思 <br />
<br />
2007-12-17 23:42:32 lct<br />
关系理解 <br />
<br />
2007-12-17 23:43:42 lct<br />
还有文章中的class，虽然我理解成&ldquo;类&rdquo;，但感觉怪怪的 <br />
<br />
2007-12-17 23:45:03 coderplay<br />
你先说一遍意思吧 <br />
&nbsp; <br />
<br />
2007-12-17 23:45:09 coderplay<br />
我还在看前面的 <br />
&nbsp; <br />
<br />
2007-12-17 23:45:42 lct<br />
coderplay 23:45:03<br />
你先说一遍意思吧<br />
<br />
？ <br />
<br />
2007-12-17 23:48:11 coderplay<br />
就是你先说说你的理解 <br />
&nbsp; <br />
<br />
2007-12-17 23:48:22 coderplay<br />
通篇的 <br />
&nbsp; <br />
<br />
2007-12-17 23:50:06 lct<br />
正在整理 <br />
<br />
2007-12-17 23:52:33 lct<br />
如果说通篇内容，也就是introduction那部分的内容 <br />
<br />
2007-12-17 23:52:57 coderplay<br />
你先打,我看着 <br />
&nbsp; <br />
<br />
2007-12-17 23:53:07 coderplay<br />
具体的说说看 <br />
&nbsp; <br />
<br />
2007-12-17 23:53:52 coderplay<br />
他是指语言的灵活性和程序性能是相冲突的,但他有办法解决 <br />
&nbsp; <br />
<br />
2007-12-17 23:54:26 lct<br />
Multi-methods are treated as overloaded functions, where overload resolution is<br />
determined by the dynamic classes of the arguments,<br />
&nbsp;<br />
<br />
2007-12-17 23:54:34 lct<br />
这关系到理解 <br />
<br />
2007-12-17 23:56:41 coderplay<br />
这个是灵活性的部分了 <br />
&nbsp; <br />
<br />
2007-12-17 23:56:53 lct<br />
怎么理解 <br />
<br />
2007-12-17 23:56:57 coderplay<br />
看来搞不完嘞.边给你解释,边看 <br />
&nbsp; <br />
<br />
2007-12-17 23:57:16 lct<br />
看懂字面，却理解不了 <br />
<br />
2007-12-17 23:57:24 coderplay<br />
传统的OOP语言有重载与重写 <br />
&nbsp; <br />
<br />
2007-12-17 23:58:31 coderplay<br />
重载是一个类里面有多个同名的方法比如<br />
<br />
class A<br />
{<br />
&nbsp;&nbsp; public void func_name(void);<br />
&nbsp;&nbsp; public void func_name(Object obj);<br />
} <br />
&nbsp; <br />
<br />
2007-12-17 23:58:36 coderplay<br />
这是重载. <br />
&nbsp; <br />
<br />
2007-12-17 23:59:02 coderplay<br />
到底是调用func_name(void)还是调用func_name(Object). <br />
&nbsp; <br />
<br />
2007-12-17 23:59:13 coderplay<br />
这取决于你传给方法的参数的类型 <br />
&nbsp; <br />
<br />
2007-12-17 23:59:16 lct<br />
There are no variables or<br />
expressions where this subtype polymorphism is restricted, unlike C++<br />
&nbsp;<br />
<br />
2007-12-18 00:00:01 lct<br />
重载明白，重写呢？ <br />
<br />
2007-12-18 00:01:00 lct<br />
overloaded是重写？ <br />
<br />
2007-12-18 00:01:28 coderplay<br />
重写是和继承相关的<br />
<br />
class A<br />
{<br />
&nbsp; virtual fun_name()<br />
}<br />
<br />
class B inherite A<br />
{<br />
&nbsp; func_name();<br />
}<br />
<br />
&nbsp;<br />
&nbsp; <br />
<br />
2007-12-18 00:01:42 coderplay<br />
重载(overload) ,重写(override) <br />
&nbsp; <br />
<br />
2007-12-18 00:02:26 lct<br />
呵呵，好 <br />
<br />
2007-12-18 00:02:27 coderplay<br />
然后有一个B的实例<br />
B b = new B;<br />
b.func_name(); // 这句不会调用A.fun_name <br />
&nbsp; <br />
<br />
2007-12-18 00:03:02 coderplay<br />
虽然参数都一样,这是为了消除继承的二义性 <br />
&nbsp; <br />
<br />
2007-12-18 00:03:25 coderplay<br />
class Cat{<br />
&nbsp;&nbsp;&nbsp; public void eat(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;cat eat&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
public class BlackCat extends Cat{<br />
&nbsp;&nbsp;&nbsp; public void eat(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;black cat eat&quot;);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cat cat = new BlackCat();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cat.eat();<br />
&nbsp;&nbsp;&nbsp; }<br />
} <br />
&nbsp; <br />
<br />
2007-12-18 00:03:33 coderplay<br />
这个时候的结果是:<br />
black cat eat <br />
&nbsp; <br />
<br />
2007-12-18 00:04:11 coderplay<br />
如果<br />
&nbsp;Cat cat = new Cat();<br />
&nbsp;cat.eat();<br />
结果则是cat eat<br />
&nbsp;<br />
&nbsp; <br />
<br />
2007-12-18 00:04:32 lct<br />
多方法可以看作重载函数， <br />
<br />
2007-12-18 00:04:44 coderplay<br />
no <br />
&nbsp; <br />
<br />
2007-12-18 00:04:51 coderplay<br />
有区别 <br />
&nbsp; <br />
<br />
2007-12-18 00:04:52 lct<br />
好，你说的例子我明白，但遇到字面无法翻译 <br />
<br />
2007-12-18 00:05:07 lct<br />
Multi-methods are treated as overloaded functions, where overload resolution is<br />
determined by the dynamic classes of the arguments, <br />
<br />
2007-12-18 00:05:17 lct<br />
我要说出这个意思 <br />
<br />
2007-12-18 00:05:31 coderplay<br />
重载是编译完成后,调用的方法是确定的 <br />
&nbsp; <br />
<br />
2007-12-18 00:05:54 lct<br />
？ <br />
<br />
2007-12-18 00:05:54 coderplay<br />
而重写,程序到底调用哪个方法是运时期决定的 <br />
&nbsp; <br />
<br />
2007-12-18 00:06:12 coderplay<br />
而不是编译期 <br />
&nbsp; <br />
<br />
2007-12-18 00:07:10 coderplay<br />
比如这个<br />
class A<br />
{<br />
&nbsp;&nbsp; public void func_name(void);<br />
&nbsp;&nbsp; public void func_name(Object obj);<br />
}<br />
<br />
编译后,两个函数分别是<br />
func_name_void(A this)<br />
func_name_Object(A this, Object o) <br />
&nbsp; <br />
<br />
2007-12-18 00:07:24 coderplay<br />
所以编译完成后,它们实际上是两个名称不相同的函数 <br />
&nbsp; <br />
<br />
2007-12-18 00:07:31 coderplay<br />
而重写却不同 <br />
&nbsp; <br />
<br />
2007-12-18 00:07:40 coderplay<br />
它们的函数名在编译完成后还是相同的 <br />
&nbsp; <br />
<br />
2007-12-18 00:08:15 lct<br />
哦 <br />
<br />
2007-12-18 00:08:19 lct<br />
那Multi-methods are treated as overloaded functions, where overload resolution is<br />
determined by the dynamic classes of the arguments, <br />
<br />
2007-12-18 00:08:23 lct<br />
？？？？？？？？ <br />
<br />
2007-12-18 00:08:25 coderplay<br />
只是第一个参数this的类型不同<br />
func_name_void (A this)<br />
func_name_void (B this) <br />
&nbsp; <br />
<br />
2007-12-18 00:09:07 coderplay<br />
Multi-methods有点像重载函数 <br />
&nbsp; <br />
<br />
2007-12-18 00:09:57 coderplay<br />
但CLOS的Multi-methods是多重分发(multiple dispatching)的 <br />
&nbsp; <br />
<br />
2007-12-18 00:10:18 lct<br />
参数的动态类决定重载的，， <br />
<br />
2007-12-18 00:10:36 coderplay<br />
重载是编译期后就决定了的,是静态的 <br />
&nbsp; <br />
<br />
2007-12-18 00:10:51 coderplay<br />
而Multi-methods是运态决定的,是动态的 <br />
&nbsp; <br />
<br />
2007-12-18 00:11:38 coderplay<br />
它通过动态检测所有参数的类型来决定调用哪个函数 <br />
&nbsp; <br />
<br />
2007-12-18 00:11:56 coderplay<br />
是动态意义上的函数重载 <br />
&nbsp; <br />
<br />
2007-12-18 00:12:00 lct<br />
coderplay 00:09:07<br />
Multi-methods有点像重载函数<br />
coderplay 00:10:35<br />
重载是编译期后就决定了的,是静态的<br />
coderplay 00:10:52<br />
而Multi-methods是运态决定的,是动态的 <br />
<br />
2007-12-18 00:12:03 lct<br />
糊涂了 <br />
<br />
2007-12-18 00:13:48 coderplay<br />
重载编译后,两个函数分别是<br />
func_name_void(A this)<br />
func_name_Object(A this, Object o)<br />
<br />
当你调用时,实际上是调用两个不同的函数<br />
func_name_void(A this)和<br />
func_name_Object(A this, Object o)<br />
仅管你的程序,看上去是调用同名的方法.但编译器已经帮你的函数的名称全部换了 <br />
&nbsp; <br />
<br />
2007-12-18 00:15:37 coderplay<br />
编译前是<br />
A::func_name(void)<br />
A::func_name(Object o)<br />
调用方法分别是<br />
a.func_name()<br />
b.func_name(obj)<br />
<br />
编译后是<br />
func_name_void(A this)<br />
func_name_Object(A this, Object o)<br />
调用方法分别是<br />
func_name_void(a)<br />
func_name_Object(a, obj) <br />
&nbsp; <br />
<br />
2007-12-18 00:16:09 coderplay<br />
运行时,两个方法根本没有任何联系 <br />
&nbsp; <br />
<br />
2007-12-18 00:16:12 coderplay<br />
连名称都不一样 <br />
&nbsp; <br />
<br />
2007-12-18 00:16:22 coderplay<br />
这是重载 <br />
&nbsp; <br />
<br />
2007-12-18 00:16:39 coderplay<br />
而Multi-Methods编译后的名称是一样的 <br />
&nbsp; <br />
<br />
2007-12-18 00:16:58 coderplay<br />
只是参数类型不一样 &nbsp;<br />
&nbsp; <br />
<br />
2007-12-18 00:17:20 coderplay<br />
程序到底调用哪个函数, 是通过所有参数的类型来决定的 <br />
&nbsp; <br />
<br />
2007-12-18 00:18:46 lct<br />
在C++中也学过，你说了我也明白了，但是对那篇文章的理解还是不行 <br />
<br />
2007-12-18 00:19:07 coderplay<br />
他的意思是说Multi-Methods兼俱重写的动态性, 和重载的灵活性 <br />
&nbsp; <br />
<br />
2007-12-18 00:19:36 coderplay<br />
Multi-methods are treated as overloaded functions, where overload resolution is<br />
determined by the dynamic classes of the arguments,<br />
这句你应该明白了吧 <br />
&nbsp; <br />
<br />
2007-12-18 00:19:45 coderplay<br />
这是CLOS的作法 <br />
&nbsp; <br />
<br />
2007-12-18 00:19:50 lct<br />
怎么翻译 <br />
<br />
2007-12-18 00:19:57 coderplay<br />
一定要翻译? <br />
&nbsp; <br />
<br />
2007-12-18 00:20:03 lct<br />
dynamic classes <br />
<br />
2007-12-18 00:20:16 coderplay<br />
动态类型 <br />
&nbsp; <br />
<br />
2007-12-18 00:20:31 lct<br />
参数的动态类？or动态类型 <br />
<br />
2007-12-18 00:20:38 coderplay<br />
类型 <br />
&nbsp; <br />
<br />
2007-12-18 00:20:55 lct<br />
与type？ <br />
<br />
2007-12-18 00:21:03 coderplay<br />
不要去抠字眼,这是因为英语和汉语的差别 <br />
&nbsp; <br />
<br />
2007-12-18 00:21:26 coderplay<br />
你只是感觉类与类型的区别比class与type大 <br />
&nbsp; <br />
<br />
2007-12-18 00:21:34 lct<br />
因为我一直把全文的class理解成类了，面向对象中的类 <br />
<br />
2007-12-18 00:21:35 coderplay<br />
明白意思就okay <br />
&nbsp; <br />
<br />
2007-12-18 00:21:49 coderplay<br />
后面作者说他的语言 <br />
&nbsp; <br />
<br />
2007-12-18 00:21:51 lct<br />
现在明白了 <br />
<br />
2007-12-18 00:21:57 coderplay<br />
与CLOS不同 <br />
&nbsp; <br />
<br />
2007-12-18 00:22:05 coderplay<br />
他的语言灵活性更强 <br />
&nbsp; <br />
<br />
2007-12-18 00:22:41 lct<br />
class hierarchy analysis<br />
这个应该是类层次分析吧？不会是类型了吧 <br />
<br />
2007-12-18 00:22:50 coderplay<br />
In fact, the implementation of the<br />
operation can evolve over time, with special cases added incrementally without revising<br />
previous versions or client code. The choice of implementation strategy is properly hidden<br />
from clients, and there are no restrictions on future incremental extension to the set of multi-<br />
methods. <br />
&nbsp; <br />
<br />
2007-12-18 00:23:00 coderplay<br />
对头 <br />
&nbsp; <br />
<br />
2007-12-18 00:23:48 coderplay<br />
复制错了.这句:<br />
&nbsp;The Cecil<br />
approach to multi-methods differs from the CLOS approach by allowing each multi-method<br />
to independently determine which subset of its arguments requires dynamic dispatching<br />
(there is no &deg;&infin;congruent lambda list&deg;&plusmn; rule as in CLOS) and by treating all argument positio<br />
with equal priority (there is no left-to-right ordering of argument positions as in CLOS). <br />
&nbsp; <br />
<br />
2007-12-18 00:24:29 coderplay<br />
Cecil对multi-methods的方法与CLOS的方法不同 <br />
&nbsp; <br />
<br />
2007-12-18 00:24:52 coderplay<br />
CLOS是要检查所有的参数的类型来决定调用哪个函数 <br />
&nbsp; <br />
<br />
2007-12-18 00:25:51 lct<br />
这个明白 <br />
<br />
2007-12-18 00:26:29 coderplay<br />
而Cecil可以自定义. <br />
比如参数是 (A a, B b, C c)<br />
CLOS要检查a,b,c的类型<br />
而Cecil用户则可能只要检查一个子集b,c的类型. &nbsp;<br />
&nbsp; <br />
<br />
2007-12-18 00:27:21 coderplay<br />
Cecil语言支持这种特性 <br />
&nbsp; <br />
<br />
2007-12-18 00:27:28 lct<br />
嗯 <br />
<br />
2007-12-18 00:28:01 coderplay<br />
lambda list是一个术语, 与丘奇的可计算模型相关 <br />
&nbsp; <br />
<br />
2007-12-18 00:28:52 lct<br />
[/惊讶]太有才了 <br />
<br />
2007-12-18 00:28:56 coderplay<br />
下面那段就是消息传递 <br />
&nbsp; <br />
<br />
2007-12-18 00:29:09 lct<br />
谢谢周大叔 <br />
<br />
2007-12-18 00:29:23 coderplay<br />
这两个特性会使程序的性能降低 <br />
&nbsp; <br />
<br />
2007-12-18 00:29:33 coderplay<br />
因为它在执行的时候还要判断类型 <br />
&nbsp; <br />
<br />
2007-12-18 00:29:52 coderplay<br />
然后第3节讲的是他的解决方案 <br />
&nbsp; <br />
<br />
2007-12-18 00:29:59 coderplay<br />
不过我还刚看..<br />
&nbsp;<br />
&nbsp; <br />
<br />
2007-12-18 00:30:08 lct<br />
大意我也看过了，管它懂不懂，我们宿舍催睡觉了，明天哪里懂讲哪里 <br /></p>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/203290#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 14 Jun 2008 19:11:52 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/203290</link>
        <guid>http://coderplay.javaeye.com/blog/203290</guid>
      </item>
      <item>
        <title>nutch演示</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/196247" style="color:red;">http://coderplay.javaeye.com/blog/196247</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<p>抓取了系里的网站 <a href="http://cs.jnu.edu.cn/" onclick="showLinkBubble(this);return false" target="_blank">http://cs.jnu.edu.cn</a>
</p>
<div id="blogContainer">和lucene的网站 <a href="http://lucene.apache.org/" onclick="showLinkBubble(this);return false" target="_blank">http://lucene.apache.org/</a>
 
</div>
<div><br />
然后对这两个网站进行搜索.</div>
<div><img src="../../../upload/attachment/25201/a185499c-dca7-3a4e-a49e-eba26037d7df.jpg" alt="" />
</div>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/196247#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 20:08:57 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/196247</link>
        <guid>http://coderplay.javaeye.com/blog/196247</guid>
      </item>
      <item>
        <title>中文分词演示</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/196246" style="color:red;">http://coderplay.javaeye.com/blog/196246</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>中文分词是中文信息检索的基础,也是一项难题。</p>
<p>下面随手做的一个演示, lucene的Analyzer扩展。</p>
<p><img src="../../../upload/attachment/25199/92c339f3-3c2f-333f-8c00-0e647c2d6969.jpg" alt="" />
</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/196246#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 20:03:25 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/196246</link>
        <guid>http://coderplay.javaeye.com/blog/196246</guid>
      </item>
      <item>
        <title>nutch源代码分析之ParseSegment</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/194998" style="color:red;">http://coderplay.javaeye.com/blog/194998</a>&nbsp;
          发表时间: 2008年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>ParseSegment</p>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/194998#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 May 2008 19:36:27 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/194998</link>
        <guid>http://coderplay.javaeye.com/blog/194998</guid>
      </item>
      <item>
        <title>nutch源代码分析之Fetcher</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/194961" style="color:red;">http://coderplay.javaeye.com/blog/194961</a>&nbsp;
          发表时间: 2008年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>MapReduce：获取的urls集</p>
<ul>
<li>  		输入：&lt;url,CrawlDatum&gt;, 按主机分块, 按hash排序</li>
<li>  		Map(url,CrawlDatum) $\to$ &lt;url,FetcherOutput&gt; 
<ul>
通过多线程、异步map实现<br />
调用已有的Nutch协议插件<br />
</ul>
</li>
<li>		FetcherOutput: &lt;CrawlDatum, 网页内容Content&gt; </li>
<li>		Reduce()是同一化</li>
<li>		输出: 两种文件: &lt;url,CrawlDatum&gt;, &lt;url,Content&gt;</li>
</ul>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/194961#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 May 2008 17:28:54 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/194961</link>
        <guid>http://coderplay.javaeye.com/blog/194961</guid>
      </item>
      <item>
        <title>nutch源代码分析之Generator</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/194699" style="color:red;">http://coderplay.javaeye.com/blog/194699</a>&nbsp;
          发表时间: 2008年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          MapReduce1：选择要获取的urls<br /><ul><li>  		输入：爬虫数据库文件</li><pre name="code" class="java">
  public Path generate(...) {
  ...
    job.setInputPath(new Path(dbDir, CrawlDb.CURRENT_NAME));
    job.setInputFormat(SequenceFileInputFormat.class);
  }
</pre><br /><li>  		Map() -> 如果date &lt;= now, 反转成&lt;CrawlDatum, url> </li><br /><pre name="code" class="java">
  /** Selects entries due for fetch. */
  public static class Selector implements Mapper ...{

    private SelectorEntry entry = new SelectorEntry();
   
    /** Select & invert subset due for fetch. */
    public void map(WritableComparable key, Writable value,
                    OutputCollector output, Reporter reporter)
      throws IOException {
      Text url = (Text)key;
      ...
      CrawlDatum crawlDatum = (CrawlDatum)value;

      if (crawlDatum.getStatus() == CrawlDatum.STATUS_DB_GONE ||
          crawlDatum.getStatus() == CrawlDatum.STATUS_DB_REDIR_PERM)
        return;                                   // don't retry

      if (crawlDatum.getFetchTime() > curTime)
        return;                                   // not time yet

      LongWritable oldGenTime = (LongWritable)crawlDatum.getMetaData().get(Nutch.WRITABLE_GENERATE_TIME_KEY);
      if (oldGenTime != null) { // awaiting fetch & update
        if (oldGenTime.get() + genDelay > curTime) // still wait for update
          return;
      }
      ...
      // record generation time
      crawlDatum.getMetaData().put(Nutch.WRITABLE_GENERATE_TIME_KEY, genTime);
      entry.datum = crawlDatum;
      entry.url = (Text)key;
      output.collect(sortValue, entry);          // invert for sort by score
    }
  }
</pre><li>  		以随机整数为种子, 用hash函数来划分数据块</li><pre name="code" class="java">


  /**
   * Generate fetchlists in a segment.
   * @return Path to generated segment or null if no entries were selected.
   * */
  public Path generate(...) {
  ...
  job.setInt("partition.url.by.host.seed", new Random().nextInt());
  }

  public static class Selector implements Mapper, Partitioner, Reducer {

    private Partitioner hostPartitioner = new PartitionUrlByHost();
    ...
    /** Partition by host. */
    public int getPartition(WritableComparable key, Writable value,
                            int numReduceTasks) {
      return hostPartitioner.getPartition(((SelectorEntry)value).url, key,
                                          numReduceTasks);
    }
    ...
  }



/** Partition urls by hostname. */
public class PartitionUrlByHost implements Partitioner {

  private int seed;
  ...

  public void configure(JobConf job) {
    seed = job.getInt("partition.url.by.host.seed", 0);
    ...
  }

  /** Hash by hostname. */
  public int getPartition(WritableComparable key, Writable value,
                          int numReduceTasks) {
  ...
    int hashCode = (url==null ? urlString : url.getHost()).hashCode();

    // make hosts wind up in different partitions on different runs
    hashCode ^= seed;

    return (hashCode & Integer.MAX_VALUE) % numReduceTasks;
  }
}

</pre><li>  		Reduce()是同一化</li><li>		以CrawlDatum.linkCount降序排序</li><li>		输出链接数最多的N个CrawlDatum实体</li></ul><br />		<br />MapReduce2:准备获取<br /><ul><li>		Map()是反向；Partition()根据主机划分；Reduce()是同一化</li><li>		Reduce: 合并CrawlDatum成单个入口</li><li>		输出: &lt;url,CrawlDatum>文件集，用来并行地获取</li></ul>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/194699#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 May 2008 03:33:32 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/194699</link>
        <guid>http://coderplay.javaeye.com/blog/194699</guid>
      </item>
      <item>
        <title>nutch源代码分析之Injector</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/194698" style="color:red;">http://coderplay.javaeye.com/blog/194698</a>&nbsp;
          发表时间: 2008年05月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Injector分两步MapReduce操作：获取爬虫数据、将数据合并到爬虫数据库中。<br />参见Injector.inject(Path crawlDb, Path urlDir)方法<br /><br />MapReduce1: 把输入数据转换为数据库所需的格式<br /><ul><li>  		输入：未处理的，包含url信息的文本文件</li><li>  		Map(line) -> &lt;url, CrawlDatum>; status=db_unfetched</li><li>  		Reduce()是同一化(即具有相同key值的key-value对根据key值排序后,连续写在SequenceFile中,这是Hadoop默认的Reducer)</li><li>  		输出: 包含临时文件的目录</li></ul><br />MapReduce2: 合并到已有数据库<br /><ul><li>		输入：第一步的输出和已存在的数据库</li><li>		Map是同一化</li><li>		Reduce: 合并CrawlDatum成单个入口</li><li>		输出: 新版本的数据库</li></ul>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/194698#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 20 May 2008 03:14:57 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/194698</link>
        <guid>http://coderplay.javaeye.com/blog/194698</guid>
      </item>
      <item>
        <title>latex插图位置问题</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/192945" style="color:red;">http://coderplay.javaeye.com/blog/192945</a>&nbsp;
          发表时间: 2008年05月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          使用figure会进行浮动环境,这样插的图latex会自动调整。 一般我们不需要这样的功能。<br />可以使用 <br /><pre name="code" class="java">
\begin{figure}[h]
\end{figure}
</pre><br /><br />或者使用\includegraphics 插入,如果列figure估计列不出来<br /><br />如果想要放在自己指定位置并且需要交叉引用的话，要使用以下的格式：<br /><pre name="code" class="java">
\makeatletter
\def\@captype{figure}
\makeatother
\includegraphics{*.eps}
\caption{...\label{...}}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/192945#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 15:05:15 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/192945</link>
        <guid>http://coderplay.javaeye.com/blog/192945</guid>
      </item>
      <item>
        <title>texlive下面有很多程序执行ruby脚本</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/192782" style="color:red;">http://coderplay.javaeye.com/blog/192782</a>&nbsp;
          发表时间: 2008年05月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          比如pstopdf的, 以前用的都是ps2pdf.exe<br />现在这儿是用<br />>texmfstart --verbose pstopdf.rb beamertest.ps<br />texmfstart version 2.0.3<br />locating 'pstopdf.rb' in current path '.'<br />locating 'pstopdf.rb' in caller path './../ruby'<br />kpse     : direct (forced)<br />using kpsewhich variable RUBYINPUTS<br />testing './pstopdf.rb'<br />testing 'e:/texlive/texmf-dist/scripts/context/ruby/pstopdf.rb'<br />registering 'pstopdf' as 'e:/texlive/texmf-dist/scripts/context/ruby/pstopdf.rb'<br /><br />registering 'THREAD' as 'e:/texlive/texmf-dist/scripts/context/ruby'<br />starting pstopdf.rb<br />using 'system' call: ruby e:/texlive/texmf-dist/scripts/context/ruby/pstopdf.rb<br /> beamertest.ps<br /><br />execution failed<br /><br />装上ruby后就okay了.
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/192782#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 03:41:37 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/192782</link>
        <guid>http://coderplay.javaeye.com/blog/192782</guid>
      </item>
      <item>
        <title>中文粗体,斜体的问题</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/192308" style="color:red;">http://coderplay.javaeye.com/blog/192308</a>&nbsp;
          发表时间: 2008年05月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          中文没有粗体，斜体。这些都是洋文的， windows上的都是伪粗，伪斜。
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/192308#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 12 May 2008 17:43:09 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/192308</link>
        <guid>http://coderplay.javaeye.com/blog/192308</guid>
      </item>
      <item>
        <title>关于canopy聚类的几点思考</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/191714" style="color:red;">http://coderplay.javaeye.com/blog/191714</a>&nbsp;
          发表时间: 2008年05月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. 首先是轻量距离量度的选择，是选择数据模型其中的一个属性，还是其它外部属性这对canopy的分布最为重要。<br />2. T1, T2的取值影响到canopy重叠率f，以及canopy的粒度。<br />3. Canopy有消除孤立点的作用,而K-means在这方面却无能为力。建立canopies之后，可以删除那些包含数据点数目较少的canopy，往往这些canopy是包含孤立点的。<br />4. 根据canopy内点的数目,来决定聚类中心数目k,这样效果比较好
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/191714#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 10 May 2008 12:47:29 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/191714</link>
        <guid>http://coderplay.javaeye.com/blog/191714</guid>
      </item>
      <item>
        <title>hadoop的reducer输出多个文件</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/191188" style="color:red;">http://coderplay.javaeye.com/blog/191188</a>&nbsp;
          发表时间: 2008年05月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          有时候我们想到这样的功能: reducer能根据key(或value)值来输出多个文件，同一key(或value)处于同一个文件中。现在hadoop的0.17.x版本可以重写MultipleOutputFormat的generateFileNameForKeyValue就可以实现此功能。<br /><br />比如：<br /><pre name="code" class="java">
package org.apache.hadoop.mapred.lib;

import java.io.IOException;

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.RecordWriter;
import org.apache.hadoop.mapred.TextOutputFormat;
import org.apache.hadoop.util.Progressable;

public class MultipleTextOutputFormat&lt;K extends WritableComparable, V extends Writable>
    extends MultipleOutputFormat&lt;K, V> {

  private TextOutputFormat&lt;K, V> theTextOutputFormat = null;

  @Override
  protected RecordWriter&lt;K, V> getBaseRecordWriter(FileSystem fs, JobConf job,
      String name, Progressable arg3) throws IOException {
    if (theTextOutputFormat == null) {
      theTextOutputFormat = new TextOutputFormat&lt;K, V>();
    }
    return theTextOutputFormat.getRecordWriter(fs, job, name, arg3);
  }

	@Override
	protected String generateFileNameForKeyValue(K key, V value, String name) {
		return name + "_" + value.toString();
	}
  
  
}
</pre><br /><br />试一下wordcount这个例子，把WordCount.java的run函数加上一行<br />conf.setOutputFormat(org.apache.hadoop.mapred.lib.MultipleTextOutputFormat.class);<br />即<br /><pre name="code" class="java">
public int run(String[] args) throws Exception {
    JobConf conf = new JobConf(getConf(), WordCount.class);
    conf.setJobName("wordcount");
 
    // the keys are words (strings)
    conf.setOutputKeyClass(Text.class);
    // the values are counts (ints)
    conf.setOutputValueClass(IntWritable.class);
    
    conf.setMapperClass(MapClass.class);        
    conf.setCombinerClass(Reduce.class);
    conf.setReducerClass(Reduce.class);
    
    conf.setOutputFormat(org.apache.hadoop.mapred.lib.MultipleTextOutputFormat.class);
    
    List&lt;String> other_args = new ArrayList&lt;String>();
    for(int i=0; i &lt; args.length; ++i) {
      try {
        if ("-m".equals(args[i])) {
          conf.setNumMapTasks(Integer.parseInt(args[++i]));
        } else if ("-r".equals(args[i])) {
          conf.setNumReduceTasks(Integer.parseInt(args[++i]));
        } else {
          other_args.add(args[i]);
        }
      } catch (NumberFormatException except) {
        System.out.println("ERROR: Integer expected instead of " + args[i]);
        return printUsage();
      } catch (ArrayIndexOutOfBoundsException except) {
        System.out.println("ERROR: Required parameter missing from " +
                           args[i-1]);
        return printUsage();
      }
    }
    // Make sure there are exactly 2 parameters left.
    if (other_args.size() != 2) {
      System.out.println("ERROR: Wrong number of parameters: " +
                         other_args.size() + " instead of 2.");
      return printUsage();
    }
    FileInputFormat.setInputPaths(conf, other_args.get(0));
    FileOutputFormat.setOutputPath(conf, new Path(other_args.get(1)));
        
    JobClient.runJob(conf);
    return 0;
  }
</pre><br /><br />则使用<br />bin/hadoop jar build/hadoop-*-examples.jar wordcount conf  wordcount_output<br />可输出一个目录wordcount_output<br /><pre name="code" class="java">
$ls wordcount_output/
part-00000_1    part-00000_13   part-00000_16  part-00000_214  part-00000_28  part-00000_38  part-00000_5   part-00000_8
part-00000_10   part-00000_14   part-00000_17  part-00000_22   part-00000_29  part-00000_4   part-00000_6   part-00000_9
part-00000_102  part-00000_141  part-00000_19  part-00000_23   part-00000_3   part-00000_42  part-00000_62
part-00000_11   part-00000_143  part-00000_2   part-00000_24   part-00000_31  part-00000_44  part-00000_63
part-00000_117  part-00000_15   part-00000_20  part-00000_25   part-00000_35  part-00000_46  part-00000_7
part-00000_12   part-00000_152  part-00000_21  part-00000_26   part-00000_36  part-00000_47  part-00000_70
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/191188#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 May 2008 19:39:40 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/191188</link>
        <guid>http://coderplay.javaeye.com/blog/191188</guid>
      </item>
      <item>
        <title>canopy-clustering执行顺序</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/191048" style="color:red;">http://coderplay.javaeye.com/blog/191048</a>&nbsp;
          发表时间: 2008年05月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          好记性不如烂笔头,记一下: <br /><br />NetflixDataPrep(准备数据) -> NetflixCanopyMaker(产生canopy中心) -> NetflixCanopyData(分配所有点到各canopy) -> NetflixKMeansIter(进行k-means聚类)<br /><br />假设数据记录条数为n, 第二步产生的canopy数量为c, 那第三步计算量则为 n * c，就算用了mapper计算量也非常大。一定要改进成增量式的方法。 研究一下~~
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/191048#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 08 May 2008 14:08:59 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/191048</link>
        <guid>http://coderplay.javaeye.com/blog/191048</guid>
      </item>
      <item>
        <title>asguard</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/190241" style="color:red;">http://coderplay.javaeye.com/blog/190241</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          interface使用Multiname,如果a.swf
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/190241#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 06 May 2008 15:14:12 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/190241</link>
        <guid>http://coderplay.javaeye.com/blog/190241</guid>
      </item>
      <item>
        <title>popular clustering techniques</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/187253" style="color:red;">http://coderplay.javaeye.com/blog/187253</a>&nbsp;
          发表时间: 2008年04月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          k-Means, k-Medoids, Kernel Clustering, Spectral Clustering (uses eigenvectors), Gravitational Clustering, Canopy Clustering, Self-Organizing Maps, Expectation Maximization, AGNES, CLARA, DBSCAN, DIANA, BIRCH, and many others.
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/187253#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 27 Apr 2008 13:24:58 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/187253</link>
        <guid>http://coderplay.javaeye.com/blog/187253</guid>
      </item>
      <item>
        <title>hama -- a parallel matrix computational package</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/178629" style="color:red;">http://coderplay.javaeye.com/blog/178629</a>&nbsp;
          发表时间: 2008年04月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Today, I accidently found an interesting stuff, which may help us operating large scales of data sets for redpoll. This is a matrix computational library based on hadoop hbase.<br /><br />http://code.google.com/p/hama/
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/178629#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 Apr 2008 01:42:57 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/178629</link>
        <guid>http://coderplay.javaeye.com/blog/178629</guid>
      </item>
      <item>
        <title>redpoll and mahout</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/178627" style="color:red;">http://coderplay.javaeye.com/blog/178627</a>&nbsp;
          发表时间: 2008年04月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Days before, I've submitted an application to participate in Apache Mahout and  at this time, have got a reply from the guru of this project. It inspired us with lots of courages. We decided that if I were selected by ASF, we will integrate redpoll into Mahout which has the same end goals, same license with our project. We believe that there is a lot of synergies if we work together with ASF.<br /><br />However, all of these are based on an <em>if</em>, we will keep working during the time   they making their decision. Our short-term goal is listed below,<br /><br />April 19th, finish learning the coding style of hadoop and implmenting Naive Bayes classifier.<br />May 3rd, finish parallelizing EM clustering algorithm which can work together with Canopy.<br />May 24th, SVM classifier implementation deadline.<br /><br />At present, We are also doing some preparations like learning something about data mining, thinking about how to parallize them and finding some large data sets we havenot.<br /><br />BTW, through reading the source code of Mahout these days, I found that those two clustering algorithms can only deal with double values. IMHO, the text data format can be uniformed for most of data mining algorithms. If we have an infrastructure for parsing data types like numeric, nominal, date, etc and organizing them into some certain data structures, the Mahout will be more efficient and more practical by the means of supporting more data types.
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/178627#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 02 Apr 2008 01:20:33 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/178627</link>
        <guid>http://coderplay.javaeye.com/blog/178627</guid>
      </item>
      <item>
        <title>Resume </title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/175789" style="color:red;">http://coderplay.javaeye.com/blog/175789</a>&nbsp;
          发表时间: 2008年03月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>Personal Information</strong><br /><br />Name:周敏 (Min Zhou)<br />Gender:male<br />Date of Birth:1982/04<br /><br />Current WorkState:Only the good opportunity then i consider<br /><br />Primary Contact:Mobile (13560220768)            <br />Contact2:School(020-38375371)<br />Web Page:<a href="http://coderplay.javaeye.com" target="_blank">http://coderplay.javaeye.com</a><br />Wed State:Single<br />Political Background:Non-Party Member<br />City: Guangzhou, Guangdong<br />HuKou: Guangdong<br />Graduate Date: 2010/07<br />Degree:Master<br />Nationality:China<br />Nation:Han<br />Address: R1602, Zhouzhuan Building, Jinan University, Guangzhou, China<br />ZIP Code:510632<br />E-mail:coderplay@gmail.com<br /><br /><strong>Education</strong><br />School:Jinan University<br />City:Guangzhou<br />StartDate:2007/09 <br />EndDate: 2010/07<br />Major Category: Electronic Science and Technology<br />Degree:Master<br />Major Name:Computer Science<br />Major Description: Distributed Computing , Parallel Computing<br /><br /><strong>Working Experience</strong><br />Company Name: Shanghai sine network Inc.<br />Position: R&D Manager<br />Department: Technology<br />WorkDate: 2004/03 -  2005/10<br />Location: Shanghai<br />Responsibilities & Achievements:design and implement all software used in a kind of ad. machine.<br /><br /><strong>Summary</strong><br />Current Industry: Computer Software<br />Current Job Category: Computer&middot;Network&middot;Technology<br />Career Level:Senior Position (Non-managerial)<br />Working Experience:2 year(s)<br /><br /><strong>Target Job</strong><br />Desired Job Type:Full Time<br />Target Industry:<br /><ul><li>Education&middot;Training&middot;Scientific Research&middot;Academy Institute</li><li>Internet&middot;e-Commerce</li><li>Computer Software</li><li>IT service&middot;system integration</li><li>On-line Game</li></ul><br />Target Job Category:<br /><ul><li>Computer&middot;Network&middot;Technology</li></ul><br />Target Location: Guangzhou<br />Start Working: Negotiable<br />Desired Salary: RMB  10000  pre-tax<br /><br /><strong>Language</strong><br />Grade of English:CET 4<br /><br /><strong>Skills & Specialty</strong><br />5 years c/java developing experience <br />Over 7 years english reading and writting experience in cs<br />Had leaded a team over 10 members about one year<br />Skilled in software development on linux platform<br />Take MapReduce computing model as my research interest during my gs studing time. <br />Had implemented a data mining program on netfix movies using hadoop, which is an open source mapreduce model.<br />Had one year research and development in the lucene & nutch<br />Had written some chinese words segment programs using algorithms like maximun match, shortest path match.<br />Familiar with common data mining algorithms and had setted up an open source project for them. ( see http://code.google.com/p/redpoll)<br />Skillful on using common data mining software like spss clementine, weka, alphaminer,etc<br />Familiar with virtual machine, had developed an bytecode obfuscator in java. (over 10000 lines)<br />Full-time graduate students at public expense, in respect of an average of more than 85 points.
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/175789#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 25 Mar 2008 12:57:42 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/175789</link>
        <guid>http://coderplay.javaeye.com/blog/175789</guid>
      </item>
      <item>
        <title>redpoll is launched</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/175109" style="color:red;">http://coderplay.javaeye.com/blog/175109</a>&nbsp;
          发表时间: 2008年03月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          We are pleased to introduce a new open source proejct today. It's another machine learning library using hadoop besides the mahout of ASF(Apache Software Foundation). The name of this project is redpoll, which means any of several small finches of northern  North America and Eruasia, having a red crwon and black chin. We hope our project will grow agilely like these kinds of birds and we intent to parallelize some traditional classification, clustering algorithms like Navie Bayes, K-Means, EM using apache's hadoop and compare the speed up on data sets of various size. It's Apache 2.0 licensed.<br /><br />About us<br /><br />We are two guys in school whose interests are parallel computing. Since last year, we began to pay attentions to hadoop, which exerts quite an attraction to us. And we have been looking for opportunities to work on this implementation of MapReduce for a long time and  meanwhile implemented some traditional machine learning algorithms in c/java. Last year we accidentally found the article <em>Map-Reduce for Machine Learning on Multicore</em> by University of Stanford, which perfectly matches our interests. Later we learnt that the ASF has begun to implement a machine learning library called mahout, which is according to the thoery of that article, and planned to invite students to participate the google summer project 2008 to finish this job. <br />But our english are quite poor that we may not obtain any chance, so we decided to launch this new project to let our dreams come true.<br /><br />for more informations please check out http://code.google.com/p/redpoll
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/175109#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 23 Mar 2008 14:30:32 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/175109</link>
        <guid>http://coderplay.javaeye.com/blog/175109</guid>
      </item>
      <item>
        <title>texlive使用日记</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/149587" style="color:red;">http://coderplay.javaeye.com/blog/149587</a>&nbsp;
          发表时间: 2007年12月20日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          往代码里面插入中文。 这段有时候会出错,编译不了。 但大多时候可以正常运行。<br /><br />\lstset{escapebegin=\textbraceleft\begin{CJK}{GB}{gbsn},escapeend=\end{CJK}\textbraceright}<br />\begin{lstlisting}[escapeinside=\{\}]<br />for i:=maxint to 0 do<br />begin<br />{ 中文 }<br />end;<br />\end{lstlisting}<br /><br /><br />以下都可以改中文<br />\renewcommand\abstractname{摘~~要}<br />\renewcommand{\contentsname}{目~~录}<br />\renewcommand{\figurename}{图}<br />\renewcommand{\refname}{参~考~文~献}<br /><br />还有一个indexname可以改索引成中文
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/149587#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 20 Dec 2007 01:42:01 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/149587</link>
        <guid>http://coderplay.javaeye.com/blog/149587</guid>
      </item>
      <item>
        <title>texlive 2007使用日记</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/149027" style="color:red;">http://coderplay.javaeye.com/blog/149027</a>&nbsp;
          发表时间: 2007年12月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          \input与\include有区别. <br />比如写Makefile的时候, Makefile所在目录是项目的主目录. 此项目下面有src/chapter1.tex, src/main.tex<br />如果main.tex用\input引用chapter1.tex时,得带上目录名<br />\input{src/chapter1}<br />表明此时目录是和Makefile的地址一致。<br />而\include却不用,它是<br />\include{chapter1}<br /><br />2. \renewcommand{}{}可以用来重定义一些命令的相关参数。同类型的还有\newenvironment{}{}{},它是定义环境的,更大幅度地改变。<br /><br />\renewcommand{\abstractname}{摘~~要}<br />\begin{abstract}<br />中文摘要<br />\end{abstract}<br /><br />\renewcommand{\abstractname}{Abstract}<br />\begin{abstract}<br />English Abstract<br />\end{abstract}<br />两次重定义,就可以同时写中英文摘要了<br /><br />3. 列参考书目可以用\begin{thebibliography}{}<br />里面的每一项可以用\bibitem{}给出. <br />不过改references这几个字为中文的"参考书目"还不知道是 \renewcommand{}{}哪个. 只见过newenvironment{}{}{}的方法.<br /><br />4. 要求输出文件换行, tex源文件得空一行.也就是换两行<br /><br />5. 输入特殊符号应该在$$之间
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/149027#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 18 Dec 2007 02:01:12 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/149027</link>
        <guid>http://coderplay.javaeye.com/blog/149027</guid>
      </item>
      <item>
        <title>texlive 2007在windows上的安装与使用</title>
        <author>coderplay</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://coderplay.javaeye.com">coderplay</a>&nbsp;
          链接：<a href="http://coderplay.javaeye.com/blog/148757" style="color:red;">http://coderplay.javaeye.com/blog/148757</a>&nbsp;
          发表时间: 2007年12月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: red">安装</span><br />1.  在http://www.tug.org/texlive/下载texlive的iso文件. <br />它分live和dist版, windows上可以用dist版. live版内容太多.<br />2. 安装好了后, 会有一个texmf-local目录与texlive的根目录平行. <br />这个texmf-local目录也就是你自己的宏包,字体等资源的添加目录. <br />3. 安装中文字体. 用王垠的gbkfonts来做字体文件.具体方法参见:<br />http://learn.tsinghua.edu.cn:8080/2001315450/tex/tex_setup_chinese.html<br />windows上可以下载 http://learn.tsinghua.edu.cn:8080/2001315450/src/gbkfonts.zip来安装. 我使用的是xp, 解压后把go.bat中的所有winnt改成windows. 改后go.bat的内容为<br /><br />gbkfonts -c -gbk c:/windows/fonts/simsun.ttf  song<br />gbkfonts -c -gbk c:/windows/fonts/simhei.ttf  hei<br />gbkfonts -c -gbk c:/windows/fonts/simkai.ttf  kai<br />gbkfonts -c -gbk c:/windows/fonts/simfang.ttf fs<br /><br />然后运行它. 它会产生dvips,tex, dvipdfm等目录和cjk.map, cid-x.map, ttfonts.map, pdftex.cfg文件. 目录直接复制到texmf-local其实就可以满足我的要求了. 其它如pdflatex, dvips等程序要使用中文字体可以参照上面的网页来做<br /><br />最后用mktexlsr来告诉latex: 有文件更新了. 否则没用<br /><br /><span style="color: red">应用中文</span><br />新建一个gb.tex,内容如下:<br /><br />\documentclass[12pt]{article}<br /><br />\usepackage{enumerate}<br />\usepackage{CJK}<br /><br />\begin{document}<br />\begin{CJK}{GBK}{kai}<br /><br />\title{SUSE10 用户指南}<br />\author{XXX}<br />\maketitle<br /><br />\section{改善中文字体显示}<br />\subsection{安装新字体}<br />以下操作请切换到ROOT身份下进行：<br />\begin{description}<br />\item [拷贝Windows下的中文字体] 这里使用windows的字体来替代SUSE默认的中文字体 <br />\begin{enumerate}[{命令}-1]<br />\item \# mkdir -p /usr/share/fonts/msfonts<br />\item \# cp /windows/C/WINDOWS/Fonts/sim* /usr/share/fonts/msfonts/<br />\item \#<br />\end{enumerate}<br /><br />\end{description}<br />\subsection{调整字体显示效果}<br /><br />\section{显卡驱动安装}<br />\subsection{ATI显卡}<br /><br />\end{CJK}<br />\end{document}<br /><br />然后运行:<br />latex gb.tex<br />dvipdfm gb.dvi<br />就可以生成一个中文楷体的pdf文件了<br /><br /><br /><span style="color: red">数学符号</span><br />比如你想显示积分符号,或者微分符号,矩阵等东东,可以用美国数学会的amslatex套件.<br />地址是: http://www.ams.org/tex/amslatex.html<br />从上面的地址下载了一个zip包,直接解压texmf-local目录下,然后别忘了<br /><br />mktexlsr<br /><br />就可以使用了.<br /><br />可以用amslatex\source\latex\amsmath下面的texmath.tex试一试就知道效果了.
          <br/>
          <span style="color:red;">
            <a href="http://coderplay.javaeye.com/blog/148757#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 17 Dec 2007 06:30:40 +0800</pubDate>
        <link>http://coderplay.javaeye.com/blog/148757</link>
        <guid>http://coderplay.javaeye.com/blog/148757</guid>
      </item>
  </channel>
</rss>