自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chlaws的专栏

记录我技术之路成长的过程。

  • 博客(130)
  • 资源 (9)
  • 收藏
  • 关注

原创 MapReduce源码分析之MapTask分析(二)

MapReduce源码分析之MapTask详解的后半段文章。在分析过程中我们知道了MapTask是如何使用循环缓存区管理数据,知道了数据在缓存不下是如何做spill处理的,spill输出的数据格式,combiner如何处理,如何将多一个文件merge为一个等等。也希望通过阅读这部分源码能学习到部分设计思路,能在未来的设计中提供多一种思路。

2014-08-04 22:21:17 6404 3

原创 MapReduce源码分析之MapTask分析

前言    MapReduce的源码分析是基于Hadoop1.2.1基础上进行的代码分析。    该章节会分析在MapTask端的详细处理流程以及MapOutputCollector是如何处理map之后的collect输出的数据。    map端的主要处理流程图1 MapTask处理流程    图1所示为MapTask的主要代码执行流程,在MapTask启动后会进入入口run函数,根据是否使用

2014-07-13 20:55:13 6791 1

原创 scala 语法要点

前段时间看了下scala做了下笔记,为后续看spark做点准备,笔记内容见图片。

2014-05-31 22:54:30 3308

原创 MapReduce源码分析之架构分析1

前言    MapReduce的源码分析是基于Hadoop1.2.1基础上进行的代码分析。    本篇,将不会涉及代码部分的分析,只是简单分析map的整体架构,并介绍map与reduce的运行过程,主要是为后续的分析做一个铺垫。至于MapTask/ReduceTask的原理分析,JobTracker部分,以及TaskTracker如何启动一个Task这些都将在后续章节给出。MR编程模型

2014-04-14 22:24:54 5153 2

原创 MapReduce源码分析之InputSplit分析

前言MapReduce的源码分析是基于Hadoop1.2.1基础上进行的代码分析。什么是InputSplit       InputSplit是指分片,在MapReduce当中作业中,作为map task最小输入单位。分片是基于文件基础上出来的而来的概念,通俗的理解一个文件可以切分为多少个片段,每个片段包括了等信息。在MapTask拿到这些分片后,会知道从哪开始读取数据。Job

2014-04-03 23:15:55 13613 2

原创 迟到的2013年总结

前言      有近两个月没有写blog了,找个不算借口的借口吧,一直因为工作忙的缘故只剩上班和下班了。。特别是放假前加了一次到第二天两点,缓了几天感觉还是精气神仍旧有点没回过神来。。这可以说是工作以来加的最凶猛的一次,估计以后不太会有这样的场景了。      总的来说,在13年换了份工作,换了个行业,从技术角度来说属于开始从广度转向了深度,让自己更加专注于底层技术。同时,在13年让自己的

2014-01-28 22:14:46 3427 1

转载 HBase -ROOT-和.META.表结构(region定位原理)

在HBase中,大部分的操作都是在RegionServer完成的,Client端想要插入,删除,查询数据都需要先找到相应的RegionServer。什么叫相应的RegionServer?就是管理你要操作的那个Region的RegionServer。Client本身并不知道哪个RegionServer管理哪个Region,那么它是如何找到相应的RegionServer的?本文就是在研究源码的基础上揭

2013-11-24 13:50:01 18722 3

原创 storm-0.8.2源码分析之nimbus运行过程(一)

nimbus运行过程         这部分将详细讲述启动后,nimbus是如何运行的。在之前讲述nimbus启动过程,有提到nimbus.clj中有个通过defserverfn定义的核心函数service-handler,是实现了Thrift的service Nimbus代码生成的Nimbus.Iface这个句柄类,这个句柄类需要用户自己去实现内部每个函数的处理流程。在rpc client调

2013-10-30 22:38:12 5022

原创 redis-2.6.16源码分析之pub-sub系统

redis实现的发送订阅系统,即pub-sub,这部分的的代码比较少,也方便分析。在这只将会分析下普通的pub-sub(会忽略掉Pattern-matching subscriptions),以此来简述一个pubsub系统是如何实现的。 在redis主要有介绍redis的pub-sub,在开始之前, 需要知道redis的pubsub的几个命令:SUBSCRIBE first second

2013-09-02 22:26:57 4096

原创 storm-0.8.2源码分析之topology启动

