当前位置: 首页 > news >正文

Spring Boot + MyBatis-Plus 高并发读写分离实战

引言

在高并发场景下,单一数据库实例往往成为性能瓶颈。数据库读写分离通过将读操作和写操作分配到不同的数据库实例,有效缓解主库压力,提升系统吞吐量。MyBatis-Plus 作为一款强大的持久层框架,结合 Spring Boot 能够轻松实现读写分离。

一、读写分离的核心价值与挑战

1.1 高并发场景下的性能瓶颈
传统单库架构在QPS突破10万时,常面临以下问题:

  • 写入阻塞:大量INSERT/UPDATE操作导致锁竞争

  • 查询延迟:复杂报表分析占用CPU资源

  • 扩展困难:垂直扩容成本呈指数级增长

二、读写分离核心原理

2.1 基本概念
主库(Master):负责处理所有写操作(INSERT/UPDATE/DELETE),保证数据一致性
从库(Slave):负责处理读操作(SELECT),支持水平扩展
核心目标:通过主从复制保证数据同步,通过数据源路由实现读写分离

2.2 关键技术点
数据源路由:根据操作类型(读 / 写)动态切换数据源
主从复制:通过数据库自身机制(如 MySQL 的 Binlog 复制)保证主从数据一致
事务处理:写操作必须在主库执行,读操作可路由到从库

三、Spring Boot集成实战

3.1 环境搭建
Maven核心依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version>
</dependency>

3.2 数据源配置

spring:datasource:dynamic:primary: masterstrict: falsedatasource:master:url: jdbc:mysql://master-host:3306/core?useSSL=falseusername: adminpassword: master@123driver-class-name: com.mysql.cj.jdbc.Driverslave1:url: jdbc:mysql://slave1-host:3306/core?useSSL=falseusername: readonlypassword: slave@123driver-class-name: com.mysql.cj.jdbc.Driverslave2:url: jdbc:mysql://slave2-host:3306/core?useSSL=falseusername: readonlypassword: slave@123driver-class-name: com.mysql.cj.jdbc.Driver

3.3 业务层实现

@Service
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> {// 写操作自动路由到主库@Override@Transactional(rollbackFor = Exception.class)public void createOrder(Order order) {baseMapper.insert(order);}// 读操作指定从库@Override@DS("slave")public Order getOrderById(Long id) {return baseMapper.selectById(id);}// 负载均衡读库@DS("#slave")public List<Order> listOrders() {return baseMapper.selectList(null);}
}

3.4 配置动态数据源

import com.baomidou.dynamic.datasource.processor.DynamicDataSourceProcessor;  
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
import org.springframework.jdbc.datasource.DataSourceTransactionManager;  
@Configuration  
public class DataSourceConfig {  @Bean  @ConditionalOnMissingBean  public DynamicDataSourceProcessor dynamicDataSourceProcessor() {  return new DynamicDataSourceProcessor();  }  // 配置事务管理器(主库事务)  @Bean  public DataSourceTransactionManager transactionManager() {  return new DataSourceTransactionManager();  }  
}  

四、高阶功能实现

4.1 事务一致性保障

@DS("master") // 强制走主库
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateStock(StockDTO dto) {stockMapper.deduct(dto);// 写入操作日志logMapper.insert(dto.getLog()); 
}

关键机制:

主库事务管理器优先

跨数据源事务需引入Seata等分布式事务框架

4.2 读写分离+分库分表

dynamic:sharding:order:actualDataNodes: master.order_$->{0..9},slave1.order_$->{0..9}tableStrategy:standard:shardingColumn: user_idshardingAlgorithmName: mod10

结合分片算法实现水平扩展

五、生产级优化策略

5.1 连接池配置

spring:datasource:dynamic:hikari:maxPoolSize: 50minIdle: 10connectionTimeout: 30000idleTimeout: 600000maxLifetime: 1800000

调优建议:

根据QPS计算连接数:maxPoolSize = (QPS × avg_query_time) / 1000

启用监控:集成Druid监控面板

5.2 数据同步监控

@Scheduled(fixedRate = 60000)
public void checkReplicationDelay() {Long delay = slaveMapper.getReplicationDelay();if (delay > 5000) {alertService.send("从库延迟超过5秒!");}
}

5.3 故障转移机制

@Bean
public MasterSlaveAutoRoutingPlugin routingPlugin() {MasterSlaveAutoRoutingPlugin plugin = new MasterSlaveAutoRoutingPlugin();plugin.setHealthCheckInterval(30000); // 30秒健康检查plugin.setSlaveRetryTimes(3); // 从库失败重试次数return plugin;
}

总结

通过 MyBatis-Plus 实现数据库读写分离,能够显著提升系统的读性能和可用性,是高并发场景下的必备技术。核心优势包括:
低侵入性:通过注解轻松实现数据源切换
灵活扩展:支持多从库负载均衡和动态数据源配置
事务安全:确保写操作在主库执行,保障数据一致性

相关文章:

Spring Boot + MyBatis-Plus 高并发读写分离实战

引言 在高并发场景下&#xff0c;单一数据库实例往往成为性能瓶颈。数据库读写分离通过将读操作和写操作分配到不同的数据库实例&#xff0c;有效缓解主库压力&#xff0c;提升系统吞吐量。MyBatis-Plus 作为一款强大的持久层框架&#xff0c;结合 Spring Boot 能够轻松实现读…...

STC32G12K128-旋转编码器-软件去抖

STC32G12K128-旋转编码器-软件去抖 简介代码 简介 EC11旋转编码器是一种可以连续旋转的器件A,B,C为旋转编码引脚&#xff0c;带按键的有D,E引脚。引脚功能&#xff1a; A&#xff1a;编码器A相&#xff1b;B&#xff1a;编码器B相&#xff1b;C&#xff1a;公共端-一般接到GN…...

第J7周:对于ResNeXt-50算法的思考

目录 思考 一、代码功能分析 1. 构建 shortcut 分支&#xff08;残差连接的旁路&#xff09; 2. 主路径的第一层卷积&#xff08;11&#xff09; 4. 主路径的第三层卷积&#xff08;11&#xff09; 5. 残差连接 激活函数 二、问题分析总结&#xff1a;残差结构中通道数不一致的…...

古方焕新潮!李良济盒马联名养生水,以创新赋能中式养生新潮流

今天下午&#xff0c;中华老字号李良济与新零售巨头盒马联名的“五汁饮&暑清元气水”新品发布会&#xff0c;在李良济隆重举行。 新品发布会上&#xff0c;盒马与多家媒体齐聚李良济&#xff0c;通过中医文化体验、新品品鉴、生产全链路探秘、媒体采访等环节&#xff0c;不…...

使用PyTorch训练马里奥强化学习代理的完整指南

以下是使用PyTorch训练马里奥强化学习代理的完整指南&#xff0c;涵盖依赖库配置、环境搭建、核心代码实现及输出结果分析&#xff0c;结合关键优化策略与实战经验。 一、依赖库配置 基础环境安装 # 使用Anaconda创建虚拟环境&#xff08;推荐&#xff09; conda create -n m…...

STM32F103RCT6 + MFC实现网口设备搜索、修改IP、固件升级等功能

资源下载链接:https://download.csdn.net/download/qq_35831134/90712875?spm=1001.2014.3001.5501 一.大概逻辑: // 网口搜索大概逻辑: // ************************************************************************** // 一.环境: // 上位机用MFC下位机用STM32F103R…...

ch09 课堂参考代码

ch09 拓扑排序与基环树 拓扑排序 在一些场景中&#xff0c;需要完成一系列事情&#xff0c;这些事情之间有顺序关系或者依赖关系&#xff0c;在做一件事情之前必须先做另一件事&#xff0c;例如课程学习的先后顺序&#xff0c;这类问题可以抽象为图论中的拓扑排序问题。 拓扑…...

Day 15 训练

Day 15 对鸢尾花数据集进行处理&#xff0c;特征可视化&#xff0c;贝叶斯优化随机森林&#xff0c;Shap解释1. 导入必要的库2. 设置中文字体3. 加载数据集4. 查看数据5. 数据准备6. 贝叶斯优化随机森林7. 评估结果8. 绘制箱形图9. 绘制特征相关性热力图10. SHAP模型解释总结 对…...

Path to Integer_ABC402分析与解答

