<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Duke的专栏]]></title><description><![CDATA[记下我的学习经历]]></description><link>https://blog.youkuaiyun.com/smartzxy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; smartzxy]]></copyright><item><title><![CDATA[挖挖Hive的代码（三）——生成MapReduce（中）]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/7883475</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/7883475</guid><author>smartzxy</author><pubDate>Sun, 19 Aug 2012 16:28:17 +0800</pubDate><description><![CDATA[好久没有更新博客了，最近终于有空可以继续分享我对Hive代码的剖析了。不想再用上一篇的那种风格来解读代码了，直接上白话版的代码解读吧。
上一篇已经贴过一段模式匹配法处理Operator树的代码，罗列了十多个处理流程。这次就具体展开的解读一下Hive是如何实现这些处理流程的。



GenMRProcContext （下面简称ctx），

记录了整个遍历过程中的上下文信息。

Pa]]></description><category></category></item><item><title><![CDATA[挖挖Hive的代码（二）——生成MapReduce（上）]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/6787870</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/6787870</guid><author>smartzxy</author><pubDate>Sat, 24 Sep 2011 16:45:09 +0800</pubDate><description><![CDATA[Hive在做完语义分析后，会把查询语句的逻辑转化成一个由operator构成的DAG。但是这个DAG不能完全对应于Hadoop的计算框架，还需要根据Hadoop的框架要求，进一步的切割剪裁才行，就是封装成对应的Task对象。
切割这个DAG的逻辑在SemanticAnalyse.java中的genMapRedTasks方法里，核心代码如下：

    Map opRules = new Li]]></description><category></category></item><item><title><![CDATA[挖挖Hive的代码（一）——UDF]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/6726877</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/6726877</guid><author>smartzxy</author><pubDate>Sun, 28 Aug 2011 21:03:55 +0800</pubDate><description><![CDATA[系列第一篇，先扯扯。Hive的东西太多了，想一篇文章介绍完也是可以的，但是没有意义。所以我会分几篇写下我的“挖掘”经历，当然了，我也没打算把Hive所有的内容都挖一遍，只是记录下我感兴趣的、没见别人挖过的……
         Hive对查询语句的解析过程，在淘宝数据平台的官方]]></description><category></category></item><item><title><![CDATA[回到优快云]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/6726853</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/6726853</guid><author>smartzxy</author><pubDate>Sun, 28 Aug 2011 15:31:28 +0800</pubDate><description><![CDATA[记得上一次从优快云搬走，是因为当时在学校里访问优快云的博客，响应速度实在受不了……
这次又回来了，因为受不了JavaEye（哦，现在叫ITeye了）博客的单调风格……
给个ItEye的传送门吧：点击打开链接]]></description><category></category></item><item><title><![CDATA[两天记]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83809768</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83809768</guid><author>smartzxy</author><pubDate>Mon, 10 Jan 2011 22:24:16 +0800</pubDate><description><![CDATA[本记主要记录一下昨天重装系统的心情，和刚刚看到的一段很有感触的经验。

宿怨：重装系统是积淀了好久的念头，RHEL太不合我胃口了，资源太少，很多包通过yum装不起来，想要实现我理想中的个性化太艰难了（主要我不喜欢折腾系统太久）。

导火索：Python的安装环境被我不小心删了，重装Python不知为什么有些库编译不起来。

动手了：移动硬盘不在身边，没法使用惯用的硬盘安装方式了，于是打...]]></description><category></category></item><item><title><![CDATA[上手mercurial]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83770858</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83770858</guid><author>smartzxy</author><pubDate>Sun, 28 Nov 2010 20:19:32 +0800</pubDate><description><![CDATA[     无论是在学校里还是之前在team里的一些开发都是用subversion做版本控制的，习惯于svn up、svn ci……当然也经常挣扎于svn的烦恼中，尤其是来公司干活后。最头痛的是经常会遇到自己coding了好多代码，突然来了一个棘手的bug，虽然改正很轻松，但提交就麻烦了，因为除了修正bug的代码还有我未完工的代码，不能简单的svn ci了~

     最近可能也是因为项目里不...]]></description><category></category></item><item><title><![CDATA[刚工作，博客素材严重匮乏]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83766876</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83766876</guid><author>smartzxy</author><pubDate>Thu, 18 Nov 2010 21:50:50 +0800</pubDate><description><![CDATA[来杭州实习了四个月了，不是兼职，不是给老师干活，不是打收银员那样的工，而是真真实实的在公司干我的本行，有好奇，有激情，有压力，有遗憾……
 
刚开始接触这个行业，就向往着阿里巴巴，一直憧憬着，一直努力着，最终真的来了，还来的那么有戏剧性。生活充满了未知和惊喜。
 
在学校的时候，基本没有正式的任务，所以闲时很多，可以经常混迹于论坛、博客、邮件列表，体验、学习、试验各种好玩的技术，也就会经常...]]></description><category></category></item><item><title><![CDATA[云云实习生活]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83726614</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83726614</guid><author>smartzxy</author><pubDate>Fri, 01 Oct 2010 01:35:29 +0800</pubDate><description><![CDATA[      这个点已经是国庆节当天了，哈哈，开始了实习后最长的一个假期！昨晚才从杭州坐大巴回到的家（其实就是几个小时前的事）。感谢公司的HR晨哥，在我焦急的等公车的时候，遇到了他，于是把我捎到了杭州北站；抱怨一下大巴上的厕所，太臭了，熏死我了……
 
      三个月前，意外的在邮件列表里（感谢华蟒中国!)看到了一则实习生招聘信息，然后惊讶的获得了一个python开发的实习机会——东家是我最...]]></description><category></category></item><item><title><![CDATA[为锦书去窃书]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83711191</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83711191</guid><author>smartzxy</author><pubDate>Sat, 18 Sep 2010 21:44:30 +0800</pubDate><description><![CDATA[
不知哪里来的念头，想买电纸书（为了与电脑上的电子书区分，就这么叫吧）了。本来想买kindle的，可是等上市还要一个多月；本来已经在淘宝上拍下了汉王的一款，突然看到了bambook，就嫌汉王贵了；本想去官网买的，可要排队预订……于是去淘宝买了一台内测版的bambook，中文名——锦书~
可是电纸书需要电子书资源才能发挥它的用处，工作中遇到的资料只是一小部分（工作中通过显示器看资料太刺眼也是买电...]]></description><category></category></item><item><title><![CDATA[捉摸Python的WSGI]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83682608</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83682608</guid><author>smartzxy</author><pubDate>Tue, 10 Aug 2010 21:37:26 +0800</pubDate><description><![CDATA[     上月初开始实习的，想来一个月了，却一直没有时间更新博客，导致七月博客竟然一篇都没有……
     学了三年Java，就因为接触了三个月的Python，于是就找了一个Python相关的实习，这厮太不“忠义”了……
     
     过去的这个月，接触的最多的就是Python的WSGI了，WSGI不是框架不是模块，仅仅是一个规范协议，定义了一些接口，却影响着Python网络开发的方...]]></description><category></category></item><item><title><![CDATA[改进我的人人农场收菜外挂]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83644943</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83644943</guid><author>smartzxy</author><pubDate>Sat, 19 Jun 2010 09:45:40 +0800</pubDate><description><![CDATA[     之前在论坛里发了我的收菜外挂代码（详见文章《被偷无奈写个收菜外挂》），嘿嘿，关注的人还真多，还上了首页！

     这两天把代码改进了一下，调整了一下结构，设计得更OO了。另外主要的变化是增加了自动解析下次收菜的时间，并且自动“秒收”（打引号是因为wap版农场的限制，其实精确不到秒……）。我在代码里预留了喂食和偷菜的功能，其实也很好实现，尤其是偷菜，但这样就少了游戏的趣味了~但是喂...]]></description><category></category></item><item><title><![CDATA[研究了一下字符编码]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83643901</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83643901</guid><author>smartzxy</author><pubDate>Wed, 16 Jun 2010 17:47:59 +0800</pubDate><description><![CDATA[    凡是在应用中涉及到中文了，都会遇到字符编码问题。之前没有仔细研究，脑中只有一个比较敷衍的概念——在交互中统一字符编码就不会出问题了~具体字符编码会出什么问题，一直没好好研究下。（今早看到华莽邮件里又有人为了字符编码抓狂了，同情下……）

    首先要清楚一下几个概念：
 


    字节（byte）：计算机中存储数据的单元，一个8位的二进制数，是一个很具体的存储空间。
  ...]]></description><category></category></item><item><title><![CDATA[被偷无奈写个收菜外挂]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83643533</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83643533</guid><author>smartzxy</author><pubDate>Mon, 14 Jun 2010 21:14:51 +0800</pubDate><description><![CDATA[     无聊的时候玩玩人人农场，不知不觉等级就高了，于是乎就招偷了……作为一个玩农场的程序员，不能对此束手无策的！写个收菜的程序吧，顺便练练Python！
 
     研究了一下人人网的wap页面，写下了如下的代码：


#! /usr/bin/env python
#coding=utf-8
import urllib2,urllib
from xml.dom import m...]]></description><category></category></item><item><title><![CDATA[路径中的空格在作梗]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83640537</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83640537</guid><author>smartzxy</author><pubDate>Tue, 08 Jun 2010 12:07:19 +0800</pubDate><description><![CDATA[     Tomcat里的一段程序要读取一个配置文件，在自己电脑里跑一点问题也没有，文件内容乖乖的给我读出来了；可应用部署到别人的机子都会报错：文件获取失败！
 
     代码读文件是这么写的：


String fileAddress = this.getClass().getClassLoader()
                        .getResources(&quot;c...]]></description><category></category></item><item><title><![CDATA[HTML5的表单到底还是不支持PUT、DELETE？]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83639729</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83639729</guid><author>smartzxy</author><pubDate>Sun, 06 Jun 2010 22:09:17 +0800</pubDate><description><![CDATA[      REST架构的核心属性之一便是统一接口，可现在的HTML表单只支持GET和POST方法，一下子就“禁掉”（但是还是可以通过JavaScript脚本实现其它接口）了REST要求的一半接口。《RESTful Web Services》中很多例子都给form的method赋上了PUT、DELETE值，说是HTML5中会支持。于是我就好奇地搜了下HTML5在这方面的内容。
 
      ...]]></description><category></category></item><item><title><![CDATA[开始学习REST]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83638578</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83638578</guid><author>smartzxy</author><pubDate>Thu, 03 Jun 2010 21:59:29 +0800</pubDate><description><![CDATA[       刚才去学校的新图书馆泡了一会儿，感慨啊：我们终于有像样的图书馆了！图书馆好敞亮，好大，座位好多，环境很好，狠有读书的气氛，待里面真的灰常的享受~
 
     感慨到此为止~
 
      今天去图书馆完全是冲着《RESTful Web Services》去的。怎么会突然想到这本书的呢？今天开通了豆瓣，在读书频道它猜的；外加前些天面试中兴的时候，面试官也问到了我对REST的...]]></description><category></category></item><item><title><![CDATA[简单比较Python的数据持久化操作（二）]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83637018</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83637018</guid><author>smartzxy</author><pubDate>Tue, 01 Jun 2010 11:34:29 +0800</pubDate><description><![CDATA[      Python中操作关系数据库最直接的就是用DB-API了，流程一般是：连接、执行SQL语句、提交、断开。以MySQL为例，下面是各步骤的代码示例：
 
首先是连接：
 
% python
&amp;gt;&amp;gt;&amp;gt; import MySQLdb
&amp;gt;&amp;gt;&amp;gt; conn = MySQLdb.connect(host='localhost', user='root',...]]></description><category></category></item><item><title><![CDATA[简单比较Python的数据持久化操作（一）]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83636836</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83636836</guid><author>smartzxy</author><pubDate>Mon, 31 May 2010 22:22:35 +0800</pubDate><description><![CDATA[      最近喜欢上了Python，喜欢它的简洁高效，喜欢它的“无所不能”。
 
      在动手我计划的项目之前，打算先储备些基础知识。之前已经对基本的语法熟悉了，现在该对数据操作做一些深入了。Python的数据持久化操作主要是六类：普通文件、DBM文件、Pickled对象存储、shelve对象存储、对象数据库存储、关系数据库存储。
 
      普通文件不解释了，DBM就是把字符...]]></description><category></category></item><item><title><![CDATA[阿里巴巴宣讲会归来]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83632164</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83632164</guid><author>smartzxy</author><pubDate>Fri, 21 May 2010 10:01:07 +0800</pubDate><description><![CDATA[     昨晚跑南大本部去听了阿里巴巴的宣讲会，顺便还参加了一场比试，比试被我搞水了……
 
     宣讲会来了两位大佬：鲁肃和愚公。愚公这名字早有耳闻了，他的《大道至简》也看过，好书！他的宣讲也比较有实干，多少能学到点实实在在的知识；鲁肃的演讲内容就比较空洞了，有炫耀的感觉，讲了很多支付宝成功的经历。宣讲会嘛，就是给公司做宣传的，好把人讲得热血沸腾，争着来加盟~但他的话语又不是很有渲染力，...]]></description><category></category></item><item><title><![CDATA[最近的事儿]]></title><link>https://blog.youkuaiyun.com/smartzxy/article/details/83612069</link><guid>https://blog.youkuaiyun.com/smartzxy/article/details/83612069</guid><author>smartzxy</author><pubDate>Mon, 10 May 2010 21:14:37 +0800</pubDate><description><![CDATA[        突然意识到好久没有更新博客了，只因为最近的那些事儿实在没什么可在这儿写的。
 
      最近突然对Python感兴趣了，一则它是动态语言，二来它是所谓的脚本，最重要的是它的简约而强大。它是多平台的，而且可以和两大开发环境（Java和.net）融合；它的语句简练，一个可执行的hello world程序只要一行代码，Java至少要一个类定义、一个main函数吧；我目前印象最深的...]]></description><category></category></item></channel></rss>