Seata使用详解

news2024/9/27 21:29:12

    • 分布式事务介绍
    • 分布式事务的优缺点
    • CAP理论介绍
    • Base理论介绍
    • CAP和BASE之间有什么区别
    • Seata介绍
    • Seata支持的事务模式介绍
    • Seata的架构
    • Seata应用场景
    • Seata集群部署
    • Seata集群部署的优缺点
    • Seata在Java中的使用案例
    • Seata在Java中的代码示例
    • Seata与SpringBoot2.x的整合
    • Seata与SpringBoot3.x的整合
    • Seata使用步骤
    • Seata使用注意事项
    • 拓展

在这里插入图片描述

分布式事务介绍

分布式事务是指参与事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点上。这允许多个独立的事务资源参与到全局的事务中。

在分布式事务中,不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。这要求在跨异类的事务中识别资源的事务,因此,分布式事务问题也叫分布式数据一致性问题,简单来说就是如何在分布式场景中保证多个节点数据的一致性。

分布式事务的产生核心原因在于存储资源的分布性。在实际应用中,应该尽可能从设计层面去避免分布式事务的问题,因为任何一种解决方案都会增加系统的复杂度。

分布式事务的优缺点

分布式事务的优点主要包括:

  1. 保证数据一致性:分布式事务能够确保在多个分布式系统中同时进行的事务操作具有一致性,避免了数据不一致的问题。
  2. 提高系统可靠性:分布式事务能够确保在事务执行过程中,如果某个节点出现故障,其他节点可以继续执行事务,提高了系统的可靠性。
  3. 增强系统可扩展性:分布式事务能够支持多个节点同时处理事务,提高了系统的处理能力和可扩展性。

然而,分布式事务也存在一些缺点:

  1. 性能开销较大:分布式事务需要协调多个节点的事务状态,增加了系统的复杂性,可能导致性能开销较大。
  2. 技术实现复杂:分布式事务需要处理多个节点之间的协调和同步问题,技术实现相对复杂,需要更多的开发和维护工作。
  3. 可能存在数据不一致风险:在分布式事务中,如果某个节点出现故障或网络延迟等问题,可能导致事务无法正常提交或回滚,从而产生数据不一致的风险。

在这里插入图片描述

CAP理论介绍

CAP理论是指计算机分布式系统的三个核心特性:一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。

  1. 一致性 :在分布式系统中的所有数据备份,在同一时刻是否是同样的值。
  2. 可用性 :系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。
  3. 分区容错性 :系统必须能够容忍分布式系统中的某些节点或网络分区出现故障或延迟。

CAP理论认为,分布式系统最多只能同时满足其中的两个特性,而无法同时满足全部三个特性。这是因为在分布式系统中,网络分区和节点故障是不可避免的,而保证一致性和可用性需要跨节点协调,这会增加网络延迟和系统复杂度。

Base理论介绍

BASE理论是一组用于分布式系统设计的原则,包括基本可用(Basically Available) 、**软状态(Soft state)**和 最终一致(Eventually consistent)

BASE理论强调可用性和分区容忍度的重要性,同时放宽了对一致性(Consistency)的要求。在分布式系统中,由于网络延迟、节点故障等因素,并不总是能够有强一致性保证。因此,BASE理论建议系统应优先考虑可用性和分区容错性,并考虑最终一致性。这种方法允许系统即使在部分故障或网络分区的情况下也能继续运行。

BASE理论是对CAP理论中的一致性和可用性进行权衡的结果。CAP理论指出,在分布式系统中,一致性、可用性和分区容错性这三个特性只能同时满足其中的两个,无法三者兼顾。而BASE理论则强调在保证基本可用性的前提下,达到最终一致性。

CAP和BASE之间有什么区别

CAP和BASE是分布式系统中的两个重要概念,它们之间有一些区别。

CAP理论指出,在分布式系统中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)这三个特性只能同时满足其中的两个,无法三者兼顾。这是因为在分布式系统中,网络分区和节点故障是不可避免的,而保证一致性和可用性需要跨节点协调,这会增加网络延迟和系统复杂度。

而BASE是基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventual Consistency)的缩写。BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性。BASE思想主要强调基本的可用性,如果需要High 可用性,也就是纯粹的高性能,那么就要以一致性或容忍性为牺牲。

总的来说,CAP和BASE都是分布式系统中的重要概念,它们之间有一些区别。CAP理论关注于一致性、可用性和分区容错性三个核心特性的权衡,而BASE理论则关注于如何在保证基本可用性的前提下,达到最终一致性。

在这里插入图片描述

Seata介绍

Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。

Seata框架中有三个角色:TC(Transaction Coordinator)事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚;TM(Transaction Manager)事务管理器定义全局事务的范围:开始全局事务、提交或回滚全局事务;RM(Resource Manager)资源管理器管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。其中,TC为单独部署的Server服务端,TM和RM为嵌入到应用中的Client客户端。

Seata是阿里开源的,阿里是国内最早一批进行应用分布式(微服务化)改造的企业,所以很早就遇到微服务架构下的分布式事务问题。2014年,阿里中间件团队发布TXC(Taobao Transaction Constructor),为集团内应用提供分布式事务服务;2019年起,基于TXC和GTS的技术积累,阿里中间件团队发起了开源项目Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社区一起建设这个分布式事务解决方案。

在这里插入图片描述

Seata支持的事务模式介绍

Seata支持的事务模式包括AT、TCC、SAGA和XA事务模式。

  1. AT模式 :最终一致性的两阶段提交协议,通过自动补偿机制实现数据回滚,无业务侵入,也是Seata的默认模式。
  2. TCC模式 :最终一致性的两阶段提交协议,需要业务实现Try、Confirm和Cancel三个操作,有业务侵入,灵活度高。
  3. SAGA模式 :Seata在2021年推出的新事务模式,Saga是Seata的下一代事务模式,也是Seata的未来。
  4. XA模式 :强一致性的两阶段提交协议,需要数据库支持XA接口,牺牲了一定的可用性,无业务侵入。

Seata的架构

Seata的架构设计主要包括以下几个部分:

  1. 全局事务管理器(Global Transaction Manager):全局事务管理器负责全局事务的开启、提交和回滚。它与资源管理器(Resource Manager)和事务参与者(Transaction Participant)进行交互,协调全局事务的状态。
  2. 资源管理器(Resource Manager):资源管理器负责管理分支事务使用的资源,包括数据库、消息队列等。它向全局事务管理器注册分支事务,并汇报分支事务的状态。
  3. 事务参与者(Transaction Participant):事务参与者是业务应用中的组件,负责执行本地事务。它与资源管理器进行交互,执行分支事务的开启、提交和回滚操作。

Seata的架构设计采用了微服务架构,将全局事务管理器、资源管理器、事务参与者等组件分别部署在不同的服务中。这种设计使得Seata能够支持大规模的分布式系统,并且易于扩展和维护。

此外,Seata还提供了丰富的API和工具,方便开发者在业务应用中使用分布式事务服务。同时,Seata还支持多种数据库和消息队列等资源,可以满足不同业务场景的需求。

在这里插入图片描述

Seata应用场景

Seata的应用场景主要包括分布式事务管理,适用于以下场景:

  1. 一个应用跨数据库调用时,需要保证对不同数据库操作的事务。
  2. 不同服务之间的调用(涉及到不同数据库的修改)。
  3. 当对分库分表的数据进行操作。

Seata通过全局事务ID来管理全局事务的状态,并协调全局事务提交或回滚,从而保证分布式事务的一致性。

Seata集群部署

Seata集群部署主要包括以下步骤:

  1. 准备多个Seata服务实例,这些实例可以部署在不同的服务器上,也可以部署在同一台服务器上。
  2. 配置Seata服务实例之间的通信,包括网络通信和数据通信。
  3. 配置Seata服务实例的注册中心,例如Nacos,用于服务发现和服务注册。
  4. 配置Seata服务实例的负载均衡策略,例如使用Nginx或者HAProxy进行负载均衡。
  5. 启动Seata服务实例,启动后Seata服务实例会自动注册到注册中心,并监听客户端的请求。

