保存成功
订阅成功
保存失败,请重试
提交成功
Dora

Dora

阿里资深研发工程师
半个全栈工程师,目前专注于分布式系统相关的研发。喜欢探索新的领域,曾在几大互联网公司从事算法、中间件、架构方面的工作,深耕Java技术栈。...更多
创作文章2

Java 进阶:系统异常排查“三板斧”—CPU、Load、内存

作为软件工程师,对于衡量系统性能的常用指标:CPU 使用率、系统负载(Load)、响应时间(RT)、每秒查询率(QPS)、并发数等,应该不陌生。通过这些指标可以量化地评价系统的状态,当系统在运行中出现问题时,这些表征系统性能的指标通常也会出现异常,从而有助于定位问题。更重要的是,大多数情况下,在系统问题爆发之前,某些指标就会显示异常,从而起到预警作用,为排查、解决问题争取时间。理解系统性能指标、掌握排查系统问题的方法,是软件工程师进阶的必备技能。 本场 Chat 主要内容: 1. 详解 CPU 使用率分析及其异常排查方法; 2. 详解系统负载(Load)分析及其异常排查方法; 3. 详解内存使用率分析及其异常排查方法。
Java
443 订阅

Java 进阶之路:从 Lock 指令前缀切入,解读 Java Volatile、CAS 及 Automic 包

在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。Java 语言为我们提供了解决上述问题的方法: 1. 可见性:volatile、final 以及锁(synchronized、lock)实现; 2. 原子性:JUC 包提供了一些原子类(如AutomicInteger)、锁实现; 3. 有序性:volatile、锁实现。 初见之下,锁如同一把“万能钥匙”,但其缺陷也很明显——较“重”,并不适合简单的应用场景,比如,多线程环境下保证共享变量 i++ 操作的原子性,加锁可以实现,但有点“牛刀杀鸡”的味道。因此,Java 提供了更“轻”的方案:volatile、CAS 和 Automic 系列原子类。三者联系紧密,volatile 和 CAS 都是基于 LOCK 指令前缀实现的,Automic 系列原子类是基于 volatile 和 CAS 实现的。 本场 Chat 主要内容: 1. 计算机和 JVM 内存模型简介; 2. LOCK 指令介绍,“锁总线”、“锁缓存”实现原理; 3. volatile 保证可见性、有序性的原理; 4. CAS 原子性的实现原理; 5. Automic 系列原子类实现原子操作的原理。
Java
581 订阅