深入学习G1垃圾收集器

G1 (Garbage-First) 垃圾收集器在是Java9的默认垃圾收集器。G1 的主要关注点在于达到可控的停顿时间,在这个基础上尽可能提高吞吐量。

如果你的应用使用了较大的堆(如 6GB 及以上)而且还要求有较低的垃圾收集停顿时间(如 0.5 秒),那么 G1 是你绝佳的选择。

Java线上CPU占用过高问题排查--火焰图

日常开发过程中,有时会出现线上机器CPU飙高,这很可能导致服务宕机,造成线上事故。如何快速找出程序问题所在,是必须掌握的技巧,这里分享使用火焰图来定位问题。

首先得明白什么是火焰图。简单的讲:整个图形看起来就像一团跳动的火焰. 燃烧在火苗尖部的就是 CPU 正在执行的操作, 不过需要说明的是颜色是随机的, 本身并没有特殊的含义, 纵向表示调用栈的深度, 横向表示消耗的时间. 因为调用栈在横向会按照字母排序, 并且同样的调用栈会做合并, 所以一个格子的宽度越大越说明其可能是瓶颈. 所以, 主要就是看那些比较宽大的火苗, 特别留意那些类似平顶山的火苗.

electron导出excel

前言

最近在弄一个Electron小项目,需要生成并导出Excel文件,踩到了一些坑,记录一下,避免以后再翻车。

正文

eletron进程分为主进程和渲染进程,文件导出在两个进程中实现不一样,这里主要讲使用json导出excel,其他格式导出方法类似,话不多说,直接上代码

spring中发布订阅模式实践

概述

在实际开发中,经常会碰到要去解耦合一些依赖调用,比如单成功后会发送手机短信、发送绑定邮箱、数据库更新后通知发送mq等。而且通知这个操作又不希望强耦合在主业务流程中,这个时候我们很容易就想到了发布订阅(观察者)设计模式。

首先看代码实现: