[翻译]The Unspoken the Why of GC Ergonomics

你有使用GC工效学(即:让GC自动调整), 使用带有 -XX:+UseAdaptiveSizePolicy 选项的 UseParallelGC 收集器? 该 GC 的工效学的杰出之处在于它试图增大或缩小堆以达到指定的目标. 你可以选择

[翻译]The Unspoken Application Time

原文 有时, 你会对你的应用程序会在GC之间执行执行多久感兴趣. 这可从GC日志中计算出来, 但一个方便的方式来查看这个信息是通过命令行选项 -XX:+PrintGCApplicationStoppedTime 以及 -XX:+PrintGCApplicationConcurrentTime

[翻译]Oracle JDK 1.7.0_04 及之后可用的GC

原文 Jack Shirazi 告诉你 Oracle Java 7 update 4 及更高版本可以使用哪些GC和GC的组合, 包括Java 8 和Java9 发布日期: June 2012, 更新日期: September 2015, 作者 Jack Shirazi 注意, 这已经更

[翻译]GC 调优指南(简要翻译)

GC, heap 和 Runtime Compiler 的默认选项 服务器级的典型机器是被定义为以下的条件: 2 个或更多的物理CPU 2 GB或更多的物理内存 在一个服务器级的机器中, 默认的选项是

Java中多线程环境使用Random

Random 根据 JDK 文档介绍, 它是线程安全的. Instances of {@code java.util.Random} are threadsafe. 但文档中说, 在跨线程使用 Random 时, 它的性能比较低下. ThreadLocalRandom 这个是在 JDK >= 1.7 时出现的, 当在多线程环境中使用

Java开启远程VisualVM中的VisualGC

开启远程Debug # jdk < java9 之前(默认监听所有) -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n # jdk >= java9(默认只监听本地, 所以要 *:端口, 开启远程) -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=*:4000,suspend=n 开启 JMX -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false 开启 Jstatd 只有

<高手>读书笔记之科学决策

一: 扩充你的选项 一般人的做法是从现有选项里选, 而正确的做法是想想你能不能给自己增加几个选项 二: 用现实检验你的观点 这一步, 人们常犯的错误是 确认

Nginx 在 DSP 广告系统中的优化

环境: Distributor ID: Ubuntu Description: Ubuntu 16.04.2 LTS Release: 16.04 Codename: xenial nginx version: openresty/1.11.2.5 8核心 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz 16GB 物理内存 limit $ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 64045 max locked memory (kbytes, -l) 64 max memory size (kbytes,

Java 8 中流式API性能基准测试

测试代码 package hello.test; import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.RunnerException; import org.openjdk.jmh.runner.options.Options; import org.openjdk.jmh.runner.options.OptionsBuilder; import java.util.Arrays; import java.util.concurrent.TimeUnit; @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.MILLISECONDS) @State(Scope.Thread) public class BenchmarkTest { public static final String[] BRAND_ARRAY = {"iphone", "huawei", "xiaomi", "samsung", "vivo", "bbk", "oppo", "meizu", "sony", "xperia", "htc", "oneplus", "smartisan", "lenovo", "gionee", "nubia", "letv", "vertu"}; private static final String bidRequestModel = "oneplus"; @Benchmark public static String findBidrequstBrandByStream() { final String lowBidRequestModel = bidRequestModel.toLowerCase(); return

Java 8 指南

参考资料 比较器 以前的用法: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer o2) { return o1.getName().compareTo(o2.getName()); } }; lambda: Comparator<Developer> byName = (Developer o1, Developer o2)->o1.getName().compareTo(o2.getName()); Map, List 中的 forEach Map Map<String, Integer> items = new HashMap<>(); items.forEach((k,v)->System.out.println("Item : " + k + " Count : " + v)); List List<String> items = new ArrayList<>(); items.forEach(item->System.out.println(item));

基于Netty的简单HTTP服务例子

例子是基于 Netty 4.1.25.Final + Spring Boot 2 + JDK 1.8 + Maven github netty http demo AppInitializer.java package io.github.emacsist.netty.httpdemo.config; import io.github.emacsist.netty.httpdemo.handler.AppHandler; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.http.HttpObjectAggregator; import io.netty.handler.codec.http.HttpServerCodec; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author emacsist */ @Component @ChannelHandler.Sharable public class AppInitializer extends ChannelInitializer { private static final int MB = 1024 * 1024; @Autowired private AppHandler appHandler; @Override protected void

Java8 日期时间API

Java 8 中, 将日期和时间, 以及日期时间可以分别处理的 获取当前日期 LocalDate.now(); //2018-05-18 获取当前时间 LocalTime.now(); //13:48:37.127 去掉纳秒: LocalTime.now().withNano(0); //13:49:03 格式化日期 DateTimeFormatter 对象是不可变的, 也就是线程安全的~

[翻译]gRPC与deadlines

原文: gRPC and Deadlines gRPC 与 Deadlines TL;DR(Too long, Don’t read 的首字母缩写, 也用于句首的消息摘要): 总是设置 deadline . 这篇文章解释了为什么我们建议要有意设置 deadlines, 以及展示了一些代码片断来

Java生成词云

github kumo 遇到Linux环境下, 中文显示不正常, 这是因为Linux环境中, 字体设置不正确导致的.这个可以参考 issue Java中安装字体 全局VM 将字体文件

Netty粘包和拆包资料收集

维基百科对 TCP 的定义为: 传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传