我们都知道,我们写的Java程序需要先经过编译,生成了.class文件(字节码文件)。然而,计算机并不能直接解释.class文件里面的内容,这时候就需要一个能加载、解释.class文件并且能按.class文件里的内容进行处理的一个东西--JVM。 JVM,就是Java虚拟机。它是一种规范,有针对不同系统的特定实现(Linux,Windows,macOS)。这样,相同的字节码就能在不同的系统上运行,实现了跨平台运行(WriteOnce,RunAnywhere)。 JVM的内存结构 上图是JDK1.8的JVM内存结构,可以看出内存结构分为程序计数器、Java虚拟机栈、本地方法栈、堆、元空间,其...

  dQbPnUy2f5dv   2024年03月15日   83   0   0 Java

背景 在一个微服务架构的项目中,一个业务操作可能涉及到多个服务,这些服务往往是独立部署,构成一个个独立的系统。这种分布式的系统架构往往面临着分布式事务的问题。为了保证系统数据的一致性,我们需要确保这些服务中的操作要么全部成功,要么全部失败。通过使用RocketMQ实现分布式事务,我们可以协调这些服务的操作,保证数据的一致性。 功能原理 RocketMQ的分布式事务消息功能,在普通消息基础上,支持二阶段的提交。将二阶段提交和本地事务绑定,实现全局提交结果的一致性。 整个事务消息的详细交互流程如下图所示: 1、生产者将消息发送至RocketMQ服务端。 2、RocketMQ服务端将消息持久化成...

  dQbPnUy2f5dv   2024年03月12日   54   0   0 架构设计

我们都知道,我们写的Java程序需要先经过编译,生成了.class文件(字节码文件)。然而,计算机并不能直接解释.class文件里面的内容,这时候就需要一个能加载、解释.class文件并且能按.class文件里的内容进行处理的一个东西--JVM。 JVM,就是Java虚拟机。它是一种规范,有针对不同系统的特定实现(Linux,Windows,macOS)。这样,相同的字节码就能在不同的系统上运行,实现了跨平台运行(WriteOnce,RunAnywhere)。 JVM的内存结构 上图是JDK1.8的JVM内存结构,可以看出内存结构分为程序计数器、Java虚拟机栈、本地方法栈、堆、元空间,其...

  dQbPnUy2f5dv   2023年11月01日   40   0   0 Java

top命令可以用来监控服务器CPU、内存的运行情况,是Linux一个经常使用到的命令。 基本用法 第一行显示当前系统运行信息,系统当前时间是23:23:21,运行了315days,当前有2个用户登录(2users),系统平均负载压力情况(loadaverage)为0.08(1min的平均负载压力)、0.0.7(5min的平均负载压力)、0.0.8(15min的平均负载压力)。loadaverage,每隔5s检查一次活跃的进程数,然后按特定算法计算出来的。一般当这个数值除以CPU的核数得到的值大于35时,就标明系统的负载压力已经很高了。 第二行显示进程信息,共有562个进程,1个进程正在执行...

  dQbPnUy2f5dv   2023年11月01日   70   0   0 Linux

一个刚上线的IT系统,往往负载压力不大,所以不会存在什么性能问题。这时,人们大多只关心系统的功能性和用户体验。但是,随着时间推移,用户量和数据量都比刚上线的时候要多很多,高并发和大数据场景下,系统遇到性能瓶颈,持续不能改善最终导致系统崩溃。这对于做C端的开发人员应该更加深有体会。 系统经常响应慢,甚至宕机,这对用户造成很差的用户体验,更有严重的,会导致大批用户流失、业务停摆等,造成不可挽回的损失。因此,持续运营的系统,是非常有必要进行性能优化的工作。对于性能优化,已经有很多可行且成熟的技术方案,下面就聊聊,旨在大概了解,不展开详说。 性能监控 具体问题具体分析,解决性能问题总得要知道系统哪里...

  dQbPnUy2f5dv   2023年11月01日   42   0   0 其他技术区

什么是数据库事务? 事务,就是一系列操作的整体,其结果就是这一系列操作要么全部成功,要么全部失败。 譬如说,一个经典的例子--转账。A要转帐给B100块钱,要经历以下步骤:1、扣除A账户100块钱。2、增加B账户100块钱。 以上例子里的两个步骤,要么全部成功,要么全部失败,不然,就乱套了。在这里,我们可以看出,事务保证了完整性。那么,说到数据库事务,就是一系列对数据库的操作,要么全部成功(提交),要么全部失败(回滚),保证了数据的完整性。 数据库事务的四大特性(ACID) ACID,指数据库事务四个特性的英文单词缩写,包括原子性(Atomicity)、一致性(Consistency)、隔离...

  dQbPnUy2f5dv   2023年11月01日   30   0   0 其他技术区

每年的双十一期间,各大电商平台流量暴增,同时,电商平台系统的负载压力也会很大。譬如订单支付的场景,每个订单支付成功后,服务器可能要完成扣减积分、扣减优惠券、扣减商品库存、发短信等一系列操作。单个用户请求,服务器处理起来并没有什么问题,但是,瞬时并发的多个请求到了服务器,数据库压力上来了,导致请求响应慢,甚至宕机。 为了解决这个问题,我们可能会想到,让数据库处理完一个请求后再处理下一个请求不就好了么。就这样,消息队列出来了。消息队列,又称为MQ(MessageQueue),它实现了让多个请求以消息的形式排好队,让消息处理程序一个一个的处理,有效防止了高并发给服务器带来的压力。 消息队列应用场景...

  dQbPnUy2f5dv   2023年11月01日   57   0   0 其他技术区

Git是一个开源的分布式版本控制系统,是目前主流的版本控制系统,很多软件项目都会用它做源代码管理。Git的常用操作想必很多人都会,但是可能了解Git内部原理的人并不多。了解一些底层的东西,可以更好的帮你理清思路,遇到问题的时候也可以更好的去解决。 准备工作 在介绍Git如何存储数据之前,我们先做一些准备工作。首先新建一个目录git-test,然后在这个目录右键,打开GitBash, 然后,在GitBash,分别执行以下命令, $gitinit $echo'a'>a.txt $echo'b'>b.txt $gitadd. 至此,准备工作完成。我们可以看到,git-test目录下...

  dQbPnUy2f5dv   2023年11月01日   56   0   0 其他技术区

缓存作为磁盘以外的一种存储数据的方式,它有着比磁盘更快的存取效率,因此,可以有效提高系统的性能。在单体系统中,一般会用到本地缓存。但在分布式系统中,本地缓存就显得不够用了,这时往往要用到分布式缓存。 分布式缓存特性 本地缓存因为就在应用系统进程的内存里面,不需要网络和对象拷贝的开销所以性能非常高,不过也正因为数据保存在应用系统进程的内存中也有了一些局限。例如,多个独立应用系统之间难于共享缓存、缓存服务不利于扩展等。为了解决这些问题,以JbossCache、Memcache、Redis为代表的分布式缓存也开始出现,它们以不同的方式实现了分布式缓存的特性。 1、缓存共享分布式系统是多个单体系统的...

  dQbPnUy2f5dv   2023年11月01日   40   0   0 其他技术区
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~