粕RAG 架构地基工程-Retrieval 模块的系统设计分享I

1 FFmpeg从入门到精通-FFmpeg简介 1.FFmpeg简介 1.1 FFmpeg的定义 1.2 FFmpeg的历史 1.3 FFmpeg的基本组成 1.4 FFmpeg的编解码工具ffmpeg 1.5 FFmpeg的播放器ffplay 1.6 FFmpeg的多媒体分析器ffprobe 1.7 FFmpeg编译(1)FFmpeg之Windows平台编译(2)FFmpeg之Linux平台编译(3)FFmpeg之OS X平台编译 1.8 FFmpeg编码支持与定制(1)FFmpeg的编码器支持(2)FFmpe 阅读详情

SQL 优化是数据库性能调优的核心环节。合理的 SQL 优化可以显著提升数据库性能,减少资源消耗。

1、查询性能分析

1.1 识别慢查询

-- 开启慢查询日志

SET GLOBAL slow_query_log = 'ON';

SET GLOBAL long_query_time = 2; -- 超过2秒的查询

SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';

-- 查看慢查询

SHOW VARIABLES LIKE 'slow_query%';

SHOW VARIABLES LIKE 'long_query_time';

-- 使用性能模式监控

SELECT * FROM performance_schema.events_statements_summary_by_digest

ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;

1.2 使用 EXPLAIN 分析查询

-- 基本分析

EXPLAIN SELECT * FROM users WHERE age > 30;

-- 详细分析(MySQL 8.0+)

EXPLAIN ANALYZE SELECT * FROM users WHERE age > 30;

-- JSON格式输出

EXPLAIN FORMAT=JSON SELECT * FROM users WHERE age > 30;

1.3 解读 EXPLAIN 结果

关键字段解读:

type:访问类型,从好到坏:system > const > eq_ref > ref > range > index > ALL

key:实际使用的索引

rows:预估扫描行数

Extra:额外信息

Using index:覆盖索引

Using where:使用 WHERE 过滤

Using temporary:使用临时表

Using filesort:使用文件排序

2、索引优化策略

2.1 选择合适的索引列

-- 为高频查询条件创建索引

CREATE INDEX idx_user_status ON orders(user_id, status);

-- 为排序和分组字段创建索引

CREATE INDEX idx_created_at ON orders(created_at);

-- 使用覆盖索引

CREATE INDEX idx_covering ON users(name, age, email);

2.2 避免索引失效

-- 1. 避免在索引列上使用函数

-- 错误:SELECT * FROM users WHERE YEAR(created_at) = 2023;

-- 正确:SELECT * FROM users WHERE created_at >= '2023-01-01' AND created_at < '2024-01-01';

-- 2. 避免 LIKE 以通配符开头

-- 错误:SELECT * FROM users WHERE name LIKE '%John%';

-- 正确:SELECT * FROM users WHERE name LIKE 'John%';

-- 3. 避免对索引列进行运算

-- 错误:SELECT * FROM users WHERE age + 1 > 30;

-- 正确:SELECT * FROM users WHERE age > 29;

-- 4. 注意 OR 条件的使用

-- 错误:SELECT * FROM users WHERE name = 'John' OR age = 30;

-- 正确:SELECT * FROM users WHERE name = 'John'

-- UNION

-- SELECT * FROM users WHERE age = 30;

2.3 索引优化技巧

-- 使用前缀索引

SELECT

COUNT(DISTINCT LEFT(name, 5)) / COUNT(*) AS selectivity_5,

COUNT(DISTINCT LEFT(name, 10)) / COUNT(*) AS selectivity_10

FROM users;

CREATE INDEX idx_name_prefix ON users(name(10));

-- 使用索引合并

SET SESSION optimizer_switch = 'index_merge=on';

3、查询语句优化

3.1 SELECT 优化

-- 只选择需要的列

-- 错误:SELECT * FROM users;

-- 正确:SELECT id, name, email FROM users;