topology启动         一个topology的启动包括了三个步骤         1)创建TopologyBuilder,设置输入源,输出源         2)获取config         3)提交topology(这里不考虑LocalCluster本地模式)          以storm.starter的ExclamationTopology为例:

2013-08-29 22:44:31 7836

原创 storm-0.8.2源码分析之nimbus启动

nimbus启动脚本启动逻辑         通过bin/stormnimbus会启动nimbus进程,类似hadoop的jobtracker。bin/storm是一个python写的脚本,支持jar,kill,nimbus,supervisor,ui,drpc等等命令。python的入口函数如下def main():   if len(sys.argv)       

2013-08-29 22:41:40 6898

原创 简述thrift与应用分析

前言    本篇将以thrift-0.9.0为背景讲述thrift的基础,使用案例,启发。概述  thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa,JavaScript, Node.js, Sma

2013-07-14 21:06:40 9933

原创 多线程删除注册的事件

1.多线程删除注册的事件,因为事件响应总是会调用回调的,因此,在这通过注册和删除回调函数来阐述2.由于多线程环境去处理,那么需要注意事件增删的接口,会在任何地方调用,因此,需要处理好,即保证无递归产生死锁也要保证互斥性3.代码是伪代码,处理流程参考了libevent,libevent对于event的删除就是这么做的4.有可能描述不太清晰,具体可以去看libevent代码cl

2013-06-02 22:53:48 3337

原创 unp总结

第二章tcp从连接到关闭的状态变化图TIME_WAIT状态 1)可靠实现TCP全双工连接的终止;TCP执行主动关闭,并发送最后一个ACK,该连接必须在TIME_WAIT状态停留2MSL,如果另一端超时并重发最后的FIN,这样可以让TCP再次发送最后的ACK以防止这个ACK丢失2)允许老的重复分节在网络中消逝  以太网MTU 1500字节,MSS IPv4 1460,IPv6 1

2013-06-02 13:49:06 5266

转载 storm几个必知的概念

ConceptsThis page lists the main concepts of Storm and links to resources where you can find more information. The concepts discussed are:TopologiesStreamsSpoutsBoltsStream groupings

2013-05-22 00:23:20 3157

原创 shell解析ini文件

做个shell解析ini文件,用作搭建HA框架中的解析ini配置文件测试的ini文件是系统里面搜到的一个# Example driver definitions# Driver from the postgresql-odbc package# Setup from the unixODBC package[PostgreSQL]Description = ODBC for Po

2013-04-14 14:09:44 9157

原创 再见了,我的第一份工作

走过那些年        那时还是懵懂的年纪,带着学生气带着对工作的渴望与激情,对于去做linux c/c++的开发充满了期待,在10年11月入职。 而现在转眼两年多过去了,即将离开工作两年半的地方,也即将去面对新的工作,我觉得有必要好好记录下,等待多年后再回头看现在的抉择是否正确。    回忆两年半乐趣与辛酸    当初10月份校招中拿到个做linux c/c++的offer欣喜异常

2013-03-10 22:44:20 4904

原创 通过修改源码来更改nginx的日期格式

前言    群里有朋友想切换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

2013-03-08 13:12:59 7597 1

原创 两个apache第三方模块冲突

冲突情景    有两个模块分别是mod_city和mod_pfadurl,两者编译成so,如果在http.conf中使用loadmodule 都单独挂到apache中,那么不论是挂哪个到apache中都是可以正常运行,但是如果两者一起挂进apache中则就出现进程fork之后就down掉。apache 动态加载apache mod_so中 dlopen时指定了RTLD_NO

2013-03-05 21:20:25 3494

原创 linux下zeromq write函数变更

文件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

2013-02-04 17:11:08 3158

原创 位图简单实现