考虑怎么降低复杂度&#xff0c;使用分治策略降低搜索的复杂度。 对于a_i,j&#xff0c;其一定在最后结果数的第(2n-i-j)位&#xff08;如果将最低位看成第0位&#xff09;&#xff0c;故将a_i,j看成a_i,j * 10^(2n-i-j)&#xff0c;这样每次加上a_i,j就可以了。 从(1,1)到(n…...

嵌入式学习笔记 - 关于结构体成员地址对齐问题

一 在没有#pragma pack&#xff08;&#xff09;这个宏声明的情况下 C语言中结构体成员分配内存大小时需要满足2个条件&#xff0c;这也是内存对齐的原则&#xff1a; ①每个成员变量的起始地址必须为其数据类型所占空间大小的整数倍 ②结构体所占空间总大小为其最大数据类…...

JAVA实战开源项目:健身房管理系统 (Vue+SpringBoot) 附源码

本文项目编号 T 180 &#xff0c;文末自助获取源码 \color{red}{T180&#xff0c;文末自助获取源码} T180&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

升级element-ui步骤

1 执行 cnpm uninstall element-ui 删除element-ui依赖2 执行 cpm install element-ui -S 安装最新的element-ui&#xff0c;并加入到packjson中3 在element-ui中生成主题&#xff0c;并将主题文件加入到element-ui-theme中。删除所有旧版本到主题文件 *4 修改element-ui-theme…...

Dp通用套路(闫式)

闫式dp分析法&#xff1a; 从集合角度来分析DP问题。 核心思想&#xff1a; DP是一种求有限集中的最值或者个数问题 由于集合中元素的数量都是指数级别的&#xff0c;直接用定义去求&#xff0c;把每种方案都用dfs暴力枚举一遍&#xff0c;时间复杂度很高&#xff0c;此时用…...

如何删除豆包本地大模型

由于无法选择大模型的安装位置&#xff0c;因此会占用C盘大量空间&#xff0c;然后又找到不卸载的地方&#xff0c;经排查豆包大模型安装位为&#xff1a;C:\Users\[当前电脑用户]\AppData\Local\Doubao\User Data&#xff0c;只能进行手动卸载。...

在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置

在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置如下图所示 将DemClearDTCLimitation参数改成DEM_ALL_SUPPORTED_DTCS 此时0x14 服务就可以支持单个DTC的故障清除&#xff0c; 如果配置成 DEM_ONLY_CLEAR_ALL_DTCS 则只能够用0x14服务清楚所有DTC。...

Linux59 SSH配置前瞻 JumpServer双网卡ping通

为什么Ping这个IP地址Ping得通 本地址 [rootlocalhost network-scripts]# cat ifcfg-ens33 iTYPEEthernet BOOTPROTOnone DEFROUTEyes DEVICEens33 ONBOOTno IPADDR192.168.235.4 NETMASK255.255.255.0 GATEWAY192.168.235.2 DNS1114.114.114.114 [rootlocalhost network-scrip…...

TensorFlow中数据集的创建

目录 前言示例示例1示例2示例3示例4 前言 TensorFlow 的 tf.data.Dataset API 提供了一种灵活且高效的方式来加载和预处理数据。它可以轻松处理大规模数据集&#xff0c;并支持多种数据源格式。 所有数据集相关的内容都在tf.data中&#xff0c;from_tensor_slices&#xff1a;…...

OpenHarmony SystemUI开发——实现全局导航栏和状态栏关闭

在实际生产中&#xff0c;进场遇到需要关闭导航栏和状态栏的需求&#xff0c;现分享解决办法&#xff1a; 开发环境 OpenHarmony 5.0.0r 代码分析 思路&#xff1a; launcher本身可以关闭 导航栏&#xff08;实际是 公共事件&#xff0c;发送消息给systemUI来实控制&#x…...

机器视觉的平板电脑屏幕组件覆膜应用

在现代智能制造业中&#xff0c;平板电脑屏幕组件覆膜工序是确保产品外观和功能完整性的重要环节。随着技术的进步&#xff0c;传统的覆膜方式已经无法满足高速度、高精度的生产需求。而MasterAlign视觉系统的出现&#xff0c;将传统覆膜工艺转变为智能化、自动化的生产流程。在…...

