maven使用总结

配置调试源码

eclipse 中所有 Launch 的配置都在这里。

workspace.metadata.plugins\org.eclipse.debug.core.launches

阅读全文

JVM-ClassLoader类加载机制

JVM 的类加载机制

ExtClassLoader 和 AppClassLoader

openjdk\jdk\src\share\classes\sun\misc\Launcher.java

阅读全文

nebula-创建项目

nebula framework

一个基于 spring 的 java web 框架

阅读全文

Python-windows平台上的安装

安装

从 pypi 上下载,tar 包,执行

1
python setup.py install

阅读全文

zheng-在eclipse中安装运行

安装外部依赖

mysql

zookeeper

需要改 conf 目录下配置文件的名称

阅读全文

Spring-Transaction

事务传播

事务的传播特性。当 spring 托管事务的时候。在 Service 层的实现中,可能会出现,一个 Service 方法的实现,可能依赖于其它的 Service的多个方法。而这几个方法都是存在事务的,那么那些被嵌套调用的方法上的事务,如何创建呢,是挂起当前的事务,创建一个新的事务,还是直接就在当前事务中执行。这个就是事务的传播。

阅读全文

BigData-kafka-Consumer实现

阅读全文

学习方法论

framework

了解背景

    阅读全文

    BigData-storm-任务分配及调度

    构建拓扑

    拓扑构建的核心是

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    private Map<String, IRichBolt> _bolts = new HashMap<>();
    private Map<String, IRichSpout> _spouts = new HashMap<>();

    // 添加一个 Spout
    public SpoutDeclarer setSpout(String id, IRichSpout spout, Number parallelism_hint) throws IllegalArgumentException {
    // spout 和 bolt 的 id 不能相同
    // 因为 spout 和 bolt 最终要使用 id 作为 key 放置到
    // 同一个 Map 中。
    validateUnusedId(id);
    initCommon(id, spout, parallelism_hint);
    _spouts.put(id, spout);
    return new SpoutGetter(id);
    }

    // 添加一个 Bolt
    public BoltDeclarer setBolt(String id, IRichBolt bolt, Number parallelism_hint) throws IllegalArgumentException {
    validateUnusedId(id);
    initCommon(id, bolt, parallelism_hint);
    _bolts.put(id, bolt);
    return new BoltGetter(id);
    }

    // 初始化 ComponentCommon 对象
    private void initCommon(String id, IComponent component, Number parallelism) throws IllegalArgumentException {
    ComponentCommon common = new ComponentCommon();
    // 1. 设置 inputs 字段
    common.set_inputs(new HashMap<GlobalStreamId, Grouping>());
    if(parallelism!=null) {
    int dop = parallelism.intValue();
    if(dop < 1) {
    throw new IllegalArgumentException("Parallelism must be positive.");
    }

    // 2. 设置 parallelism_hint 字段
    common.set_parallelism_hint(dop);
    }

    // 3. 设置 json_conf 字段
    Map conf = component.getComponentConfiguration();
    if(conf!=null) common.set_json_conf(JSONValue.toJSONString(conf));
    _commons.put(id, common);
    }

    // SpoutGetter 和 BoltGetter
    // 用来设置有关 Spout 和 Bolt 的配置信息
    // 所有的配置信息,最终都被添加到 ComponentCommon 的 json_conf 字段中,
    // 所以在 SpoutDeclarer 和 BoltDeclarer 的所有配置,最终被设置到
    String currConf = _commons.get(_id).get_json_conf();
    _commons.get(_id).set_json_conf(mergeIntoJson(parseJson(currConf), conf));

    阅读全文

    BigData-storm-zookeeper事件注册

    storm集群状态管理

    ClusterState

    阅读全文