自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 JAVA内存模型和Happens-Before规则

前言上一篇文章王子给大家介绍了并发编程中比较关心的三个核心问题,可见性、有序性和原子性。今天我们继续来探索并发编程的内容,聊一聊JAVA的内存模型和Happens-Before规则。JAVA内存模型这里的JAVA内存模型指的不是我们JVM专栏中提到的内存分布模型,而是针对并发编程的,小伙伴们不要混淆概念了。我们已经知道,导致可见性问题的是缓存,导致有序性问题的是指令重排,那么禁用缓存和禁用指令重排不就可以避免出现这两种问题了吗。但想想也知道,如果直接禁用掉,性能会大打折扣,所以正确的方式应该是按

2020-11-18 09:45:30 146

原创 你还不懂可见性、有序性和原子性?

前言今天开始,王子准备开始一个新的专栏:并发编程专栏。并发编程无论在哪门语言里,都属于高级篇,面试中也尝尝会被问到。想要深入理解并发编程机制确实不是一件容易的事,因为它涉及到计算机底层和操作系统的相关知识,如果对这部分知识不是很清楚可能会导致理解困难。在这个专栏里,王子会尽量以白话和图片的方式剖析并发编程本质,希望可以让大家更容易理解。今天我们就来谈一谈可见性、有序性和原子性都是什么东西。并发编程的幕后进入主题之前,我们先来了解一下并发编程的幕后。随着CPU、内存和I/O设备的不断升级,它们之

2020-11-16 13:40:37 319

原创 探索RocketMQ的重复消费和乱序问题

前言在之前的MQ专题中,我们已经解决了消息中间件的一大难题,消息丢失问题。但MQ在实际应用中不是说保证消息不丢失就万无一失了,它还有两个令人头疼的问题:重复消费和乱序。今天我们就来聊一聊这两个常见的问题,看看RocketMQ是如何解决这两个问题的。为什么会重复消费首先我们来聊一聊重复消费的问题,要解决一个问题最开始的一步当然是去查找问题发生的原因了。那出现重复消费的原因到底是什么呢?我们先来思考一下生产者发送消息这一过程中是不是有可能重复发送消息到MQ呢?答案是肯定的,比如生产者发送消息的时

2020-11-13 12:41:35 522

原创 JVM常用调优工具介绍

前言王子在之前的JVM文章中已经大体上把一些原理性问题说清楚了,今天主要是介绍一些实际进行JVM调优工作的工具和命令,不会深入讲解,因为网上资料很多,篇幅可能不长,但都是实用的内容,小伙伴们有不清楚的可以自行查找资料。jstat命令jstat命令可以查看到很多的jvm信息,详细内容可以自行百度,本篇只介绍我们经常使用的命令。jstat -gc PID 1000 10一般最常用的命令就是这个了,它的意思是每1秒打印一次jvm的内存信息,打印10次。通过此命令可以分析出新生代...

2020-11-11 12:23:02 437 1

原创 RocketMQ消息丢失解决方案:同步刷盘+手动提交

前言之前我们一起了解了使用RocketMQ事务消息解决生产者发送消息时消息丢失的问题,但使用了事务消息后消息就一定不会丢失了吗,肯定是不能保证的。因为虽然我们解决了生产者发送消息时候的消息丢失问题,但也只是保证Broker正确的接收到了消息,实际上接收到的消息会保存在os cache中,如果此时broker机器突然宕机,os cache中的消息数据就丢失掉了。而且就算是os cache中的消息已经刷盘到了磁盘中,如果磁盘突然就坏了,消息是不是也就丢失了。所以我们还要考虑Broker如何保证消息不丢失

2020-10-28 06:45:56 1462

原创 大白话聊OSI七层模型和TCP/IP四层模型

前言今天和大家聊的是一个比较基础的问题,OSI七层模型和TCP/IP四层模型。小伙伴们可能有疑问,这个东西还用写文章吗,太基础了吧,网上文章多的是,随便一搜索就能找到。确实是这样,网上资料确实很多,但是如果面试官问你这个问题,你能很好的回答上这个问题吗?本文就是用大白话来聊一聊这个话题,让你对它们有一个很清晰的认识。照搬网上资料的简介既然大家说网上资料很多,那王子也从网上给大家找到一张表格,如下:看完之后,是不是觉得七层模型和四层模型也就这么多东西,没什么可讲的呢?才怪!你知道每个层具.

2020-10-22 10:37:57 495

原创 探索ParNew和CMS垃圾回收器

