我所使用的生产 Java 17 启动参数

2022-06-17
阅读 6 分钟
1.3k
JVM 参数升级提示工具:jacoline.dev/inspectJVM 参数词典:chriswhocodes.com Revolut(英国支付巨头)升级 Java 17 实战:[链接]

通过实例程序验证与优化谈谈网上很多对于Java DCL的一些误解以及为何要理解Java内存模型

2022-04-16
阅读 7 分钟
539
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本文基于 OpenJDK 11 以上的版本

全网最硬核 Java 新内存模型解析与实验 - 5. JVM 底层内存屏障源码分析

2022-03-30
阅读 5 分钟
1k
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到...
封面图

全网最硬核 Java 新内存模型解析与实验 - 4. Java 新内存访问方式与实验

2022-03-30
阅读 15 分钟
788
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到...
封面图

全网最硬核 Java 新内存模型解析与实验 - 3. 硬核理解内存屏障(CPU+编译器)

2022-03-30
阅读 14 分钟
910
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到...

全网最硬核 Java 新内存模型解析与实验 - 2. 原子访问与字分裂

2022-03-30
阅读 4 分钟
698
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到...
封面图

全网最硬核 Java 新内存模型解析与实验 - 1. 什么是 Java 内存模型

2022-03-30
阅读 4 分钟
713
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到...

全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中)

2022-03-30
阅读 37 分钟
1.1k
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到...
封面图

为什么我建议线上高并发量的日志输出的时候不能带有代码位置

2022-03-26
阅读 4 分钟
809
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本文是“为什么我建议”系列第二篇,本系列中会针对一些在高并发场景下,我对于组内后台开发的一些开...

关于 Java 18 你想知道的一切

2022-03-22
阅读 8 分钟
1.2k
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~如果你不喜欢这个文字版的,可以参考官方做的这个 Java 内幕新闻第 20 期 - 关于 Java 18 你想知道...
封面图

Java 内幕新闻第二期深度解读

2022-01-15
阅读 9 分钟
828
这是由 Java 官方发布,Oracle JDK 研发 Nipafx 制作的节目,包含 JDK 近期的研发进展和新特性展望和使用,这里加上个人译制的字幕搬运而来。我把 Nipafx 的扩展资料详细研读并提取精华做了个人详细解读:视频地址(熟肉)

硬核 - Java 随机数相关 API 的演进与思考(下)

2022-01-11
阅读 12 分钟
1.1k
本系列将 Java 17 之前的随机数 API 以及 Java 17 之后的统一 API 都做了比较详细的说明,并且将随机数的特性以及实现思路也做了一些简单的分析,帮助大家明白为何会有这么多的随机数算法,以及他们的设计思路是什么。本系列会分为两篇,第一篇讲述 Java 随机数算法的演变思路以及底层原理与考量,之后介绍 Java 17 之前...

硬核 - Java 随机数相关 API 的演进与思考(上)

2022-01-10
阅读 13 分钟
1.5k
本系列将 Java 17 之前的随机数 API 以及 Java 17 之后的统一 API 都做了比较详细的说明,并且将随机数的特性以及实现思路也做了一些简单的分析,帮助大家明白为何会有这么多的随机数算法,以及他们的设计思路是什么。本系列会分为两篇,第一篇讲述 Java 随机数算法的演变思路以及底层原理与考量,之后介绍 Java 17 之前...

Inside Java Newscast #1 深度解读

2022-01-07
阅读 17 分钟
1.2k
本文是 Inside Java Newscast #1 的个人体验与解读。视频地址:点击这里⎯⎯⎯⎯⎯⎯ Chapters ⎯⎯⎯⎯⎯⎯0:00 - Intro0:57 - Java 16 – Intro1:16 - Java 16 – Records1:43 - Java 16 – Type Pattern Matching1:58 - Java 16 – Sealed Classes - Preview2:25 - Java 16 – Stream API2:51 - Java 16 – HTTP/2 API3:14 - Java 16 – ...

JEP解读与尝鲜系列4 - Java 16 中对于 Project Valhalla 的铺垫

2022-01-06
阅读 5 分钟
1.1k
这是 JEP 解读与尝鲜系列的第 4 篇,之前的文章如下:[JEP解读与尝鲜系列 1 - Java Valhalla与Java Inline class]()[JEP解读与尝鲜系列 2 - JEP 142 缓存行填充简化]()[JEP解读与尝鲜系列 3 - Project Loom 使用虚线程进行同步网络 IO 不阻塞的底层原理]()

Java 16 中新增的 Stream 接口的一些思考

2022-01-05
阅读 3 分钟
988
这里先提一个题外话,如果想看 JDK 不同版本之间有何差异,增加或者删除了哪些 API,可以通过下面这个链接查看:[链接]路径中的两个版本就是要对比的两个版本,其界面如下:同时,我们也可以通过 JDK 内置 jdeps 工具查找过期以及废弃API以及对应的替换 {代码...} libs是你的所有依赖的目录,$project是你的项目jar包,...

Java Record 的一些思考 - 序列化相关

2022-01-04
阅读 14 分钟
1.1k
Record 在设计之初,就是为了找寻一种纯表示数据的类型载体。Java 的 class 现在经过不断的迭代做功能加法,用法已经非常复杂,各种语法糖,各种多态构造器,各种继承设计导致针对 Java 的序列化框架也做得非常复杂,要考虑的情况有很多很多。每次 Java 升级,如果对类结构有做改动或者加入了新特性,那么序列化框架就都...

