Java线上CPU占用过高问题排查--火焰图 日常开发过程中,有时会出现线上机器CPU飙高,这很可能导致服务宕机,造成线上事故。如何快速找出程序问题所在,是必须掌握的技巧,这里分享使用火焰图来定位问题。 首先得明白什么是火焰图。简单的讲:整个图形看起来就像一团跳动的火焰. 燃烧在火苗尖部的就是 CPU 正在执行的操作, 不过需要说明的是颜色是随机的, 本身并没有特殊的含义, 纵向表示调用栈的深度, 横向表示消耗的时间. 因为调用栈在横向会按照 2020-05-03 运维
electron导出excel 前言最近在弄一个Electron小项目,需要生成并导出Excel文件,踩到了一些坑,记录一下,避免以后再翻车。 正文eletron进程分为主进程和渲染进程,文件导出在两个进程中实现不一样,这里主要讲使用json导出excel,其他格式导出方法类似,话不多说,直接上代码 2020-04-29 前端 > electron #electron
spring中发布订阅模式实践 概述在实际开发中,经常会碰到要去解耦合一些依赖调用,比如单成功后会发送手机短信、发送绑定邮箱、数据库更新后通知发送mq等。而且通知这个操作又不希望强耦合在主业务流程中,这个时候我们很容易就想到了发布订阅(观察者)设计模式。 首先看代码实现: 2020-03-22 Java框架 > spring #设计模式
Java基本容器底层原理分析 概述容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。 2020-03-12 Java基础 > 容器 #Java
Redis面试题归纳 为什么使用 Redis在项目中使用 Redis,主要考虑两个角度:性能和并发。如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis。 性能: 如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的 SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。 特别是在秒杀系统,在同一时间,几乎所有人都在点, 2020-03-12 存储 > redis #redis
Redis过期策略实现原理 在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期。 当我们设置了过期时间,redis是如何判断是否过期,以及根据什么策略来进行删除的。 2020-03-05 存储 > redis #redis
Java并发包原理剖析(二)CountDownLatch原理分析 使用示例CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在使用线程池的情况下提交任务的情况下,我们无法使用线程的join()方法,这就需要选择使用CountDowConLatch了。示例代码如下: 2020-03-02 Java基础 > 并发 #JUC #AQS
Java并发包原理剖析(一)AQS原理分析 AQS 简单介绍AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。 2020-03-02 Java基础 > 并发 #JUC #AQS