需要注意的是,Seata集群部署需要保证各个服务实例之间的网络通信畅通,并且需要保证注册中心的可用性。同时,需要根据实际业务场景和需求进行负载均衡策略的配置,以保证系统的可用性和性能。

在这里插入图片描述

Seata集群部署的优缺点

Seata集群部署的优点主要包括:

  1. 扩展性强:通过集群部署,可以方便地增加服务实例的数量,以应对高并发和大规模扩展的需求。
  2. 负载均衡:通过负载均衡策略,可以分配请求到不同的服务实例上,提高系统的吞吐量和响应速度。
  3. 高可用性:通过多个服务实例的部署,可以避免单点故障,提高系统的可用性和稳定性。

然而,Seata集群部署也存在一些缺点:

  1. 复杂性增加:相对于单节点部署,集群部署需要更多的配置和管理,增加了系统的复杂性。
  2. 资源消耗增加:多个服务实例需要更多的服务器资源和网络带宽,增加了系统的资源消耗。
  3. 故障恢复难度增加:当某个服务实例出现故障时,需要手动进行故障恢复和重新部署,增加了系统的维护难度。

因此,在进行Seata集群部署时,需要根据实际业务场景和需求进行权衡和选择,以确保系统的可用性和性能。

Seata在Java中的使用案例

Seata在Java中的使用案例包括以下几种情况:

  1. 分布式事务管理:Seata可以用于实现分布式事务管理,保证多个数据库或服务之间的数据一致性。在Java应用中,可以通过Seata提供的API,将业务逻辑与分布式事务管理进行解耦,简化分布式事务的实现和管理。
  2. 分布式事务补偿:当某个分布式事务参与者在执行过程中出现异常或失败时,Seata可以提供自动补偿机制,确保事务的原子性和一致性。在Java应用中,可以通过配置Seata的补偿策略,对异常情况进行自动处理和补偿。
  3. 分布式事务监控:Seata提供了分布式事务的监控功能,可以实时监控分布式事务的状态和性能。在Java应用中,可以通过Seata提供的监控接口,获取分布式事务的详细信息,包括事务的开始时间、执行时间、参与者和状态等。

Seata在Java中的使用案例非常广泛,可以应用于各种需要分布式事务管理的场景。通过Seata的API和配置,可以轻松实现分布式事务的管理、补偿和监控等功能。

Seata在Java中的代码示例

以下是一个使用Seata进行分布式事务管理的Java代码示例:

import io.seata.core.exception.GlobalTransactionException;
import io.seata.core.exception.RollbackException;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @GlobalTransactional
    public void updateUserInfo(User user) {
        // 更新用户信息
        userMapper.updateUserInfo(user);
        // 更新其他资源
        otherResourceMapper.updateResource(user);
    }
}

在上面的代码中,我们使用了@GlobalTransactional注解来标记updateUserInfo方法为全局事务方法。当该方法被调用时,Seata会自动开启一个全局事务,并协调所有参与者在同一事务中执行。如果其中任何一个参与者在执行过程中出现异常或失败,Seata会自动进行事务回滚,保证数据的一致性。

需要注意的是,为了使用Seata的分布式事务管理功能,需要在项目中引入Seata的相关依赖,并在配置文件中进行相应的配置。具体配置方式可以参考Seata的官方文档。

Seata与SpringBoot2.x的整合

Seata与Spring Boot 2.x的整合可以通过以下步骤实现:

  1. 引入Seata依赖

在Spring Boot项目的pom.xml文件中添加Seata的依赖,例如:

<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>1.4.2</version>
</dependency>
  1. 配置Seata服务器信息

在application.properties或application.yml文件中添加Seata服务器信息,例如:

seata.enabled=true
seata.application-id=your_application_id
seata.tx-service-group=your_tx_group_name
seata.registry.type=nacos
seata.registry.nacos.server-addr=your_nacos_server_addr
seata.config.type=nacos
seata.config.nacos.server-addr=your_nacos_server_addr
  1. 注册全局事务拦截器