前言上篇文章我们一起分析了JVM的垃圾回收机制,了解了新生代的内存模型,老年代的空间分配担保原则,并简单的介绍了几种垃圾回收器。详细内容小伙伴们可以去看一下我的上篇文章:秒懂JVM的垃圾回收机制。今天我们就来探索一下,ParNew和CMS垃圾回收器的实现过程。ParNew垃圾回收器现在,如果没有使用G1垃圾回收器,通常情况下大家都是用的ParNew作为新生代的垃圾回收器。首先我们思考一个问题,假如我们的服务器CPU是4核的,如果对新生代垃圾回收的时候,仅仅使用单线程进行,是不是就会导致CPU的性能

2020-10-20 13:23:53 277 1

原创 秒懂JVM的垃圾回收机制

前言阅读过王子之前JVM文章的小伙伴们,应该已经对JVM的内存分布情况有了一个清晰的认识了,今天我们就接着来聊聊JVM的垃圾回收机制,让小伙伴们轻松理解JVM是怎么进行垃圾回收的。复制算法、Eden区和Survivor区首先我们就来探索一下对于JVM堆内存中的新生代区域,是怎么进行垃圾回收的。实际上JVM是把新生代分为三块区域的:1个Eden区,2个Survivor区。其中Eden区占用80%的内存空间,每块Survivor各占用10%的内存空间。比如Eden区有800M,那么每个Survivor

2020-10-14 15:04:13 103

原创 RocketMQ消息丢失解决方案:事务消息

前言上篇文章,王子通过一个小案例和小伙伴们一起分析了一下消息是如何丢失的,但没有提出具体的解决方案。我们已经知道发生消息丢失的原因大体上分为三个部分:1.生产者发送消息到MQ这一过程导致消息丢失2.MQ自己发生故障导致消息丢失3.消费者拿到消息后,由于操作不当导致消息丢失接下来我们就针对第一种情况,聊一聊如何解决生产者发送消息过程中的消息丢失问题。先发送half消息到MQ针对于这一问题,RocketMQ是自带一套解决方案的,就是事务消息。今天我们就来看一下事务消息的实现流程。案例还是上次的

2020-10-13 16:34:09 1095

原创 RocketMQ的消息是怎么丢失的

前言通过之前文章的阅读,有关RocketMQ的底层原理相信小伙伴们已经有了一个比较清晰的认识。那么接下来王子想跟大家讨论一个话题,如果我们的项目中引入了MQ,势必要面对的一个问题,就是消息丢失问题,今天我们就来聊聊消息是怎么丢失的。现在假设我们的业务是这样的,用户通过订单系统下了一个订单,订单系统完成支付后会发送消息给RocketMQ,然后积分系统会从RocketMQ中消费消息,去给用户增加积分,如下图:但是突然有一天有用户反映,支付订单之后,自己的积分并没有增长,这是为什么...

2020-10-12 16:02:19 257

原创 轻松理解JVM的分代模型

前言上篇文章我们一起对jvm的内存模型有了比较清晰的认识,小伙伴们可以参考JVM内存模型不再是秘密这篇文章做一个复习。本篇文章我们将针对jvm堆内存的分代模型做一个详细的解析,和大家一起轻松理解jvm的分代模型。相信看过其他文章的小伙伴们可能都知道,jvm的分代模型包括:年轻代、老年代、永久代。那么它们分别代表着什么角色呢?我们先来看一段代码public class Main { public static void main(String[] args) { ...

2020-10-10 16:44:09 328

原创 深入研究RocketMQ消费者是如何获取消息的

前言小伙伴们,国庆都过的开心吗?国庆后的第一个工作日是不是很多小伙伴还沉浸在假期的心情中,没有工作状态呢?那王子今天和大家聊一聊RocketMQ的消费者是如何获取消息的,通过学习知识来找回状态吧。废话不多说,我们开始吧。消费者组首先我们了解一个概念,什么是消费者组。消费者组你就可以把它理解为,给一组消费者起一个名字。假设我们有一个订单Topic名字是OrderTopic,然后库存系统和积分系统都要消费这个Topic中的数据,我们分别给库存系统和积分系统起一个消费组名字...

2020-10-10 09:56:04 934

转载 数据库连接池 HikariCP 使用实例及配置参数详解

jar包下载或maven引用地址:http://maven.outofmemory.cn/com.zaxxer/HikariCP/ 或 https://mvnrepository.com/artifact/com.zaxxer/HikariCPjava实例代码:import java.sql.Connection;import java.sql.ResultSet;impo...

2019-06-23 22:11:55 2741

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除