关于 Spring-WebFlux 的一些想法

2022-01-03
阅读 3 分钟
1.4k
现在基于 spring web 的同步微服务有一个非常大的缺陷就是:相对于基于 spring-webflux 的异步微服务,基于 spring-web 的同步微服务没有很好的处理客户端有请求超时配置的情况。当客户端请求超时时,客户端会直接返回超时异常,但是调用的服务端任务,在基于 spring-web 的同步微服务并没有被取消,基于 spring-webflux...

Java Record 的一些思考 - 默认方法使用以及基于预编译生成相关字节码的底层实现

2021-12-23
阅读 14 分钟
1.1k
# 快速上手 Record 类我们先举一个简单例子,声明一个用户 Record。 {代码...} 这样编写代码之后,Record 类默认包含的元素和方法实现包括:record 头指定的组成元素(int id, String name, int age),并且,这些元素都是 final 的。record 默认只有一个构造器,是包含所有元素的构造器。record 的每个元素都有一个对应...

The art of multipropcessor programming 读书笔记-3. 自旋锁与争用(1)

2021-11-05
阅读 6 分钟
806
本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现。并根据个人的查资料以及理解的经历,给各位想更深入理解的人分享一些个人的资料

近期业务大量突增微服务性能优化总结-4.增加对于同步微服务的 HTTP 请求等待队列的监控

2021-11-04
阅读 5 分钟
918
最近,业务增长的很迅猛,对于我们后台这块也是一个不小的挑战,这次遇到的核心业务接口的性能瓶颈,并不是单独的一个问题导致的,而是几个问题揉在一起:我们解决一个之后,发上线,之后发现还有另一个的性能瓶颈问题。这也是我经验不足,导致没能一下子定位解决;而我又对我们后台整个团队有着固执的自尊,不想通过大...

在被线上大量日志输出导致性能瓶颈毒打了很多次之后总结出的经验

2021-11-01
阅读 21 分钟
4.4k
由于线上业务量级比较大(日请求上亿,日活用户几十万),同时业务涉及逻辑很复杂,线上日志级别我们采用的是 info 级别,导致线上日志量非常庞大,经常遇到因为日志写入太慢导致的性能瓶颈(各微服务每小时日志量加在一起约小 1000G)。下面将我们做的日志性能提升与精简日志的规范列出,供大家参考。我们使用的日志框...
封面图

The art of multipropcessor programming 读书笔记-硬件基础1

2021-10-06
阅读 5 分钟
728
本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现。并根据个人的查资料以及理解的经历,给各位想更深入理解的人分享一些个人的资料

一次鞭辟入里的 Log4j2 异步日志输出阻塞问题的定位

2021-07-06
阅读 15 分钟
1.9k
线上某个应用的某个实例突然出现某些次请求服务响应极慢的情况,有几次请求超过 60s 才返回,并且通过日志发现,服务线程并没有做什么很重的操作。这种情况断断续续持续了半小时左右。
封面图

JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理

2021-05-25
阅读 16 分钟
1.2k
Project Loom 主要目标是在 Java 平台上提供一种易于使用、高吞吐量的轻量级并发性和新的编程模型的 JVM 特性和API。这带来了许多有趣和令人兴奋的前景,其中之一是简化网络交互的代码的同时兼顾性能。现在的服务器能够处理打开的套接字连接的数量,远远超过它们能够支持的线程数量,这既带来了机遇,也带来了挑战。

Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationOutsideTLAB

2021-04-27
阅读 9 分钟
1.1k
JFR: RecordingStream leaks memory:启用 jdk.ObjectAllocationInNewTLAB 发现在 RecordingStream 中有内存泄漏,影响 Java 14、15、16,在 jdk-16+36 (Java 16.0.1) 修复。

Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationInNewTLAB

2021-04-26
阅读 9 分钟
1k
JFR: RecordingStream leaks memory:启用 jdk.ObjectAllocationInNewTLAB 发现在 RecordingStream 中有内存泄漏,影响 Java 14、15、16,在 jdk-16+36 (Java 16.0.1) 修复。

Java JFR 民间指南 - 事件详解 - jdk.ObjectAllocationSample

2021-04-22
阅读 12 分钟
1.5k
对象分配采样:jdk.ObjectAllocationSample引入版本:Java 16相关 ISSUE:Introduce JFR Event Throttling and new jdk.ObjectAllocationSample event (enabled by default)各版本配置:Java 16:默认配置(default.jfc):配置值描述enabledtrue默认启用throttle150/s每秒最多采集 150 个stackTracetrue采集事件的时候,...

实战 Java 16 值类型 Record - 2. Record 的基本用法

2021-04-16
阅读 4 分钟
1.8k
在上一篇文章实战 Java 16 值类型 Record - 1. Record 的默认方法使用以及基于预编译生成相关字节码的底层实现中,我们详细分析了 Record 自带的属性以及方法和底层字节码与实现。这一篇我们来详细说明 Record 类的用法。声明一个 RecordRecord 可以单独作为一个文件的顶级类,即:User.java 文件: {代码...} 也可以作为...

Spring Cloud 升级之路 - 2020.0.x - 3. Undertow 的 accesslog 配置

2021-04-08
阅读 8 分钟
2.3k
上一节我们讲述了如何使用 Undertow 作为我们的 Web 服务容器,本小节我们来分析使用 Undertow 的另一个问题,也就是如何配置 accesslog,以及 accesslog 的各种占位符。