在Spring Boot项目中添加Seata的全局事务拦截器,例如:

import io.seata.spring.annotation.GlobalTransactionScanner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@SpringBootApplication
public class Application implements WebMvcConfigurer {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public GlobalTransactionScanner globalTransactionScanner() {
        return new GlobalTransactionScanner("your_application_id", "your_tx_group_name");
    }
}
  1. 在业务代码中使用@GlobalTransactional注解

在需要进行分布式事务管理的业务方法上使用@GlobalTransactional注解,例如:

import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @GlobalTransactional
    public void updateUserInfo(User user) {
        // 更新用户信息,这里可能会涉及到多个数据库操作或其他分布式资源操作。
    }
}

Seata与SpringBoot3.x的整合

Seata与Spring Boot 3.x的整合与Seata与Spring Boot 2.x的整合类似,但可能存在一些细微的差异。以下是一般的整合步骤:

  1. 引入Seata依赖

在Spring Boot项目的pom.xml文件中添加Seata的依赖,例如:

<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>最新版本</version>
</dependency>
  1. 配置Seata服务器信息

在application.properties或application.yml文件中添加Seata服务器信息,例如:

seata.enabled=true
seata.application-id=your_application_id
seata.tx-service-group=your_tx_group_name
seata.registry.type=nacos
seata.registry.nacos.server-addr=your_nacos_server_addr
seata.config.type=nacos
seata.config.nacos.server-addr=your_nacos_server_addr
  1. 注册全局事务拦截器

在Spring Boot项目中添加Seata的全局事务拦截器,例如:

import io.seata.spring.annotation.GlobalTransactionScanner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@SpringBootApplication
public class Application implements WebMvcConfigurer {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public GlobalTransactionScanner globalTransactionScanner() {
        return new GlobalTransactionScanner("your_application_id", "your_tx_group_name");
    }
}
  1. 在业务代码中使用@GlobalTransactional注解

在需要进行分布式事务管理的业务方法上使用@GlobalTransactional注解,例如:

import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @GlobalTransactional
    public void updateUserInfo(User user) {
        // 更新用户信息,这里可能会涉及到多个数据库操作或其他分布式资源操作。
    }
}

需要注意的是,由于Spring Boot 3.x可能引入了一些新的特性或变更,因此具体的整合步骤可能需要根据Spring Boot 3.x的文档和Seata的文档进行适当的调整。

Seata使用步骤

Seata的使用步骤如下:

  1. 下载Seata:可以从Seata的官方网站或者下载中心下载Seata的版本,例如1.3.0版本。
  2. 配置Seata服务器信息:在Seata的配置文件(如registry.conf和config.txt)中,配置Seata服务器的相关信息,例如应用程序ID、事务服务组名等。
  3. 创建数据库:根据Seata的要求,创建相应的数据库,并执行相关的SQL脚本(如db_store.sql),以创建需要的表结构。
  4. 注册全局事务拦截器:在Spring Boot项目中添加Seata的全局事务拦截器,例如通过创建一个GlobalTransactionScanner的Bean来实现。
  5. 在业务代码中使用@GlobalTransactional注解:在需要进行分布式事务管理的业务方法上使用Seata提供的@GlobalTransactional注解。

Seata使用注意事项

Seata使用注意事项包括以下几点:

  1. 确保Seata服务端和客户端的配置正确,包括应用程序ID、事务服务组名等。
  2. 在业务代码中使用@GlobalTransactional注解时,需要确保注解的使用正确,包括事务传播行为、隔离级别等。
  3. 在分布式事务中,如果需要回滚事务,需要抛出异常,而不是使用return false等方式。
  4. 在分布式事务中,需要注意数据的隔离性和一致性,避免出现脏读或死锁等问题。
  5. 在使用Seata时,需要注意网络延迟和稳定性等问题,避免因为网络问题导致事务不一致。
  6. 在使用Seata时,需要注意数据库连接池的使用和管理,避免因为连接池问题导致事务失败。
  7. 在使用Seata时,需要注意事务的超时时间设置,避免因为超时而导致事务失败。
  8. 在使用Seata时,需要注意数据的备份和恢复等问题,避免因为数据问题导致事务失败。

