<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chlaws的专栏]]></title><description><![CDATA[记录我技术之路成长的过程。]]></description><link>https://blog.csdn.net/chlaws</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; chlaws]]></copyright><item><title><![CDATA[MapReduce源码分析之MapTask分析(二)]]></title><link>https://blog.csdn.net/chlaws/article/details/38376041</link><guid>https://blog.csdn.net/chlaws/article/details/38376041</guid><author>chlaws</author><pubDate>Mon, 04 Aug 2014 22:21:17 +0800</pubDate><description><![CDATA[MapReduce源码分析之MapTask详解的后半段文章。在分析过程中我们知道了MapTask是如何使用循环缓存区管理数据，知道了数据在缓存不下是如何做spill处理的，spill输出的数据格式，combiner如何处理，如何将多一个文件merge为一个等等。也希望通过阅读这部分源码能学习到部分设计思路，能在未来的设计中提供多一种思路。]]></description><category></category></item><item><title><![CDATA[MapReduce源码分析之MapTask分析]]></title><link>https://blog.csdn.net/chlaws/article/details/37742597</link><guid>https://blog.csdn.net/chlaws/article/details/37742597</guid><author>chlaws</author><pubDate>Sun, 13 Jul 2014 20:55:13 +0800</pubDate><description><![CDATA[前言    MapReduce的源码分析是基于Hadoop1.2.1基础上进行的代码分析。    该章节会分析在MapTask端的详细处理流程以及MapOutputCollector是如何处理map之后的collect输出的数据。    map端的主要处理流程
图1 MapTask处理流程    图1所示为MapTask的主要代码执行流程，在MapTask启动后会进入入口run函数，根据是否使用]]></description><category></category></item><item><title><![CDATA[scala 语法要点]]></title><link>https://blog.csdn.net/chlaws/article/details/27869061</link><guid>https://blog.csdn.net/chlaws/article/details/27869061</guid><author>chlaws</author><pubDate>Sat, 31 May 2014 22:54:30 +0800</pubDate><description><![CDATA[前段时间看了下scala做了下笔记，为后续看spark做点准备，笔记内容见图片。]]></description><category></category></item><item><title><![CDATA[MapReduce源码分析之架构分析1]]></title><link>https://blog.csdn.net/chlaws/article/details/23709571</link><guid>https://blog.csdn.net/chlaws/article/details/23709571</guid><author>chlaws</author><pubDate>Mon, 14 Apr 2014 22:24:54 +0800</pubDate><description><![CDATA[前言
    MapReduce的源码分析是基于Hadoop1.2.1基础上进行的代码分析。
    本篇，将不会涉及代码部分的分析，只是简单分析map的整体架构，并介绍map与reduce的运行过程，主要是为后续的分析做一个铺垫。至于MapTask/ReduceTask的原理分析，JobTracker部分，以及TaskTracker如何启动一个Task这些都将在后续章节给出。
MR编程模型]]></description><category></category></item><item><title><![CDATA[MapReduce源码分析之InputSplit分析]]></title><link>https://blog.csdn.net/chlaws/article/details/22900141</link><guid>https://blog.csdn.net/chlaws/article/details/22900141</guid><author>chlaws</author><pubDate>Thu, 03 Apr 2014 23:15:55 +0800</pubDate><description><![CDATA[前言
MapReduce的源码分析是基于Hadoop1.2.1基础上进行的代码分析。

什么是InputSplit
       InputSplit是指分片，在MapReduce当中作业中，作为map task最小输入单位。分片是基于文件基础上出来的而来的概念，通俗的理解一个文件可以切分为多少个片段，每个片段包括了等信息。在MapTask拿到这些分片后，会知道从哪开始读取数据。
