01-MySQL优化系列之-掌握MySQL底层结构

CMOS sensor 基础 NA 阅读详情

1,MySQL的逻辑架构

01-MySQL优化系列之-掌握MySQL底层结构

2,MySQL的存储引擎介绍

MySQL的存储引擎有很多,我们今天,主要来介绍两款存储引擎的对比

特点

MyISAM

InnoDB

是否支持事务

不支持

支持

锁机制

表锁

行锁

是否支持外键

不支持

支持(是MySQL唯一支持外键的存储引擎)

并发性

高并发

低并发

结论:推荐大家采用InnoDB存储引擎,MyISAM在MySQL8.0版本将被废弃



3,如何设置和查看存储引擎

在创建表时,可以为表指定存储引擎:

ENGINE=InnoDB

创建表成功后,查看当前表的存储引擎:

show table status like '表名',在结果查看存储引擎字段

01-MySQL优化系列之-掌握MySQL底层结构

具身大小脑全栈全网独家复现|LLM链式推理+边缘VLA感知+毫秒级运动小脑、优化人形步态僵硬运动滞后、打通思考-行走-操作全链路适配居家工业多场景落地 高层决策大脑(异步10Hz,GPU算力):轻量化机器人微调LLM+RhinoVLA边缘视觉大模型,负责自然语言链式工序拆解、全局环境语义感知、目标物体筛选、跨机器人动作适配,输出粗粒度运动目标,不介入底层伺服计算;依托View Registry实现异构机器人动作对齐,适配多形态机器人切换;中层调度小脑(硬实时1kHz,CPU算力) 阅读详情

相关推荐

VMware共享磁盘配置实战:从零搭建多机共享存储环境

本文详细介绍了在VMware环境中从零开始配置共享磁盘的完整实战流程。通过创建共享磁盘、挂载至多台虚拟机并修改.vmx配置文件等关键步骤,帮助用户搭建可用于数据库集群(如Oracle RAC)测试的多机共享存储环境,并提供了核心参数设置与常见问题排查指南。

weixin_29284201的博客 492

一文搞懂MySQL架构设计,再也不用担心面试官问得太深

本篇文章主要带大家了解了MySQL分层架构,以及每层的架构的作用。可以看出MySQL每层架构分工明确、逻辑清晰,深刻地体现了架构设计中“高内聚,低耦合”的设计思想。我们平时在做架构设计的时候,也要多学习一下这种分层架构的设计思想。httpshttpshttpshttps。...

weixin_70730532的博客 559

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1044

【MySQL】MySql的底层数据结构

一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找的呢?其中就涉及到数据库(存储数据)以及查找算法。先来看一下几种查找算法;目录查找:类似索引遍历:暴力查找二分:B+树的基础算法键查找:hash查找能做索引的数据结构有:数组、链表、红黑树、B树(B-树、B+树)。那么哪种数据结构适合做 MySql 数据库的存储结构呢?先来说下数据的一般存储方式:内存(适合小数据量)、磁盘(大数据量)。磁盘的运转方式:速度 + 旋转,磁盘页的概念:每一页大概16KB。

DreamSun的博客 3776

iTunes登录协议抓包避坑指南:解决HTTPDebugger被检测问题(附临时方案)

本文详细解析了iTunes客户端登录协议抓包时遇到的HTTPDebugger等工具被检测的问题,并提供了实战解决方案。通过逆向分析iTunes的反调试与反检测机制,文章指导读者如何定位并绕过关键检测点,成功捕获登录流量,并深度解析了包括证书获取、签名缓冲区和最终认证在内的核心协议流程。

qsc901234的博客 808

PyCharm启动报错急救指南:3步定位.vmoptions文件位置(Win/Mac路径详解)

本文针对PyCharm启动失败问题,提供了一份详细的急救指南。核心在于精准定位并修复关键的.vmoptions配置文件。文章通过三步法详解了在Windows和macOS系统上查找该文件的具体路径,并分析了因新旧版本冲突、破解补丁残留或参数设置错误导致启动失败的常见场景及解决办法,帮助开发者快速恢复IDE的正常工作。

weixin_28835789的博客 702

mysql底层数据结构

mysql数据结构

Aarstg的博客 2857