在使用Seata时需要注意各种细节问题,确保分布式事务的一致性和可靠性。

在这里插入图片描述

拓展

Sentinel使用详解

Seata官网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1323702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

winfrom大恒工业相机SDK二次开发、C#联合halcon开发

一、开发环境 1.在大恒图像官网下载SDK安装包&#xff0c;安装SDK后&#xff0c;打开安装目录找到Samples文件夹&#xff0c;然后找到Samples\CSharp SDK\x64\DoNET\.NET4.0文件夹下找到GxIAPINET.dll&#xff0c;如图&#xff1a; 2.打开VS2019软件&#xff0c;建立winfrom项…

Linux系统管理、服务器设置、安全、云数据中心

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 我们来快速了解liunx命令 文章目录 前言解析命令提示符linux的文件和目录文件和目录管理文件操作 进程管理命令系统管理网络管理 书籍推荐 本文以服务器最常用的CentOS为例 解析命令提示…

JDBC简单使用

1. 首先导包&#xff0c;放在src -> lib下 打开项目结构&#xff0c;添加导入的包为库 基础语法 Statement statement conn.createStatement(); ---------------------------------------------- 1.execute(String query)方法用来执行任意的SQL语句查询&#xff0c;如果…

AcrelEMS-HIM高速公路综合能效系统在新晋高速公路快村营至营盘段项目的应用——安科瑞 顾烊宇

摘 要&#xff1a;我国新型工业化、信息化、城镇化和农业现代化加快发展&#xff0c;经济结构加快转型&#xff0c;交通运输总量将保持较快增长态势&#xff0c;各项事业发展要求提高国家公路网的服务能力和水平。高速公路沿线的收费站、互通枢纽、服务区、隧道等配置的供配电、…

2024Java85w字面试宝典+从入门到架构师的学习路线图+Java开发求职手册,我终于做出来了!

这几年中&#xff0c;我遇到了很多不同困境中的Java开发者&#xff0c;让我有了一个思考&#xff0c;在做教育这件事情上&#xff0c;我的目标是什么&#xff1f;为此&#xff0c;我思考了很久。 然后今年有很多的粉丝或者一些学员来找我&#xff0c;说今年的面试很困难&#…

【工作流Activiti】MyActivit的maven项目

1、Idea新建一个项目MyActivit的maven项目 2、安装插件 在 idea 里面&#xff0c;activiti 的插件叫 actiBPM&#xff0c;在插件库里面把它安装好&#xff0c;重启 idea 就行了。 3、 maven 项目中&#xff0c;并更改 pom.xml。pom 中依赖如下&#xff1a; <?xml version…

C#中的协变和逆变

这两个都是只能使用在接口和委托上 个人理解&#xff1a; 协变&#xff1a;出参&#xff0c;让基类使用范围变大&#xff0c;将父类/基类当作子类一样使用 --为什么这样规定呢&#xff1f; 我的理解&#xff1a;真正实现的是子类&#xff0c;子类拥有所有的方法&#xff0c;却…

pytorch网络的增删改

本文介绍对加载的网络的层进行增删改, 以alexnet网络为例进行介绍。 1. 加载网络 import torchvision.models as models alexnet models.alexnet(weightsmodels.AlexNet_Weights.DEFAULT) print(alexnet)2. 删除网络 在做迁移学习的时候&#xff0c;我们通常是在分类网络的…

安全狗waf

安全狗waf安装 1、先将phpstudy 以管理员身份运行&#xff0c;将运行模式修改为 “系统服务”&#xff0c;点击“应用”。 2、下载安全狗&#xff0c;安全狗-领先云安全服务与解决方案提供商|云原生安全|服务器安全|网站安全|态势感知 3、安装安全狗&#xff0c;以管理员身份运…