Job]]></description><category></category></item><item><title><![CDATA[迟到的2013年总结]]></title><link>https://blog.csdn.net/chlaws/article/details/18849095</link><guid>https://blog.csdn.net/chlaws/article/details/18849095</guid><author>chlaws</author><pubDate>Tue, 28 Jan 2014 22:14:46 +0800</pubDate><description><![CDATA[前言
      有近两个月没有写blog了，找个不算借口的借口吧，一直因为工作忙的缘故只剩上班和下班了。。特别是放假前加了一次到第二天两点，缓了几天感觉还是精气神仍旧有点没回过神来。。这可以说是工作以来加的最凶猛的一次，估计以后不太会有这样的场景了。
      总的来说，在13年换了份工作，换了个行业，从技术角度来说属于开始从广度转向了深度，让自己更加专注于底层技术。同时，在13年让自己的]]></description><category></category></item><item><title><![CDATA[HBase -ROOT-和.META.表结构(region定位原理)]]></title><link>https://blog.csdn.net/chlaws/article/details/16918913</link><guid>https://blog.csdn.net/chlaws/article/details/16918913</guid><author>chlaws</author><pubDate>Sun, 24 Nov 2013 13:50:01 +0800</pubDate><description><![CDATA[在HBase中，大部分的操作都是在RegionServer完成的，Client端想要插入，删除，查询数据都需要先找到相应的RegionServer。什么叫相应的RegionServer？就是管理你要操作的那个Region的RegionServer。Client本身并不知道哪个RegionServer管理哪个Region，那么它是如何找到相应的RegionServer的？本文就是在研究源码的基础上揭]]></description><category></category></item><item><title><![CDATA[storm-0.8.2源码分析之nimbus运行过程(一)]]></title><link>https://blog.csdn.net/chlaws/article/details/13756021</link><guid>https://blog.csdn.net/chlaws/article/details/13756021</guid><author>chlaws</author><pubDate>Wed, 30 Oct 2013 22:38:12 +0800</pubDate><description><![CDATA[nimbus运行过程
         这部分将详细讲述启动后，nimbus是如何运行的。在之前讲述nimbus启动过程，有提到nimbus.clj中有个通过defserverfn定义的核心函数service-handler，是实现了Thrift的service Nimbus代码生成的Nimbus.Iface这个句柄类，这个句柄类需要用户自己去实现内部每个函数的处理流程。在rpc client调]]></description><category></category></item><item><title><![CDATA[redis-2.6.16源码分析之pub-sub系统]]></title><link>https://blog.csdn.net/chlaws/article/details/10950653</link><guid>https://blog.csdn.net/chlaws/article/details/10950653</guid><author>chlaws</author><pubDate>Mon, 02 Sep 2013 22:26:57 +0800</pubDate><description><![CDATA[redis实现的发送订阅系统，即pub-sub，这部分的的代码比较少，也方便分析。在这只将会分析下普通的pub-sub(会忽略掉Pattern-matching subscriptions)，以此来简述一个pubsub系统是如何实现的。
 在redis主要有介绍redis的pub-sub，在开始之前， 需要知道redis的pubsub的几个命令：
SUBSCRIBE first second ]]></description><category></category></item><item><title><![CDATA[storm-0.8.2源码分析之topology启动]]></title><link>https://blog.csdn.net/chlaws/article/details/10562035</link><guid>https://blog.csdn.net/chlaws/article/details/10562035</guid><author>chlaws</author><pubDate>Thu, 29 Aug 2013 22:44:31 +0800</pubDate><description><![CDATA[topology启动
         一个topology的启动包括了三个步骤
         1)创建TopologyBuilder，设置输入源，输出源
         2)获取config
         3)提交topology（这里不考虑LocalCluster本地模式）
 
         以storm.starter的ExclamationTopology为例：]]></description><category></category></item><item><title><![CDATA[storm-0.8.2源码分析之nimbus启动]]></title><link>https://blog.csdn.net/chlaws/article/details/10561163</link><guid>https://blog.csdn.net/chlaws/article/details/10561163</guid><author>chlaws</author><pubDate>Thu, 29 Aug 2013 22:41:40 +0800</pubDate><description><![CDATA[nimbus启动
脚本启动逻辑
         通过bin/stormnimbus会启动nimbus进程，类似hadoop的jobtracker。
bin/storm是一个python写的脚本，支持jar,kill,nimbus,supervisor,ui,drpc等等命令。
python的入口函数如下
def main():
   if len(sys.argv) 
      ]]></description><category></category></item><item><title><![CDATA[简述thrift与应用分析]]></title><link>https://blog.csdn.net/chlaws/article/details/9326387</link><guid>https://blog.csdn.net/chlaws/article/details/9326387</guid><author>chlaws</author><pubDate>Sun, 14 Jul 2013 21:06:40 +0800</pubDate><description><![CDATA[前言
    本篇将以thrift-0.9.0为背景讲述thrift的基础，使用案例，启发。
概述
  thrift是一个软件框架，用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎，以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa,JavaScript, Node.js, Sma]]></description><category></category></item><item><title><![CDATA[多线程删除注册的事件]]></title><link>https://blog.csdn.net/chlaws/article/details/9009331</link><guid>https://blog.csdn.net/chlaws/article/details/9009331</guid><author>chlaws</author><pubDate>Sun, 02 Jun 2013 22:53:48 +0800</pubDate><description><![CDATA[1.多线程删除注册的事件，因为事件响应总是会调用回调的，因此，在这通过注册和删除回调函数来阐述
2.由于多线程环境去处理，那么需要注意事件增删的接口，会在任何地方调用，因此，需要处理好，即保证无递归产生死锁也要保证互斥性
3.代码是伪代码，处理流程参考了libevent，libevent对于event的删除就是这么做的
4.有可能描述不太清晰，具体可以去看libevent代码