Windows 10 无法启动或黑屏的修复指南(适用于更新失败或磁盘故障)

Windows 10 无法启动或黑屏的修复指南&#xff08;适用于更新失败或磁盘故障&#xff09; 当 Windows 10 突然无法启动&#xff08;黑屏、无限重启、更新失败后断电等情况&#xff09;&#xff0c;很可能是由于启动引导程序损坏或系统映像异常&#xff08;如系统磁盘出现坏道&…...

AI星智协脑:智能驱动的高效协作管理平台全解读

前言 想象一下&#xff1a;早上刚开电脑&#xff0c;十几条未读消息如机关枪般扫射而来&#xff0c;各路任务像陨石雨一样砸向你&#xff0c;会议排得比热播剧还密集&#xff0c;文档版本堪比宫斗剧剧情反转&#xff0c;同事围着你转圈追KPI&#xff0c;活脱脱一场《职场大逃杀…...

WebSocket:实时通信的新时代

在现代Web应用中&#xff0c;实时通信变得越来越重要。传统的HTTP协议虽然能够满足基本的请求-响应模式&#xff0c;但在需要频繁更新数据的场景下&#xff0c;其效率和性能显得捉襟见肘。WebSocket协议应运而生&#xff0c;它提供了一种在单个TCP连接上进行全双工通信的机制&a…...

NetSuite Saved Search如何在Criteria中利用Expressions处理不同Transaction之间的关系?

最近有几个Saved Search都用到了Criteria中的Use Expressions的参数&#xff0c;具体的场景是我们想要对不同的Transaction Type做出不同条件的限定&#xff0c;这里有两个不同的举例。 1.除了ER类型头和行的内容要根据实际取&#xff0c;其余所有Transaction类型都取头信息&a…...

2025年 全新 AI 编程工具 Cursor 安装使用教程

一、Cursor 软件下载 首选&#xff0c;登录Cursor官网&#xff0c;进行软件下载&#xff0c;官网下载地址如下&#xff1a; Cursor AI IDE 下载 二、Cursor软件安装配置 此处以Windows10系统安装为例&#xff0c;下载完成之后&#xff0c;右键安装包&#xff0c;以管理员身份…...

跨平台编码规范文档

1. 引言 1.1 目的与范围 本编码规范旨在为软件开发团队提供统一的代码编写标准&#xff0c;以提高代码质量、可维护性和团队协作效率。适用于使用C#、Java、安卓和Web前端&#xff08;HTML/CSS/JavaScript/TypeScript&#xff09;的项目开发&#xff0c;不针对特定语言特性&a…...

Spring创建的线程池

在自动审核的方法上加上Async注解&#xff08;标明要异步调用&#xff09; Async//异步方法调用public void audit(WmNews wmNews) {//这个方法处理时间很长&#xff0c;单体异步思想&#xff0c;线程池}在自媒体引导类中使用EnableAsync注解开启异步调用 SpringBootApplicati…...

【深度学习新浪潮】苹果在显示算法技术上的研发进展调研

苹果的显示算法技术研发呈现三大趋势:AI深度整合(如HDR增强、动态校准)、多模态环境感知(光、温湿度、生物特征)、软硬件协同优化(芯片、传感器、算法深度耦合)。 一、动态刷新率与功耗管理 1. ProMotion技术的算法升级 技术修正: 像素级功耗管理:iPhone 13系列的Pr…...

图像画质算法记录(前言)

一、背景介绍 本篇主要是对图像画质增强相关&#xff0c;进行简单整理和记录。 二、整体流程 整体效果主要受到两部分影响&#xff1a; 1、前端isp处理。 2、后端画质增强。 三、isp常规流程 可以参考&#xff1a;刘斯宁&#xff1a;Understanding ISP Pipeline 四、后端画质…...

uniapp-商城-47-后台 分类数据的生成(通过数据)

在第46章节中&#xff0c;我们为后台数据创建了分类的数据表结构schema&#xff0c;使得可以通过后台添加数据并保存&#xff0c;同时使用云函数进行数据库数据的读取。文章详细介绍了如何通过前端代码实现分类管理功能&#xff0c;包括获取数据、添加、更新和删除分类。主要代…...