python调取一欧易API并写一个比特币均线交易策略

比特币均线交易策略是一种基于比特币价格的移动均线的交易策略。它通过计算不同时间段的移动均线来确定买入和卖出点。 具体步骤如下&#xff1a; 确定要使用的均线。常用的均线包括5日、10日、20日、50日和200日均线。较短的均线可以更快地反应价格变动&#xff0c;而较长的均…

探秘 AJAX:让网页变得更智能的异步技术(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

AcWing算法提高课-4.1.2搭配购买

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 Joe觉得云朵很美&#xff0c;决定去山上的商店买一些云朵。 商店里有 n n n 朵云&#xff0c;云朵被编号为 1 , 2 , … , n 1,2,…,n 1,2,…,n&#xff0c;并且每朵云都有一个价值。 但是商店…

机器学习——主成分分析(PCA)

今天由我来向大家何为PCA算法及如何实现&#xff0c;PCA算法是无监督方法的典型&#xff0c;在此之前我们先来了解有监督学习、无监督学习以及半监督学习的区别。 一、有监督学习、无监督学习、半监督学习的区别 1. 有监督学习 监督学习是从标记的训练数据来推断一个功能的机…

C语言——小细节和小知识5

一、某些预处理指令 #ifdef #else #endif 这三个预处理指令用于条件编译&#xff0c;#ifdef用于判断某个宏是否被定义过&#xff0c;#endif用于结束#ifdef的作用范围&#xff0c;例如&#xff1a; #include <stdio.h>#define MAX 10int main() { #ifdef MAXprintf(&…

基于JAVA的无代码动态表单系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 动态类型模块2.2 动态文件模块2.3 动态字段模块2.4 动态值模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 动态类型表3.2.2 动态文件表3.2.3 动态字段表3.2.4 动态值表 四、系统展示五、核心代码5.1 查询档案类型5.…

OpenHarmony鸿蒙原生应用开发,ArkTS、ArkUI学习踩坑学习笔记,持续更新中。

一、AMD处理器win10系统下&#xff0c;DevEco Studio模拟器启动失败解决办法。 结论&#xff1a;在BIOS里面将Hyper-V打开&#xff0c;DevEco Studio模拟器可以成功启动。 二、ArkTS自定义组件导出、引用实现。 如果在另外的文件中引用组件&#xff0c;需要使用export关键字导…

Educational Codeforces Round 160 (Rated for Div. 2)

Educational Codeforces Round 160 (Rated for Div. 2) Educational Codeforces Round 160 (Rated for Div. 2) A. Rating Increase 题意&#xff1a;给定一个由数字字符组成的字符串&#xff0c;且无前导零&#xff0c;将其分割成ab两部分&#xff0c;b不能有前导零&#x…

制造企业可以通过哪些措施改善设备OEE

设备综合效率OEE&#xff08;Overall Equipment Effectiveness&#xff09;是制造企业衡量设备效率的关键指标之一。高效的设备运行对于提高生产效率、降低成本和实现竞争优势至关重要。然而&#xff0c;实现高水平的设备OEE并不是一项简单的任务。本文将介绍一些制造企业可以采…

Linux I/O神器之io_uring

io_uring 是 Linux 于 2019 年加入到内核的一种新型异步 I/O 模型&#xff0c;io_uring 主要为了解决 原生AIO&#xff08;Native AIO&#xff09; 存在的一些不足之处。下面介绍一下原生 AIO 的不足之处&#xff1a; 系统调用开销大&#xff1a;提交 I/O 操作和获取 I/O 操作…

共享中药房新突破:亿发打造专业调度与强兼容性的智慧煎药平台

随着共享中药房、智能煎药中心等中医药信息化业务的蓬勃发展&#xff0c;越来越多的医疗机构开始引入自动化设备&#xff0c;将其应用到实际的生产环节中&#xff0c;以辅助或部分替代传统的人工操作。这种自动化设备需要通过智能配方煎药管理系统作为系统平台来进行对接和集成…