摘要: 背景 在一个微服务架构的项目中,一个业务操作可能涉及到多个服务,这些服务往往是独立部署,构成一个个独立的系统。这种分布式的系统架构往往面临着分布式事务的问题。为了保证系统数据的一致性,我们需要确保这些服务中的操作要么全部成功,要么全部失败。通过使用RocketMQ实现分布式事务,我们可以协调这些服务 阅读全文
posted @ 2024-03-12 08:57 Y00 阅读(685) 评论(0) 推荐(3) 编辑
摘要: 缓存作为磁盘以外的一种存储数据的方式,它有着比磁盘更快的存取效率,因此,可以有效提高系统的性能。在单体系统中,一般会用到本地缓存。但在分布式系统中,本地缓存就显得不够用了,这时往往要用到分布式缓存。 分布式缓存特性 本地缓存因为就在应用系统进程的内存里面,不需要网络和对象拷贝的开销所以性能非常高,不 阅读全文
posted @ 2023-01-16 11:10 Y00 阅读(1442) 评论(1) 推荐(2) 编辑
摘要: 每年的双十一期间,各大电商平台流量暴增,同时,电商平台系统的负载压力也会很大。譬如订单支付的场景,每个订单支付成功后,服务器可能要完成扣减积分、扣减优惠券、扣减商品库存、发短信等一系列操作。单个用户请求,服务器处理起来并没有什么问题,但是,瞬时并发的多个请求到了服务器,数据库压力上来了,导致请求响应 阅读全文
posted @ 2022-11-13 18:03 Y00 阅读(809) 评论(1) 推荐(4) 编辑
摘要: 泛型(Generics)是C#中的一个重要特性,它允许您编写灵活、类型安全且可重用的代码。下面我将详细介绍泛型的概念、使用方法及其在C#中的实现细节。 泛型的基本概念 1. 什么是泛型? 泛型是一种允许您定义类型参数的机制,这些类型参数可以在编译时由具体的类型替换。这样,您可以编写一个通用的类或方法 阅读全文
posted @ 2024-08-19 11:34 Y00 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 在C#中,集合是用于存储和操作一组数据项的数据结构。这些集合通常位于 System.Collections 和 System.Collections.Generic 命名空间中。下面我将概述C#中几种常用的集合类型及其特点: 1. System.Collections 命名空间中的集合 这个命名空间 阅读全文
posted @ 2024-07-31 16:18 Y00 阅读(978) 评论(4) 推荐(5) 编辑
摘要: 在C#中,委托是一种引用类型的数据类型,允许我们封装方法的引用。通过使用委托,我们可以将方法作为参数传递给其他方法,或者将多个方法组合在一起,从而实现更灵活的编程模式。委托类似于函数指针,但提供了类型安全和垃圾回收等现代语言特性。 基本概念 定义委托 定义委托需要指定它所代表的方法的原型,包括返回类 阅读全文
posted @ 2024-07-11 11:50 Y00 阅读(1120) 评论(1) 推荐(5) 编辑
摘要: 我们都知道,我们写的Java程序需要先经过编译,生成了.class文件(字节码文件)。然而,计算机并不能直接解释.class文件里面的内容,这时候就需要一个能加载、解释.class文件并且能按.class文件里的内容进行处理的一个东西--JVM。 JVM,就是Java虚拟机。它是一种规范,有针对不同 阅读全文
posted @ 2024-03-15 10:27 Y00 阅读(426) 评论(0) 推荐(0) 编辑
摘要: Git是一个开源的分布式版本控制系统,是目前主流的版本控制系统,很多软件项目都会用它做源代码管理。Git的常用操作想必很多人都会,但是可能了解Git内部原理的人并不多。了解一些底层的东西,可以更好的帮你理清思路,遇到问题的时候也可以更好的去解决。 准备工作 在介绍Git如何存储数据之前,我们先做一些 阅读全文
posted @ 2022-12-04 12:00 Y00 阅读(139) 评论(0) 推荐(0) 编辑
摘要: top命令可以用来监控服务器CPU、内存的运行情况,是Linux一个经常使用到的命令。 基本用法 第一行 显示当前系统运行信息,系统当前时间是23:23:21,运行了315days,当前有2个用户登录(2 users),系统平均负载压力情况(load average)为0.08(1min的平均负载压 阅读全文
posted @ 2022-10-24 00:12 Y00 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 什么是数据库事务? 事务,就是一系列操作的整体,其结果就是这一系列操作要么全部成功,要么全部失败。 譬如说,一个经典的例子--转账。 A要转帐给B 100块钱,要经历以下步骤: 1、扣除A账户100块钱。 2、增加B账户100块钱。 以上例子里的两个步骤,要么全部成功,要么全部失败,不然,就乱套了。 阅读全文
posted @ 2022-10-20 23:39 Y00 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 一个刚上线的IT系统,往往负载压力不大,所以不会存在什么性能问题。这时,人们大多只关心系统的功能性和用户体验。但是,随着时间推移,用户量和数据量都比刚上线的时候要多很多,高并发和大数据场景下,系统遇到性能瓶颈,持续不能改善最终导致系统崩溃。这对于做C端的开发人员应该更加深有体会。 系统经常响应慢,甚 阅读全文
posted @ 2022-10-16 00:42 Y00 阅读(379) 评论(0) 推荐(1) 编辑
摘要: @Transactional(readOnly=true)就可以把事务方法设置成只读事务。设置了只读事务,事务从开始到结束,将看不见其他事务所提交的数据。这在某种程度上解决了事务并发的问题。一个方法内,如果没有对数据库insert、update、delete的操作,那么,这个事务方法是可以设置成re 阅读全文
posted @ 2022-10-07 14:07 Y00 阅读(920) 评论(0) 推荐(0) 编辑
摘要: Spring @Transactional注解isolation属性 @Transactional注解通过isolation属性设置事务隔离级别。如下: @Transactional(isolation=Isolation.DEFAULT) public void method(){} isolat 阅读全文
posted @ 2022-10-07 14:05 Y00 阅读(2151) 评论(0) 推荐(0) 编辑
摘要: 有时候,我们明明在类或者方法上添加了@Transactional注解,却发现方法并没有按事务处理。其实,以下场景会导致事务失效。 1、事务方法所在的类没有加载到Spring IOC容器中。 Spring声明式事务的实现完全依赖于Spring的AOP代理机制,未被Spring管理的类中的方法不受Spr 阅读全文
posted @ 2022-10-07 14:04 Y00 阅读(1365) 评论(0) 推荐(1) 编辑
摘要: 在Spring里,一个事务方法被另外一个事务方法调用时,两个方法的事务应该如何进行,说白话一点,就是说当出现异常需要回滚时,各个方法的数据操作是否要全部回滚,事务传播行为就是决定了这样的一个处理结果。A事务方法(外部方法)调用了B事务方法(内部方法,又叫被调用方法),B是继续在A的事务中运行呢?还是 阅读全文
posted @ 2022-10-07 14:02 Y00 阅读(476) 评论(0) 推荐(0) 编辑