阿里云服务器数据库故障排查指南?

阿里云服务器数据库故障排查指南? 以下是针对阿里云服务器&#xff08;如ECS自建数据库或阿里云RDS等托管数据库&#xff09;的故障排查指南&#xff0c;涵盖常见问题的定位与解决方案&#xff1a; 一、数据库连接失败 检查网络连通性 ECS自建数据库 确认安全组规则放行数据库…...

服务器不备案有影响吗

在当今数字化的时代&#xff0c;服务器成为了众多企业和个人开展业务、展示自我的重要工具。然而&#xff0c;有一个问题常常被忽视&#xff0c;那就是服务器不备案到底有没有影响&#xff1f; 答案是肯定的&#xff01;服务器不备案&#xff0c;影响可不小。据相关数据显示&a…...

LVGL9保姆级教程(源码获取)

文章目录 &#x1f31f; LVGL 9 源码获取全流程指南&#x1f4e5; 获取 LVGL 9 源码✅ 官方 GitHub 仓库下载&#x1f4cc; 下载步骤&#xff1a; &#x1f6e0;️ 获取 LVGL Code::Blocks 工程源码下载步骤有两种方式&#xff1a;&#x1f680; 方法一&#xff1a;通过 README…...

【react组件】矩形框选小组件,鼠标左键选中 div,键盘 ESC 清空

