本文分析的是llvm libc++的实现:http://libcxx.llvm.org/
C++11中的各种mutex, lock对象,实际上都是对posix的mutex,condition的封装。不过里面也有很多细节值得学习。
std::mutex
先来看下std::mutex:
包增了一个pthread_mutex_t __m_,很简单,每个函数该干嘛就干嘛。
class mutex...
分类:
编程语言 时间:
2014-06-25 19:22:54
阅读次数:
338
本篇分析加载配置文件后各个组件是如何运行的?
加载完配置文件订阅者Application类会收到订阅信息执行:
@Subscribe
public synchronized void handleConfigurationEvent(MaterializedConfiguration conf) {
stopAllComponents();
startAll...
分类:
编程语言 时间:
2014-06-24 17:24:59
阅读次数:
445
org.apache.flume.sink.AvroSink是用来通过网络来传输数据的,可以将event发送到RPC服务器(比如AvroSource),使用AvroSink和AvroSource可以组成分层结构。它继承自AbstractRpcSink extends AbstractSink implements Configurable这跟其他的sink一样都得extends Abstract...
分类:
编程语言 时间:
2014-06-24 16:01:30
阅读次数:
303
io_service的作用io_servie实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的...
分类:
其他好文 时间:
2014-06-24 10:48:03
阅读次数:
212
前话
Flume OG 也就是 Flume original generation 由 Cloudera公司开发,最新版本是0.9.4。而Flume NG 就是 Flume next generation, 大概在2011年6月份由 Cloudera贡献给开源社区,目前属于Apache的一个incubator project。官网:http://flume.appache.org/...
分类:
移动开发 时间:
2014-06-22 10:33:01
阅读次数:
266
本文的分析基于llvm的libc++,而不是gun的libstdc++,因为libstdc++的代码里太多宏了,看起来蛋疼。
在多线程编程中,有一个常见的情景是某个任务只需要执行一次。在C++11中提供了很方便的辅助类once_flag,call_once。
声明
首先来看一下once_flag和call_once的声明:
struct once_flag
{
constexpr...
分类:
编程语言 时间:
2014-06-22 09:40:27
阅读次数:
355
游荡知乎这么久,甚是仰慕V神。遂开始造轮子之路,由于新手实力较菜。顾从简单的大整数的入门。功能实现分析:1. 能用字符串, 长整型(long long or _int64)构造出此BigInteger.2. 具有正负数之分(整这个整了好一会)3. 实现基本运算 (c...
分类:
其他好文 时间:
2014-06-21 07:04:09
阅读次数:
213
##Flume概述[Flume](http://flume.apache.org/)是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 ...
分类:
其他好文 时间:
2014-06-20 22:18:57
阅读次数:
309
一、HAProxy简介 HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。 HAProxy运行在当前的硬件上,完全可以支持数以万计的并发...
分类:
其他好文 时间:
2014-06-20 15:54:21
阅读次数:
196