cl]]></description><category></category></item><item><title><![CDATA[unp总结]]></title><link>https://blog.csdn.net/chlaws/article/details/9005947</link><guid>https://blog.csdn.net/chlaws/article/details/9005947</guid><author>chlaws</author><pubDate>Sun, 02 Jun 2013 13:49:06 +0800</pubDate><description><![CDATA[第二章
tcp从连接到关闭的状态变化图
TIME_WAIT状态 
1)可靠实现TCP全双工连接的终止；TCP执行主动关闭，并发送最后一个ACK，该连接必须在TIME_WAIT状态停留2MSL，如果另一端超时并重发最后的FIN,这样可以让TCP再次发送最后的ACK以防止这个ACK丢失
2)允许老的重复分节在网络中消逝  
以太网MTU 1500字节，MSS IPv4 1460,IPv6 1]]></description><category></category></item><item><title><![CDATA[storm几个必知的概念]]></title><link>https://blog.csdn.net/chlaws/article/details/8958159</link><guid>https://blog.csdn.net/chlaws/article/details/8958159</guid><author>chlaws</author><pubDate>Wed, 22 May 2013 00:23:20 +0800</pubDate><description><![CDATA[Concepts






This page lists the main concepts of Storm and links to resources where you can find more information. The concepts discussed are:

TopologiesStreamsSpoutsBoltsStream groupings]]></description><category></category></item><item><title><![CDATA[shell解析ini文件]]></title><link>https://blog.csdn.net/chlaws/article/details/8799784</link><guid>https://blog.csdn.net/chlaws/article/details/8799784</guid><author>chlaws</author><pubDate>Sun, 14 Apr 2013 14:09:44 +0800</pubDate><description><![CDATA[做个shell解析ini文件,用作搭建HA框架中的解析ini配置文件
测试的ini文件是系统里面搜到的一个
# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description	= ODBC for Po]]></description><category></category></item><item><title><![CDATA[再见了,我的第一份工作]]></title><link>https://blog.csdn.net/chlaws/article/details/8657271</link><guid>https://blog.csdn.net/chlaws/article/details/8657271</guid><author>chlaws</author><pubDate>Sun, 10 Mar 2013 22:44:20 +0800</pubDate><description><![CDATA[走过那些年    
    那时还是懵懂的年纪，带着学生气带着对工作的渴望与激情，对于去做linux c/c++的开发充满了期待，在10年11月入职。 而现在转眼两年多过去了，即将离开工作两年半的地方，也即将去面对新的工作，我觉得有必要好好记录下，等待多年后再回头看现在的抉择是否正确。
    回忆两年半乐趣与辛酸
    当初10月份校招中拿到个做linux c/c++的offer欣喜异常]]></description><category></category></item><item><title><![CDATA[通过修改源码来更改nginx的日期格式]]></title><link>https://blog.csdn.net/chlaws/article/details/8650218</link><guid>https://blog.csdn.net/chlaws/article/details/8650218</guid><author>chlaws</author><pubDate>Fri, 08 Mar 2013 13:12:59 +0800</pubDate><description><![CDATA[前言
    群里有朋友想切换nginx 0.7的版本到1.2+的版本，在0.7的版本中他们改了源码，使得访问日志输出的时间格式从[08/Mar/2013:09:30:58 +0800]变成了2013-03-08 12:21:03。说是在修改1.2+版本的时候格式就变乱了，格式一直不对，刚好有人@我，我说就帮忙看下。
须知
    nginx log日志格式的话，无非是在src/core/n]]></description><category></category></item><item><title><![CDATA[两个apache第三方模块冲突]]></title><link>https://blog.csdn.net/chlaws/article/details/8639783</link><guid>https://blog.csdn.net/chlaws/article/details/8639783</guid><author>chlaws</author><pubDate>Tue, 05 Mar 2013 21:20:25 +0800</pubDate><description><![CDATA[冲突情景
    有两个模块分别是mod_city和mod_pfadurl,两者编译成so，如果在http.conf中使用loadmodule 都单独挂到apache中，那么不论是挂哪个到apache中都是可以正常运行，但是如果两者一起挂进apache中则就出现进程fork之后就down掉。



apache 动态加载
apache mod_so中 dlopen时指定了RTLD_NO]]></description><category></category></item><item><title><![CDATA[linux下zeromq write函数变更]]></title><link>https://blog.csdn.net/chlaws/article/details/8569660</link><guid>https://blog.csdn.net/chlaws/article/details/8569660</guid><author>chlaws</author><pubDate>Mon, 04 Feb 2013 17:11:08 +0800</pubDate><description><![CDATA[文件tcp_socket.cpp中write函数发生变更，可以去github上看master版本的src/tcp_socket.cpp 
点这里前往github
说下影响，在之前2.2.0版本，其实write函数是这样的
int zmq::tcp_socket_t::write (const void *data, int size)
{
    ssize_t nbytes = send]]></description><category></category></item></channel></rss>