1. Disruptor 等待策略引发的 CPU 负载异常问题

    2020-07-14 Tue
    By xiayf

    背景

    工作中,我负责的系统是一个数据流处理服务 - 以流水线(pipeline)的形式分多级异步处理:

    其中的 队列 实际使用的是 Disruptor,多生产者单消费者模式:

    ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat(name).setDaemon(true).build();
    Disruptor<Event<T>>  disruptor = new Disruptor<>(Event<T>::new, bufferSize, factory, ProducerType.MULTI, new SleepingWaitStrategy());
    disruptor.handleEventsWith((Event<T> event, long sequence, boolean endOfBatch) -> {
        consumer.accept(event.value, endOfBatch);
        event …
  2. 如何剖析 JVM 应用(译)

    2020-07-13 Mon
    By xiayf

    原文链接:How to profile JVM applications

    Hi 大家好。工具团队(tooling team)近期的一个关注点是改进 sbt 贡献流程( improvement of the contribution process to sbt)。我们一直在思考的另一个事情是 sbt 的性能。为一举解决这两件事情,我调研了 Jason Zaugg、Johannes Rudolph 这些人如何剖析 JVM 应用,这篇文章即是调研结果。

    这里论述的技术应该可以应用于Java 和 Scala,也基本与你使用的工具无关。

    火焰图(使用 async-profiler 生成)

    剖析 JVM 应用的方式有多种,但新晋热门是Netflix 高级性能架构师(Senior Performance Architect …

  3. Java System.getProperty VS. System.getenv(译)

    2019-06-25 Tue
    By xiayf

    原文:Java System.getProperty vs System.getenv

    1、简介

    Java 应用代码中会自动引入 java.lang 包。这个包包含很多常用的类,包括 NullPointerExceptionObjectMathString 等等。

    其中 java.lang.System 类是一个 final 类,这意味着开发者无法继承它,其所有方法都是静态的(static)。

    System 类中有两个方法,分别来读取系统属性(system properties)和环境变量(environment variables),下面我们来看看这两者的区别。

    2、使用 System.getProperty()

    Java 平台使用一个 Properties 对象来提供本地系统相关的信息和配置 …

    标签: 翻译 Java
  4. Java 单测伴侣 - mockito

    2019-06-17 Mon
    By xiayf

    其实工作以来,我很少写测试/单测代码,一方面是大部分互联网公司团队对测试的要求不高,另一方面是想写好测试代码还挺难的,挺花时间,其中最麻烦的是待测代码可能会访问外部资源(比如数据库、HTTP API),如果不能方便地进模拟访问这些外部资源,那么测试起来会非常麻烦。

    但,对于复杂逻辑,如果不经过严格测试,发布到生产环境,又有些不放心,没底气,或者在代码重构时,如果没有覆盖全面的测试,很难评估代码变动带来的影响。

    直到遇到 mockito,我才觉得是时候认真写写测试代码了。


    mockito 提供两种对象模拟方式:mockspy

    简单来说,mock 模拟的对象是一个完全假的对象,只是具备指定类型的接口,以 java.util.List 为例:

    import static org.mockito.Mockito.mock;
    
    List mockedList = mock(List.class);
    

    虽然 …

    标签: Java mockito 单测
  5. 配置 Maven 自动化构建 protobuf 代码依赖

    2018-05-14 Mon
    By xiayf

    1.pom.xml 中添加如下属性配置:

    <properties>
        <!-- protobuf paths -->
        <protobuf.input.directory>${project.basedir}/src/main/protobuf</protobuf.input.directory>
        <protobuf.output.directory>${project.build.directory}/generated-sources</protobuf.output.directory>
        <!-- library versions -->
        <build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
        <maven-antrun-plugin.version>1.8</maven-antrun-plugin.version>
        <maven-dependency-plugin.version>3.0.2</maven-dependency-plugin.version …
    标签: java maven protobuf

Page 1 / 1