- 博客(18)
- 资源 (2)
- 收藏
- 关注
原创 Flink源码解析之State的实现
State的实现Flink通过异步的checkpoint机制来实现流式处理过程中的容错,简单来讲就是定时地将本地的状态序列化到一个持久存储中,当出现错误是通过恢复检查点的状态来实现容错的,对于机制的详细介绍可以参见这个链接,本章主要讲述flink源码中state的实现。
2017-02-28 10:54:39 6214
原创 并发中的一些基本概念
背景在多核多线程的并发编程中,我们经常会碰到一些概念,比如说out of order execution, memory consistency, cache coherence, memory model等,这里我对这些概念做一些简单的总结和介绍。
2017-02-28 07:39:51 374
原创 Storm Internal
IntroductionStorm is one of the most popular realtime stream processing system in the world. It has been adopted by many companies and also a critical component of our infrastructure.
2016-10-22 11:37:37 276
原创 Understanding Java Memory Model
IntroductionIn this article I’m going to talk about java memory model(JMM for short). Java has been widely used in many areas and understanding JMM is the precondition of writing correct and efficient
2016-10-22 11:29:06 317
原创 Storm Trident Internals
In this article I’m going to talk about the internal design of storm trident. This article is for those who want to understand the internal design of storm trident and how it ensures that exactly once
2016-10-22 10:33:59 366
原创 python中的注释
python中最简单的就是单行注释,以#开始到行尾结束 python中的多行注释是包含在三个"之间的,如下所示"""This is commentThis is coment""" 如果这个注释写在函数的第一行,就是函数的文档,如:def foo(): """comment""" return 1print foo.__doc_
2013-02-05 17:46:02 183
原创 Makefile 快速教程
最近在网上看到一篇makefile的快速教程,感觉写得非常好,对于管理一些基本的小项目来说够用了,这里特别mark一下。这里附加两个解释:默认的情况下,make处理第一个不以.开头的target,并会更新它所以来的target,所以如果处理第一个target的时候不依赖与clean的话,clean不会被执行。但是,如果处理第一个target的时候不小心产生了一个clean文件,那么我...
2013-02-01 21:26:07 75
原创 Java中的位移操作符
Java中的位移操作符分为三种:<<,>>和>>> 首先说说这三种操作符的共同特: 它们左操作数均为int或long类型,如果是其他整型,则会升级到int型,浮点数类型不支持对于右操作数,若左操作数为int型,则只取右操作数的末五位,若为long型,则只取六位。举个例子,1<<32这个操作,其结果是1,而不是0,这是因为3...
2012-09-21 11:07:39 109
Linux下Boost交叉编译
运行环境:ubuntu 12.04, boost 1.50.0由于要把boost移植到arm板上去,所以折腾了一下,后来发现其实挺简单的,这里仅记录下流程,跟上文一样,这里假设你的目标系统的工具链已设置好boost的编译分两部:编译bjam,编译boost 编译bjam的工作比较简单,根据文档上来就可以:进入下载下来的boost的根目录,进入tools/build/v2...
2012-07-07 14:42:54 573
Linux下用Eclipse交叉编译
运行环境:ubuntu 12.04, Eclipse C++ IDE在Eclipse下进行交叉编译十分简单,这里假设你已经拥有了目标主机的编译工具链,我这使用的的arm-linux的交叉工具链。新建C++ Project - Empty Project右击Build Configurations - Manage,新建一个Configuration在C/C++ Build - ...
2012-07-07 14:22:32 148
C++中time和sqlite3中datetime类型之间的转换
最近在做一个项目,其中用到了与sqlite3中时间类型,这里把学到的结果总结下。我们通常用到的时间通常分为两种,本地时间和UTC时间。这两种时间的产生是按时区具体划分的,其区别可以google之,这时就不多说了,简单来说就是UTC时间是时区为0的某个地方的时间,本地时间与其相差几个小时(多或少)。 在<ctime>头文件中有一个函数time_t time(ti...
2012-04-02 17:22:19 1540
原创 [zz]vim下接下Ctrl+S造成程序僵死
我在使用vim的时候,偶尔会碰到vim莫名其妙的僵在那里。在界面上输入什么都没有反应。甚至Ctrl+C、Ctrl+D也没有反应。由于不是经常发生,也就没在意。每次很麻烦的关掉putty的窗口,重新再打开putty。今天发生了好几次,很是郁闷。就想看看究竟是怎么回事,结果发现每次按下Ctrl+S就会出现这个问题。由于以前碰到过vim有些扩展有问题,这次就也怀疑是vim扩展的问题。结果删...
2011-12-22 15:53:13 255
python中opencv 的配置
刚学了下python,准备用opencv做点东西,怕以后忘了如何配了,这里写下来做下记录这里我用的是python 2.7.2, opencv 2.2,win7(64位)其实配置非常简单,步骤如下: 下载并安装python 2.7.2(32位),opencv 2.2在运行python程序之前,将%OPENCV_PATH%\Python2.7\Lib\site-packages...
2011-11-25 22:21:22 122
原创 zz:配置log4j
转自http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下: #配置根...
2011-07-29 22:05:26 84
java concurrency学习
今天看了下java官网上关于concurrency库的教程,了解了下基本知识,在此记录下。 线程池concurrency库中最重要的概念当然是线程池,java中线程池是封闭在Executor接口的实现中的。当我们想执行新的线程中,传统的方法是 new Thread(r).start() 但线程的创建与销毁会造成一定的资源与时间的消耗,设想一下在一个web服务器,如果对...
2011-07-29 21:43:25 133
boost学习笔记之Pointer Container库
当我们需要在stl的库中装入多态类的对象时,通常的做法是在容器里装入父类的指针,然后手动释放,如我有以下两个类class Light{ ....}class PointLight:public Light{ ...}std::vector<Light*> lights;lights.push_back(new PointLight(...
2011-07-19 12:25:43 171
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人