-- 使用 LIMIT 限制结果集

SELECT * FROM users ORDER BY created_at DESC LIMIT 10;

-- 避免 SELECT DISTINCT 滥用

-- 错误:SELECT DISTINCT * FROM users;

-- 正确:SELECT DISTINCT department_id FROM users;

3.2 WHERE 优化

3.2.1 基础

-- 使用等值查询优先

SELECT * FROM users WHERE id = 100;

-- 避免使用 != 或 <>

SELECT * FROM users WHERE status IN ('active', 'inactive');

-- 使用 BETWEEN 代替范围查询

SELECT * FROM orders WHERE amount BETWEEN 100 AND 500;

3.2.2 避免索引失效的写法

失效场景 错误示例 优化示例

函数操作索引字段 WHERE YEAR(created_at) = 2024 WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31'

隐式类型转换 WHERE phone = 13800138000 WHERE phone = '13800138000'

模糊查询以%开头 WHERE username LIKE '%张三%' WHERE username LIKE '张三%'

使用OR连接非索引字段 WHERE id = 1 OR age = 20 拆分查询或为age建索引

3.2.3 优化范围查询

范围条件(>, <, BETWEEN)右侧的字段无法使用索引,复合索引中应将范围字段放右侧。

-- 复合索引 (user_id, created_at)

-- 有效:范围条件在右侧

SELECT * FROM `order` WHERE user_id = 100 AND created_at > '2024-01-01';

-- 低效:范围条件在左侧,右侧字段无法使用索引

SELECT * FROM `order` WHERE created_at > '2024-01-01' AND user_id = 100;

3.3 JOIN 优化

确保连接字段建立索引(尤其是外键字段)。

小表驱动大表(左表数据量应小于右表,减少匹配次数)。

避免JOIN过多表(建议不超过 5 张表)。

优化前:

-- 无索引,多表连接效率低

SELECT * FROM `order` o

JOIN `user` u ON o.user_id = u.id

JOIN `order_item` oi ON o.id = oi.order_id;

优化后:

-- 为连接字段建索引

ALTER TABLE `order` ADD INDEX `idx_user_id` (`user_id`);

ALTER TABLE `order_item` ADD INDEX `idx_order_id` (`order_id`);

-- 只查询必要字段

SELECT o.order_no, u.username, oi.product_id

FROM `order` o

JOIN `user` u ON o.user_id = u.id

JOIN `order_item` oi ON o.id = oi.order_id;

3.4 GROUP BY 和 ORDER BY 优化

ORDER BY和GROUP BY的字段应包含在索引中,避免额外排序(Using filesort)。

复合索引中,排序字段需按同一方向(全升序或全降序)

优化前:

-- 无索引,产生Using filesort

SELECT * FROM `order` WHERE user_id = 100 ORDER BY created_at;

优化后:

-- 创建包含排序字段的复合索引

ALTER TABLE `order` ADD INDEX `idx_user_created` (`user_id`, `created_at`);

-- 索引覆盖排序,无filesort

SELECT id, order_no FROM `order` WHERE user_id = 100 ORDER BY created_at;

3.5 子查询优化

-- 使用 JOIN 代替子查询

-- 错误:SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);

-- 正确:SELECT u.* FROM users u JOIN orders o ON u.id = o.user_id;

-- 使用 EXISTS 代替 IN

SELECT * FROM users u

WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);

-- 将子查询转换为连接

SELECT u.*, o.order_count

FROM users u

JOIN (SELECT user_id, COUNT(*) as order_count FROM orders GROUP BY user_id) o

ON u.id = o.user_id;

4、表结构优化

4.1 选择合适的数据类型

优先使用小字段类型(如INT代替BIGINT,VARCHAR(20)代替VARCHAR(255))。

时间用DATETIME(需时区转换)或TIMESTAMP(自动时区转换,范围小)。

枚举类型用ENUM(如状态字段:ENUM('active', 'inactive'))。

优化前:

CREATE TABLE `user` (

`id` BIGINT PRIMARY KEY, -- 无需大整数

`status` VARCHAR(20), -- 状态值有限,可用ENUM

`create_time` VARCHAR(50) -- 应用层转换,效率低

);

优化后:

CREATE TABLE `user` (

`id` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

`status` ENUM('active', 'inactive') NOT NULL DEFAULT 'active',

`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP

);

4.2 分表分库

当单表数据量超过 1000 万行时,需考虑拆分:

水平分表:按行拆分(如按用户 ID 哈希、按时间范围)。

垂直分表:按列拆分(如将大文本字段拆分到独立表)。

示例:按时间水平分表

-- 订单表按年份拆分

CREATE TABLE `order_2023` (LIKE `order` INCLUDING ALL);

CREATE TABLE `order_2024` (LIKE `order` INCLUDING ALL);

4.3 分区表优化

-- 按范围分区

CREATE TABLE sales (

id INT AUTO_INCREMENT,

sale_date DATE,

amount DECIMAL(10,2),

PRIMARY KEY (id, sale_date)

) PARTITION BY RANGE (YEAR(sale_date)) (

PARTITION p2020 VALUES LESS THAN (2021),

PARTITION p2021 VALUES LESS THAN (2022),

PARTITION p2022 VALUES LESS THAN (2023),

PARTITION p2023 VALUES LESS THAN (2024)

);

-- 按列表分区

CREATE TABLE users (

id INT AUTO_INCREMENT,

region VARCHAR(20),

name VARCHAR(100),

PRIMARY KEY (id, region)

) PARTITION BY LIST COLUMNS(region) (

PARTITION p_north VALUES IN ('Beijing', 'Tianjin'),

PARTITION p_south VALUES IN ('Guangzhou', 'Shenzhen'),

PARTITION p_west VALUES IN ('Chengdu', 'Chongqing')

);

5、服务器参数

通过调整 MySQL 配置文件(my.cnf或my.ini)提升性能

[mysqld]

# 缓存相关

innodb_buffer_pool_size = 4G # InnoDB缓存池(建议物理内存的50%-70%)

query_cache_size = 0 # 禁用查询缓存(MySQL 8.0已移除)

# 连接相关

max_connections = 1000 # 最大连接数

wait_timeout = 600 # 连接超时时间(10分钟)

# 日志相关

slow_query_log = 1 # 开启慢查询日志

long_query_time = 1 # 慢查询阈值(1秒)

slow_query_log_file = /var/log/mysql/slow.log

# InnoDB优化

innodb_flush_log_at_trx_commit = 1 # 事务提交时同步日志(安全性优先)

innodb_flush_method = O_DIRECT # 绕过OS缓存,直接写磁盘

4 FFmpeg从入门到精通-FFmpeg转码 4.FFmpeg转码 4.1 FFmpeg软编码H.264与H.265 4.1.1 x264编码参数简介 4.1.2 H.264编码举例 1.编码器预设参数设置preset 2.H.264编码优化参数tune 3.H.264的profile与level设置 4.控制场景切换关键帧插入参数sc_threshold 5.设置x264内部参数x264opts 6.CBR恒定码率设置参数nal-hrd 4.2 FFmpeg硬编解码 阅读详情

相关推荐

【FFmpeg从入门到精通】第三章-FFmpeg转封装

如果要了解 MP4的格式信息,首先要清楚几个概念,具体如下。MP4文件由许多个Box与FullBox组成每个Box由Header和 Data两部分组成FullBox是Box的扩展,其在Box结构的基础上,在Header中增加8位version标志和 24 位的 flags 标志Header 包含了整个Box的长度的大小(size)和类型(type),当size等于0时,代表这个Box是文件的最后一个Box。

StudyWinter的博客 1397

FFmpeg入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

FFmpeg全称为Fast Forward Moving Picture Experts Group,于2000年诞生,是一款免费,开源的音视频编解码工具及开发套件。它的功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes)。FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具example:对输入视频缩放至320:240:ffmpeg -i input.mpg -vf scale=320:240 output.mp4。

Javachichi的博客 9万+

RAG架构地基工程:Retrieval模块的系统设计与创新实践

在智能信息检索和生成模型中,基于检索的生成(RAG,Retrieval-Augmented Generation)架构正在逐步成为前沿技术,推动着自然语言处理(NLP)和人工智能(AI)系统的革新。本文详细探讨了RAG架构中的核心组件——Retrieval模块的系统设计,介绍了经典算法和创新技术的结合,通过深度分析如何优化检索过程,提升生成质量,打破现有技术瓶颈。文章还分享了最新的技术实践和代码实现,为科研人员和工程师提供了有价值的设计思路与参考。

Sapphire521的博客 221

一文入门FFmpeg

一、FFmpeg介绍 1、简介 FFmpeg全称为Fast Forward Moving Picture Experts Group,于2000年诞生,是一款免费,开源的音视频编解码工具及开发套件。它的功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes)。 FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具 2、FFmpeg基本组成 命令行工具:ffmpeg(编解码工具)+ ffprobe(多媒体分析器)+ ffplay(播放器) 模

weixin_41109972的博客 1262

JLINK/SWD/STLINK下载选项区别

摘要: 本文对比了JLINK/SWD/STLINK的6种下载模式:Normal(硬件复位)、Hot plug(无复位)、Under reset(持续复位后连接)、Software reset(软件复位)、Hardware reset(全复位)和Core reset(内核复位)。重点分析了各模式的操作逻辑、适用场景及注意事项,其中Under reset模式是解决SWD禁用/程序异常的首选方案。通过对比表归纳了复位范围、NRST操作等核心差异,并给出场景选择建议:排查连接问题优先选Under reset,常规调

亚洲程序员盟主得博客 395

Codesys 3.5报警功能配置保姆级教程:从变量定义到确认方式(含REF/ACK详解)

本文详细介绍了Codesys 3.5报警功能的配置流程,从变量定义到确认方式的选择,特别解析了REF和ACK两种确认方式的底层逻辑。通过实战案例和代码示例,帮助工程师快速掌握报警系统的搭建与调试技巧,提升工业自动化项目的可靠性。

weixin_29245767的博客 458

泻RAG 架构地基工程-Retrieval 模块的系统设计分享t

在事务隔离级别为 "可重复读"或"串行化" 的情况下,对分裂的数据进行迁移的过程中,相当于对数据执行了更新的操作,按照 MySQL 对于 UPDATE 语句的加锁情况[2],会在记录上加上 Next-Key (记录锁和间隙锁),因此事务 3860会持有记录40309c91b71f471c9621daeed44fcc的间隙锁;实际上,如果事务执行速度特别快,并且在并发量不高的情况下,这种类型的死锁很难被检测到,因为需要处理的事务跨多个页,并且需要关联到两个不同页的锁本身就很难。

pdU3J52HG的博客 929

解锁医疗AI密码:医疗人工智能专业大学四年学习路径

医疗AI人才培养路径解析 本文系统梳理了医疗人工智能专业四年培养方案,分为基础、进阶、应用和拓展四个阶段: 大一聚焦基础学科,涵盖高等数学、医学概论、Python编程等核心课程,辅以医学数据认知实习。大二深入机器学习和医学数据处理领域,学习监督/无监督学习算法及医学影像分析技术。大三进入深度学习阶段,掌握CNN/RNN等神经网络模型,并实践医疗AI应用开发。大四关注前沿技术如大模型在医疗中的应用,完成毕业设计与企业实习。 课程体系强调医工交叉,每学期均配置实践环节,从基础编程到参与真实医疗AI项目,逐步培养

AllenLV的博客 2502

帽RAG 架构地基工程-Retrieval 模块的系统设计分享N

与传统程序不同,智能体不仅仅是被动执行预设指令,而是具备一定程度的自主性和适应性,能够在复杂、多变的环境中不断优化行为。无论是任务分解、知识获取,还是与外部工具的协同,都会结合实际案例,帮助你理解如何打造一个真正能落地、能进化的智能体。它模拟了人类作者“写—审—改”的迭代过程:一个模型负责生成候选答案,另一个模型则充当评估员,给出改进建议,二者循环迭代,直到得到令人满意的结果。简而言之,评估器–优化器模式就像“作者与编辑”的协作,前者负责创作,后者负责把关,两者交替工作,最终产出高质量成果。

rjAcHuxjU的博客 334

拉普拉斯矩阵

1、预备知识 拉普拉斯矩阵定义为:L=D-W。其中,D为度矩阵,W为权重矩阵。 (1)D是对角矩阵,对角线上的元素时节点的度,即所有与该节点相关联的边的权重之和;对角线以外的元素为0。有向图的对角矩阵分为 出度矩阵 和 入度矩阵。 图1.1 无向图中的度矩阵 (2)W在无向图中是对称矩阵,在有向图中是非对称矩阵。 ...

zzhe 1万+

STM32进入HardFault_Handler时,如何找到问题所在?

当STM32进入HardFault_Handler时,定位问题发生的点

m0_60831979的博客 2150

顿RAG 架构地基工程-Retrieval 模块的系统设计分享c

URP定制的流程在这里(从灯光阴影投射、深度和深度法线预渲染、到深度拷贝、延迟渲染中的特别执行的LightMode:”UniversalForwardOnly”、再到延迟渲染的GBuffer及其对GBuffer的屏幕空间的光照处理、不透明阶段Pass、深度拷贝、运动向量Pass、天空盒Pass、透明物体Pass、离屏UIPass、覆盖UIPass、最后的混合、深度拷贝、输出到缓冲区“_CameraColorAttachment”)Shader Graph?

JLsYAoLS4的博客 327

Dinic算法的复杂度分析及证明

一般图 复杂度主要取决于dfs增广的过程。 将dfs部分的复杂度分成两部分来分析:1)修改增广路上边的流量。至多会增广mmm次,一条增广路的长度至多是nnn,所以这一部分的复杂度是O(nm)O(nm)O(nm)。2)dfs遍历时找增广路失败时经过的边。由于一旦从某条边出发找最短路失败了,我们就不会再走那条边(当前弧优化),所以这一部分的复杂度是O(m)O(m)O(m)的。故而dfs增广的复杂度是O...

这个博客已经搬到了:zhongyuwei.github.io 4392

嘏RAG 架构地基工程-Retrieval 模块的系统设计分享n

设置 JRE 要求 在“JRE”选项卡中配置最低和最高 JRE 版本,可以勾选“Search sequence”选项以指定 JRE 的搜索路径(如捆绑 JRE 或系统路径)。在配置界面中,选择主类(包含 main 方法的类),并指定输出目录。准备安装文件 将生成的 EXE 文件、依赖的 JAR 文件、资源文件(如图片、配置文件)以及 JRE(如果需要捆绑)整理到一个目录中。若目标机器可能没有安装 JRE,建议将 JRE 打包到安装程序中,并在 exe4j 中配置优先使用捆绑的 JRE。

fJV2ok27Y的博客 317

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

bfq05234214的博客 441

贝叶斯机器学习在吸附量预测中的应用

本文介绍了贝叶斯机器学习在吸附量预测中的应用。通过Python实现完整的贝叶斯建模流程,包括数据生成、预处理、模型构建与评估。文章对比了贝叶斯与频率学派的差异,详细阐述了贝叶斯线性回归和神经网络的实现方法,并提供了数据可视化、模型诊断等技术细节。该方法不仅能预测吸附量,还能量化预测不确定性,为工程决策提供更全面的依据。全文超过6000字,结合理论推导与代码实践,是应用贝叶斯方法解决实际工程问题的完整指南。

AI的内部世界的博客 167

项目分享|RAG-Retrieval库实现基于LLM偏好监督RAG检索器微调

如何提升RAG性能?对于黑盒大模型比如GPT4来说,比较合适的是冻住LLM,利用来。开源地址:https://github.com/NLPJCL/RAG-Retrieval这里面关键一环是,即对于每个用户查询Q和一些文档 𝐷1,𝐷2,…,𝐷𝐾 ,得到Q和每个文档的分数。对于来说,可以利用来说,比较好的思路是利用来得到监督信号。2024.6.4更新:这两天发现GPT3.5/4以及大多数基于API的大模型,并不支持获取输入token的概率,一个可替代的方案是将大模型得到。得到监督信号后,利用将和。

weixin_45783724的博客 1142

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Anthropic分享RAG最佳实践:Contextual Retrieval

对于不适合在上下文窗口内的知识库,RAG是典型的解决方案。RAG通过以下步骤预处理知识库:将知识库(文档的“语料库”)分解成较小的文本块,通常不超过几百个token;使用嵌入模型将这些块转换为编码意义的向量嵌入;将这些嵌入存储在允许按语义相似性搜索的向量数据库中。

2401_85373898的博客 1229

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Anthropic分享RAG最佳实践:Contextual Retrieval!

对于不适合在上下文窗口内的知识库,RAG是典型的解决方案。RAG通过以下步骤预处理知识库:将知识库(文档的“语料库”)分解成较小的文本块,通常不超过几百个token;使用嵌入模型将这些块转换为编码意义的向量嵌入;将这些嵌入存储在允许按语义相似性搜索的向量数据库中。

lyy2017175913的博客 2037

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

R1时代,RAG-Retrieval技术总结与展望~

RAG-Retrieval提供了全链路的 RAG 检索模型的微调(train)和推理(infer)以及蒸馏(distill)代码,也支持了多种loss,多个检索模型,一些先进的方法和trick。

m0_59164304的博客 841

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks论文分享

这种方法也应用于知识密集型对话中,在这些对话中,生成器直接基于检索到的文本进行条件生成,尽管这些文本是通过TF-IDF获取的,而非端到端学习的检索方式[9]。不过,方法也有一些不同之处,相对较少强调对检索到的内容进行轻微编辑,而是侧重于聚合多个检索到的内容,同时还包括学习潜在检索,以及检索证据文档而非相关的训练对。与先前的工作相比,这项工作具有一些积极的社会意义:它更紧密地基于真实的事实知识(在本文中为维基百科),这使得生成内容时更少产生“幻觉”,更符合事实,并且提供了更多的可控性和可解释性。

XLYcmy的博客 1010

RAG 召回提升相关方案分享

最近大半年时间都在做RAG的工作,分享一点个人探索的方向。和提升的方案。文章中会分享是如何做的,以及对应的效果。核心问题如何提升RAG的效果?如何提升召回的准确率。写在前边:已验证的方案方案优化方向效果备注3.1 优化分词器 英文去除停顿词,单复数标准化解决了badcase3.2 分词器使用IK分词器BM召回率提升了1%3...

cnzzs的博客 1302

关于RAG(Retrieval-Augmented Generation)7 连问

本篇适合有一定的AI 开发经验的人阅读1:RAG使用技巧有哪些?数据提取与处理:将不同格式的数据(PDF、Word、Markdown等)进行过滤、压缩、格式化等处理,以统一数据格式。分块(Chunking):将文档分割成一定大小的块,以保持语义完整。向量化(Embedding):将文本数据转化为向量矩阵,直接影响检索效果。模型选型:选择合适的Embedding模型对RAG技术至关重要,直接影响信息检索的效果和生成文本的质量。

Z4400840的博客 1178
上一篇: salesforce零基础学习(一百四十四)External Client App浅谈
下一篇: 颓C#实现屏幕墙:同时监控多个电脑桌面(支持Windows、信创Linux、银河麒麟、统信UOS)U
普通网友
博客等级 码龄1年 37粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值