告别版本冲突!在Ubuntu 20.04上优雅实现ROS Noetic与ROS2 Foxy双环境切换

本文详细介绍了在Ubuntu 20.04系统上实现ROS Noetic(ROS1)与ROS2 Foxy双环境共存与切换的完整方案。通过智能脚本设计和工作空间隔离,解决了版本冲突问题,帮助开发者高效管理不同ROS版本项目。特别适合需要同时开发ROS1和ROS2应用的机器人开发者。

weixin_28452161的博客 411

mysql底层结构

综上所述,MySQL 的底层结构包括存储引擎、数据文件、日志文件、索引等多个方面,不同的存储引擎具有不同的实现方式和特性,适用于不同的应用场景。理解 MySQL 的底层结构对于设计和优化数据库系统非常重要。MySQL 是一个开源的关系型数据库管理系统(RDBMS),其底层结构涉及多个方面,包括存储引擎、数据文件、日志文件、索引等。

xzz的博客 744

通讯软件013——分分钟学会Kepware OPC AE Server仿真配置

本文介绍如何使用Kepware软件仿真OPC AE Server配置。

zhouwl72的博客 2227

游戏客户端开发工程师笔试题

1、已知有一个关键字序列:(27,23,34,14,1,55, 20,19,85,83,10,68)散列存储在一个哈希表中,若散列函数为H(key)=key%7,并采用链地址法来解决冲突,则在等概率情况下查找成功的平均查找长度为(4、出现死锁时,除了可以采用资源剥夺的方法解决死锁问题外,还可以使用的方法是()是被限定只能在表的一端进行插入运算,在另一端进行删除运算的线性表.5、大端模式,是指数据的高字节保存在内存的(3、在二叉查找树中, 最好情况下复杂度为。)地址中,而数据的低字节保存在内存的(

博客 1873

mysql原理(1) mysql底层数据结构

一、前言 1.1 索引结构及查找算法 一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找的呢? 其中就涉及到数据库(存储数据)以及查找算法。 先来看一下几种查找算法; 目录查找:类似索引 遍历:暴力查找 二分:B+树的基础算法 键查找:hash查找 能做索引的数据结构有:数组、链表、红黑树、B树(B-树、B+树)。 那么哪种数据结构适合做 MySql 数据库的存储结构呢? 先来说下数据的一般存储方式:内存(适合小数据量)、磁盘(大数据量)。 磁盘的运转方式:速度 + 旋转,磁盘页

babyZeng 6212

工程师必收藏,Juniper(Junos)网络设备命令大全

不要直接删除配置 → 使用deactivate配置前先修改大配置用出现风险命令一律用写自动化时一律用格式真正会用 Juniper 的工程师,不是命令多,而是命令用得精。

网络技术联盟站 404

MySQL 深入浅出系列01—MySQL 架构

MySQL 逻辑架构和存储引擎

m0_45322619的博客 1408

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Mysql优化汇总系列

1.MySQL版本: 5.x: 5.0-5.1:早期产品的延续,升级维护 5.4 - 5.x : MySQL整合了三方公司的新存储引擎 (推荐5.5) 安装:rpm -ivh rpm软件名 如果安装时 与某个软件 xxx冲突,则需要将冲突的软件卸载掉: yun -y remove xxx 安装时 有日志提示我们可以修改密码:/usr/bin/mysqladmin -u root ...

qq_32534441的博客 1815

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

MySQL慢查询优化实战:我从7秒优化到0.01秒的血泪史

细看执行计划(放大镜)分析慢查询日志(监控录像)了解业务场景(作案动机)熟悉数据结构(案发现场)记住:没有最好的优化方案,只有最适合业务场景的解决方案。加内存(简单粗暴但有效)换SSD(速度提升立竿见影)业务逻辑重构(釜底抽薪)(别问我怎么知道的,都是泪…)下次遇到慢查询,记得先深呼吸,然后按这个checklist一步步来,你也能成为同事眼中的"优化之神"!

CodeHorizon的博客 2375

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Mysql系列-索引优化

使用Explain关键字可以模拟优化器执行SQL语句,分析查询语句或结构的性能瓶颈,在select语句之前增加explain关键字,mysql会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行当前SQL;其中:如果from中包含子查询,仍会执行该子查询,将结果放入临时表中;

磊杰的博客 1508

MYSQL面试系列-01

mysql面试

king01299的博客 1161

MySQL优化系列12-MySQL分区表

备注:测试数据库版本为MySQL 8.0 文章目录一.分区表简介二.分区的类型2.1 range分区2.2 list分区2.3 colums分区2.3.1 RANGE COLUMNS分区2.3.2 LIST COLUMNS2.4 哈希分区2.4.1 LINEAR HASH分区2.5 key 分区2.6 子分区2.7 MySQL分区如何处理null值三.分区管理3.1 管理range和list分区3.2 管理hash和key分区3.3 交换分区和子分区3.3.1 与非分区表交换分区3.3.2 未匹配的行3.

只是甲的博客 3922

全面深入讲解MySQL数据库优化01

全面深入讲解MySQL数据库优化01 前言 观看笔记:https://www.bilibili.com/video/BV1fJ41127Rj?from=search&seid=13531213796559959972 本课程作为MySQL高级课程,主要讲解了: MySQL中的视图/存储过程/触发器/索引等对象的使用 常见的SQL语句优化的技巧 应用优化 数据库优化 数据库日志 等方面的知识,并通过综合案例,对课程中的知识进行一个整合应用。 本课程旨在通过MySQl高级部分内容,可以在满足现有业务

qq_43409111的博客 1155

MySQL面试系列-01

事务(transaction)是指数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)。通俗的说就是事务可以作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

qq_61863348的博客 1072

MySQL优化系列_MySQL 优化系列

本次MySQL使用版本为5.7.11-x64何为分区 ?一种表的设计模式,正确的分区可以极大地提升数据的查询效率MySQL数据库中的数据是以文件的形式存在磁盘上的,默认放在/mysql/data目录下SHOW VARIABLES LIKE '%datadir%';(可在my-default.ini中配置datadir)一张表主要对应着三个文件frm 表结构myd 表数据myi 表索引如果一张...

weixin_30291543的博客 159

MySQL 性能优化:索引优化与查询优化

索引类似于书籍的目录,能够大幅减少查询时的数据扫描量,加快数据定位。通过为查询条件和排序字段建立索引,可以提高 SELECT、JOIN 和 WHERE 子句的执行效率。通过不断的测试与调整,开发者可以逐步完善数据库优化策略,为系统提供稳定、高效的数据访问保障。通过对索引和查询语句的优化,可以大幅提升 MySQL 数据库在海量数据场景下的查询效率和系统响应速度。通过输出结果,可以了解每个表的访问类型、索引使用情况以及查询成本,从而有针对性地调整索引策略。字段进行了函数处理,导致无法使用索引。

二进制忍者的博客 936

MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集

本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。

拉丁解牛技术专栏 1208

重学MySQL系列01-揭开面纱,显露架构

前言 目前大部分的后端开发人员对MySQL的理解可能停留在一个黑盒子阶段。 对MySQL基本使用没什么问题,比如建库、建表、建索引,执行各种增删改查。 所有很多后端开发人员眼中的MySQL如下图所示 导致在实际工作中碰到MySQL中死锁异常、SQL性能太差、异常报错等问题时,直接百度搜索。 然后跟着博客捣鼓就解决了,可能自己都没搞明白里面的原理。 为了解决这种知其然而不知其所以然的问题,阿星的重学MySQL系列会带着大家去探索MySQL底层原理的方方面面。 这样大家碰到MySQL的一些异常

每天叫醒自己的不是闹铃 是娟 是梦 是理想。 208

Mysql优化系列

作用:事务在内存中的缓冲,也就是日志缓冲区的大小, 默认设置即可,具有大量事务的可以考虑设置。从以上分析,当这个值不为1时,可以取得较好的性能,但遇到异常会有损失,所以需要根据自已的情。查询缓存大小,如果表的改动非常频繁,或者每次查询都不同,查询缓存的结果会减慢系统性能。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,注意:这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系。说明:这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系。

2301_78008478的博客 157
上一篇: 13-SpringAOP最强大的通知-环绕通知
下一篇: 02-MySQL优化系列之-你真的掌握了正确的建表方式吗
技术人风清扬
博客等级 码龄8年 25粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值