/* * ===================================================================================== * * Filename: bitset.c * * Description: * * Version: 1.0 * Created: 02/04

2013-02-04 13:43:29 1153 1

转载 kerberos认证过程

一、 基本原理Authentication解决的是“如何证明某个人确确实实就是他或她所声称的那个人”的问题。对于如何进行Authentication,我们采用这样的方法:如果一个秘密(secret)仅仅存在于A和B,那么有个人对B声称自己就是A,B通过让A提供这个秘密来证明这个人就是他或她所声称的A。这个过程实际上涉及到3个重要的关于Authentication的方面:

2013-01-08 11:37:00 6591 1

原创 hadoop几个版本区别

做个mark,以后有空再详细写写0.20.x是历史稳定版0.23.x是根据0.20.x的稳定版引入了federation和yarn,但缺少NN和HA1.0.x是当前稳定版,但和0.20.x系列差不多,只不过有些优化改进1.1.x是beta版2.0.x 现在是alpha版,有yarn和federation的引入这点是和0.23.x是一样,且有NN和HA,但是它是基于1.x的稳定版

2013-01-08 10:04:14 10391 5

原创 const ptr与ptr const比较

其实只要注意从右向左读取,这样就很好识别了可以参考下这关于const的faq举个例子 const * int p 有些时候会忽悠进int const * 和 int *const之类的当中来迷惑You have to read pointer declarations right-to-left.Fred const* p means "p points to a consta

2013-01-06 21:48:23 3365

原创 nginx日志切割和记录cookie

#!/bin/bash#日志文件存放目录logs_path="/data/Service/nginx/logs"# 日志文件的名字,多个需要空格隔开logs_names=(dm_access)mkdir -p ${logs_path}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/num=${#logs_names

2013-01-05 11:45:18 2719

原创 libevent-2.0.21笔记

参看http://www.wangafu.net/~nickm/libevent-book/  和libevent-2.0.21源码其中有部分我认为比较简单的,就没有记录在这里了。关于源码,可以主要关注,evutil.c evbuffer.c event.c bufferevent.c bufferevent_sock.c 这几个文件。-----------------------

2013-01-02 11:31:57 15721 2

原创 我的2012-分享我的四个项目经验

前言    一看标题就俗套,一时也想不到各种华丽的名字了,直接copy去年的标题,只是将2011改成了2012。还好今年也没有末日,活着就是幸福。在12年最后一天的工作日,刚好可以花点时间回顾下今年的工作情况以及稍微规划下明年吧,希望慢慢的按着自己的规划往前走。    如果有看过去年的朋友,可能会发现与去年的巧合就是都是在最后一天来写。。尴尬。。    本文大致会分两部分,一个是今

2012-12-29 19:30:14 19633 11

原创 C&lua生成新配置

这篇是说c调用lua的。会通过代码来展示如何在配置文件里面配置记录,并让c调用去执行。有一个配置文件名称是“config”用来记录配置的另外有个.c程序来载入config,并调用config中函数来生成新的记录。编译:gcc -g -Wall configbylua.c -o cblua -ldl -llua -lm下面看代码:configmax = 3default

2012-12-28 16:43:49 1653

原创 lua 编码转码url

local url={parsed={}} --存储decode出来的key-value--privatelocal function escape(w) pattern="[^%w%d%._%-%* ]" s=string.gsub(w,pattern,function(c) local c=string.format("%%%02X",string.byte(c)) retu

2012-12-26 21:25:20 12586

原创 lua 类与继承

试试lua中的对象与继承,多说句,多继承我写c++也没用过,直接上组合就ok,因此lua的多继承如果非必须也同样可用用其他方法来实现--lua 类与继承的实验local Str={str="",num=0}function Str:new(s) s = s or {} --为对象绑定metatable为Str setmetatable(s,{__index=self}) retur

2012-12-25 16:20:25 12807

转载 Calling C++ Functions From Lua(lua调用c/c++)

Calling C++ Functions From LuaMy second tutorial dealt with calling Lua functions from C++. This one deals with just the opposite situation – calling C++ functions from Lua. I couldn’t think o

2012-12-25 15:12:45 1706

原创 lua模块几种形式

刚学,如果有问题看manual,不多说两个文件说明下testlib.lua在当前目录下,maxmin.lua在当前目录的子目录lualibs下。即./testlib.lua,./lualibs/maxmin.lua测试过没有问题,大致可以清楚的阐述lua中的模块是怎么个样子,下面上代码:testlib.lualocal maxmin = require "lualibs.m

2012-12-25 15:00:14 5706 1

原创 我的开源[不断扩充中]

前言:这篇转么记录发布了哪些项目,地址都在github.com/iamwljiang。如果其中某个项目没有注释之类的,那么这个项目可能有些不好的影响,我会忽略过去1.guahao一个挂号的东西,这个要低调2.logger这个是一个跨平台的logger记录库,可以编译成库也可以直接将代码嵌入到你的项目中目前支持多线程,日志切割,支持linux权限,所有者更改,linu

2012-12-04 22:08:11 1506

转载 error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR...

转自:http://blog.csdn.net/playstudy/article/details/6661868很久没搞win上东西了,最近将代码导入工程第一次ok,隔了几天重新编译就出现下面的问题了,下面的说的也可以解决。不过我自己是将工程清掉重新导入一次就可以了需要注意的是:通过现有代码导入到工程里面,预定义了_WINDOWS,链接器->系统面板的子系统也是默认定义为 “窗口 (

2012-11-26 12:05:29 7918

原创 tigase 安装后出现登陆错误原因

原帖在这里http://www.tigase.org/content/tigase-db-errorclient-cant-logintigase db error,client can't loginPost Reply5 replies [Last post]Mon, 2012-10-15 03:12

2012-10-16 10:19:36 5414

翻译 安装clojure编译工具leiningen

Edit: Leiningen 1.3.1 got better Windows support and you don't need to follow these instructions anymore. Get the Windows distribution from here:http://github.com/technomancy/leiningen/downloads, un

2012-09-01 16:56:51 7105 2

原创 boost filesystem v2 与 v3的区别

这篇文章会慢慢记录我碰到的使用不同版本boost 的filesystem库发现的一些不同的地方。1.在最近改个项目bug的过程中发现了v2(boost1.42) 的path对象取filename()的时候和v3(boost1.47)的path对象取filename()的结果不一样v2的结果是没有引号的文件名,v3是有引号的“文件名”,因此v3需要这么用path.filename().str

2012-08-18 00:29:53 2048

转载 Beej's Quick Guide to GDB

Beej's Quick Guide to GDBRelease 2 (2009 Jun 14)This is a very quick-and-dirty guide meant to get you started with the GNU Debugger, gdb, from the command line in a terminal. Often times gdb is

2012-08-18 00:21:25 1779

原创 libeio性能测试

前言:        之前搜了一下,貌似没有关于libeio的读写性能测试的数据,因此直接写了个测试程序去测试下。写的没去试,接口都有,有需要可以自己去填下。关于libeio:        这个是库Marc Lehmann写的,关于这个大牛,有兴趣的可以去搜搜。关于测试:        测试环境我分别用ABC表示,采用随机读取文件中的某个位置开始的一定长度

2012-07-10 15:18:03 2990

原创 小心使用zeromq

1.关于介绍zeromq的就不说了,可以自己去看官方guide很详细2.主要说下在使用过程中需要注意的地方1)使用如果使用c++的接口的时候,在你自己的类中或者apache模块中需要将zmq::context_t 对象定义在zmq::socket_t对象的前面,这样可以保证销毁的顺序2)使用sub-pub时候,如果sub没有调用setsockopt设置过滤项(设置NULL则

2012-07-04 17:44:39 9685 3

个人文件加密工具-1.0

缘起:最近对于淘宝之类的网站密码设置的复杂了些,后来想想很多网站的如银行类以及QQ密保之类的一些信息需要保存,但保存到网上感觉不安全,直接写入文本又不安全,因此产生了编写直接文本文件加密工具的想法。 用法: 开始-》运行-》输入cmd启动命令行窗口 输入sa.exe的绝对路径。如c:\1.exe -h会显示较为详细的帮助说明 或者cd 到sa.exe的目录后,在执行sa -h显示帮助。 安全性说明:采用了2重密钥加密文件,为保证唯一性,安全性,只能在加密的机器上才能进行解密。否则将加密后的文件拷贝到其他电脑中再采用sa.exe进行解密也是无法实现文件解密。 关于密钥文件: 加密和解密必须指定,该文件用来生成其中一重密钥。该文件可以简单的文本文件,比如文件内容是aaa,文件名是a.txt,在指定时使用-c a.txt就可以。不过加密后请删除。 在解密的时候再次手工创建该密钥文件就可以了。

2011-09-25

Windows Vista 的 WinHlp32.exe

用于打开vista下的.hlp格式的帮助文件

2010-06-07

exceptional c++系列

Exceptional 三合一,包含: Exceptional C++ - 47难题 Exceptional C++ MoreExceptionalC++

2008-10-21

effectiveC++ More Effective C++(中文)c++库函数(中文)

effectiveC++ /More Effective C++(中文)/c++库函数(中文) 3合1

2008-05-05

DHTML 参考手册

DHTML 参考手册

2008-04-12

数据结构习题与解析(C语言版)

李春葆:数据结构习题与解析(C语言版) 好书。

2007-11-12

经典C程序100例

经典C程序100例 对提高C有不错的帮助

2007-11-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除