陈树义的博客

分享我的所思所想

服务器宕机了,Kafka 消息会丢失吗?

大家好,我是树哥。消息队列可谓是高并发下的必备中间件了,而 Kafka 作为其中的佼佼者,经常被我们使用到各种各样的场景下。随着 Kafka 而来得,还有三个问题:消息丢失、消息重复、消息顺序。今天,树哥带大家聊聊消息丢失的问题。可靠性级别回到标题提出的问题:我们是否真的能保证 Kafka 消息不丢

Java 内存模型,或许应该这么理解

大家好,我是树哥。在前面一段时间,我连续写了几篇关于并发编程的文章:从 CPU 讲起,深入理解 Java 内存模型! - 陈树义的博客深入理解 happens-before 原则 - 陈树义的博客深入理解 synchronized 的锁优化 - 陈树义的博客深入理解 Java 对象的内存布局 - 陈

深入理解 volatile 关键字

volatile 关键字是 Java 语言的高级特性,但要弄清楚其工作原理,需要先弄懂 Java 内存模型。如果你之前没了解过 Java 内存模型,那可以先看看之前我写过的一篇「深入理解 Java 内存模型」一文。初学 volatile 关键字,我们需要弄清楚它到底意味着什么。总的来说,它有两个含义

深入理解 Java 对象的内存布局

对于 Java 虚拟机,我们都知道其内存区域划分成:堆、方法区、虚拟机栈等区域。但一个对象在 Java 虚拟机中是怎样存储的,相信很少人会比较清楚地了解。Java 对象在 JVM 中的内存布局,是我们了解并发编程同步机制的基础。在 HotSpot 虚拟机中,对象在内存中存储的布局可以分为 3 块区域

深入理解 synchronized 的锁优化

我们都知道 synchronized 关键字能实现线程安全,但是你知道这背后的原理是什么吗?今天我们就来讲一讲 synchronized 实现线程同步背后的原因,以及相关的锁优化策略吧。synchronized 背后的原理synchronized 关键字经过编译之后,会在同步块的前后分别形成 mon

深入理解 happens-before 原则

在前面的文章中,我们深入了解了 Java 内存模型,知道了 Java 内存模型诞生的意义,以及其要解决的问题。最终我们知道:Java 内存模型就是定义了 8 个基本操作以及 8 个规则,只要遵守这些规则的并发操作,那么它们就是安全的。即使强如树哥的人,看了这 16 条规则也很头疼。它们太过于繁琐了,

从 CPU 讲起,深入理解 Java 内存模型!

Java 内存模型,许多人会错误地理解成 JVM 的内存模型。但实际上,这两者是完全不同的东西。Java 内存模型定义了 Java 语言如何与内存进行交互,具体地说是 Java 语言运行时的变量,如何与我们的硬件内存进行交互的。而 JVM 内存模型,指的是 JVM 内存是如何划分的。Java 内存模

工作 7 年,我陷入的思维误区

曾经陷入的一个思维误区

简历怎么写,才能突显你的价值?

分享两个不错的简历书写项目

如何合法爬取 Github 的信息?

介绍一个超级好用的 Github SDK!