在线预览 GitHub demo import React, { useState } from react; import Chooser from rc-chooser;const containerStyle: React.CSSProperties {display: flex,alignItems: center,justifyContent: center,flexWrap: wrap, };const boxStyle: React.CSSProperties {width:…...

数据结构5.0

大家好&#xff0c;今天是队列的知识哦~ 目录 一、概念 1.0单链表 2.0双链表 3.0数组 二、队列的方法 1.0 offer方法 2.0 poll方法 3.0 peek方法 4.0 isEmpty方法 三、队列的题目 1.0 用队列实现栈 2.0 用栈实现队列 3.0 设计循环队列 一、概念 数组 、单链表和双…...

Python字典:数据操作的核心容器

在Python编程生态中&#xff0c;字典&#xff08;dict&#xff09;是最常用且功能强大的内置数据结构之一。它以键值对&#xff08;Key-Value Pair&#xff09;的形式存储数据&#xff0c;为快速查找、灵活映射关系提供了天然支持。无论是数据清洗、算法实现还是Web开发&#x…...

Midjourney-V7:支持参考图片头像或背景生成新保真图

Midjourney-V7重磅升级Omni Reference&#xff1a;全能图像参考神器&#xff01;再也不用担心生成图片货不对版了&#xff01; 就在上周&#xff0c;Midjourney发版它最新的V7版本&#xff1a;Omini Reference&#xff0c;提供了全方位图像参考功能&#xff0c;它可以参考你提…...

【MySQL数据库】--SQLyog创建数据库+python连接

目录 1.连接本地数据库 2.创建数据库和表 3.使用 python读取数据 1.连接本地数据库 进入SQLyog 2.创建数据库和表 创建数据库gyp_test&#xff1a; CREATE DATABASE gyp_test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 创建表student_grade: CREATE TABLE …...

深入解析:思维链模型在大语言模型中的应用与实践

在人工智能领域&#xff0c;大语言模型的发展正以前所未有的速度改变着我们的生活和工作方式。从早期的文本生成到如今的复杂推理&#xff0c;模型的能力不断进化。而其中&#xff0c;思维链&#xff08;Chain-of-Thought, CoT&#xff09;技术的出现&#xff0c;更是为大模型的…...

服务器多客户端连接核心要点(1)

刷题 服务器多客户端连接核心要点 多进程服务器 实现原理 fork子进程&#xff1a;每次accept新客户端后&#xff0c;调用fork创建子进程。独立处理&#xff1a;子进程负责与客户端通信&#xff08;如read/write&#xff09;&#xff0c;父进程继续监听新连接。 特点 隔离性…...

SIGIR 2025端到端生成式推荐ETEGRec

文章目录 1. 背景2. 方法2.1 框架图2.2 问题定义2.3 Item Tokenizer2.4 Generative Recommender2.5 ⭐️Sequence-Item Alignment2.6 ⭐️Preference-Semantic Alignment2.7 交替优化 3. 总结 现阶段 GRM 大多是两阶段的模型&#xff0c;第一阶段进行内容理解-行为语义对齐&…...

rust 中的 EBNF 介绍

在 rust 参考手册中&#xff0c;有大量类似&#xff1a; 句法 MacroInvocation :SimplePath ! DelimTokenTreeDelimTokenTree :( TokenTree* )| [ TokenTree* ]| { TokenTree* }TokenTree :Token排除 定界符(delimiters) | DelimTokenTreeMacroInvocationSemi :SimplePath ! (…...

解决 Redis 缓存与数据库一致性问题的技术指南

Redis 缓存与数据库一致性是分布式系统中常见的挑战&#xff0c;尤其在高并发场景下&#xff08;如电商、用户管理、对账系统&#xff09;。Redis 作为高性能缓存&#xff0c;常用于加速数据访问&#xff0c;但其与数据库&#xff08;如 MySQL&#xff09;之间的数据同步可能因…...

LlamaIndex 第六篇 SimpleDirectoryReader

SimpleDirectoryReader 是将本地文件数据加载到 LlamaIndex 的最简单方式。虽然在实际生产场景中&#xff0c;您更可能需要使用 LlamaHub 提供的多种数据读取器&#xff08;Reader&#xff09;&#xff0c;但 SimpleDirectoryReader 无疑是快速入门的理想选择。 支持的文件类型…...

window 显示驱动开发-配置内存段类型

视频内存管理器&#xff08;VidMm&#xff09;和显示硬件仅支持某些类型的内存段。 因此&#xff0c;内核模式显示微型端口驱动程序&#xff08;KMD&#xff09;只能配置这些类型的段。 KMD 可以配置内存空间段和光圈空间段&#xff0c;其中不同&#xff1a; 内存空间段由保存…...

【人工智能学习之动作识别TSM训练与部署】

【人工智能学习之动作识别TSM训练与部署】 基于MMAction2动作识别项目的开发一、MMAction2的安装二、数据集制作三、模型训练1. 配置文件准备2. 关键参数修改3. 启动训练4. 启动成功 ONNX模型部署方案一、环境准备二、执行转换命令 基于MMAction2动作识别项目的开发 一、MMAct…...

PostgreSQL冻结过程

1.冻结过程 冻结过程有两种模式&#xff0c;依特定条件而择其一执行。为方便起见&#xff0c;将这两种模式分别称为惰性模式&#xff08;lazy mode&#xff09;和迫切模式&#xff08;eager mode&#xff09;。 并发清理&#xff08;Concurrent VACUUM&#xff09;通常在内部…...

SSHv2公钥认证示例-Paramiko复用 Transport 连接

在 Paramiko 中复用 Transport 连接时&#xff0c;若要通过 公钥认证&#xff08;而非密码&#xff09;建立连接&#xff0c;需手动加载私钥并与 Transport 关联。以下是详细操作步骤及完整代码示例&#xff1a; 步骤 1&#xff1a;加载私钥文件 使用 RSAKey 或 Ed25519Key 类…...

华为5.7机考-最小代价相遇的路径规划Java题解

题目内容 输入描述 输出描述 示例&#xff1a; 输入&#xff1a; 2 1 2 2 1 输出&#xff1a; 3 思路&#xff1a; Dijkstra 算法实现 dijkstra(int sx, int sy, int[][] dirs) 方法&#xff1a; 参数&#xff1a;起点坐标 (sx, sy) 和允许的移动方向 初始化&#xff1…...

element-ui分页的使用及修改样式

1.安装 npm install element-ui -S 2.在main.js中引入,这里是全部引入&#xff0c;也可以按需引入 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI) 3.使用 layout"prev, pager, next, jumper" &#xff1a;jumpe…...

[Unity]-[UI]-[Image] 关于UI精灵图资源导入设置的详细解释

Unity UI Sprite UI资源导入详解图片导入项目Texture TypeTexture ShapeAdvanced Setting 高级设置 图片设置案例常见细节问题 知识点详解来源 UI资源导入详解 Unity中的UI资源有图片、矢量图、字体、预制体、图集、动画等等资源。 这其中图片是最重要以及最基础的资源组成&a…...